diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 51c992b3d65bffe8670033265a1b3517612586fe..e0ce0d971c6af9c3f06333aa7202a5a7adaada58 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,4 +5,4 @@ ubuntu16.04: - cd build - cmake .. - make -j 4 - - ctest --output-on-failure + - ctest -j 4 --output-on-failure diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 60ce02d777a9cec74a3cd3e221b1cd4f0b19b58c..e05057fb1c4567173f900f403f16c21ad944b885 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,7 @@ +3.0.2 (May 13, 2017): improved handling of meshing constraints and entity +numbering after boolean operations; improved handling of fast coarseness +transitions in MeshAdapt; new TIKZ export; small bug fixes. + 3.0.1 (April 14, 2017): fixed OpenCASCADE plane surfaces with holes. 3.0.0 (April 13, 2017): new constructive solid geometry features and boolean diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d4905c6588e5c87b948b06669b6f0322b1cc5c7..718225dee8a7b17f72859f2ac7a651a72a5b3120 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,7 +67,7 @@ opt(NATIVE_FILE_CHOOSER "Enable native file chooser in GUI" ${DEFAULT}) opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT}) opt(NUMPY "Enable conversion between fullMatrix and numpy array (requires SWIG)" OFF) opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices" ON) -opt(OCC "Enable Open CASCADE geometrical models" ${DEFAULT}) +opt(OCC "Enable OpenCASCADE geometrical models" ${DEFAULT}) opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT}) opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT}) opt(OPENMP "Enable OpenMP (experimental)" OFF) @@ -107,6 +107,7 @@ set(GMSH_API Common/VertexArray.h Common/Octree.h Common/OctreeInternals.h Common/OS.h Common/StringUtils.h Common/OpenFile.h Common/Hash.h Common/onelab.h Common/GmshSocket.h Common/onelabUtils.h Common/Options.h + Common/picojson.h Numeric/Numeric.h Numeric/GaussIntegration.h Numeric/polynomialBasis.h Numeric/JacobianBasis.h Numeric/bezierBasis.h Numeric/fullMatrix.h Numeric/FuncSpaceData.h Numeric/pointsGenerators.h @@ -1089,6 +1090,8 @@ if(HAVE_SOLVER) endif(HAVE_SOLVER) if(ENABLE_OCC) + set(OCC_VERSION "") + set(OCC_MINIMAL_VERSION "6.9.1") if(WIN32 OR CYGWIN) if(HAVE_64BIT_SIZE_T) set(OCC_SYS_NAME win64) @@ -1098,53 +1101,69 @@ if(ENABLE_OCC) else(WIN32 OR CYGWIN) set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME}) endif(WIN32 OR CYGWIN) - set(OCC_LIBS_REQUIRED - # subset of DataExchange - TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase - # ModelingAlgorithms - TKOffset TKFeat TKFillet TKBool TKShHealing TKMesh TKHLR TKBO TKPrim - TKTopAlgo TKGeomAlgo - # ModelingData - TKBRep TKGeomBase TKG3d TKG2d - # FoundationClasses - # TKAdvTools -- not necessary? (and removed from OCC 6.8) - TKMath TKernel) - list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED) - if(OCC_LIBS) - message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS}) - list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS) - else(OCC_LIBS) - set(OCC_LIBS) - foreach(OCC ${OCC_LIBS_REQUIRED}) - find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES lib - ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib) - if(OCC_LIB) - list(APPEND OCC_LIBS ${OCC_LIB}) - else(OCC_LIB) - message(STATUS "OCC lib " ${OCC} " not Found") - endif(OCC_LIB) - unset(OCC_LIB CACHE) - endforeach(OCC) - list(LENGTH OCC_LIBS NUM_OCC_LIBS) - endif(OCC_LIBS) - if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) - find_path(OCC_INC "BRep_Tool.hxx" PATHS ENV CASROOT PATH_SUFFIXES inc - include include/oce opencascade) - if(OCC_INC) - set_config_option(HAVE_OCC "OpenCascade") + find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES inc + include include/oce opencascade include/opencascade) + if(OCC_INC) + file(STRINGS ${OCC_INC}/Standard_Version.hxx + OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*") + string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR}) + file(STRINGS ${OCC_INC}/Standard_Version.hxx + OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*") + string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR}) + file(STRINGS ${OCC_INC}/Standard_Version.hxx + OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*") + string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT}) + set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}") + message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}") + endif(OCC_INC) + if(OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) + message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}") + message(WARNING "Use CMAKE_PREFIX_PATH or the CASROOT environment variable " + "to explicitely specify the installation path of OpenCASCADE") + else (OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) + set(OCC_LIBS_REQUIRED + # subset of DataExchange + TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase + # ModelingAlgorithms + TKOffset TKFeat TKFillet TKBool TKShHealing TKMesh TKHLR TKBO TKPrim + TKTopAlgo TKGeomAlgo + # ModelingData + TKBRep TKGeomBase TKG3d TKG2d + # FoundationClasses + # TKAdvTools -- not necessary? (and removed from OCC 6.8) + TKMath TKernel) + list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED) + if(OCC_LIBS) + message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS}) + list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS) + else(OCC_LIBS) + set(OCC_LIBS) + foreach(OCC ${OCC_LIBS_REQUIRED}) + find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib) + if(OCC_LIB) + list(APPEND OCC_LIBS ${OCC_LIB}) + else(OCC_LIB) + message(STATUS "OCC lib " ${OCC} " not Found") + endif(OCC_LIB) + unset(OCC_LIB CACHE) + endforeach(OCC) + list(LENGTH OCC_LIBS NUM_OCC_LIBS) + endif(OCC_LIBS) + if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) + set_config_option(HAVE_OCC "OpenCASCADE") list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS}) list(APPEND EXTERNAL_INCLUDES ${OCC_INC}) if(HAVE_64BIT_SIZE_T) add_definitions(-D_OCC64) endif(HAVE_64BIT_SIZE_T) if(CYGWIN) - list(APPEND EXTERNAL_LIBRARIES "winspool") + list(APPEND EXTERNAL_LIBRARIES "winspool") add_definitions(-DOCC_CONVERT_SIGNALS) elseif(MSVC) - add_definitions(-DWNT) + add_definitions(-DWNT) endif(CYGWIN) - endif(OCC_INC) - endif(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) + endif(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) + endif(OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) endif(ENABLE_OCC) if(ENABLE_ACIS) @@ -1455,9 +1474,12 @@ if(ENABLE_BUILD_ANDROID) set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/) add_definitions(-DBUILD_ANDROID) + add_definitions(-DPICOJSON_USE_LOCALE=0) add_library(androidGmsh SHARED ${GMSH_SRC}) set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME Gmsh) target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES}) + add_custom_command(TARGET androidGmsh POST_BUILD COMMAND + ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libGmsh.so) endif(ENABLE_BUILD_ANDROID) # shared library target diff --git a/CREDITS.txt b/CREDITS.txt index 0f97a60a3a304113a62b36e71fe980bac07b073b..d18eee3cfc7f056f1cdf4359b6c0e0e803280d7f 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -42,6 +42,25 @@ specific, written prior permission. The University of California makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +The picojson code (Common/picojson.h) is Copyright 2009-2010 Cybozu Labs, Inc., +Copyright 2011-2014 Kazuho Oku, All rights reserved. Redistribution and use in +source and binary forms, with or without modification, are permitted provided +that the following conditions are met: 1. Redistributions of source code must +retain the above copyright notice, this list of conditions and the following +disclaimer. 2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. THIS +SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + The trackball code (Graphics/Trackball.{cpp.h}) is copyright (C) 1993, 1994, Silicon Graphics, Inc. ALL RIGHTS RESERVED. Permission to use, copy, modify, and distribute this software for any purpose and without fee is hereby granted, diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp index d2fcb73b3640babdbca5f9b8b67085244b566522..1cb76601e4bb296cc083ae4200f291ea8e9521ef 100644 --- a/Common/CommandLine.cpp +++ b/Common/CommandLine.cpp @@ -184,9 +184,9 @@ std::vector<std::pair<std::string, std::string> > GetShortcutsUsage(const std::s s.push_back(mp("p", "Go to post-processing module")); s.push_back(mp("q", "Abort selection in geometry creation mode")); s.push_back(mp("s", "Go to solver module")); - s.push_back(mp("x", "Freeze x coordinate in geometry creation mode")); - s.push_back(mp("y", "Freeze y coordinate in geometry creation mode")); - s.push_back(mp("z", "Freeze z coordinate in geometry creation mode")); + s.push_back(mp("x", "Toogle x coordinate freeze in geometry creation mode")); + s.push_back(mp("y", "Toogle y coordinate freeze in geometry creation mode")); + s.push_back(mp("z", "Toogle z coordinate freeze in geometry creation mode")); s.push_back(mp("Shift+a", "Bring all windows to front")); s.push_back(mp("Shift+g", "Show geometry options")); s.push_back(mp("Shift+m", "Show mesh options")); @@ -195,6 +195,9 @@ std::vector<std::pair<std::string, std::string> > GetShortcutsUsage(const std::s s.push_back(mp("Shift+s", "Show solver options")); s.push_back(mp("Shift+u", "Show post-processing view plugins")); s.push_back(mp("Shift+w", "Show post-processing view options")); + s.push_back(mp("Shift+x", "Move only along x coordinate in geometry creation mode")); + s.push_back(mp("Shift+y", "Move only along y coordinate in geometry creation mode")); + s.push_back(mp("Shift+z", "Move only along z coordinate in geometry creation mode")); s.push_back(mp("Shift+Escape", "Enable full mouse selection")); s.push_back(mp(cc + "d", "Attach/detach menu")); s.push_back(mp(cc + "e", "Export project")); diff --git a/Common/Context.h b/Common/Context.h index 7613c162d64623ab46a610cf27aaabd01db6929e..3d021709dc5d4413aba63f9be5852f8c041399bc 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -75,7 +75,7 @@ struct contextGeometryOptions { int autoCoherence, highlightOrphans, clip, useTransform; double tolerance, toleranceBoolean, snap[3], transform[3][3], offset[3]; int occFixDegenerated, occFixSmallEdges, occFixSmallFaces; - int occSewFaces, occParallel; + int occSewFaces, occParallel, occBooleanPreserveNumbering; double occScaling; int copyMeshingMethod, exactExtrusion; int matchGeomAndMesh; diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp index 721ba257217b6b62760a396c8b505b3a27b22bd2..f744e81f1ec5484322bf62cc01199dc48c4b51c5 100644 --- a/Common/CreateFile.cpp +++ b/Common/CreateFile.cpp @@ -71,6 +71,7 @@ int GetFileFormatFromExtension(const std::string &ext) else if(ext == ".pdf") return FORMAT_PDF; else if(ext == ".tex") return FORMAT_TEX; else if(ext == ".svg") return FORMAT_SVG; + else if(ext == ".tikz") return FORMAT_TIKZ; else if(ext == ".ppm") return FORMAT_PPM; else if(ext == ".yuv") return FORMAT_YUV; else if(ext == ".brep") return FORMAT_BREP; @@ -120,12 +121,13 @@ std::string GetDefaultFileName(int format) case FORMAT_JPEG: name += ".jpg"; break; case FORMAT_MPEG: name += ".mpg"; break; case FORMAT_PNG: name += ".png"; break; - case FORMAT_PGF: name += ".todo"; break; + case FORMAT_PGF: name += ".pgf"; break; case FORMAT_PS: name += ".ps"; break; case FORMAT_EPS: name += ".eps"; break; case FORMAT_PDF: name += ".pdf"; break; case FORMAT_TEX: name += ".tex"; break; case FORMAT_SVG: name += ".svg"; break; + case FORMAT_TIKZ: name += ".tikz"; break; case FORMAT_PPM: name += ".ppm"; break; case FORMAT_YUV: name += ".yuv"; break; case FORMAT_BREP: name += ".brep"; break; @@ -437,6 +439,7 @@ void CreateOutputFile(const std::string &fileName, int format, case FORMAT_EPS: case FORMAT_PDF: case FORMAT_SVG: + case FORMAT_TIKZ: { if(!FlGui::available()) break; @@ -460,6 +463,7 @@ void CreateOutputFile(const std::string &fileName, int format, (format == FORMAT_PDF) ? GL2PS_PDF : (format == FORMAT_PS) ? GL2PS_PS : (format == FORMAT_SVG) ? GL2PS_SVG : + (format == FORMAT_TIKZ) ? GL2PS_PGF : GL2PS_EPS; int pssort = (CTX::instance()->print.epsQuality == 3) ? GL2PS_NO_SORT : diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 7580d87431db8d595614a6ee8f42fb44124ec722..c4f89781352b3b984ccb3cc48b86cbcb62bd8330 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -870,6 +870,8 @@ StringXNumber GeometryOptions_Number[] = { "Sew faces in STEP, IGES and BRep models" }, { F|O, "OCCParallel" , opt_geometry_occ_parallel , 0. , "Use multi-threaded OCC boolean operators" }, + { F|O, "OCCBooleanPreserveNumbering" , opt_geometry_occ_boolean_preserve_numbering , 1. , + "Try to preserve numbering of entities through OCC boolean operations" }, { F|O, "OCCScaling" , opt_geometry_occ_scaling , 1. , "Scale STEP, IGES and BRep model by given factor" }, { F, "OffsetX" , opt_geometry_offset0 , 0. , diff --git a/Common/GmshDefines.h b/Common/GmshDefines.h index e80216beef89d4a488c5d2abaaa5db4c56d5844d..630462e3fd90e1cf2571754bc7be9ec00270d903 100644 --- a/Common/GmshDefines.h +++ b/Common/GmshDefines.h @@ -54,6 +54,7 @@ #define FORMAT_PVTU 45 #define FORMAT_X3D 46 #define FORMAT_TOCHNOG 47 +#define FORMAT_TIKZ 48 // Element types #define TYPE_PNT 1 diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp index 7addcf5b0b72b41216bc7090886cc1c17a5a8308..3d27cbcc645ea550eef605924efaf45dbedd6d93 100644 --- a/Common/OpenFile.cpp +++ b/Common/OpenFile.cpp @@ -413,6 +413,10 @@ int MergeFile(const std::string &fileName, bool warnIfMissing, bool setBoundingB else if(ext == ".dat" || ext == ".DAT"){ if(!strncmp(header, "BEGIN ACTRAN", 12)) status = GModel::current()->readACTRAN(fileName); + else if(!strncmp(header, "!", 1) || + !strncmp(header, ";ECHO", 5) || + !strncmp(header, ".NOE", 4)) + status = GModel::current()->readSAMCEF(fileName); else status = GModel::current()->readBDF(fileName); } diff --git a/Common/Options.cpp b/Common/Options.cpp index 54ff43da23b3bcb820f19e7bf673c9a4271495ba..e5fe4fe33a7ab6bbcabd51a5bd3397d19feb4c72 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -4741,6 +4741,13 @@ double opt_geometry_occ_parallel(OPT_ARGS_NUM) return CTX::instance()->geom.occParallel; } +double opt_geometry_occ_boolean_preserve_numbering(OPT_ARGS_NUM) +{ + if(action & GMSH_SET) + CTX::instance()->geom.occBooleanPreserveNumbering = (int)val; + return CTX::instance()->geom.occBooleanPreserveNumbering; +} + double opt_geometry_occ_scaling(OPT_ARGS_NUM) { if(action & GMSH_SET) diff --git a/Common/Options.h b/Common/Options.h index f9de4ad20b12302a4d5818d49d71a2781b204733..8a2e7791340e4887a731eca98a3eb4ff64597908 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -387,6 +387,7 @@ double opt_geometry_occ_fix_small_edges(OPT_ARGS_NUM); double opt_geometry_occ_fix_small_faces(OPT_ARGS_NUM); double opt_geometry_occ_sew_faces(OPT_ARGS_NUM); double opt_geometry_occ_parallel(OPT_ARGS_NUM); +double opt_geometry_occ_boolean_preserve_numbering(OPT_ARGS_NUM); double opt_geometry_occ_scaling(OPT_ARGS_NUM); double opt_geometry_old_circle(OPT_ARGS_NUM); double opt_geometry_old_newreg(OPT_ARGS_NUM); diff --git a/Common/gmshLocalNetworkClient.cpp b/Common/gmshLocalNetworkClient.cpp index b756f56255cd13eb26624f7d42a373f07536b312..c8b785114f7e70af6e8335535d58836cd1f8ec79 100644 --- a/Common/gmshLocalNetworkClient.cpp +++ b/Common/gmshLocalNetworkClient.cpp @@ -723,7 +723,7 @@ void saveDb(const std::string &fileName) fp = Fopen((fileName + ".json").c_str(), "wb"); if(fp){ std::string json; - onelab::server::instance()->toJSON(json); + onelab::server::instance()->toJSON(json, "Gmsh"); fwrite(json.c_str(), sizeof(char), json.size(), fp); fclose(fp); } diff --git a/Common/onelab.h b/Common/onelab.h index 0a49bb04e8e004b3bfbfc556a9da2c7cd7ae2eac..0ff57b19d0e6f82b541bd40a2b2de96f2db681f5 100644 --- a/Common/onelab.h +++ b/Common/onelab.h @@ -38,6 +38,7 @@ #include <algorithm> #include <sstream> #include "GmshSocket.h" +#include "picojson.h" namespace onelab{ @@ -322,35 +323,93 @@ namespace onelab{ } return true; } + std::string sanitizeJSON(const std::string &in) const + { + // FIXME: replace \n with \\n, \t with \\t, etc. + return in; + } virtual std::string toJSON() const { std::ostringstream sstream; sstream << "\"type\":\"" << getType() << "\"" - << ", \"version\":\"" << version() << "\"" - << ", \"name\":\"" << sanitize(getName()) << "\"" - << ", \"label\":\"" << sanitize(getLabel()) << "\"" - << ", \"help\":\"" << sanitize(getHelp()) << "\"" - << ", \"changedValue\":" << getChangedValue() + << ", \"name\":\"" << sanitizeJSON(getName()) << "\""; + if(getLabel().size()) + sstream << ", \"label\":\"" << sanitizeJSON(getLabel()) << "\""; + if(getHelp().size()) + sstream << ", \"help\":\"" << sanitizeJSON(getHelp()) << "\""; + sstream << ", \"changedValue\":" << getChangedValue() << ", \"visible\":" << (getVisible() ? "true" : "false") - << ", \"readOnly\":" << (getReadOnly() ? "true" : "false") - << ", \"attributes\":{ "; - for(std::map<std::string, std::string>::const_iterator it = _attributes.begin(); - it != _attributes.end(); it++){ - if(it != _attributes.begin()) sstream << ", "; - sstream << "\"" << sanitize(it->first) << "\":\"" - << sanitize(it->second) << "\""; + << ", \"readOnly\":" << (getReadOnly() ? "true" : "false"); + if(_attributes.size()){ + sstream << ", \"attributes\":{ "; + for(std::map<std::string, std::string>::const_iterator it = _attributes.begin(); + it != _attributes.end(); it++){ + if(it != _attributes.begin()) sstream << ", "; + sstream << "\"" << sanitizeJSON(it->first) << "\":\"" + << sanitizeJSON(it->second) << "\""; + } + sstream << " }"; } - sstream << " }" - << ", \"clients\":{ "; - for(std::map<std::string, int>::const_iterator it = getClients().begin(); - it != getClients().end(); it++){ - if(it != getClients().begin()) sstream << ", "; - sstream << "\"" << sanitize(it->first) << "\":" - << (it->second ? "true" : "false"); + if(getClients().size()){ + sstream << ", \"clients\":{ "; + for(std::map<std::string, int>::const_iterator it = getClients().begin(); + it != getClients().end(); it++){ + if(it != getClients().begin()) sstream << ", "; + sstream << "\"" << sanitizeJSON(it->first) << "\":" + << it->second; + } + sstream << " }"; } - sstream << " }"; return sstream.str(); } + virtual bool fromJSON(const picojson::value::object& par) + { + for(picojson::value::object::const_iterator it = par.begin(); it != par.end(); ++it){ + if(it->first == "name"){ + if(!it->second.is<std::string>()) return false; + setName(it->second.get<std::string>()); + } + else if(it->first == "label"){ + if(!it->second.is<std::string>()) return false; + setLabel(it->second.get<std::string>()); + } + else if(it->first == "help"){ + if(!it->second.is<std::string>()) return false; + setHelp(it->second.get<std::string>()); + } + else if(it->first == "changedValue"){ + if(!it->second.is<double>()) return false; + setChangedValue((int)it->second.get<double>()); + } + else if(it->first == "visible"){ + if(!it->second.is<bool>()) return false; + setVisible(it->second.get<bool>()); + } + else if(it->first == "readOnly"){ + if(!it->second.is<bool>()) return false; + setReadOnly(it->second.get<bool>()); + } + else if(it->first == "attributes"){ + if(!it->second.is<picojson::object>()) return false; + const picojson::value::object &obj = it->second.get<picojson::object>(); + for (picojson::value::object::const_iterator i = obj.begin(); i != obj.end(); ++i) { + std::string key(i->first); + if(!i->second.is<std::string>()) return false; + setAttribute(key, i->second.get<std::string>()); + } + } + else if(it->first == "clients"){ + if(!it->second.is<picojson::object>()) return false; + const picojson::value::object &obj = it->second.get<picojson::object>(); + for (picojson::value::object::const_iterator i = obj.begin(); i != obj.end(); ++i) { + std::string client(i->first); + if(!i->second.is<double>()) return false; + addClient(client, (int)i->second.get<double>()); + } + } + } + return true; + } }; class parameterLessThan{ @@ -490,7 +549,7 @@ namespace onelab{ std::ostringstream sstream; sstream.precision(16); sstream << "{ " << parameter::toJSON() - << ", \"values\":["; + << ", \"values\":[ "; for(unsigned int i = 0; i < _values.size(); i++){ if(i) sstream << ", "; sstream << _values[i]; @@ -499,22 +558,76 @@ namespace onelab{ << ", \"min\":" << _min << ", \"max\":" << _max << ", \"step\":" << _step - << ", \"index\":" << _index - << ", \"choices\":[ "; - for(unsigned int i = 0; i < _choices.size(); i++){ - if(i) sstream << ", "; - sstream << _choices[i]; + << ", \"index\":" << _index; + if(_choices.size()){ + sstream << ", \"choices\":[ "; + for(unsigned int i = 0; i < _choices.size(); i++){ + if(i) sstream << ", "; + sstream << _choices[i]; + } + sstream << " ]"; } - sstream << " ]" - << ", \"valueLabels\":{ "; - for(std::map<double, std::string>::const_iterator it = _valueLabels.begin(); - it != _valueLabels.end(); it++){ - if(it != _valueLabels.begin()) sstream << ", "; - sstream << "\"" << sanitize(it->second) << "\":" << it->first; + if(_valueLabels.size()){ + sstream << ", \"valueLabels\":{ "; + for(std::map<double, std::string>::const_iterator it = _valueLabels.begin(); + it != _valueLabels.end(); it++){ + if(it != _valueLabels.begin()) sstream << ", "; + sstream << "\"" << sanitizeJSON(it->second) << "\":" << it->first; + } + sstream << " }"; } - sstream << " } }"; + sstream << " }"; return sstream.str(); } + bool fromJSON(const picojson::value::object& par) + { + if(!parameter::fromJSON(par)) return false; + for(picojson::value::object::const_iterator it = par.begin(); it != par.end(); ++it){ + if(it->first == "values"){ + if(!it->second.is<picojson::array>()) return false; + const picojson::value::array &arr = it->second.get<picojson::array>(); + _values.resize(arr.size()); + for(unsigned int i = 0; i < arr.size(); i++){ + if(!arr[i].is<double>()) return false; + _values[i] = arr[i].get<double>(); + } + } + else if(it->first == "min"){ + if(!it->second.is<double>()) return false; + setMin(it->second.get<double>()); + } + else if(it->first == "max"){ + if(!it->second.is<double>()) return false; + setMax(it->second.get<double>()); + } + else if(it->first == "step"){ + if(!it->second.is<double>()) return false; + setStep(it->second.get<double>()); + } + else if(it->first == "index"){ + if(!it->second.is<double>()) return false; + setIndex((int)it->second.get<double>()); + } + else if(it->first == "choices"){ + if(!it->second.is<picojson::array>()) return false; + const picojson::value::array &arr = it->second.get<picojson::array>(); + _choices.resize(arr.size()); + for(unsigned int i = 0; i < arr.size(); i++){ + if(!arr[i].is<double>()) return false; + _choices[i] = arr[i].get<double>(); + } + } + else if(it->first == "valueLabels"){ + if(!it->second.is<picojson::object>()) return false; + const picojson::value::object &obj = it->second.get<picojson::object>(); + for (picojson::value::object::const_iterator i = obj.begin(); i != obj.end(); ++i) { + if(!i->second.is<double>()) return false; + _valueLabels[i->second.get<double>()] = i->first; + } + } + } + return true; + } }; // The string class. A string has a mutable "kind", that can be changed at @@ -598,18 +711,51 @@ namespace onelab{ << ", \"values\":[ " ; for(unsigned int i = 0; i < _values.size(); i++){ if(i) sstream << ", "; - sstream << "\"" << sanitize(_values[i]) << "\""; + sstream << "\"" << sanitizeJSON(_values[i]) << "\""; } - sstream << " ] " - << ", \"kind\":\"" << sanitize(_kind) << "\"" - << ", \"choices\":[ "; - for(unsigned int i = 0; i < _choices.size(); i++){ - if(i) sstream << ", "; - sstream << "\"" << sanitize(_choices[i]) << "\""; + sstream << " ] "; + if(_kind.size()) + sstream << ", \"kind\":\"" << sanitizeJSON(_kind) << "\""; + if(_choices.size()){ + sstream << ", \"choices\":[ "; + for(unsigned int i = 0; i < _choices.size(); i++){ + if(i) sstream << ", "; + sstream << "\"" << sanitizeJSON(_choices[i]) << "\""; + } + sstream << " ]"; } - sstream << " ] }"; + sstream << " }"; return sstream.str(); } + bool fromJSON(const picojson::value::object& par) + { + if(!parameter::fromJSON(par)) return false; + for(picojson::value::object::const_iterator it = par.begin(); it != par.end(); ++it){ + if(it->first == "values"){ + if(!it->second.is<picojson::array>()) return false; + const picojson::value::array &arr = it->second.get<picojson::array>(); + _values.resize(arr.size()); + for(unsigned int i = 0; i < arr.size(); i++){ + if(!arr[i].is<std::string>()) return false; + _values[i] = arr[i].get<std::string>(); + } + } + else if(it->first == "kind"){ + if(!it->second.is<std::string>()) return false; + setKind(it->second.get<std::string>()); + } + else if(it->first == "choices"){ + if(!it->second.is<picojson::array>()) return false; + const picojson::value::array &arr = it->second.get<picojson::array>(); + _choices.resize(arr.size()); + for(unsigned int i = 0; i < arr.size(); i++){ + if(!arr[i].is<std::string>()) return false; + _choices[i] = arr[i].get<std::string>(); + } + } + } + return true; + } }; // The parameter space, i.e., the set of parameters stored and handled by the @@ -841,7 +987,7 @@ namespace onelab{ } return true; } - void toJSON(std::string &json, const std::string &creator="", + bool toJSON(std::string &json, const std::string &creator="", const std::string &client="") const { time_t now; @@ -852,19 +998,58 @@ namespace onelab{ json += "{ \"onelab\":{\n"; json += " \"creator\":\"" + creator + "\",\n"; json += " \"date\":\"" + t + "\",\n"; - json += " \"parameters\":[ \n"; + json += " \"version\":\"" + parameter::version() + "\",\n"; + json += " \"parameters\":[\n"; std::set<parameter*, parameterLessThan> ps; _getAllParameters(ps); for(std::set<parameter*, parameterLessThan>::const_iterator it = ps.begin(); it != ps.end(); it++){ + if(it != ps.begin()) json += ",\n"; if(client.empty() || (*it)->hasClient(client)){ if((*it)->getAttribute("NotInDb") != "True"){ - if(it != ps.begin()) json += ", "; - json += " " + (*it)->toJSON() + "\n"; + json += " " + (*it)->toJSON(); } } } - json += "] }\n}\n"; + json += "\n ] }\n}\n"; + return true; + } + bool fromJSON(const std::string &json, const std::string &client="") + { + picojson::value v; + std::string err = picojson::parse(v, json); + if(err.size()) return false; + if(!v.is<picojson::object>()) return false; + const picojson::value::object &obj = v.get<picojson::object>(); + for (picojson::value::object::const_iterator i = obj.begin(); i != obj.end(); ++i) { + if(i->first == "onelab"){ // onelab database + if(!i->second.is<picojson::object>()) return false; + const picojson::value::object &db = i->second.get<picojson::object>(); + for (picojson::value::object::const_iterator j = db.begin(); j != db.end(); ++j) { + if(j->first == "version"){ + if(!j->second.is<std::string>()) return false; + if(j->second.get<std::string>() != parameter::version()) return false; + } + else if(j->first == "parameters"){ + if(!j->second.is<picojson::array>()) return false; + const picojson::value::array &arr = j->second.get<picojson::array>(); + for(unsigned int k = 0; k < arr.size(); k++){ + if(!arr[k].is<picojson::object>()) return false; + const picojson::value::object &par = arr[k].get<picojson::object>(); + picojson::value::object::const_iterator it = par.find("type"); + if(it == par.end()) return false; + if(it->second.to_str() == "number"){ + number p; p.fromJSON(par); set(p, client); + } + else if(it->second.to_str() == "string"){ + string p; p.fromJSON(par); set(p, client); + } + } + } + } + } + } + return true; } }; @@ -1026,9 +1211,13 @@ namespace onelab{ if(parameter::fromFile(msg, fp)) return fromChar(msg, client); return false; } - void toJSON(std::string &json, const std::string &client="") + bool toJSON(std::string &json, const std::string &client="") + { + return _parameterSpace.toJSON(json, client); + } + bool fromJSON(const std::string &json, const std::string &client="") { - _parameterSpace.toJSON(json, client); + return _parameterSpace.fromJSON(json, client); } }; diff --git a/Common/picojson.h b/Common/picojson.h new file mode 100644 index 0000000000000000000000000000000000000000..f75c399b7e7380bdac4fbb25019e6ce499714f26 --- /dev/null +++ b/Common/picojson.h @@ -0,0 +1,1160 @@ +/* + * Copyright 2009-2010 Cybozu Labs, Inc. + * Copyright 2011-2014 Kazuho Oku + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef picojson_h +#define picojson_h + +#include <algorithm> +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <cstddef> +#include <iostream> +#include <iterator> +#include <limits> +#include <map> +#include <stdexcept> +#include <string> +#include <vector> +#include <utility> + +// for isnan/isinf +#if __cplusplus >= 201103L +#include <cmath> +#else +extern "C" { +#ifdef _MSC_VER +#include <float.h> +#elif defined(__INTEL_COMPILER) +#include <mathimf.h> +#else +#include <math.h> +#endif +} +#endif + +#ifndef PICOJSON_USE_RVALUE_REFERENCE +#if (defined(__cpp_rvalue_references) && __cpp_rvalue_references >= 200610) || (defined(_MSC_VER) && _MSC_VER >= 1600) +#define PICOJSON_USE_RVALUE_REFERENCE 1 +#else +#define PICOJSON_USE_RVALUE_REFERENCE 0 +#endif +#endif // PICOJSON_USE_RVALUE_REFERENCE + +// experimental support for int64_t (see README.mkdn for detail) +#ifdef PICOJSON_USE_INT64 +#define __STDC_FORMAT_MACROS +#include <errno.h> +#include <inttypes.h> +#endif + +// to disable the use of localeconv(3), set PICOJSON_USE_LOCALE to 0 +#ifndef PICOJSON_USE_LOCALE +#define PICOJSON_USE_LOCALE 1 +#endif +#if PICOJSON_USE_LOCALE +extern "C" { +#include <locale.h> +} +#endif + +#ifndef PICOJSON_ASSERT +#define PICOJSON_ASSERT(e) \ + do { \ + if (!(e)) \ + throw std::runtime_error(#e); \ + } while (0) +#endif + +#ifdef _MSC_VER +#define SNPRINTF _snprintf_s +#pragma warning(push) +#pragma warning(disable : 4244) // conversion from int to char +#pragma warning(disable : 4127) // conditional expression is constant +#pragma warning(disable : 4702) // unreachable code +#else +#define SNPRINTF snprintf +#endif + +namespace picojson { + +enum { + null_type, + boolean_type, + number_type, + string_type, + array_type, + object_type +#ifdef PICOJSON_USE_INT64 + , + int64_type +#endif +}; + +enum { INDENT_WIDTH = 2 }; + +struct null {}; + +class value { +public: + typedef std::vector<value> array; + typedef std::map<std::string, value> object; + union _storage { + bool boolean_; + double number_; +#ifdef PICOJSON_USE_INT64 + int64_t int64_; +#endif + std::string *string_; + array *array_; + object *object_; + }; + +protected: + int type_; + _storage u_; + +public: + value(); + value(int type, bool); + explicit value(bool b); +#ifdef PICOJSON_USE_INT64 + explicit value(int64_t i); +#endif + explicit value(double n); + explicit value(const std::string &s); + explicit value(const array &a); + explicit value(const object &o); +#if PICOJSON_USE_RVALUE_REFERENCE + explicit value(std::string &&s); + explicit value(array &&a); + explicit value(object &&o); +#endif + explicit value(const char *s); + value(const char *s, size_t len); + ~value(); + value(const value &x); + value &operator=(const value &x); +#if PICOJSON_USE_RVALUE_REFERENCE + value(value &&x) throw(); + value &operator=(value &&x) throw(); +#endif + void swap(value &x) throw(); + template <typename T> bool is() const; + template <typename T> const T &get() const; + template <typename T> T &get(); + template <typename T> void set(const T &); +#if PICOJSON_USE_RVALUE_REFERENCE + template <typename T> void set(T &&); +#endif + bool evaluate_as_boolean() const; + const value &get(const size_t idx) const; + const value &get(const std::string &key) const; + value &get(const size_t idx); + value &get(const std::string &key); + + bool contains(const size_t idx) const; + bool contains(const std::string &key) const; + std::string to_str() const; + template <typename Iter> void serialize(Iter os, bool prettify = false) const; + std::string serialize(bool prettify = false) const; + +private: + template <typename T> value(const T *); // intentionally defined to block implicit conversion of pointer to bool + template <typename Iter> static void _indent(Iter os, int indent); + template <typename Iter> void _serialize(Iter os, int indent) const; + std::string _serialize(int indent) const; + void clear(); +}; + +typedef value::array array; +typedef value::object object; + +inline value::value() : type_(null_type), u_() { +} + +inline value::value(int type, bool) : type_(type), u_() { + switch (type) { +#define INIT(p, v) \ + case p##type: \ + u_.p = v; \ + break + INIT(boolean_, false); + INIT(number_, 0.0); +#ifdef PICOJSON_USE_INT64 + INIT(int64_, 0); +#endif + INIT(string_, new std::string()); + INIT(array_, new array()); + INIT(object_, new object()); +#undef INIT + default: + break; + } +} + +inline value::value(bool b) : type_(boolean_type), u_() { + u_.boolean_ = b; +} + +#ifdef PICOJSON_USE_INT64 +inline value::value(int64_t i) : type_(int64_type), u_() { + u_.int64_ = i; +} +#endif + +inline value::value(double n) : type_(number_type), u_() { + if ( +#ifdef _MSC_VER + !_finite(n) +#elif __cplusplus >= 201103L || !(defined(isnan) && defined(isinf)) + std::isnan(n) || std::isinf(n) +#else + isnan(n) || isinf(n) +#endif + ) { + throw std::overflow_error(""); + } + u_.number_ = n; +} + +inline value::value(const std::string &s) : type_(string_type), u_() { + u_.string_ = new std::string(s); +} + +inline value::value(const array &a) : type_(array_type), u_() { + u_.array_ = new array(a); +} + +inline value::value(const object &o) : type_(object_type), u_() { + u_.object_ = new object(o); +} + +#if PICOJSON_USE_RVALUE_REFERENCE +inline value::value(std::string &&s) : type_(string_type), u_() { + u_.string_ = new std::string(std::move(s)); +} + +inline value::value(array &&a) : type_(array_type), u_() { + u_.array_ = new array(std::move(a)); +} + +inline value::value(object &&o) : type_(object_type), u_() { + u_.object_ = new object(std::move(o)); +} +#endif + +inline value::value(const char *s) : type_(string_type), u_() { + u_.string_ = new std::string(s); +} + +inline value::value(const char *s, size_t len) : type_(string_type), u_() { + u_.string_ = new std::string(s, len); +} + +inline void value::clear() { + switch (type_) { +#define DEINIT(p) \ + case p##type: \ + delete u_.p; \ + break + DEINIT(string_); + DEINIT(array_); + DEINIT(object_); +#undef DEINIT + default: + break; + } +} + +inline value::~value() { + clear(); +} + +inline value::value(const value &x) : type_(x.type_), u_() { + switch (type_) { +#define INIT(p, v) \ + case p##type: \ + u_.p = v; \ + break + INIT(string_, new std::string(*x.u_.string_)); + INIT(array_, new array(*x.u_.array_)); + INIT(object_, new object(*x.u_.object_)); +#undef INIT + default: + u_ = x.u_; + break; + } +} + +inline value &value::operator=(const value &x) { + if (this != &x) { + value t(x); + swap(t); + } + return *this; +} + +#if PICOJSON_USE_RVALUE_REFERENCE +inline value::value(value &&x) throw() : type_(null_type), u_() { + swap(x); +} +inline value &value::operator=(value &&x) throw() { + swap(x); + return *this; +} +#endif +inline void value::swap(value &x) throw() { + std::swap(type_, x.type_); + std::swap(u_, x.u_); +} + +#define IS(ctype, jtype) \ + template <> inline bool value::is<ctype>() const { \ + return type_ == jtype##_type; \ + } +IS(null, null) +IS(bool, boolean) +#ifdef PICOJSON_USE_INT64 +IS(int64_t, int64) +#endif +IS(std::string, string) +IS(array, array) +IS(object, object) +#undef IS +template <> inline bool value::is<double>() const { + return type_ == number_type +#ifdef PICOJSON_USE_INT64 + || type_ == int64_type +#endif + ; +} + +#define GET(ctype, var) \ + template <> inline const ctype &value::get<ctype>() const { \ + PICOJSON_ASSERT("type mismatch! call is<type>() before get<type>()" && is<ctype>()); \ + return var; \ + } \ + template <> inline ctype &value::get<ctype>() { \ + PICOJSON_ASSERT("type mismatch! call is<type>() before get<type>()" && is<ctype>()); \ + return var; \ + } +GET(bool, u_.boolean_) +GET(std::string, *u_.string_) +GET(array, *u_.array_) +GET(object, *u_.object_) +#ifdef PICOJSON_USE_INT64 +GET(double, + (type_ == int64_type && (const_cast<value *>(this)->type_ = number_type, const_cast<value *>(this)->u_.number_ = u_.int64_), + u_.number_)) +GET(int64_t, u_.int64_) +#else +GET(double, u_.number_) +#endif +#undef GET + +#define SET(ctype, jtype, setter) \ + template <> inline void value::set<ctype>(const ctype &_val) { \ + clear(); \ + type_ = jtype##_type; \ + setter \ + } +SET(bool, boolean, u_.boolean_ = _val;) +SET(std::string, string, u_.string_ = new std::string(_val);) +SET(array, array, u_.array_ = new array(_val);) +SET(object, object, u_.object_ = new object(_val);) +SET(double, number, u_.number_ = _val;) +#ifdef PICOJSON_USE_INT64 +SET(int64_t, int64, u_.int64_ = _val;) +#endif +#undef SET + +#if PICOJSON_USE_RVALUE_REFERENCE +#define MOVESET(ctype, jtype, setter) \ + template <> inline void value::set<ctype>(ctype && _val) { \ + clear(); \ + type_ = jtype##_type; \ + setter \ + } +MOVESET(std::string, string, u_.string_ = new std::string(std::move(_val));) +MOVESET(array, array, u_.array_ = new array(std::move(_val));) +MOVESET(object, object, u_.object_ = new object(std::move(_val));) +#undef MOVESET +#endif + +inline bool value::evaluate_as_boolean() const { + switch (type_) { + case null_type: + return false; + case boolean_type: + return u_.boolean_; + case number_type: + return u_.number_ != 0; +#ifdef PICOJSON_USE_INT64 + case int64_type: + return u_.int64_ != 0; +#endif + case string_type: + return !u_.string_->empty(); + default: + return true; + } +} + +inline const value &value::get(const size_t idx) const { + static value s_null; + PICOJSON_ASSERT(is<array>()); + return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null; +} + +inline value &value::get(const size_t idx) { + static value s_null; + PICOJSON_ASSERT(is<array>()); + return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null; +} + +inline const value &value::get(const std::string &key) const { + static value s_null; + PICOJSON_ASSERT(is<object>()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end() ? i->second : s_null; +} + +inline value &value::get(const std::string &key) { + static value s_null; + PICOJSON_ASSERT(is<object>()); + object::iterator i = u_.object_->find(key); + return i != u_.object_->end() ? i->second : s_null; +} + +inline bool value::contains(const size_t idx) const { + PICOJSON_ASSERT(is<array>()); + return idx < u_.array_->size(); +} + +inline bool value::contains(const std::string &key) const { + PICOJSON_ASSERT(is<object>()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end(); +} + +inline std::string value::to_str() const { + switch (type_) { + case null_type: + return "null"; + case boolean_type: + return u_.boolean_ ? "true" : "false"; +#ifdef PICOJSON_USE_INT64 + case int64_type: { + char buf[sizeof("-9223372036854775808")]; + SNPRINTF(buf, sizeof(buf), "%" PRId64, u_.int64_); + return buf; + } +#endif + case number_type: { + char buf[256]; + double tmp; + SNPRINTF(buf, sizeof(buf), fabs(u_.number_) < (1ULL << 53) && modf(u_.number_, &tmp) == 0 ? "%.f" : "%.17g", u_.number_); +#if PICOJSON_USE_LOCALE + char *decimal_point = localeconv()->decimal_point; + if (strcmp(decimal_point, ".") != 0) { + size_t decimal_point_len = strlen(decimal_point); + for (char *p = buf; *p != '\0'; ++p) { + if (strncmp(p, decimal_point, decimal_point_len) == 0) { + return std::string(buf, p) + "." + (p + decimal_point_len); + } + } + } +#endif + return buf; + } + case string_type: + return *u_.string_; + case array_type: + return "array"; + case object_type: + return "object"; + default: + PICOJSON_ASSERT(0); +#ifdef _MSC_VER + __assume(0); +#endif + } + return std::string(); +} + +template <typename Iter> void copy(const std::string &s, Iter oi) { + std::copy(s.begin(), s.end(), oi); +} + +template <typename Iter> struct serialize_str_char { + Iter oi; + void operator()(char c) { + switch (c) { +#define MAP(val, sym) \ + case val: \ + copy(sym, oi); \ + break + MAP('"', "\\\""); + MAP('\\', "\\\\"); + MAP('/', "\\/"); + MAP('\b', "\\b"); + MAP('\f', "\\f"); + MAP('\n', "\\n"); + MAP('\r', "\\r"); + MAP('\t', "\\t"); +#undef MAP + default: + if (static_cast<unsigned char>(c) < 0x20 || c == 0x7f) { + char buf[7]; + SNPRINTF(buf, sizeof(buf), "\\u%04x", c & 0xff); + copy(buf, buf + 6, oi); + } else { + *oi++ = c; + } + break; + } + } +}; + +template <typename Iter> void serialize_str(const std::string &s, Iter oi) { + *oi++ = '"'; + serialize_str_char<Iter> process_char = {oi}; + std::for_each(s.begin(), s.end(), process_char); + *oi++ = '"'; +} + +template <typename Iter> void value::serialize(Iter oi, bool prettify) const { + return _serialize(oi, prettify ? 0 : -1); +} + +inline std::string value::serialize(bool prettify) const { + return _serialize(prettify ? 0 : -1); +} + +template <typename Iter> void value::_indent(Iter oi, int indent) { + *oi++ = '\n'; + for (int i = 0; i < indent * INDENT_WIDTH; ++i) { + *oi++ = ' '; + } +} + +template <typename Iter> void value::_serialize(Iter oi, int indent) const { + switch (type_) { + case string_type: + serialize_str(*u_.string_, oi); + break; + case array_type: { + *oi++ = '['; + if (indent != -1) { + ++indent; + } + for (array::const_iterator i = u_.array_->begin(); i != u_.array_->end(); ++i) { + if (i != u_.array_->begin()) { + *oi++ = ','; + } + if (indent != -1) { + _indent(oi, indent); + } + i->_serialize(oi, indent); + } + if (indent != -1) { + --indent; + if (!u_.array_->empty()) { + _indent(oi, indent); + } + } + *oi++ = ']'; + break; + } + case object_type: { + *oi++ = '{'; + if (indent != -1) { + ++indent; + } + for (object::const_iterator i = u_.object_->begin(); i != u_.object_->end(); ++i) { + if (i != u_.object_->begin()) { + *oi++ = ','; + } + if (indent != -1) { + _indent(oi, indent); + } + serialize_str(i->first, oi); + *oi++ = ':'; + if (indent != -1) { + *oi++ = ' '; + } + i->second._serialize(oi, indent); + } + if (indent != -1) { + --indent; + if (!u_.object_->empty()) { + _indent(oi, indent); + } + } + *oi++ = '}'; + break; + } + default: + copy(to_str(), oi); + break; + } + if (indent == 0) { + *oi++ = '\n'; + } +} + +inline std::string value::_serialize(int indent) const { + std::string s; + _serialize(std::back_inserter(s), indent); + return s; +} + +template <typename Iter> class input { +protected: + Iter cur_, end_; + bool consumed_; + int line_; + +public: + input(const Iter &first, const Iter &last) : cur_(first), end_(last), consumed_(false), line_(1) { + } + int getc() { + if (consumed_) { + if (*cur_ == '\n') { + ++line_; + } + ++cur_; + } + if (cur_ == end_) { + consumed_ = false; + return -1; + } + consumed_ = true; + return *cur_ & 0xff; + } + void ungetc() { + consumed_ = false; + } + Iter cur() const { + if (consumed_) { + input<Iter> *self = const_cast<input<Iter> *>(this); + self->consumed_ = false; + ++self->cur_; + } + return cur_; + } + int line() const { + return line_; + } + void skip_ws() { + while (1) { + int ch = getc(); + if (!(ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r')) { + ungetc(); + break; + } + } + } + bool expect(const int expected) { + skip_ws(); + if (getc() != expected) { + ungetc(); + return false; + } + return true; + } + bool match(const std::string &pattern) { + for (std::string::const_iterator pi(pattern.begin()); pi != pattern.end(); ++pi) { + if (getc() != *pi) { + ungetc(); + return false; + } + } + return true; + } +}; + +template <typename Iter> inline int _parse_quadhex(input<Iter> &in) { + int uni_ch = 0, hex; + for (int i = 0; i < 4; i++) { + if ((hex = in.getc()) == -1) { + return -1; + } + if ('0' <= hex && hex <= '9') { + hex -= '0'; + } else if ('A' <= hex && hex <= 'F') { + hex -= 'A' - 0xa; + } else if ('a' <= hex && hex <= 'f') { + hex -= 'a' - 0xa; + } else { + in.ungetc(); + return -1; + } + uni_ch = uni_ch * 16 + hex; + } + return uni_ch; +} + +template <typename String, typename Iter> inline bool _parse_codepoint(String &out, input<Iter> &in) { + int uni_ch; + if ((uni_ch = _parse_quadhex(in)) == -1) { + return false; + } + if (0xd800 <= uni_ch && uni_ch <= 0xdfff) { + if (0xdc00 <= uni_ch) { + // a second 16-bit of a surrogate pair appeared + return false; + } + // first 16-bit of surrogate pair, get the next one + if (in.getc() != '\\' || in.getc() != 'u') { + in.ungetc(); + return false; + } + int second = _parse_quadhex(in); + if (!(0xdc00 <= second && second <= 0xdfff)) { + return false; + } + uni_ch = ((uni_ch - 0xd800) << 10) | ((second - 0xdc00) & 0x3ff); + uni_ch += 0x10000; + } + if (uni_ch < 0x80) { + out.push_back(static_cast<char>(uni_ch)); + } else { + if (uni_ch < 0x800) { + out.push_back(static_cast<char>(0xc0 | (uni_ch >> 6))); + } else { + if (uni_ch < 0x10000) { + out.push_back(static_cast<char>(0xe0 | (uni_ch >> 12))); + } else { + out.push_back(static_cast<char>(0xf0 | (uni_ch >> 18))); + out.push_back(static_cast<char>(0x80 | ((uni_ch >> 12) & 0x3f))); + } + out.push_back(static_cast<char>(0x80 | ((uni_ch >> 6) & 0x3f))); + } + out.push_back(static_cast<char>(0x80 | (uni_ch & 0x3f))); + } + return true; +} + +template <typename String, typename Iter> inline bool _parse_string(String &out, input<Iter> &in) { + while (1) { + int ch = in.getc(); + if (ch < ' ') { + in.ungetc(); + return false; + } else if (ch == '"') { + return true; + } else if (ch == '\\') { + if ((ch = in.getc()) == -1) { + return false; + } + switch (ch) { +#define MAP(sym, val) \ + case sym: \ + out.push_back(val); \ + break + MAP('"', '\"'); + MAP('\\', '\\'); + MAP('/', '/'); + MAP('b', '\b'); + MAP('f', '\f'); + MAP('n', '\n'); + MAP('r', '\r'); + MAP('t', '\t'); +#undef MAP + case 'u': + if (!_parse_codepoint(out, in)) { + return false; + } + break; + default: + return false; + } + } else { + out.push_back(static_cast<char>(ch)); + } + } + return false; +} + +template <typename Context, typename Iter> inline bool _parse_array(Context &ctx, input<Iter> &in) { + if (!ctx.parse_array_start()) { + return false; + } + size_t idx = 0; + if (in.expect(']')) { + return ctx.parse_array_stop(idx); + } + do { + if (!ctx.parse_array_item(in, idx)) { + return false; + } + idx++; + } while (in.expect(',')); + return in.expect(']') && ctx.parse_array_stop(idx); +} + +template <typename Context, typename Iter> inline bool _parse_object(Context &ctx, input<Iter> &in) { + if (!ctx.parse_object_start()) { + return false; + } + if (in.expect('}')) { + return true; + } + do { + std::string key; + if (!in.expect('"') || !_parse_string(key, in) || !in.expect(':')) { + return false; + } + if (!ctx.parse_object_item(in, key)) { + return false; + } + } while (in.expect(',')); + return in.expect('}'); +} + +template <typename Iter> inline std::string _parse_number(input<Iter> &in) { + std::string num_str; + while (1) { + int ch = in.getc(); + if (('0' <= ch && ch <= '9') || ch == '+' || ch == '-' || ch == 'e' || ch == 'E') { + num_str.push_back(static_cast<char>(ch)); + } else if (ch == '.') { +#if PICOJSON_USE_LOCALE + num_str += localeconv()->decimal_point; +#else + num_str.push_back('.'); +#endif + } else { + in.ungetc(); + break; + } + } + return num_str; +} + +template <typename Context, typename Iter> inline bool _parse(Context &ctx, input<Iter> &in) { + in.skip_ws(); + int ch = in.getc(); + switch (ch) { +#define IS(ch, text, op) \ + case ch: \ + if (in.match(text) && op) { \ + return true; \ + } else { \ + return false; \ + } + IS('n', "ull", ctx.set_null()); + IS('f', "alse", ctx.set_bool(false)); + IS('t', "rue", ctx.set_bool(true)); +#undef IS + case '"': + return ctx.parse_string(in); + case '[': + return _parse_array(ctx, in); + case '{': + return _parse_object(ctx, in); + default: + if (('0' <= ch && ch <= '9') || ch == '-') { + double f; + char *endp; + in.ungetc(); + std::string num_str(_parse_number(in)); + if (num_str.empty()) { + return false; + } +#ifdef PICOJSON_USE_INT64 + { + errno = 0; + intmax_t ival = strtoimax(num_str.c_str(), &endp, 10); + if (errno == 0 && std::numeric_limits<int64_t>::min() <= ival && ival <= std::numeric_limits<int64_t>::max() && + endp == num_str.c_str() + num_str.size()) { + ctx.set_int64(ival); + return true; + } + } +#endif + f = strtod(num_str.c_str(), &endp); + if (endp == num_str.c_str() + num_str.size()) { + ctx.set_number(f); + return true; + } + return false; + } + break; + } + in.ungetc(); + return false; +} + +class deny_parse_context { +public: + bool set_null() { + return false; + } + bool set_bool(bool) { + return false; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t) { + return false; + } +#endif + bool set_number(double) { + return false; + } + template <typename Iter> bool parse_string(input<Iter> &) { + return false; + } + bool parse_array_start() { + return false; + } + template <typename Iter> bool parse_array_item(input<Iter> &, size_t) { + return false; + } + bool parse_array_stop(size_t) { + return false; + } + bool parse_object_start() { + return false; + } + template <typename Iter> bool parse_object_item(input<Iter> &, const std::string &) { + return false; + } +}; + +class default_parse_context { +protected: + value *out_; + +public: + default_parse_context(value *out) : out_(out) { + } + bool set_null() { + *out_ = value(); + return true; + } + bool set_bool(bool b) { + *out_ = value(b); + return true; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t i) { + *out_ = value(i); + return true; + } +#endif + bool set_number(double f) { + *out_ = value(f); + return true; + } + template <typename Iter> bool parse_string(input<Iter> &in) { + *out_ = value(string_type, false); + return _parse_string(out_->get<std::string>(), in); + } + bool parse_array_start() { + *out_ = value(array_type, false); + return true; + } + template <typename Iter> bool parse_array_item(input<Iter> &in, size_t) { + array &a = out_->get<array>(); + a.push_back(value()); + default_parse_context ctx(&a.back()); + return _parse(ctx, in); + } + bool parse_array_stop(size_t) { + return true; + } + bool parse_object_start() { + *out_ = value(object_type, false); + return true; + } + template <typename Iter> bool parse_object_item(input<Iter> &in, const std::string &key) { + object &o = out_->get<object>(); + default_parse_context ctx(&o[key]); + return _parse(ctx, in); + } + +private: + default_parse_context(const default_parse_context &); + default_parse_context &operator=(const default_parse_context &); +}; + +class null_parse_context { +public: + struct dummy_str { + void push_back(int) { + } + }; + +public: + null_parse_context() { + } + bool set_null() { + return true; + } + bool set_bool(bool) { + return true; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t) { + return true; + } +#endif + bool set_number(double) { + return true; + } + template <typename Iter> bool parse_string(input<Iter> &in) { + dummy_str s; + return _parse_string(s, in); + } + bool parse_array_start() { + return true; + } + template <typename Iter> bool parse_array_item(input<Iter> &in, size_t) { + return _parse(*this, in); + } + bool parse_array_stop(size_t) { + return true; + } + bool parse_object_start() { + return true; + } + template <typename Iter> bool parse_object_item(input<Iter> &in, const std::string &) { + return _parse(*this, in); + } + +private: + null_parse_context(const null_parse_context &); + null_parse_context &operator=(const null_parse_context &); +}; + +// obsolete, use the version below +template <typename Iter> inline std::string parse(value &out, Iter &pos, const Iter &last) { + std::string err; + pos = parse(out, pos, last, &err); + return err; +} + +template <typename Context, typename Iter> inline Iter _parse(Context &ctx, const Iter &first, const Iter &last, std::string *err) { + input<Iter> in(first, last); + if (!_parse(ctx, in) && err != NULL) { + char buf[64]; + SNPRINTF(buf, sizeof(buf), "syntax error at line %d near: ", in.line()); + *err = buf; + while (1) { + int ch = in.getc(); + if (ch == -1 || ch == '\n') { + break; + } else if (ch >= ' ') { + err->push_back(static_cast<char>(ch)); + } + } + } + return in.cur(); +} + +template <typename Iter> inline Iter parse(value &out, const Iter &first, const Iter &last, std::string *err) { + default_parse_context ctx(&out); + return _parse(ctx, first, last, err); +} + +inline std::string parse(value &out, const std::string &s) { + std::string err; + parse(out, s.begin(), s.end(), &err); + return err; +} + +inline std::string parse(value &out, std::istream &is) { + std::string err; + parse(out, std::istreambuf_iterator<char>(is.rdbuf()), std::istreambuf_iterator<char>(), &err); + return err; +} + +template <typename T> struct last_error_t { static std::string s; }; +template <typename T> std::string last_error_t<T>::s; + +inline void set_last_error(const std::string &s) { + last_error_t<bool>::s = s; +} + +inline const std::string &get_last_error() { + return last_error_t<bool>::s; +} + +inline bool operator==(const value &x, const value &y) { + if (x.is<null>()) + return y.is<null>(); +#define PICOJSON_CMP(type) \ + if (x.is<type>()) \ + return y.is<type>() && x.get<type>() == y.get<type>() + PICOJSON_CMP(bool); + PICOJSON_CMP(double); + PICOJSON_CMP(std::string); + PICOJSON_CMP(array); + PICOJSON_CMP(object); +#undef PICOJSON_CMP + PICOJSON_ASSERT(0); +#ifdef _MSC_VER + __assume(0); +#endif + return false; +} + +inline bool operator!=(const value &x, const value &y) { + return !(x == y); +} +} + +#if !PICOJSON_USE_RVALUE_REFERENCE +namespace std { +template <> inline void swap(picojson::value &x, picojson::value &y) { + x.swap(y); +} +} +#endif + +inline std::istream &operator>>(std::istream &is, picojson::value &x) { + picojson::set_last_error(std::string()); + const std::string err(picojson::parse(x, is)); + if (!err.empty()) { + picojson::set_last_error(err); + is.setstate(std::ios::failbit); + } + return is; +} + +inline std::ostream &operator<<(std::ostream &os, const picojson::value &x) { + x.serialize(std::ostream_iterator<char>(os)); + return os; +} +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp index d83e278f299fa0e9c2af1b162fafff4f97538668..728e8b2343da3d21382ed79812c8c1357bac7968 100644 --- a/Fltk/FlGui.cpp +++ b/Fltk/FlGui.cpp @@ -646,6 +646,24 @@ int FlGui::testGlobalShortcuts(int event) elementaryContext->butt[2]->value(!elementaryContext->butt[2]->value()); status = 1; // trick: do as if we didn't use it } + else if(Fl::test_shortcut(FL_SHIFT + 'x')) { + elementaryContext->butt[0]->value(0); + elementaryContext->butt[1]->value(1); + elementaryContext->butt[2]->value(1); + status = 1; // trick: do as if we didn't use it + } + else if(Fl::test_shortcut(FL_SHIFT + 'y')) { + elementaryContext->butt[0]->value(1); + elementaryContext->butt[1]->value(0); + elementaryContext->butt[2]->value(1); + status = 1; // trick: do as if we didn't use it + } + else if(Fl::test_shortcut(FL_SHIFT + 'z')) { + elementaryContext->butt[0]->value(1); + elementaryContext->butt[1]->value(1); + elementaryContext->butt[2]->value(0); + status = 1; // trick: do as if we didn't use it + } else if(Fl::test_shortcut(FL_Escape) || Fl::test_shortcut(FL_META + FL_Escape) || Fl::test_shortcut(FL_SHIFT + FL_Escape) || diff --git a/Fltk/contextWindow.cpp b/Fltk/contextWindow.cpp index 03c43364e4e9354cd89b21850b035359a1327ab3..b48f01bba1ef4edac436923592569434380754da 100644 --- a/Fltk/contextWindow.cpp +++ b/Fltk/contextWindow.cpp @@ -386,7 +386,7 @@ static void elementary_add_cylinder_cb(Fl_Widget *w, void *data) drawContext::global()->draw(); } -static void draw_block(void *context) +static void draw_box(void *context) { if(!GModel::current()->getOCCInternals()) GModel::current()->createOCCInternals(); double x, y, z, dx, dy, dz; @@ -399,27 +399,27 @@ static void draw_block(void *context) std::vector<SPoint3> vertices; std::vector<SVector3> normals; std::vector<int> triangles; - if(!GModel::current()->getOCCInternals()->makeBlockSTL + if(!GModel::current()->getOCCInternals()->makeBoxSTL (x, y, z, dx, dy, dz, vertices, normals, triangles)) return; draw_stl(vertices, normals, triangles); } -static void elementary_draw_block_cb(Fl_Widget *w, void *data) +static void elementary_draw_box_cb(Fl_Widget *w, void *data) { - drawContext::setDrawGeomTransientFunction(draw_block); + drawContext::setDrawGeomTransientFunction(draw_box); if(!data) drawContext::global()->draw(); } -static void elementary_add_block_cb(Fl_Widget *w, void *data) +static void elementary_add_box_cb(Fl_Widget *w, void *data) { - add_block(GModel::current()->getFileName(), - FlGui::instance()->elementaryContext->input[47]->value(), - FlGui::instance()->elementaryContext->input[48]->value(), - FlGui::instance()->elementaryContext->input[49]->value(), - FlGui::instance()->elementaryContext->input[50]->value(), - FlGui::instance()->elementaryContext->input[51]->value(), - FlGui::instance()->elementaryContext->input[52]->value()); + add_box(GModel::current()->getFileName(), + FlGui::instance()->elementaryContext->input[47]->value(), + FlGui::instance()->elementaryContext->input[48]->value(), + FlGui::instance()->elementaryContext->input[49]->value(), + FlGui::instance()->elementaryContext->input[50]->value(), + FlGui::instance()->elementaryContext->input[51]->value(), + FlGui::instance()->elementaryContext->input[52]->value()); FlGui::instance()->resetVisibility(); GModel::current()->setSelection(0); SetBoundingBox(); @@ -803,10 +803,10 @@ elementaryContextWindow::elementaryContextWindow(int deltaFontSize) } group[7]->end(); } - // 8: Block + // 8: Box { group[8] = new Fl_Group - (WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Block"); + (WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Box"); input[47] = new Fl_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "X"); input[47]->value("0"); input[48] = new Fl_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Y"); @@ -821,12 +821,12 @@ elementaryContextWindow::elementaryContextWindow(int deltaFontSize) input[52]->value("1"); for(int i = 47; i < 53; i++){ input[i]->align(FL_ALIGN_RIGHT); - input[i]->callback(elementary_draw_block_cb); + input[i]->callback(elementary_draw_box_cb); } { Fl_Button *o = new Fl_Button (width - BB - 2 * WB, height - 3 * WB - 2 * BH, BB, BH, "Add"); - o->callback(elementary_add_block_cb); + o->callback(elementary_add_box_cb); } group[8]->end(); } @@ -935,11 +935,11 @@ elementaryContextWindow::elementaryContextWindow(int deltaFontSize) value[i]->callback(elementary_snap_cb); } butt[0] = new Fl_Check_Button(width - 6 * BH, height - WB - BH, 1.2 * BH, BH, "X"); - butt[0]->tooltip("(x)"); + butt[0]->tooltip("Toggle (x) or exclusive unselect (Shift+x)"); butt[1] = new Fl_Check_Button(width - 6 * BH + 1.2 * BH, height - WB - BH, 1.2*BH, BH, "Y"); - butt[1]->tooltip("(y)"); + butt[1]->tooltip("Toggle (y) or exclusive unselect (Shift+y)"); butt[2] = new Fl_Check_Button(width - 6 * BH + 2.4 * BH, height - WB - BH, (6 - 2*1.2) * BH - WB, BH, "Z freeze"); - butt[2]->tooltip("(z)"); + butt[2]->tooltip("Toggle (z) or exclusive unselect (Shift+z)"); } tab1->show(); diff --git a/Fltk/fileDialogs.cpp b/Fltk/fileDialogs.cpp index 2dda82b3a82b3ef8741eb2633cb26e11307afd14..b0e7ce1e1c36e328819816fbb2a319dede208f61 100644 --- a/Fltk/fileDialogs.cpp +++ b/Fltk/fileDialogs.cpp @@ -688,26 +688,23 @@ static void activate_gl2ps_choices(int format, int quality, Fl_Check_Button *b[5 b[1]->deactivate(); b[2]->deactivate(); b[3]->deactivate(); - b[4]->deactivate(); break; case 1: // simple sort case 3: // unsorted b[1]->activate(); - b[2]->activate(); - b[3]->deactivate(); - if(format == FORMAT_PDF || format == FORMAT_SVG) - b[4]->deactivate(); + b[2]->deactivate(); + if(format == FORMAT_PS || format == FORMAT_EPS) + b[3]->activate(); else - b[4]->activate(); + b[3]->deactivate(); break; case 2: // bsp sort b[1]->activate(); b[2]->activate(); - b[3]->activate(); - if(format == FORMAT_PDF || format == FORMAT_SVG) - b[4]->deactivate(); + if(format == FORMAT_PS || format == FORMAT_EPS) + b[3]->activate(); else - b[4]->activate(); + b[3]->deactivate(); break; } } diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp index 849064a3cfb48d6051aa8e8f5e75503266f0c631..cbd150631e3c0902108d43bba3996fe34660187c 100644 --- a/Fltk/graphicWindow.cpp +++ b/Fltk/graphicWindow.cpp @@ -335,6 +335,8 @@ static int _save_ppm(const char *name){ return genericBitmapFileDialog (name, "PPM Options", FORMAT_PPM); } static int _save_svg(const char *name){ return gl2psFileDialog (name, "SVG Options", FORMAT_SVG); } +static int _save_tikz(const char *name){ return gl2psFileDialog + (name, "TIKZ Options", FORMAT_TIKZ); } static int _save_yuv(const char *name){ return genericBitmapFileDialog (name, "YUV Options", FORMAT_YUV); } static int _save_view_pos(const char *name){ return posFileDialog(name); } @@ -389,6 +391,7 @@ static int _save_auto(const char *name) case FORMAT_PS : return _save_ps(name); case FORMAT_PPM : return _save_ppm(name); case FORMAT_SVG : return _save_svg(name); + case FORMAT_TIKZ : return _save_tikz(name); case FORMAT_YUV : return _save_yuv(name); default : CreateOutputFile(name, FORMAT_AUTO); @@ -455,6 +458,7 @@ static void file_export_cb(Fl_Widget *w, void *data) {"Image - PostScript" TT "*.ps", _save_ps}, {"Image - PPM" TT "*.ppm", _save_ppm}, {"Image - SVG" TT "*.svg", _save_svg}, + {"Image - TIKZ" TT "*.tikz", _save_tikz}, {"Image - YUV" TT "*.yuv", _save_yuv}, #if defined(HAVE_MPEG_ENCODE) {"Movie - MPEG" TT "*.mpg", _save_mpeg}, @@ -743,13 +747,13 @@ static void add_new_point_based_entity(const std::string &what, int pane) FlGui::instance()->elementaryContext->input[46]->value()); break; case 8: - add_block(GModel::current()->getFileName(), - FlGui::instance()->elementaryContext->input[47]->value(), - FlGui::instance()->elementaryContext->input[48]->value(), - FlGui::instance()->elementaryContext->input[49]->value(), - FlGui::instance()->elementaryContext->input[50]->value(), - FlGui::instance()->elementaryContext->input[51]->value(), - FlGui::instance()->elementaryContext->input[52]->value()); + add_box(GModel::current()->getFileName(), + FlGui::instance()->elementaryContext->input[47]->value(), + FlGui::instance()->elementaryContext->input[48]->value(), + FlGui::instance()->elementaryContext->input[49]->value(), + FlGui::instance()->elementaryContext->input[50]->value(), + FlGui::instance()->elementaryContext->input[51]->value(), + FlGui::instance()->elementaryContext->input[52]->value()); break; case 9: add_torus(GModel::current()->getFileName(), @@ -1239,7 +1243,7 @@ static void geometry_elementary_add_new_cb(Fl_Widget *w, void *data) add_new_point_based_entity(str, 6); else if(str == "Cylinder") add_new_point_based_entity(str, 7); - else if(str == "Block") + else if(str == "Box") add_new_point_based_entity(str, 8); else if(str == "Torus") add_new_point_based_entity(str, 9); @@ -4171,8 +4175,8 @@ static menuItem static_modules[] = { (Fl_Callback *)geometry_elementary_add_new_cb, (void*)"Sphere"} , {"0Modules/Geometry/Elementary entities/Add/Cylinder", (Fl_Callback *)geometry_elementary_add_new_cb, (void*)"Cylinder"} , - {"0Modules/Geometry/Elementary entities/Add/Block", - (Fl_Callback *)geometry_elementary_add_new_cb, (void*)"Block"} , + {"0Modules/Geometry/Elementary entities/Add/Box", + (Fl_Callback *)geometry_elementary_add_new_cb, (void*)"Box"} , {"0Modules/Geometry/Elementary entities/Add/Torus", (Fl_Callback *)geometry_elementary_add_new_cb, (void*)"Torus"} , {"0Modules/Geometry/Elementary entities/Add/Cone", diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp index bd1bd33898844b353340455d8a6b6ed3bec52f21..d0c25bcbf1da6fe635395092ca7fa15032474164 100644 --- a/Fltk/onelabGroup.cpp +++ b/Fltk/onelabGroup.cpp @@ -10,6 +10,8 @@ #elif defined(HAVE_NO_INTPTR_T) typedef unsigned long intptr_t; #endif +#include <fstream> +#include <streambuf> #include <ctype.h> #include "GmshMessage.h" #include "onelab.h" @@ -1204,6 +1206,12 @@ void onelabGroup::rebuildTree(bool deleteWidgets) for(unsigned int i = 0; i < delStrings.size(); i++) free(delStrings[i]); } + +#if 0 // test + std::ifstream t("test.db.json"); + std::string str((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>()); + onelab::server::instance()->fromJSON(str); +#endif } void onelabGroup::openTreeItem(const std::string &name) diff --git a/Geo/CMakeLists.txt b/Geo/CMakeLists.txt index fab4319968caad2027c4c2ff59b275e761bdcff0..2ac9ea624b919b808d1946d9943ee9b20984b87d 100644 --- a/Geo/CMakeLists.txt +++ b/Geo/CMakeLists.txt @@ -31,7 +31,7 @@ set(SRC GModelIO_PLY.cpp GModelIO_VRML.cpp GModelIO_UNV.cpp GModelIO_BDF.cpp GModelIO_IR3.cpp GModelIO_DIFF.cpp GModelIO_GEOM.cpp GModelIO_INP.cpp GModelIO_MAIL.cpp GModelIO_P3D.cpp GModelIO_CELUM.cpp - GModelIO_ACTRAN.cpp GModelIO_SU2.cpp + GModelIO_ACTRAN.cpp GModelIO_SU2.cpp GModelIO_SAMCEF.cpp ExtrudeParams.cpp Geo.cpp GeoStringInterface.cpp GeoInterpolation.cpp diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index e511c231bd0b19bab066073d614000607bb4e69f..743ab8e73194dddb430d4fa89d5b7172030f4a1c 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -571,7 +571,7 @@ bool GModel::getBoundaryTags(const std::vector<std::pair<int, int> > &inDimTags, } } - if(combined || recursive){ + if(combined){ // compute boundary of the combined shapes std::set<int, AbsIntLessThan> c[3]; for(unsigned int i = 0; i < outDimTags.size(); i++){ diff --git a/Geo/GModel.h b/Geo/GModel.h index d0e46caa54a7ade0e95fa9d8872b6dbcd534ed4e..b0f99a3b724d2937e9873201fb8016663bf4a8c4 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -669,6 +669,9 @@ class GModel { // Actran mesh int readACTRAN(const std::string &name); + // Sameced mesh + int readSAMCEF(const std::string &name); + // Plot3D structured mesh format int readP3D(const std::string &name); int writeP3D(const std::string &name, diff --git a/Geo/GModelIO_BDF.cpp b/Geo/GModelIO_BDF.cpp index 0786ce58db228b95b3985416712baeb1c9629e4b..d0689270eb88fa45576af2fa730488141431ca07 100644 --- a/Geo/GModelIO_BDF.cpp +++ b/Geo/GModelIO_BDF.cpp @@ -17,9 +17,19 @@ static int getFormatBDF(char *buffer, int &keySize) { + for(unsigned int i = 0; i < strlen(buffer); i++){ + if(buffer[i] == ','){ // free fields + if(buffer[keySize] == '*'){ // will contine on next line + keySize = i; + return -1; + } + else{ + keySize = i; + return 0; + } + } + } if(buffer[keySize] == '*'){ keySize++; return 2; } // long fields - for(unsigned int i = 0; i < strlen(buffer); i++) - if(buffer[i] == ',') return 0; // free fields return 1; // small fields; } @@ -54,10 +64,11 @@ static int readVertexBDF(FILE *fp, char *buffer, int keySize, int *num, double *x, double *y, double *z) { char tmp[5][32]; + int format = getFormatBDF(buffer, keySize); int j = keySize; - - switch(getFormatBDF(buffer, keySize)){ + switch(format){ case 0: // free field + case -1: // free field with continuation for(int i = 0; i < 5; i++){ tmp[i][16] = '\0'; strncpy(tmp[i], &buffer[j + 1], 16); @@ -65,6 +76,13 @@ static int readVertexBDF(FILE *fp, char *buffer, int keySize, j++; while(j < (int)strlen(buffer) && buffer[j] != ',') j++; } + if(format == -1){ // continued on next line + char buffer2[256]; + if(!fgets(buffer2, sizeof(buffer2), fp)) return 0; + j = 0; + while(j < (int)strlen(buffer2) && buffer2[j] != ',') j++; + strncpy(tmp[4], &buffer2[j + 1], 16); + } break; case 1: // small field for(int i = 0; i < 5; i++) tmp[i][8] = '\0'; @@ -105,7 +123,7 @@ static void readLineBDF(char *buffer, int format, std::vector<char*> &fields) int cmax = (format == 2) ? 16 : 8; // max char per (center) field int nmax = (format == 2) ? 4 : 8; // max num of (center) fields per line - if(format == 0){ // free fields + if(format <= 0){ // free fields for(unsigned int i = 0; i < strlen(buffer); i++){ if(buffer[i] == ',') fields.push_back(&buffer[i + 1]); } diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index 822ccf924f49b13f05f3f96c294baa7639e03bd8..01860dd1319373458c3b232e0f139293ddfb6df8 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -151,7 +151,8 @@ void OCC_Internals::bind(TopoDS_Vertex vertex, int tag, bool recursive) { if(vertex.IsNull()) return; if(_vertexTag.IsBound(vertex) && _vertexTag.Find(vertex) != tag){ - Msg::Debug("OpenCASCADE vertex %d is already bound to another tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE vertex %d to second tag %d", + _vertexTag.Find(vertex), tag); } else{ _vertexTag.Bind(vertex, tag); @@ -166,7 +167,8 @@ void OCC_Internals::bind(TopoDS_Edge edge, int tag, bool recursive) { if(edge.IsNull()) return; if(_edgeTag.IsBound(edge) && _edgeTag.Find(edge) != tag){ - Msg::Debug("OpenCASCADE edge %d is already bound to another tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE edge %d to second tag %d", + _edgeTag.Find(edge), tag); } else{ _edgeTag.Bind(edge, tag); @@ -191,7 +193,8 @@ void OCC_Internals::bind(TopoDS_Wire wire, int tag, bool recursive) { if(wire.IsNull()) return; if(_wireTag.IsBound(wire) && _wireTag.Find(wire) != tag){ - Msg::Debug("OpenCASCADE wire %d is already bound to anthor tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE wire %d to second tag %d", + _wireTag.Find(wire), tag); } else{ _wireTag.Bind(wire, tag); @@ -215,7 +218,8 @@ void OCC_Internals::bind(TopoDS_Face face, int tag, bool recursive) { if(face.IsNull()) return; if(_faceTag.IsBound(face) && _faceTag.Find(face) != tag){ - Msg::Debug("OpenCASCADE face %d is already bound to another tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE face %d to second tag %d", + _faceTag.Find(face), tag); } else{ _faceTag.Bind(face, tag); @@ -247,7 +251,8 @@ void OCC_Internals::bind(TopoDS_Shell shell, int tag, bool recursive) { if(shell.IsNull()) return; if(_shellTag.IsBound(shell) && _shellTag.Find(shell) != tag){ - Msg::Debug("OpenCASCADE shell %d is already bound to another tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE shell %d to second tag %d", + _shellTag.Find(shell), tag); } else{ _shellTag.Bind(shell, tag); @@ -271,7 +276,8 @@ void OCC_Internals::bind(TopoDS_Solid solid, int tag, bool recursive) { if(solid.IsNull()) return; if(_solidTag.IsBound(solid) && _solidTag.Find(solid) != tag){ - Msg::Debug("OpenCASCADE solid %d is already bound to another tag", tag); + Msg::Info("Cannot bind existing OpenCASCADE solid %d to second tag %d", + _solidTag.Find(solid), tag); } else{ _solidTag.Bind(solid, tag); @@ -322,9 +328,11 @@ void OCC_Internals::unbind(TopoDS_Vertex vertex, int tag, bool recursive) if(exp1.Current().IsSame(vertex)) return; } } + std::pair<int, int> dimTag(0, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _vertexTag.UnBind(vertex); _tagVertex.UnBind(tag); - _toRemove.insert(std::pair<int, int>(0, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(0); _changed = true; } @@ -339,9 +347,11 @@ void OCC_Internals::unbind(TopoDS_Edge edge, int tag, bool recursive) if(exp1.Current().IsSame(edge)) return; } } + std::pair<int, int> dimTag(1, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _edgeTag.UnBind(edge); _tagEdge.UnBind(tag); - _toRemove.insert(std::pair<int, int>(1, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(1); if(recursive){ TopExp_Explorer exp0; @@ -366,9 +376,11 @@ void OCC_Internals::unbind(TopoDS_Wire wire, int tag, bool recursive) if(exp1.Current().IsSame(wire)) return; } } + std::pair<int, int> dimTag(-1, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _wireTag.UnBind(wire); _tagWire.UnBind(tag); - _toRemove.insert(std::pair<int, int>(-1, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(-1); if(recursive){ TopExp_Explorer exp0; @@ -393,9 +405,11 @@ void OCC_Internals::unbind(TopoDS_Face face, int tag, bool recursive) if(exp1.Current().IsSame(face)) return; } } + std::pair<int, int> dimTag(2, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _faceTag.UnBind(face); _tagFace.UnBind(tag); - _toRemove.insert(std::pair<int, int>(2, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(2); if(recursive){ TopExp_Explorer exp0; @@ -427,9 +441,11 @@ void OCC_Internals::unbind(TopoDS_Shell shell, int tag, bool recursive) if(exp1.Current().IsSame(shell)) return; } } + std::pair<int, int> dimTag(-2, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _shellTag.UnBind(shell); _tagShell.UnBind(tag); - _toRemove.insert(std::pair<int, int>(-2, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(-2); if(recursive){ TopExp_Explorer exp0; @@ -446,9 +462,11 @@ void OCC_Internals::unbind(TopoDS_Shell shell, int tag, bool recursive) void OCC_Internals::unbind(TopoDS_Solid solid, int tag, bool recursive) { + std::pair<int, int> dimTag(3, tag); + if(_toPreserve.find(dimTag) != _toPreserve.end()) return; _solidTag.UnBind(solid); _tagSolid.UnBind(tag); - _toRemove.insert(std::pair<int, int>(3, tag)); + _toRemove.insert(dimTag); _recomputeMaxTag(3); if(recursive){ TopExp_Explorer exp0; @@ -485,7 +503,7 @@ void OCC_Internals::unbind(TopoDS_Shape shape, int dim, int tag, bool recursive) void OCC_Internals::_multiBind(TopoDS_Shape shape, int tag, std::vector<std::pair<int, int> > &outDimTags, - bool returnHighestDimOnly, bool recursive, + bool highestDimOnly, bool recursive, bool returnNewOnly) { TopExp_Explorer exp0; @@ -512,7 +530,7 @@ void OCC_Internals::_multiBind(TopoDS_Shape shape, int tag, outDimTags.push_back(std::pair<int, int>(3, t)); count++; } - if(returnHighestDimOnly && count) return; + if(highestDimOnly && count) return; for(exp0.Init(shape, TopAbs_FACE); exp0.More(); exp0.Next()){ TopoDS_Face face = TopoDS::Face(exp0.Current()); bool exists = false; @@ -535,7 +553,7 @@ void OCC_Internals::_multiBind(TopoDS_Shape shape, int tag, outDimTags.push_back(std::pair<int, int>(2, t)); count++; } - if(returnHighestDimOnly && count) return; + if(highestDimOnly && count) return; for(exp0.Init(shape, TopAbs_EDGE); exp0.More(); exp0.Next()){ TopoDS_Edge edge = TopoDS::Edge(exp0.Current()); bool exists = false; @@ -558,7 +576,7 @@ void OCC_Internals::_multiBind(TopoDS_Shape shape, int tag, outDimTags.push_back(std::pair<int, int>(1, t)); count++; } - if(returnHighestDimOnly && count) return; + if(highestDimOnly && count) return; for(exp0.Init(shape, TopAbs_VERTEX); exp0.More(); exp0.Next()){ TopoDS_Vertex vertex = TopoDS::Vertex(exp0.Current()); bool exists = false; @@ -566,7 +584,7 @@ void OCC_Internals::_multiBind(TopoDS_Shape shape, int tag, if(t <= 0){ if(_vertexTag.IsBound(vertex)){ t = _vertexTag.Find(vertex); - exists = false; + exists = true; } t = getMaxTag(0) + 1; } @@ -1353,8 +1371,8 @@ bool OCC_Internals::addSphere(int &tag, double xc, double yc, double zc, return true; } -bool OCC_Internals::_makeBlock(TopoDS_Solid &result, double x, double y, double z, - double dx, double dy, double dz) +bool OCC_Internals::_makeBox(TopoDS_Solid &result, double x, double y, double z, + double dx, double dy, double dz) { if(!dx || !dy || !dz){ Msg::Error("Degenerate block"); @@ -1378,15 +1396,15 @@ bool OCC_Internals::_makeBlock(TopoDS_Solid &result, double x, double y, double return true; } -bool OCC_Internals::addBlock(int &tag, double x, double y, double z, - double dx, double dy, double dz) +bool OCC_Internals::addBox(int &tag, double x, double y, double z, + double dx, double dy, double dz) { if(tag >= 0 && _tagSolid.IsBound(tag)){ Msg::Error("OpenCASCADE region with tag %d already exists", tag); return false; } TopoDS_Solid result; - if(!_makeBlock(result, x, y, z, dx, dy, dz)) + if(!_makeBox(result, x, y, z, dx, dy, dz)) return false; if(tag < 0) tag = getMaxTag(3) + 1; bind(result, tag, true); @@ -1994,7 +2012,7 @@ bool OCC_Internals::fillet(const std::vector<int> ®ionTags, } TopoDS_Shape shape = _find(3, regionTags[i]); b.Add(c, shape); - if(removeRegion) unbind(shape, 3, regionTags[i], true); // recursive + if(removeRegion) unbind(shape, 3, regionTags[i], true); } TopoDS_Shape result; try{ @@ -2023,14 +2041,26 @@ bool OCC_Internals::fillet(const std::vector<int> ®ionTags, return true; } +static void _filterTags(std::vector<std::pair<int, int> > &outDimTags, int minDim) +{ + std::vector<std::pair<int, int> > tmp(outDimTags); + outDimTags.clear(); + for(unsigned int i = 0; i < tmp.size(); i++){ + if(tmp[i].first >= minDim) + outDimTags.push_back(tmp[i]); + } +} + bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { double tolerance = CTX::instance()->geom.toleranceBoolean; bool parallel = CTX::instance()->geom.occParallel; + bool preserveNumbering = CTX::instance()->geom.occBooleanPreserveNumbering; if(objectDimTags.empty()) return true; @@ -2039,6 +2069,7 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, return false; } + int minDim = 3; TopTools_ListOfShape objectShapes, toolShapes; for(unsigned int i = 0; i < objectDimTags.size(); i++){ int dim = objectDimTags[i].first; @@ -2051,6 +2082,7 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, TopoDS_Shape object = _find(dim, t); objectShapes.Append(object); } + minDim = std::min(minDim, dim); } for(unsigned int i = 0; i < toolDimTags.size(); i++){ int dim = toolDimTags[i].first; @@ -2063,9 +2095,11 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, TopoDS_Shape tool = _find(dim, t); toolShapes.Append(tool); } + minDim = std::min(minDim, dim); } TopoDS_Shape result; + std::vector<TopoDS_Shape> mapOriginal; std::vector<TopTools_ListOfShape> mapModified, mapGenerated; std::vector<bool> mapDeleted; try{ @@ -2086,12 +2120,14 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, result = fuse.Shape(); TopTools_ListIteratorOfListOfShape it(objectShapes); for(; it.More(); it.Next()){ + mapOriginal.push_back(it.Value()); mapModified.push_back(fuse.Modified(it.Value())); mapDeleted.push_back(fuse.IsDeleted(it.Value())); mapGenerated.push_back(fuse.Generated(it.Value())); } TopTools_ListIteratorOfListOfShape it2(toolShapes); for(; it2.More(); it2.Next()){ + mapOriginal.push_back(it2.Value()); mapModified.push_back(fuse.Modified(it2.Value())); mapDeleted.push_back(fuse.IsDeleted(it2.Value())); mapGenerated.push_back(fuse.Generated(it2.Value())); @@ -2114,12 +2150,14 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, result = common.Shape(); TopTools_ListIteratorOfListOfShape it(objectShapes); for(; it.More(); it.Next()){ + mapOriginal.push_back(it.Value()); mapModified.push_back(common.Modified(it.Value())); mapDeleted.push_back(common.IsDeleted(it.Value())); mapGenerated.push_back(common.Generated(it.Value())); } TopTools_ListIteratorOfListOfShape it2(toolShapes); for(; it2.More(); it2.Next()){ + mapOriginal.push_back(it2.Value()); mapModified.push_back(common.Modified(it2.Value())); mapDeleted.push_back(common.IsDeleted(it2.Value())); mapGenerated.push_back(common.Generated(it2.Value())); @@ -2143,12 +2181,14 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, result = cut.Shape(); TopTools_ListIteratorOfListOfShape it(objectShapes); for(; it.More(); it.Next()){ + mapOriginal.push_back(it.Value()); mapModified.push_back(cut.Modified(it.Value())); mapDeleted.push_back(cut.IsDeleted(it.Value())); mapGenerated.push_back(cut.Generated(it.Value())); } TopTools_ListIteratorOfListOfShape it2(toolShapes); for(; it2.More(); it2.Next()){ + mapOriginal.push_back(it2.Value()); mapModified.push_back(cut.Modified(it2.Value())); mapDeleted.push_back(cut.IsDeleted(it2.Value())); mapGenerated.push_back(cut.Generated(it2.Value())); @@ -2174,6 +2214,7 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, result = fragments.Shape(); TopTools_ListIteratorOfListOfShape it(objectShapes); for(; it.More(); it.Next()){ + mapOriginal.push_back(it.Value()); mapModified.push_back(fragments.Modified(it.Value())); mapDeleted.push_back(fragments.IsDeleted(it.Value())); mapGenerated.push_back(fragments.Generated(it.Value())); @@ -2187,135 +2228,101 @@ bool OCC_Internals::booleanOperator(int tag, BooleanOperator op, return false; } - // don't try to preserve numbering if we specify the tag explicitly, or if - // there is a problem - bool bug1 = (objectDimTags.size() + toolDimTags.size() != mapModified.size()); - bool bug2 = (op == OCC_Internals::Union); // steange fuse behavior in OCC 7.1 - if(tag >= 0 || bug1 || bug2){ - if(bug1) Msg::Error("Wrong shape count in boolean operation"); - if(removeObject){ - for(unsigned int i = 0; i < objectDimTags.size(); i++){ - int d = objectDimTags[i].first; - int t = objectDimTags[i].second; - if(_isBound(d, t)) unbind(_find(d, t), d, t, true); // recursive - } - } - if(removeTool){ - for(unsigned int i = 0; i < toolDimTags.size(); i++){ - int d = toolDimTags[i].first; - int t = toolDimTags[i].second; - if(_isBound(d, t)) unbind(_find(d, t), d, t, true); // recursive + std::vector<std::pair<int, int> > inDimTags; + inDimTags.insert(inDimTags.end(), objectDimTags.begin(), objectDimTags.end()); + inDimTags.insert(inDimTags.end(), toolDimTags.begin(), toolDimTags.end()); + unsigned int numObjects = objectDimTags.size(); + + if(tag >= 0 || !preserveNumbering){ + // if we specify the tag explicitly, or if we don't care about preserving + // the numering, just go ahead and bind the resulting shape (and sub-shapes) + for(unsigned int i = 0; i < inDimTags.size(); i++){ + bool remove = (i < numObjects) ? removeObject : removeTool; + if(remove){ + int d = inDimTags[i].first; + int t = inDimTags[i].second; + if(_isBound(d, t)) unbind(_find(d, t), d, t, true); } } _multiBind(result, tag, outDimTags, true, true); - return true; + _filterTags(outDimTags, minDim); } - - // otherwise, try to preserve the numbering - std::vector<TopoDS_Shape> toBind; - for(unsigned int i = 0; i < objectDimTags.size(); i++){ - int dim = objectDimTags[i].first; - int tag = objectDimTags[i].second; - if(mapDeleted[i] && !mapGenerated[i].Extent()){ - // the shape has been deleted - if(removeObject && _isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); - } - } - else if(mapModified[i].Extent() == 0){ - // the shape has not been modified - outDimTags.push_back(std::pair<int, int>(dim, tag)); - // FIXME: since we currently don't guarantee that the tags of the entities - // on the boundary will be preserved, we must force a re-sync of the - // shape, by unbinding (which will add it in _toRemove) and re-binding it - if(removeObject && _isBound(dim, tag)){ - TopoDS_Shape shape = _find(dim, tag); - unbind(shape, dim, tag, true); - bind(shape, dim, tag, true); - } - } - else if(mapModified[i].Extent() == 1){ - if(removeObject){ - // the shape has been replaced by a single shape, keep the same tag - if(_isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); - } - bind(mapModified[i].First(), dim, tag, true); + else{ + // otherwise, try to preserve the numbering of the input shapes that did not + // change, or that were replaced by a single shape. Note that to preserve + // the numbering of smaller dimension entities (on boundaries) they should + // appear *before* higher dimensional entities in the object/tool lists. + _toPreserve.clear(); + for(unsigned int i = 0; i < inDimTags.size(); i++){ + int dim = inDimTags[i].first; + int tag = inDimTags[i].second; + bool remove = (i < numObjects) ? removeObject : removeTool; + if(mapDeleted[i]){ // deleted + if(remove) unbind(mapOriginal[i], dim, tag, true); + Msg::Debug("BOOL (%d,%d) deleted", dim, tag); + } + else if(mapModified[i].Extent() == 0){ // not modified outDimTags.push_back(std::pair<int, int>(dim, tag)); + _toPreserve.insert(std::pair<int, int>(dim, tag)); + Msg::Debug("BOOL (%d,%d) not modified", dim, tag); + } + else if(mapModified[i].Extent() == 1){ // replaced by single one + if(remove){ + unbind(mapOriginal[i], dim, tag, true); + bind(mapModified[i].First(), dim, tag, false); // not recursive! + int t = _find(dim, mapModified[i].First()); + if(tag != t) + Msg::Info("Could not preserve tag of %dD object %d (->%d)", dim, tag, t); + outDimTags.push_back(std::pair<int, int>(dim, t)); + _toPreserve.insert(std::pair<int, int>(dim, t)); + } + Msg::Debug("BOOL (%d,%d) replaced by 1", dim, tag); } else{ - toBind.push_back(mapModified[i].First()); + if(remove) unbind(mapOriginal[i], dim, tag, true); + Msg::Debug("BOOL (%d,%d) other", dim, tag); } } - else{ - if(removeObject && _isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); - } - TopTools_ListIteratorOfListOfShape it(mapModified[i]); - for(; it.More(); it.Next()) - toBind.push_back(it.Value()); - } - { - TopTools_ListIteratorOfListOfShape it(mapGenerated[i]); - for(; it.More(); it.Next()) - toBind.push_back(it.Value()); - } + for(int dim = -2; dim <= 3; dim++) _recomputeMaxTag(dim); + // bind all remaining entities and add the new ones to the returned list + _multiBind(result, -1, outDimTags, false, true, true); + _filterTags(outDimTags, minDim); + _toPreserve.clear(); } - for(unsigned int i = 0; i < toolDimTags.size(); i++){ - int k = objectDimTags.size() + i; - int dim = toolDimTags[i].first; - int tag = toolDimTags[i].second; - if(mapDeleted[k] && !mapGenerated[k].Extent()){ - // the shape has been deleted - if(removeTool && _isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); // recursive - } - } - else if(mapModified[k].Extent() == 0){ - // the shape has not been modified - outDimTags.push_back(std::pair<int, int>(dim, tag)); - // FIXME: since we currently don't guarantee that the tags of the entities - // on the boundary will be preserved, we must force a re-sync of the - // shape, by unbinding (which will add it in _toRemove) and re-binding it - if(removeTool && _isBound(dim, tag)){ - TopoDS_Shape shape = _find(dim, tag); - unbind(shape, dim, tag, true); - bind(shape, dim, tag, true); - } - } - else if(mapModified[k].Extent() == 1){ - if(removeTool){ - // the shape has been replaced by a single shape, keep the same tag - if(_isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); // recursive - } - bind(mapModified[k].First(), dim, tag, true); // recursive - outDimTags.push_back(std::pair<int, int>(dim, tag)); - } - else{ - toBind.push_back(mapModified[k].First()); - } + // return input/output correspondance maps + for(unsigned int i = 0; i < inDimTags.size(); i++){ + int dim = inDimTags[i].first; + int tag = inDimTags[i].second; + std::pair<int, int> dimTag(dim, tag); + std::vector<std::pair<int, int> > dimTags; + if(mapDeleted[i]){ // deleted + } + else if(mapModified[i].Extent() == 0){ // not modified + dimTags.push_back(dimTag); } else{ - if(removeTool && _isBound(dim, tag)){ - unbind(_find(dim, tag), dim, tag, true); // recursive + TopTools_ListIteratorOfListOfShape it(mapModified[i]); + for(; it.More(); it.Next()){ + if(_isBound(dim, it.Value())){ + int t = _find(dim, it.Value()); + dimTags.push_back(std::pair<int, int>(dim, t)); + } + } + TopTools_ListIteratorOfListOfShape it2(mapGenerated[i]); + for(; it2.More(); it2.Next()){ + if(_isBound(dim, it2.Value())){ + int t = _find(dim, it2.Value()); + dimTags.push_back(std::pair<int, int>(dim, t)); + } } - TopTools_ListIteratorOfListOfShape it(mapModified[k]); - for(; it.More(); it.Next()) - toBind.push_back(it.Value()); - } - { - TopTools_ListIteratorOfListOfShape it(mapGenerated[k]); - for(; it.More(); it.Next()) - toBind.push_back(it.Value()); } - } - - for(unsigned int i = 0; i < toBind.size(); i++){ - // bind all remaining entities (and only return the new ones, as modified - // entities can appear as "Modified()" subshapes of both object and tool) - _multiBind(toBind[i], -1, outDimTags, true, true, true); + std::ostringstream sstream; + sstream << "BOOL in (" << dim << "," << tag << ") -> out"; + for(unsigned int j = 0; j < dimTags.size(); j++) + sstream << " (" << dimTags[j].first << "," << dimTags[j].second << ")"; + Msg::Debug("%s", sstream.str().c_str()); + outDimTagsMap.push_back(dimTags); } return true; @@ -2325,40 +2332,44 @@ bool OCC_Internals::booleanUnion(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return booleanOperator(tag, OCC_Internals::Union, objectDimTags, toolDimTags, - outDimTags, removeObject, removeTool); + outDimTags, outDimTagsMap, removeObject, removeTool); } bool OCC_Internals::booleanIntersection(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return booleanOperator(tag, OCC_Internals::Intersection, objectDimTags, toolDimTags, - outDimTags, removeObject, removeTool); + outDimTags, outDimTagsMap, removeObject, removeTool); } bool OCC_Internals::booleanDifference(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return booleanOperator(tag, OCC_Internals::Difference, objectDimTags, toolDimTags, - outDimTags, removeObject, removeTool); + outDimTags, outDimTagsMap, removeObject, removeTool); } bool OCC_Internals::booleanFragments(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return booleanOperator(tag, OCC_Internals::Fragments, objectDimTags, toolDimTags, - outDimTags, removeObject, removeTool); + outDimTags, outDimTagsMap, removeObject, removeTool); } bool OCC_Internals::_transform(const std::vector<std::pair<int, int> > &inDimTags, @@ -2390,6 +2401,8 @@ bool OCC_Internals::_transform(const std::vector<std::pair<int, int> > &inDimTag } result = gtfo->Shape(); } + // FIXME we should implement rebind(object, result, dim) which would + // unbind/bind all subshapes to the same tags unbind(object, dim, tag, true); bind(result, dim, tag, true); } @@ -3393,12 +3406,12 @@ bool OCC_Internals::makeSphereSTL(double xc, double yc, double zc, double radius return true; } -bool OCC_Internals::makeBlockSTL(double x, double y, double z, double dx, double dy, double dz, - std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, - std::vector<int> &triangles) +bool OCC_Internals::makeBoxSTL(double x, double y, double z, double dx, double dy, double dz, + std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, + std::vector<int> &triangles) { TopoDS_Solid result; - if(!_makeBlock(result, x, y, z, dx, dy, dz)) + if(!_makeBox(result, x, y, z, dx, dy, dz)) return false; if(!makeSolidSTL(result, vertices, normals, triangles)) return false; diff --git a/Geo/GModelIO_OCC.h b/Geo/GModelIO_OCC.h index 47f40ef8e8d0d17e2bf1fe0b0ff4553709b33584..896feb33dbc97df13ac088112634a73584354eb7 100644 --- a/Geo/GModelIO_OCC.h +++ b/Geo/GModelIO_OCC.h @@ -62,6 +62,10 @@ class OCC_Internals { // remove from the model at the next synchronization std::set<std::pair<int, int> > _toRemove; + // cache of <dim,tag> pairs corresponding to entities that should not be + // unbound during boolean operations + std::set<std::pair<int, int> > _toPreserve; + // mesh attributes OCCMeshAttributesRTree *_meshAttributes; @@ -74,11 +78,14 @@ class OCC_Internals { // bind (potentially) mutliple entities in shape and return the tags in // outTags. If tag > 0 and a single entity if found, use that; if - // highestDimOnly is true, only return the entities of the highest dimension + // highestDimOnly is true, only bind the entities (and sub-entities, if + // recursive is set) of the highest dimension; if returnNewOnly is set, only + // return newly bound entities in outDimTags. void _multiBind(TopoDS_Shape shape, int tag, std::vector<std::pair<int, int> > &outDimTags, bool returnHighestDimOnly, bool recursive=false, bool returnNewOnly=false); + // is the entity of a given dimension and tag bound? bool _isBound(int dim, int tag); @@ -98,8 +105,8 @@ class OCC_Internals { double rx, double ry); bool _makeSphere(TopoDS_Solid &result, double xc, double yc, double zc, double radius, double angle1, double angle2, double angle3); - bool _makeBlock(TopoDS_Solid &result, double x, double y, double z, - double dx, double dy, double dz); + bool _makeBox(TopoDS_Solid &result, double x, double y, double z, + double dx, double dy, double dz); bool _makeCylinder(TopoDS_Solid &result, double x, double y, double z, double dx, double dy, double dz, double r, double angle); bool _makeCone(TopoDS_Solid &result, double x, double y, double z, @@ -207,8 +214,8 @@ class OCC_Internals { bool addVolume(int &tag, const std::vector<int> &shellTags); bool addSphere(int &tag, double xc, double yc, double zc, double radius, double angle1, double angle2, double angle3); - bool addBlock(int &tag, double x, double y, double z, - double dx, double dy, double dz); + bool addBox(int &tag, double x, double y, double z, + double dx, double dy, double dz); bool addCylinder(int &tag, double x, double y, double z, double dx, double dy, double dz, double r, double angle); bool addCone(int &tag, double x, double y, double z, @@ -247,26 +254,31 @@ class OCC_Internals { const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool); bool booleanUnion(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool); bool booleanIntersection(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool); bool booleanDifference(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool); bool booleanFragments(int tag, const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool); // apply transformations @@ -328,9 +340,9 @@ class OCC_Internals { bool makeSphereSTL(double xc, double yc, double zc, double radius, double angle1, double angle2, double angle3, std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, std::vector<int> &triangles); - bool makeBlockSTL(double x, double y, double z, double dx, double dy, double dz, - std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, - std::vector<int> &triangles); + bool makeBoxSTL(double x, double y, double z, double dx, double dy, double dz, + std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, + std::vector<int> &triangles); bool makeCylinderSTL(double x, double y, double z, double dx, double dy, double dz, double r, double angle, std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, std::vector<int> &triangles); @@ -471,8 +483,8 @@ public: { return _error("add sphere"); } - bool addBlock(int &tag, double x, double y, double z, - double dx, double dy, double dz) + bool addBox(int &tag, double x, double y, double z, + double dx, double dy, double dz) { return _error("add block"); } @@ -536,6 +548,7 @@ public: const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return _error("apply boolean operator"); @@ -544,6 +557,7 @@ public: const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return _error("apply boolean union"); @@ -552,6 +566,7 @@ public: const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return _error("apply boolean intersection"); @@ -560,6 +575,7 @@ public: const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return _error("apply boolean difference"); @@ -568,6 +584,7 @@ public: const std::vector<std::pair<int, int> > &objectDimTags, const std::vector<std::pair<int, int> > &toolDimTags, std::vector<std::pair<int, int> > &outDimTags, + std::vector<std::vector<std::pair<int, int> > > &outDimTagsMap, bool removeObject, bool removeTool) { return _error("apply boolean fragments"); @@ -638,9 +655,9 @@ public: { return false; } - bool makeBlockSTL(double x, double y, double z, double dx, double dy, double dz, - std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, - std::vector<int> &triangles) + bool makeBoxSTL(double x, double y, double z, double dx, double dy, double dz, + std::vector<SPoint3> &vertices, std::vector<SVector3> &normals, + std::vector<int> &triangles) { return false; } diff --git a/Geo/GModelIO_SAMCEF.cpp b/Geo/GModelIO_SAMCEF.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b666561c3051004fbd5233b0b82881aa943b6e8d --- /dev/null +++ b/Geo/GModelIO_SAMCEF.cpp @@ -0,0 +1,97 @@ +// Gmsh - Copyright (C) 1997-2017 C. Geuzaine, J.-F. Remacle +// +// See the LICENSE.txt file for license information. Please report all +// bugs and problems to the public mailing list <gmsh@onelab.info>. + +#include <stdlib.h> +#include <string.h> +#include <sstream> +#include "GModel.h" +#include "OS.h" +#include "MLine.h" +#include "MTriangle.h" +#include "MQuadrangle.h" +#include "MTetrahedron.h" +#include "MHexahedron.h" +#include "Context.h" + +static bool getVertices(GModel *m, int num, int *n, std::vector<MVertex*> &vec) +{ + for(int i = 0; i < num; i++){ + MVertex *v = m->getMeshVertexByTag(n[i]); + if(!v){ + Msg::Error("Wrong vertex number %d", n[i]); + return false; + } + else + vec.push_back(v); + } + return true; +} + +int GModel::readSAMCEF(const std::string &name) +{ + FILE *fp = Fopen(name.c_str(), "r"); + if(!fp){ + Msg::Error("Unable to open file '%s'", name.c_str()); + return 0; + } + + _vertexMapCache.clear(); + std::map<int, std::vector<MElement*> > elements[2]; + char buffer[256], dummy[256]; + + while(!feof(fp)) { + if(!fgets(buffer, 256, fp)) break; + if(!strncmp(buffer, ".NOE", 4)){ + while(!feof(fp)) { + if(!fgets(buffer, 256, fp)) break; + if(buffer[0] == '!') continue; + if(buffer[0] == ';') break; + int num; + double x, y, z; + if(sscanf(buffer, "%s %d %s %lf %s %lf %s %lf", dummy, &num, + dummy, &x, dummy, &y, dummy, &z) != 8) + return 0; + _vertexMapCache[num] = new MVertex(x, y, z, 0, num); + } + Msg::Info("Read %d mesh vertices", (int)_vertexMapCache.size()); + } + else if(!strncmp(buffer, ".MAI", 4)){ + while(!feof(fp)) { + if(!fgets(buffer, 256, fp)) break; + if(buffer[0] == '!') continue; + if(buffer[0] == ';') break; + std::stringstream s(buffer); + std::string word; + int nn = 0; + while(s >> word) nn++; + int num, reg, n[4]; + std::vector<MVertex*> vertices; + if(nn == 8){ // TRIA3 + if(sscanf(buffer, "%s %d %s %d %s %d %d %d", dummy, &num, + dummy, ®, dummy, &n[0], &n[1], &n[2]) != 8) + return 0; + if(!getVertices(this, 3, n, vertices)) break; + elements[0][reg].push_back(new MTriangle(vertices, num)); + } + else if(nn == 9){ // QUAD4 + if(sscanf(buffer, "%s %d %s %d %s %d %d %d %d", dummy, &num, + dummy, ®, dummy, &n[0], &n[1], &n[2], &n[3]) != 9) + return 0; + if(!getVertices(this, 4, n, vertices)) break; + elements[1][reg].push_back(new MQuadrangle(vertices, num)); + } + } + } + } + + for(int i = 0; i < (int)(sizeof(elements) / sizeof(elements[0])); i++) + _storeElementsInEntities(elements[i]); + _associateEntityWithMeshVertices(); + _storeVerticesInEntities(_vertexMapCache); + + fclose(fp); + return 1; +} + diff --git a/Geo/GModelIO_VTK.cpp b/Geo/GModelIO_VTK.cpp index 92e50b9ddcc47f153ca9ece457aefe37820f5fb4..f9e12cf8f714cc4610e144b5ee1024e5744573c0 100644 --- a/Geo/GModelIO_VTK.cpp +++ b/Geo/GModelIO_VTK.cpp @@ -181,7 +181,7 @@ int GModel::readVTK(const std::string &name, bool bigEndian) bool haveCells = true; bool haveLines = false; - if( !strcmp(buffer, "CELLS") && numElements > 0) + if(!strcmp(buffer, "CELLS") && numElements > 0) Msg::Info("Reading %d cells", numElements); else if (!strcmp(buffer, "POLYGONS") && numElements > 0) Msg::Info("Reading %d polygons", numElements); @@ -249,11 +249,13 @@ int GModel::readVTK(const std::string &name, bool bigEndian) case 13: elements[6][1].push_back(new MPrism(cells[i])); break; case 14: elements[7][1].push_back(new MPyramid(cells[i])); break; // second order elements - case 21: elements[1][1].push_back(new MLine(cells[i])); break; - case 22: elements[2][1].push_back(new MTriangle(cells[i])); break; - case 23: elements[3][1].push_back(new MQuadrangle(cells[i])); break; - case 24: elements[4][1].push_back(new MTetrahedron(cells[i])); break; - case 25: elements[5][1].push_back(new MHexahedron(cells[i])); break; + case 21: elements[1][1].push_back(new MLine3(cells[i])); break; + case 22: elements[2][1].push_back(new MTriangle6(cells[i])); break; + case 23: elements[3][1].push_back(new MQuadrangle8(cells[i])); break; + case 28: elements[3][1].push_back(new MQuadrangle9(cells[i])); break; + case 24: elements[4][1].push_back(new MTetrahedron10(cells[i])); break; + case 25: elements[5][1].push_back(new MHexahedron20(cells[i])); break; + case 29: elements[5][1].push_back(new MHexahedron27(cells[i])); break; default: Msg::Error("Unknown type of cell %d", type); break; @@ -297,7 +299,7 @@ int GModel::readVTK(const std::string &name, bool bigEndian) } } else{ - Msg::Error("TODO: implement reading lines for binary files \n"); + Msg::Error("Line import not done for binary VTK files"); } } diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index 79d1fcf002be4cd3779c867c10e33526abbf2c9d..e60ec2cd62ae8160da0ab252ed7d68402ccfaae9 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -345,8 +345,9 @@ void EndCurve(Curve *c) } else if(!v[3] && fabs((R - R2) / (R + R2)) > 0.1){ // check cocircular pts (allow 10% error) - Msg::Error("Control points of circle with tag %d are not cocircular (%g, %g)", - c->Num, R, R2); + Msg::Error("Control points of circle with tag %d are not cocircular: " + "R1=%g, R2=%g, n=[%g,%g,%g]", + c->Num, R, R2, n[0], n[1], n[2]); } // A1 = angle first pt // A3 = angle last pt diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp index 95c2d11ddb42197ebedf1fb52e8457b206a37a1f..bf5ea9386b86f6014088be007ebf89fdf4ba41b3 100644 --- a/Geo/GeoStringInterface.cpp +++ b/Geo/GeoStringInterface.cpp @@ -539,13 +539,13 @@ void add_cylinder(const std::string &fileName, const std::string &x, const std:: add_infile(sstream.str(), fileName); } -void add_block(const std::string &fileName, const std::string &x, const std::string &y, - const std::string &z, const std::string &dx, const std::string &dy, - const std::string &dz) +void add_box(const std::string &fileName, const std::string &x, const std::string &y, + const std::string &z, const std::string &dx, const std::string &dy, + const std::string &dz) { std::ostringstream sstream; check_occ(sstream); - sstream << "Block(" << GModel::current()->getMaxElementaryNumber(3) + 1 + sstream << "Box(" << GModel::current()->getMaxElementaryNumber(3) + 1 << ") = {" << x << ", " << y << ", " << z << ", " << dx << ", " << dy << ", " << dz << "};"; add_infile(sstream.str(), fileName); diff --git a/Geo/GeoStringInterface.h b/Geo/GeoStringInterface.h index 0db5b0cc8cf69c8d38632e17d721b854bfe4ef6b..adf0b9819cfba51bbcbb563222b0879c5ae0f8bc 100644 --- a/Geo/GeoStringInterface.h +++ b/Geo/GeoStringInterface.h @@ -64,9 +64,9 @@ void add_sphere(const std::string &fileName, const std::string &x, void add_cylinder(const std::string &fileName, const std::string &x, const std::string &y, const std::string &z, const std::string &dx, const std::string &dy, const std::string &dz, const std::string &r, const std::string &alpha); -void add_block(const std::string &fileName, const std::string &x, const std::string &y, - const std::string &z, const std::string &dx, const std::string &dy, - const std::string &dz); +void add_box(const std::string &fileName, const std::string &x, const std::string &y, + const std::string &z, const std::string &dx, const std::string &dy, + const std::string &dz); void add_torus(const std::string &fileName, const std::string &x, const std::string &y, const std::string &z, const std::string &r1, const std::string &r2, const std::string &alpha); diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp index b0f263cfe782f12c9ca87e520b017203ce27d04a..feb858b44590d71e0f744d81f645a5630e35470d 100644 --- a/Geo/OCCEdge.cpp +++ b/Geo/OCCEdge.cpp @@ -61,7 +61,13 @@ OCCEdge::~OCCEdge() SBoundingBox3d OCCEdge::bounds() const { Bnd_Box b; - BRepBndLib::Add(c, b); + try{ + BRepBndLib::Add(c, b); + } + catch(Standard_Failure &err){ + Msg::Error("OpenCASCADE exception %s", err.GetMessageString()); + return SBoundingBox3d(); + } double xmin, ymin, zmin, xmax, ymax, zmax; b.Get(xmin, ymin, zmin, xmax, ymax, zmax); SBoundingBox3d bbox(xmin, ymin, zmin, xmax, ymax, zmax); diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp index c0eca00e421cf1fb93aa78bd9d5559eb78811bb7..c9628090372666b55bac8fc90159c88105961e01 100644 --- a/Geo/OCCFace.cpp +++ b/Geo/OCCFace.cpp @@ -73,7 +73,7 @@ void OCCFace::setup() Msg::Error("Unknown edge in face %d", tag()); } else if(edge.Orientation() == TopAbs_INTERNAL){ - Msg::Info("Adding embedded edge %d in face %d", e->tag(), tag()); + Msg::Debug("Adding embedded edge %d in face %d", e->tag(), tag()); embedded_edges.push_back(e); OCCEdge *occe = (OCCEdge*)e; occe->setTrimmed(this); @@ -134,7 +134,7 @@ void OCCFace::setup() Msg::Error("Unknown vertex in face %d", tag()); } else if(vertex.Orientation() == TopAbs_INTERNAL){ - Msg::Info("Adding embedded vertex %d in face %d", v->tag(), tag()); + Msg::Debug("Adding embedded vertex %d in face %d", v->tag(), tag()); embedded_vertices.push_back(v); } } @@ -143,7 +143,13 @@ void OCCFace::setup() SBoundingBox3d OCCFace::bounds() const { Bnd_Box b; - BRepBndLib::Add(s, b); + try{ + BRepBndLib::Add(s, b); + } + catch(Standard_Failure &err){ + Msg::Error("OpenCASCADE exception %s", err.GetMessageString()); + return SBoundingBox3d(); + } double xmin, ymin, zmin, xmax, ymax, zmax; b.Get(xmin, ymin, zmin, xmax, ymax, zmax); SBoundingBox3d bbox(xmin, ymin, zmin, xmax, ymax, zmax); diff --git a/Geo/OCCMeshAttributes.h b/Geo/OCCMeshAttributes.h index a8772bb49589089cb32ca8eaa05538d4c31037d2..3b7b20f5bf54635d2f9639d31356aa4347a183ba 100644 --- a/Geo/OCCMeshAttributes.h +++ b/Geo/OCCMeshAttributes.h @@ -89,10 +89,16 @@ class OCCMeshAttributesRTree{ _all.push_back(v); if(v->getDim() < 0 || v->getDim() > 3) return; Bnd_Box box; - BRepBndLib::Add(v->getShape(), box); - if(box.IsVoid()){ - Msg::Debug("Inserting (null or degenerate) shape with void bounding box"); - //BRepTools::Dump(v->getShape(), std::cout); + try{ + BRepBndLib::Add(v->getShape(), box); + if(box.IsVoid()){ + Msg::Debug("Inserting (null or degenerate) shape with void bounding box"); + //BRepTools::Dump(v->getShape(), std::cout); + return; + } + } + catch(Standard_Failure &err){ + Msg::Error("OpenCASCADE exception %s", err.GetMessageString()); return; } double xmin, ymin, zmin, xmax, ymax, zmax; @@ -110,9 +116,15 @@ class OCCMeshAttributesRTree{ attr.clear(); if(dim < 0 || dim > 3) return; Bnd_Box box; - BRepBndLib::Add(shape, box); - if(box.IsVoid()){ - Msg::Debug("Searching for (null or degenerate) shape with void bounding box"); + try{ + BRepBndLib::Add(shape, box); + if(box.IsVoid()){ + Msg::Debug("Searching for (null or degenerate) shape with void bounding box"); + return; + } + } + catch(Standard_Failure &err){ + Msg::Error("OpenCASCADE exception %s", err.GetMessageString()); return; } double xmin, ymin, zmin, xmax, ymax, zmax; diff --git a/Geo/OCCRegion.cpp b/Geo/OCCRegion.cpp index 2f3682bfcbb6ba8f5ca24713ecf5375fc86af79c..2ebcb241cd18db8584244079ef44f35c4366c043 100644 --- a/Geo/OCCRegion.cpp +++ b/Geo/OCCRegion.cpp @@ -51,7 +51,7 @@ void OCCRegion::setup() Msg::Error("Unknown face in region %d", tag()); } else if (face.Orientation() == TopAbs_INTERNAL){ - Msg::Info("Adding embedded face %d in region %d", f->tag(), tag()); + Msg::Debug("Adding embedded face %d in region %d", f->tag(), tag()); embedded_faces.push_back(f); } else{ @@ -70,7 +70,7 @@ void OCCRegion::setup() Msg::Error("Unknown edge in region %d", tag()); } else if (edge.Orientation() == TopAbs_INTERNAL){ - Msg::Info("Adding embedded edge %d in region %d", e->tag(), tag()); + Msg::Debug("Adding embedded edge %d in region %d", e->tag(), tag()); embedded_edges.push_back(e); //OCCEdge *occe = (OCCEdge*)e; //occe->setTrimmed(this); @@ -86,7 +86,7 @@ void OCCRegion::setup() Msg::Error("Unknown vertex in region %d", tag()); } else if (vertex.Orientation() == TopAbs_INTERNAL){ - Msg::Info("Adding embedded vertex %d in region %d", v->tag(), tag()); + Msg::Debug("Adding embedded vertex %d in region %d", v->tag(), tag()); embedded_vertices.push_back(v); } } @@ -97,7 +97,13 @@ void OCCRegion::setup() SBoundingBox3d OCCRegion::bounds() const { Bnd_Box b; - BRepBndLib::Add(s, b); + try{ + BRepBndLib::Add(s, b); + } + catch(Standard_Failure &err){ + Msg::Error("OpenCASCADE exception %s", err.GetMessageString()); + return SBoundingBox3d(); + } double xmin, ymin, zmin, xmax, ymax, zmax; b.Get(xmin, ymin, zmin, xmax, ymax, zmax); SBoundingBox3d bbox(xmin, ymin, zmin, xmax, ymax, zmax); diff --git a/Geo/boundaryLayersData.cpp b/Geo/boundaryLayersData.cpp index af3b5c5f7e5b2c3e8dd6aec1c25b0e60389fd320..f579e417d216043e93c82d969f7c723fdf81552c 100644 --- a/Geo/boundaryLayersData.cpp +++ b/Geo/boundaryLayersData.cpp @@ -32,7 +32,7 @@ edgeColumn BoundaryLayerColumns::getColumns(MVertex *v1, MVertex *v2 , int side) #include "Field.h" -const int FANSIZE__ = 4; +const int FANSIZE__ = 5; /* @@ -80,26 +80,26 @@ edgeColumn BoundaryLayerColumns::getColumns(MVertex *v1, MVertex *v2 , int side) if (nbSides == 1){ if (it1 != _fans.end() && it2 == _fans.end() ){ if (aaa(it1->second._e1,e)) - return edgeColumn(getColumn (v1,0),getColumn(v2,0)); + return edgeColumn(getColumn (v1,0),getColumn(v2,0)); else - return edgeColumn(getColumn (v1,N1-1),getColumn(v2,0)); + return edgeColumn(getColumn (v1,N1-1),getColumn(v2,0)); } if (it2 != _fans.end() && it1 == _fans.end() ){ if (aaa(it2->second._e1,e)) - return edgeColumn(getColumn (v1,0),getColumn(v2,0)); + return edgeColumn(getColumn (v1,0),getColumn(v2,0)); else - return edgeColumn(getColumn (v1,0),getColumn(v2,N2-1)); + return edgeColumn(getColumn (v1,0),getColumn(v2,N2-1)); } if (it2 != _fans.end() && it1 != _fans.end() ){ int c1, c2; if (aaa(it1->second._e1,e)) - c1 = 0; + c1 = 0; else - c1 = N1-1; + c1 = N1-1; if (aaa(it2->second._e1,e)) - c2 = 0; + c2 = 0; else - c2 = N2-1; + c2 = N2-1; return edgeColumn(getColumn (v1,c1),getColumn(v2,c2)); } // fan on the right @@ -169,56 +169,56 @@ static void treat2Connections(GFace *gf, MVertex *_myVert, MEdge &e1, MEdge &e2, { std::vector<SVector3> N1,N2; for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e1); + _columns->_normals.lower_bound(e1); itm != _columns->_normals.upper_bound(e1); ++itm) N1.push_back(itm->second); for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e2); + _columns->_normals.lower_bound(e2); itm != _columns->_normals.upper_bound(e2); ++itm) N2.push_back(itm->second); if (N1.size() == N2.size()){ for (unsigned int SIDE = 0; SIDE < N1.size() ; SIDE++){ if (!fan){ - SVector3 x = N1[SIDE]*1.01+N2[SIDE]; - x.normalize(); - _dirs.push_back(x); + SVector3 x = N1[SIDE]*1.01+N2[SIDE]; + x.normalize(); + _dirs.push_back(x); } else if (fan){ - // printf("fan \n"); - - int fanSize = FANSIZE__; - // if the angle is greater than PI, than reverse the sense - double alpha1 = atan2(N1[SIDE].y(),N1[SIDE].x()); - double alpha2 = atan2(N2[SIDE].y(),N2[SIDE].x()); - double AMAX = std::max(alpha1,alpha2); - double AMIN = std::min(alpha1,alpha2); - MEdge ee[2]; - if (alpha1 > alpha2){ - ee[0] = e2;ee[1] = e1; - } - else { - ee[0] = e1;ee[1] = e2; - } - if ( AMAX - AMIN >= M_PI){ - double temp = AMAX; - AMAX = AMIN + 2*M_PI; - AMIN = temp; - MEdge eee0 = ee[0]; - ee[0] = ee[1];ee[1] = eee0; - } - _columns->addFan (_myVert,ee[0],ee[1],true); - for (int i=-1; i<=fanSize; i++){ - double t = (double)(i+1)/ (fanSize+1); - double alpha = t * AMAX + (1.-t)* AMIN; - SVector3 x (cos(alpha),sin(alpha),0); - x.normalize(); - _dirs.push_back(x); - } + // printf("fan \n"); + + int fanSize = FANSIZE__; + // if the angle is greater than PI, than reverse the sense + double alpha1 = atan2(N1[SIDE].y(),N1[SIDE].x()); + double alpha2 = atan2(N2[SIDE].y(),N2[SIDE].x()); + double AMAX = std::max(alpha1,alpha2); + double AMIN = std::min(alpha1,alpha2); + MEdge ee[2]; + if (alpha1 > alpha2){ + ee[0] = e2;ee[1] = e1; + } + else { + ee[0] = e1;ee[1] = e2; + } + if ( AMAX - AMIN >= M_PI){ + double temp = AMAX; + AMAX = AMIN + 2*M_PI; + AMIN = temp; + MEdge eee0 = ee[0]; + ee[0] = ee[1];ee[1] = eee0; + } + _columns->addFan (_myVert,ee[0],ee[1],true); + for (int i=-1; i<=fanSize; i++){ + double t = (double)(i+1)/ (fanSize+1); + double alpha = t * AMAX + (1.-t)* AMIN; + SVector3 x (cos(alpha),sin(alpha),0); + x.normalize(); + _dirs.push_back(x); + } } /* else { - _dirs.push_back(N1[SIDE]); - _dirs.push_back(N2[SIDE]); - } + _dirs.push_back(N1[SIDE]); + _dirs.push_back(N2[SIDE]); + } */ } } @@ -231,13 +231,13 @@ static void treat3Connections(GFace *gf, MVertex *_myVert, MEdge &e1, { std::vector<SVector3> N1,N2,N3; for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e1); + _columns->_normals.lower_bound(e1); itm != _columns->_normals.upper_bound(e1); ++itm) N1.push_back(itm->second); for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e2); + _columns->_normals.lower_bound(e2); itm != _columns->_normals.upper_bound(e2); ++itm) N2.push_back(itm->second); for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e3); + _columns->_normals.lower_bound(e3); itm != _columns->_normals.upper_bound(e3); ++itm) N3.push_back(itm->second); SVector3 x1,x2; @@ -319,13 +319,13 @@ static void getEdgesData(GFace *gf, // check if this edge generates a boundary layer if (isEdgeOfFaceBL (gf,*ite,blf)){ for(unsigned int i = 0; i< (*ite)->lines.size(); i++){ - MVertex *v1 = (*ite)->lines[i]->getVertex(0); - MVertex *v2 = (*ite)->lines[i]->getVertex(1); - allEdges.insert(MEdge(v1,v2)); - _columns->_non_manifold_edges.insert(std::make_pair(v1,v2)); - _columns->_non_manifold_edges.insert(std::make_pair(v2,v1)); - _vertices.insert(v1); - _vertices.insert(v2); + MVertex *v1 = (*ite)->lines[i]->getVertex(0); + MVertex *v2 = (*ite)->lines[i]->getVertex(1); + allEdges.insert(MEdge(v1,v2)); + _columns->_non_manifold_edges.insert(std::make_pair(v1,v2)); + _columns->_non_manifold_edges.insert(std::make_pair(v2,v1)); + _vertices.insert(v1); + _vertices.insert(v2); } } else { @@ -411,8 +411,15 @@ void getLocalInfoAtNode (MVertex *v, BoundaryLayerField *blf, double &hwall) { double t; v->getParameter(0,t); double hwall_beg = blf->hwall (ge->getBeginVertex()->tag()); - double hwall_end = blf->hwall (ge->getEndVertex()->tag()); - hwall = hwall_beg + (t-t_begin)/(t_end-t_begin) * (hwall_end - hwall_beg); + double hwall_end = blf->hwall (ge->getEndVertex()->tag()); + double x = (t-t_begin)/(t_end-t_begin); + double hwallLin = hwall_beg + x * (hwall_end - hwall_beg); + double hwall_mid = std::min(hwall_beg, hwall_end); + double hwallQuad = hwall_beg * (1-x)*(1-x) + + hwall_mid * 2*x*(1-x) + + hwall_end * x*x; + // we prefer a quadratic growing: + hwall = 0*hwallLin + 1*hwallQuad; } } @@ -476,8 +483,8 @@ bool buildAdditionalPoints2D(GFace *gf) MEdge e1 (*it,_connections[0]); std::vector<SVector3> N1; for (std::multimap<MEdge,SVector3,Less_Edge>::iterator itm = - _columns->_normals.lower_bound(e1); - itm != _columns->_normals.upper_bound(e1); ++itm) N1.push_back(itm->second); + _columns->_normals.lower_bound(e1); + itm != _columns->_normals.upper_bound(e1); ++itm) N1.push_back(itm->second); // one point has only one side and one normal : it has to be at the end of the BL // then, we have the tangent to the connecting edge @@ -486,57 +493,58 @@ bool buildAdditionalPoints2D(GFace *gf) // NO BL BL if (N1.size() == 1){ - std::vector<MVertex*> Ts; - for (std::multimap<MVertex*,MVertex*>::iterator itm = - tangents.lower_bound(*it); - itm != tangents.upper_bound(*it); ++itm) Ts.push_back(itm->second); - // end of the BL --> let's add a column that correspond to the - // model edge that lies after the end of teh BL - if (Ts.size() == 1){ - // printf("HERE WE ARE IN FACE %d %d\n",gf->tag(),Ts.size()); - // printf("Classif dim %d %d\n",(*it)->onWhat()->dim(),Ts[0]->onWhat()->dim()); - GEdge *ge = dynamic_cast<GEdge*>(Ts[0]->onWhat()); - GVertex *gv = dynamic_cast<GVertex*>((*it)->onWhat()); - if (ge && gv){ - addColumnAtTheEndOfTheBL (ge,gv,_columns,blf); - } - } - else { - Msg::Error("Impossible BL Configuration -- One Edge -- Tscp.size() = %d",Ts.size()); - } + std::vector<MVertex*> Ts; + for (std::multimap<MVertex*,MVertex*>::iterator itm = + tangents.lower_bound(*it); + itm != tangents.upper_bound(*it); ++itm) Ts.push_back(itm->second); + // end of the BL --> let's add a column that correspond to the + // model edge that lies after the end of teh BL + if (Ts.size() == 1){ + // printf("HERE WE ARE IN FACE %d %d\n",gf->tag(),Ts.size()); + // printf("Classif dim %d %d\n",(*it)->onWhat()->dim(),Ts[0]->onWhat()->dim()); + GEdge *ge = dynamic_cast<GEdge*>(Ts[0]->onWhat()); + GVertex *gv = dynamic_cast<GVertex*>((*it)->onWhat()); + if (ge && gv){ + addColumnAtTheEndOfTheBL (ge,gv,_columns,blf); + } + } + else { + Msg::Error("Impossible BL Configuration -- One Edge -- Tscp.size() = %d",Ts.size()); + } } else if (N1.size() == 2){ // printf("%g %g --> %g %g \n",e1.getVertex(0)->x(),e1.getVertex(0)->y(), // e1.getVertex(1)->x(),e1.getVertex(1)->y()); - // printf("N1.size = %d %g %g %g %g\n",N1.size(),N1[0].x(),N1[0].y(),N1[1].x(),N1[1].y()); - SPoint2 p0,p1; - reparamMeshEdgeOnFace(*it,_connections[0], gf, p0, p1); - - int fanSize = FANSIZE__; - double alpha1 = atan2(N1[0].y(),N1[0].x()); - double alpha2 = atan2(N1[1].y(),N1[1].x()); - double alpha3 = atan2(p1.y()-p0.y(),p1.x()-p0.x()); - double AMAX = std::max(alpha1,alpha2); - double AMIN = std::min(alpha1,alpha2); - if (alpha3 > AMAX){ - AMIN += M_PI; - AMAX += M_PI; - } - if ( AMAX - AMIN >= M_PI){ - double temp = AMAX; - AMAX = AMIN + 2*M_PI; - AMIN = temp; - } - _columns->addFan (*it,e1,e1,true); - // printf("%g %g --> %g %g\n",N1[0].x(),N1[0].y(),N1[1].x(),N1[1].y()); - for (int i=-1; i<=fanSize; i++){ - double t = (double)(i+1)/ (fanSize+1); - double alpha = t * AMAX + (1.-t)* AMIN; - SVector3 x (cos(alpha),sin(alpha),0); - // printf("%d %g %g %g\n",i,x.x(),x.y(),alpha); - x.normalize(); - _dirs.push_back(x); - } + // printf("N1.size = %d %g %g %g %g\n",N1.size(),N1[0].x(),N1[0].y(),N1[1].x(),N1[1].y()); + SPoint2 p0,p1; + reparamMeshEdgeOnFace(_connections[0], *it, gf, p0, p1); + + int fanSize = fan ? FANSIZE__ : 0 ; + double alpha1 = atan2(N1[0].y(),N1[0].x()); + double alpha2 = atan2(N1[1].y(),N1[1].x()); + double alpha3 = atan2(p1.y()-p0.y(),p1.x()-p0.x()); + double AMAX = std::max(alpha1,alpha2); + double AMIN = std::min(alpha1,alpha2); + if (alpha3 > AMAX){ + double temp = AMAX; + AMAX = AMIN + 2*M_PI; + AMIN = temp; + } + if (alpha3 < AMIN) { + double temp = AMIN; + AMIN = AMAX - 2 * M_PI; + AMAX = temp; + } + if (fan) _columns->addFan (*it,e1,e1,true); + // printf("%g %g --> %g %g\n",N1[0].x(),N1[0].y(),N1[1].x(),N1[1].y()); + for (int i=-1; i<=fanSize; i++){ + double t = (double)(i+1)/ (fanSize+1); + double alpha = t * AMAX + (1.-t)* AMIN; + SVector3 x (cos(alpha),sin(alpha),0); + // printf("%d %g %g %g\n",i,x.x(),x.y(),alpha); + x.normalize(); + _dirs.push_back(x); + } } } @@ -552,33 +560,33 @@ bool buildAdditionalPoints2D(GFace *gf) // < ------------------------------- > // /* if (endOfTheBL){ - printf("%g %g %d %d %g\n", (*it)->x(), (*it)->y(), DIR, (int)_dirs.size(), + printf("%g %g %d %d %g\n", (*it)->x(), (*it)->y(), DIR, (int)_dirs.size(), dot(n, dirEndOfBL)); } */ if (endOfTheBL && dot(n,dirEndOfBL) > .99){ - // printf( "coucou c'est moi\n"); + // printf( "coucou c'est moi\n"); } else { - MVertex *first = *it; - double hwall; - getLocalInfoAtNode (first, blf, hwall); - std::vector<MVertex*> _column; - SPoint2 par = gf->parFromPoint(SPoint3(first->x(),first->y(),first->z())); - double L = hwall; - while(1){ - // printf("L = %g\n",L); - if (L > blf->thickness) break; - SPoint2 pnew (par.x() + L * n.x(), - par.y() + L * n.y()); - GPoint pp = gf->point(pnew); - MFaceVertex *_current = new MFaceVertex (pp.x(),pp.y(),pp.z(),gf,pnew.x(),pnew.y()); - _current->bl_data = new MVertexBoundaryLayerData; - _column.push_back(_current); - int ith = _column.size() ; - L+= hwall * pow (blf->ratio, ith); - } - _columns->addColumn(n,*it, _column /*,_metrics*/); + MVertex *first = *it; + double hwall; + getLocalInfoAtNode (first, blf, hwall); + std::vector<MVertex*> _column; + SPoint2 par = gf->parFromPoint(SPoint3(first->x(),first->y(),first->z())); + double L = hwall; + while(1){ + // printf("L = %g\n",L); + if (L > blf->thickness) break; + SPoint2 pnew (par.x() + L * n.x(), + par.y() + L * n.y()); + GPoint pp = gf->point(pnew); + MFaceVertex *_current = new MFaceVertex (pp.x(),pp.y(),pp.z(),gf,pnew.x(),pnew.y()); + _current->bl_data = new MVertexBoundaryLayerData; + _column.push_back(_current); + int ith = _column.size() ; + L+= hwall * pow (blf->ratio, ith); + } + _columns->addColumn(n,*it, _column /*,_metrics*/); } } } diff --git a/Graphics/drawGlyph.cpp b/Graphics/drawGlyph.cpp index 5834e8934baa4cbc95abc34aac76b76a58407d5d..557e59f4e99f432377f18b94fbbf33de873996d1 100644 --- a/Graphics/drawGlyph.cpp +++ b/Graphics/drawGlyph.cpp @@ -86,7 +86,8 @@ void drawContext::drawString(const std::string &s, double x, double y, double z, (CTX::instance()->print.fileFormat == FORMAT_PS || CTX::instance()->print.fileFormat == FORMAT_EPS || CTX::instance()->print.fileFormat == FORMAT_PDF || - CTX::instance()->print.fileFormat == FORMAT_SVG)){ + CTX::instance()->print.fileFormat == FORMAT_SVG || + CTX::instance()->print.fileFormat == FORMAT_TIKZ)){ gl2psText(s.c_str(), font_name.c_str(), font_size); } else{ diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index 79978c14feda7bd7c9e28bc50bd80f7e1c013bfd..042c91cfc1fa44ad79ea1df9e732c81bf4d9f851 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -451,7 +451,8 @@ static void createPoints(GVertex *gv, GEdge *ge, BoundaryLayerField *blf, std::vector<MVertex*>& v, const SVector3 &dir) { #if defined(HAVE_ANN) - double L = blf->hwall_n; + const double hwall = blf->hwall(gv->tag()); + double L = hwall; double LEdge = distance (ge->getBeginVertex()->mesh_vertices[0], ge->getEndVertex()->mesh_vertices[0]); while (1){ @@ -459,7 +460,7 @@ static void createPoints(GVertex *gv, GEdge *ge, BoundaryLayerField *blf, SPoint3 p (gv->x() + dir.x() * L, gv->y() + dir.y() * L, 0.0); v.push_back(new MEdgeVertex(p.x(), p.y(), p.z(), ge, ge->parFromPoint(p), blf->hfar)); int ith = v.size() ; - L += blf->hwall_n * pow (blf->ratio, ith); + L += hwall * pow (blf->ratio, ith); } #endif } diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index dbf7796d95cd2195ceec178d28a6aad97046ff84..41d2b7afa3845de83ce7ac55f1eeb51b8e3fbf89 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -646,7 +646,10 @@ static void addOrRemove(MVertex *v1, MVertex *v2, std::set<MEdge,Less_Edge> & be } } -static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) +static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf, + std::vector<MQuadrangle*> &blQuads, + std::vector<MTriangle*> &blTris, + std::set<MVertex*> &verts) { if (!buildAdditionalPoints2D (gf))return; BoundaryLayerColumns* _columns = gf->getColumns(); @@ -654,15 +657,12 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) std::set<MEdge,Less_Edge> bedges; std::set<MEdge,Less_Edge> removed; - std::vector<MQuadrangle*> blQuads; - std::vector<MTriangle*> blTris; std::list<GEdge*> edges = gf->edges(); std::list<GEdge*> embedded_edges = gf->embeddedEdges(); edges.insert(edges.begin(), embedded_edges.begin(),embedded_edges.end()); std::list<GEdge*>::iterator ite = edges.begin(); FILE *ff2 = Fopen ("tato.pos","w"); if(ff2) fprintf(ff2,"View \" \"{\n"); - std::set<MVertex*> verts; std::vector<MLine*> _lines; @@ -702,6 +702,22 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) v22->x(),v22->y(),v22->z(), v21->x(),v21->y(),v21->z(),l+1,l+1,l+1,l+1); } + if (c1._column.size() != c2._column.size()) { + MVertex *v11,*v12,*v; + v11 = c1._column[N-1]; + v12 = c2._column[N-1]; + v = c1._column.size() > c2._column.size() ? + c1._column[N] : c2._column[N]; + MTriangle *qq = new MTriangle(v11,v12,v); + qq->setPartition (N+1); + myCol.push_back(qq); + blTris.push_back(qq); + if(ff2) + fprintf(ff2,"ST (%g,%g,%g,%g,%g,%g,%g,%g,%g){%d,%d,%d};\n", + v11->x(),v11->y(),v11->z(), + v12->x(),v12->y(),v12->z(), + v->x(),v->y(),v->z(),N+1,N+1,N+1); + } // int M = std::max(c1._column.size(),c2._column.size()); for (unsigned int l=0;l<myCol.size();l++)_columns->_toFirst[myCol[l]] = myCol[0]; _columns->_elemColumns[myCol[0]] = myCol; @@ -808,10 +824,6 @@ static void modifyInitialMeshForTakingIntoAccountBoundaryLayers(GFace *gf) deMeshGFace kil_; kil_(gf); meshGenerator(gf, 0, 0, true , false, &hop); - - gf->quadrangles = blQuads; - gf->triangles.insert(gf->triangles.begin(),blTris.begin(),blTris.end()); - gf->mesh_vertices.insert(gf->mesh_vertices.begin(),verts.begin(),verts.end()); } static bool inside_domain(MElementOctree* octree,double x,double y) @@ -1534,6 +1546,10 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, // fill the small gmsh structures BDS2GMSH(m, gf, recoverMap); + std::vector<MQuadrangle*> blQuads; + std::vector<MTriangle*> blTris; + std::set<MVertex*> verts; + bool infty = false; if (gf->getMeshingAlgo() == ALGO_2D_FRONTAL_QUAD || gf->getMeshingAlgo() == ALGO_2D_PACK_PRLGRMS || @@ -1543,7 +1559,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, if (infty) buildBackGroundMesh (gf); // BOUNDARY LAYER - modifyInitialMeshForTakingIntoAccountBoundaryLayers(gf); + modifyInitialMeshForTakingIntoAccountBoundaryLayers(gf, blQuads, blTris, verts); } // the delaunay algo is based directly on internal gmsh structures @@ -1584,9 +1600,18 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, delete m; + + + gf->quadrangles.insert(gf->quadrangles.begin(),blQuads.begin(),blQuads.end()); + gf->triangles.insert(gf->triangles.begin(),blTris.begin(),blTris.end()); + gf->mesh_vertices.insert(gf->mesh_vertices.begin(),verts.begin(),verts.end()); + + if((CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine) && !CTX::instance()->mesh.optimizeLloyd && !onlyInitialMesh && CTX::instance()->mesh.algoRecombine != 2) recombineIntoQuads(gf); + + computeElementShapes(gf, gf->meshStatistics.worst_element_shape, gf->meshStatistics.average_element_shape, @@ -2336,7 +2361,13 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true) if (infty) buildBackGroundMesh (gf, &equivalence, ¶metricCoordinates); // BOUNDARY LAYER - modifyInitialMeshForTakingIntoAccountBoundaryLayers(gf); + std::vector<MQuadrangle*> blQuads; + std::vector<MTriangle*> blTris; + std::set<MVertex*> verts; + modifyInitialMeshForTakingIntoAccountBoundaryLayers(gf, blQuads, blTris, verts); + gf->quadrangles.insert(gf->quadrangles.begin(),blQuads.begin(),blQuads.end()); + gf->triangles.insert(gf->triangles.begin(),blTris.begin(),blTris.end()); + gf->mesh_vertices.insert(gf->mesh_vertices.begin(),verts.begin(),verts.end()); if(algoDelaunay2D(gf)){ diff --git a/Mesh/meshGFaceBDS.cpp b/Mesh/meshGFaceBDS.cpp index 7b697dc3ca3f4a9d78b2468c275694462f575550..c403a14215a974dfbdda855b59c05365efb7955b 100644 --- a/Mesh/meshGFaceBDS.cpp +++ b/Mesh/meshGFaceBDS.cpp @@ -316,9 +316,12 @@ bool edgeSwapTestDelaunay(BDS_Edge *e, GFace *gf) double op2x[3] = {op[1]->X, op[1]->Y, op[1]->Z}; double fourth[3]; fourthPoint(p1x, p2x, op1x, fourth); - double result = robustPredicates::insphere(p1x, p2x, op1x, fourth, op2x) * - robustPredicates::orient3d(p1x, p2x, op1x, fourth); - return result > 0.; + const double inSphere = robustPredicates::insphere(p1x, p2x, op1x, fourth, op2x); + if (std::abs(inSphere) < 1e-12){ + return false; + } + double result = inSphere * robustPredicates::orient3d(p1x, p2x, op1x, fourth); + return result > 1e-12; } bool edgeSwapTestHighOrder(BDS_Edge *e,GFace *gf) @@ -616,12 +619,16 @@ void collapseEdgePass(GFace *gf, BDS_Mesh &m, double MINE_, int MAXNP, int &nb_c bool collapseP2Allowed = false; if (e->p2->iD > MAXNP){ lone2 = getMaxLcWhenCollapsingEdge(gf, m, e, e->p2); - collapseP1Allowed = std::abs(lone2-1.0) < std::abs(edges[i].first - 1.0); + collapseP2Allowed = std::abs(lone2-1.0) < std::abs(edges[i].first - 1.0); } BDS_Point *p = 0; - if (collapseP1Allowed && collapseP2Allowed) - p = std::abs(lone1 - 1.0) < std::abs(lone2 - 1.0) ? e->p1 : e->p2; + if (collapseP1Allowed && collapseP2Allowed){ + if (std::abs(lone1 - lone2) < 1e-12) + p = e->p1->iD < e->p2->iD ? e->p1 : e->p2; + else + p = std::abs(lone1 - 1.0) < std::abs(lone2 - 1.0) ? e->p1 : e->p2; + } else if (collapseP1Allowed && !collapseP2Allowed) p = e->p1; else if (collapseP1Allowed && !collapseP2Allowed) diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp index 6e7ee1218703ca020f6eef22a08ab9639edcdf45..b8620ea1c285a3e245bb458b4464b4bd3dbe03b0 100644 --- a/Mesh/meshGFaceOptimize.cpp +++ b/Mesh/meshGFaceOptimize.cpp @@ -119,7 +119,7 @@ void buildMeshGenerationDataStructures(GFace *gf, std::cout << "***************************************** NULL" << std::endl; throw; } - + for(unsigned int i = 0;i < gf->triangles.size(); i++) setLcs(gf->triangles[i], vSizesMap, data); @@ -478,7 +478,8 @@ static int _removeTwoQuadsNodes(GFace *gf) std::set<MElement*> touched; std::set<MVertex*> vtouched; while (it != adj.end()) { - if(it->second.size()==2 && it->first->onWhat()->dim() == 2) { + MVertex *v = it->first; + if(it->second.size()==2 && v->onWhat()->dim() == 2) { MElement *q1 = it->second[0]; MElement *q2 = it->second[1]; if (q1->getNumVertices() == 4 && @@ -486,7 +487,7 @@ static int _removeTwoQuadsNodes(GFace *gf) touched.find(q1) == touched.end() && touched.find(q2) == touched.end()){ int comm = 0; for (int i=0;i<4;i++){ - if (q1->getVertex(i) == it->first){ + if (q1->getVertex(i) == v){ comm = i; break; } @@ -496,8 +497,8 @@ static int _removeTwoQuadsNodes(GFace *gf) MVertex *v3 = q1->getVertex((comm+3)%4); MVertex *v4 = 0; for (int i=0;i<4;i++){ - if (q2->getVertex(i) != v1 && q2->getVertex(i) != v2 && - q2->getVertex(i) != v3 && q2->getVertex(i) != it->first){ + if (q2->getVertex(i) != v1 && q2->getVertex(i) != v3 && + q2->getVertex(i) != v){ v4 = q2->getVertex(i); break; } @@ -518,13 +519,14 @@ static int _removeTwoQuadsNodes(GFace *gf) touched.insert(q1); touched.insert(q2); gf->quadrangles.push_back(q); - vtouched.insert(it->first); + vtouched.insert(v); } } } it++; } std::vector<MQuadrangle*> quadrangles2; + quadrangles2.reserve(gf->quadrangles.size() - touched.size()); for(unsigned int i = 0; i < gf->quadrangles.size(); i++){ if(touched.find(gf->quadrangles[i]) == touched.end()){ quadrangles2.push_back(gf->quadrangles[i]); @@ -536,6 +538,7 @@ static int _removeTwoQuadsNodes(GFace *gf) gf->quadrangles = quadrangles2; std::vector<MVertex*> mesh_vertices2; + mesh_vertices2.reserve(gf->mesh_vertices.size() - vtouched.size()); for(unsigned int i = 0; i < gf->mesh_vertices.size(); i++){ if(vtouched.find(gf->mesh_vertices[i]) == vtouched.end()){ mesh_vertices2.push_back(gf->mesh_vertices[i]); @@ -769,7 +772,7 @@ static int _removeDiamonds(GFace *gf) v2->onWhat()->dim() == 2 && v3->onWhat()->dim() == 2 && v4->onWhat()->dim() == 2 && - it1->second.size() ==3 && it3->second.size() == 3 && + it1->second.size() == 3 && it3->second.size() == 3 && _tryToCollapseThatVertex (gf, it1->second, it3->second, q, v1, v3)){ touched.insert(v1); @@ -909,14 +912,11 @@ void getAllBoundaryLayerVertices (GFace *gf, std::set<MVertex*> &vs){ vs.clear(); BoundaryLayerColumns* _columns = gf->getColumns(); if (!_columns)return; - for ( std::map<MElement*,std::vector<MElement*> >::iterator it = _columns->_elemColumns.begin(); - it != _columns->_elemColumns.end();it++){ - std::vector<MElement *> &e = it->second; - for (unsigned int i=0;i<e.size();i++){ - for (int j=0;j<e[i]->getNumVertices();j++){ - vs.insert(e[i]->getVertex(j)); - } - } + for ( std::multimap<MVertex*, BoundaryLayerData>::iterator it = _columns->_data.begin(); + it != _columns->_data.end();it++){ + BoundaryLayerData &data = it->second; + for (size_t i = 0;i<data._column.size();i++) + vs.insert(data._column[i]); } } @@ -1249,6 +1249,7 @@ static int _recombineIntoQuads(GFace *gf, double minqual, bool cubicGraph = 1) std::sort(pairs.begin(),pairs.end()); std::set<MElement*> touched; + if(CTX::instance()->mesh.algoRecombine != 0){ #if defined(HAVE_BLOSSOM) int ncount = gf->triangles.size(); @@ -1295,6 +1296,7 @@ static int _recombineIntoQuads(GFace *gf, double minqual, bool cubicGraph = 1) } } + double matzeit = 0.0; char MATCHFILE[256]; sprintf(MATCHFILE,".face.match"); @@ -1356,6 +1358,7 @@ static int _recombineIntoQuads(GFace *gf, double minqual, bool cubicGraph = 1) #endif } + std::vector<RecombineTriangle>::iterator itp = pairs.begin(); while(itp != pairs.end()){ // recombine if difference between max quad angle and right @@ -1364,6 +1367,7 @@ static int _recombineIntoQuads(GFace *gf, double minqual, bool cubicGraph = 1) if(itp->angle < gf->meshAttributes.recombineAngle){ MElement *t1 = itp->t1; MElement *t2 = itp->t2; + if(touched.find(t1) == touched.end() && touched.find(t2) == touched.end()){ touched.insert(t1); @@ -1401,6 +1405,7 @@ static int _recombineIntoQuads(GFace *gf, double minqual, bool cubicGraph = 1) } gf->triangles = triangles2; + if(CTX::instance()->mesh.algoRecombine != 1){ quadsToTriangles(gf, minqual); } @@ -1436,7 +1441,7 @@ void recombineIntoQuads(GFace *gf, double t1 = Cpu(); bool haveParam = true; - bool saveAll = false; //CTX::instance()->mesh.saveAll; + bool saveAll = CTX::instance()->mesh.saveAll; if(gf->geomType() == GEntity::DiscreteSurface && !gf->getCompound()) haveParam = false; @@ -1444,10 +1449,10 @@ void recombineIntoQuads(GFace *gf, int success = _recombineIntoQuads(gf, minqual); if (saveAll) gf->model()->writeMSH("raw.msh"); + if(haveParam && nodeRepositioning){ RelocateVertices (gf,CTX::instance()->mesh.nbSmoothing); } - // blossom-quad algo if(success && CTX::instance()->mesh.algoRecombine != 0){ if(topologicalOpti){ diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l index e7659e990d0d40d5923d698bbced4c6e93c001cb..51589256c43d441008796d5a4504d5139c272f22 100644 --- a/Parser/Gmsh.l +++ b/Parser/Gmsh.l @@ -132,7 +132,8 @@ Atan2 return tAtan2; BSpline return tBSpline; Betti return tBetti; Bezier return tBezier; -Block return tBlock; +Box return tBox; +Block return tBox; BooleanDifference return tBooleanDifference; BooleanFragments return tBooleanFragments; BooleanIntersection return tBooleanIntersection; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 4baaad7aaff4adab9b0b53bc7159b369e33227b1..55439834b51ae0d1aa4dd17cfebbfdbc4ec26d8f 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -171,7 +171,7 @@ tSurface = 352, tSpline = 353, tVolume = 354, - tBlock = 355, + tBox = 355, tCylinder = 356, tCone = 357, tTorus = 358, @@ -398,7 +398,7 @@ #define tSurface 352 #define tSpline 353 #define tVolume 354 -#define tBlock 355 +#define tBox 355 #define tCylinder 356 #define tCone 357 #define tTorus 358 @@ -954,16 +954,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 14685 +#define YYLAST 14793 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 249 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 113 /* YYNRULES -- Number of rules. */ -#define YYNRULES 587 +#define YYNRULES 589 /* YYNRULES -- Number of states. */ -#define YYNSTATES 2068 +#define YYNSTATES 2072 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -1041,55 +1041,55 @@ static const yytype_uint16 yyprhs[] = 267, 269, 271, 273, 275, 281, 287, 290, 298, 306, 311, 315, 322, 332, 340, 347, 355, 362, 367, 376, 386, 396, 403, 413, 420, 430, 436, 445, 454, 466, - 473, 483, 489, 497, 507, 517, 529, 537, 547, 557, - 558, 560, 561, 565, 571, 572, 582, 583, 595, 601, - 602, 612, 613, 617, 621, 627, 633, 634, 637, 638, - 640, 642, 646, 649, 651, 656, 659, 662, 663, 666, - 668, 672, 675, 678, 681, 684, 687, 689, 691, 695, - 696, 702, 703, 706, 714, 722, 730, 739, 748, 756, - 764, 776, 784, 793, 802, 811, 821, 825, 830, 841, - 849, 857, 865, 873, 881, 889, 897, 905, 913, 921, - 930, 938, 946, 955, 964, 977, 978, 988, 990, 992, - 994, 996, 1001, 1003, 1005, 1007, 1012, 1014, 1016, 1021, - 1023, 1025, 1027, 1032, 1038, 1050, 1056, 1066, 1076, 1081, - 1091, 1101, 1103, 1105, 1106, 1109, 1116, 1125, 1136, 1151, - 1168, 1181, 1196, 1211, 1226, 1241, 1250, 1259, 1266, 1271, - 1277, 1284, 1291, 1295, 1300, 1304, 1310, 1317, 1323, 1327, - 1331, 1336, 1342, 1347, 1353, 1357, 1363, 1371, 1379, 1383, - 1391, 1395, 1398, 1401, 1404, 1407, 1410, 1426, 1429, 1432, - 1435, 1438, 1441, 1458, 1470, 1477, 1486, 1495, 1506, 1508, - 1511, 1514, 1516, 1520, 1524, 1529, 1534, 1536, 1538, 1544, - 1556, 1570, 1571, 1579, 1580, 1594, 1595, 1611, 1612, 1619, - 1629, 1632, 1636, 1647, 1649, 1652, 1658, 1666, 1669, 1672, - 1676, 1679, 1683, 1686, 1690, 1700, 1707, 1709, 1711, 1713, - 1715, 1717, 1718, 1721, 1725, 1729, 1734, 1744, 1749, 1764, - 1765, 1769, 1770, 1772, 1773, 1776, 1777, 1780, 1781, 1784, - 1791, 1799, 1806, 1812, 1816, 1825, 1831, 1836, 1843, 1855, - 1867, 1886, 1905, 1918, 1931, 1944, 1955, 1960, 1965, 1970, - 1975, 1978, 1982, 1989, 1991, 1993, 1995, 1998, 2004, 2012, - 2023, 2025, 2029, 2032, 2035, 2038, 2042, 2046, 2050, 2054, - 2058, 2062, 2066, 2070, 2074, 2078, 2082, 2086, 2090, 2094, - 2098, 2102, 2106, 2110, 2116, 2121, 2126, 2131, 2136, 2141, - 2146, 2151, 2156, 2161, 2166, 2173, 2178, 2183, 2188, 2193, - 2198, 2203, 2208, 2213, 2220, 2227, 2234, 2239, 2241, 2243, - 2245, 2247, 2249, 2251, 2253, 2255, 2257, 2259, 2261, 2262, - 2269, 2271, 2276, 2283, 2285, 2290, 2295, 2300, 2307, 2313, - 2321, 2330, 2341, 2346, 2351, 2358, 2363, 2367, 2370, 2376, - 2382, 2386, 2392, 2399, 2408, 2415, 2424, 2431, 2436, 2444, - 2451, 2458, 2465, 2470, 2477, 2482, 2483, 2486, 2487, 2490, - 2491, 2499, 2501, 2505, 2507, 2509, 2512, 2513, 2517, 2519, - 2522, 2525, 2529, 2533, 2545, 2555, 2563, 2571, 2573, 2577, - 2579, 2581, 2584, 2588, 2593, 2599, 2601, 2603, 2606, 2610, - 2614, 2620, 2625, 2628, 2632, 2649, 2651, 2653, 2655, 2659, - 2665, 2673, 2678, 2683, 2688, 2695, 2702, 2711, 2720, 2725, - 2740, 2745, 2750, 2752, 2754, 2758, 2762, 2772, 2780, 2782, - 2788, 2792, 2799, 2801, 2805, 2807, 2809, 2814, 2819, 2823, - 2829, 2836, 2845, 2852, 2858, 2864, 2870, 2876, 2878, 2883, - 2885, 2887, 2889, 2891, 2896, 2903, 2908, 2915, 2921, 2929, - 2934, 2939, 2944, 2953, 2958, 2963, 2968, 2973, 2982, 2991, - 2998, 3003, 3010, 3015, 3017, 3022, 3027, 3028, 3035, 3040, - 3043, 3048, 3053, 3055, 3057, 3061, 3063, 3065, 3069, 3073, - 3077, 3083, 3091, 3097, 3103, 3112, 3114, 3116 + 473, 483, 489, 497, 505, 513, 523, 533, 545, 553, + 563, 573, 574, 576, 577, 581, 587, 588, 598, 599, + 611, 617, 618, 628, 629, 633, 637, 643, 649, 650, + 653, 654, 656, 658, 662, 665, 667, 672, 675, 678, + 679, 682, 684, 688, 691, 694, 697, 700, 703, 705, + 707, 711, 712, 718, 719, 722, 730, 738, 746, 755, + 764, 772, 780, 792, 800, 809, 818, 827, 837, 841, + 846, 857, 865, 873, 881, 889, 897, 905, 913, 921, + 929, 937, 946, 954, 962, 971, 980, 993, 994, 1004, + 1006, 1008, 1010, 1012, 1017, 1019, 1021, 1023, 1028, 1030, + 1032, 1037, 1039, 1041, 1043, 1048, 1054, 1066, 1072, 1082, + 1092, 1097, 1107, 1117, 1119, 1121, 1122, 1125, 1132, 1141, + 1152, 1167, 1184, 1197, 1212, 1227, 1242, 1257, 1266, 1275, + 1282, 1287, 1293, 1300, 1307, 1311, 1316, 1320, 1326, 1333, + 1339, 1343, 1347, 1352, 1358, 1363, 1369, 1373, 1379, 1387, + 1395, 1399, 1407, 1411, 1414, 1417, 1420, 1423, 1426, 1442, + 1445, 1448, 1451, 1454, 1457, 1474, 1486, 1493, 1502, 1511, + 1522, 1524, 1527, 1530, 1532, 1536, 1540, 1545, 1550, 1552, + 1554, 1560, 1572, 1586, 1587, 1595, 1596, 1610, 1611, 1627, + 1628, 1635, 1645, 1648, 1652, 1663, 1665, 1668, 1674, 1682, + 1685, 1688, 1692, 1695, 1699, 1702, 1706, 1716, 1723, 1725, + 1727, 1729, 1731, 1733, 1734, 1737, 1741, 1745, 1750, 1760, + 1765, 1780, 1781, 1785, 1786, 1788, 1789, 1792, 1793, 1796, + 1797, 1800, 1807, 1815, 1822, 1828, 1832, 1841, 1847, 1852, + 1859, 1871, 1883, 1902, 1921, 1934, 1947, 1960, 1971, 1976, + 1981, 1986, 1991, 1994, 1998, 2005, 2007, 2009, 2011, 2014, + 2020, 2028, 2039, 2041, 2045, 2048, 2051, 2054, 2058, 2062, + 2066, 2070, 2074, 2078, 2082, 2086, 2090, 2094, 2098, 2102, + 2106, 2110, 2114, 2118, 2122, 2126, 2132, 2137, 2142, 2147, + 2152, 2157, 2162, 2167, 2172, 2177, 2182, 2189, 2194, 2199, + 2204, 2209, 2214, 2219, 2224, 2229, 2236, 2243, 2250, 2255, + 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, + 2277, 2278, 2285, 2287, 2292, 2299, 2301, 2306, 2311, 2316, + 2323, 2329, 2337, 2346, 2357, 2362, 2367, 2374, 2379, 2383, + 2386, 2392, 2398, 2402, 2408, 2415, 2424, 2431, 2440, 2447, + 2452, 2460, 2467, 2474, 2481, 2486, 2493, 2498, 2499, 2502, + 2503, 2506, 2507, 2515, 2517, 2521, 2523, 2525, 2528, 2529, + 2533, 2535, 2538, 2541, 2545, 2549, 2561, 2571, 2579, 2587, + 2589, 2593, 2595, 2597, 2600, 2604, 2609, 2615, 2617, 2619, + 2622, 2626, 2630, 2636, 2641, 2644, 2648, 2665, 2667, 2669, + 2671, 2675, 2681, 2689, 2694, 2699, 2704, 2711, 2718, 2727, + 2736, 2741, 2756, 2761, 2766, 2768, 2770, 2774, 2778, 2788, + 2796, 2798, 2804, 2808, 2815, 2817, 2821, 2823, 2825, 2830, + 2835, 2839, 2845, 2852, 2861, 2868, 2874, 2880, 2886, 2892, + 2894, 2899, 2901, 2903, 2905, 2907, 2912, 2919, 2924, 2931, + 2937, 2945, 2950, 2955, 2960, 2969, 2974, 2979, 2984, 2989, + 2998, 3007, 3014, 3019, 3026, 3031, 3033, 3038, 3043, 3044, + 3051, 3056, 3059, 3064, 3069, 3071, 3073, 3077, 3079, 3081, + 3085, 3089, 3093, 3099, 3107, 3113, 3119, 3128, 3130, 3132 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -1145,269 +1145,270 @@ static const yytype_int16 yyrhs[] = 349, 6, -1, 361, 241, 330, 242, 245, 175, 7, 349, 6, -1, 361, 185, 7, 330, 6, -1, 185, 241, 330, 242, 7, 4, 6, -1, 185, 241, 330, - 242, 245, 4, 7, 330, 6, -1, 185, 241, 330, - 242, 245, 4, 7, 352, 6, -1, 185, 241, 330, - 242, 245, 4, 7, 243, 347, 244, 6, -1, 185, - 241, 330, 242, 245, 4, 6, -1, 130, 239, 4, - 240, 245, 4, 7, 330, 6, -1, 130, 239, 4, - 240, 245, 4, 7, 352, 6, -1, -1, 248, -1, - -1, 277, 276, 361, -1, 277, 276, 361, 7, 330, - -1, -1, 277, 276, 361, 7, 243, 344, 278, 283, - 244, -1, -1, 277, 276, 361, 273, 274, 7, 243, - 344, 279, 283, 244, -1, 277, 276, 361, 7, 352, - -1, -1, 277, 276, 361, 7, 243, 352, 280, 287, - 244, -1, -1, 281, 276, 351, -1, 330, 7, 352, - -1, 282, 248, 330, 7, 352, -1, 346, 7, 361, - 239, 240, -1, -1, 248, 285, -1, -1, 285, -1, - 286, -1, 285, 248, 286, -1, 4, 344, -1, 4, - -1, 4, 243, 282, 244, -1, 4, 352, -1, 4, - 355, -1, -1, 248, 288, -1, 289, -1, 288, 248, - 289, -1, 4, 330, -1, 4, 352, -1, 189, 352, - -1, 4, 357, -1, 4, 355, -1, 330, -1, 352, - -1, 352, 248, 330, -1, -1, 177, 95, 243, 330, - 244, -1, -1, 123, 341, -1, 91, 239, 330, 240, - 7, 341, 6, -1, 94, 239, 330, 240, 7, 344, - 6, -1, 98, 239, 330, 240, 7, 344, 6, -1, - 92, 239, 330, 240, 7, 344, 292, 6, -1, 93, - 239, 330, 240, 7, 344, 292, 6, -1, 169, 239, - 330, 240, 7, 344, 6, -1, 170, 239, 330, 240, - 7, 344, 6, -1, 171, 239, 330, 240, 7, 344, - 173, 344, 172, 330, 6, -1, 109, 239, 330, 240, - 7, 344, 6, -1, 94, 4, 239, 330, 240, 7, - 344, 6, -1, 123, 97, 239, 330, 240, 7, 344, - 6, -1, 97, 239, 330, 240, 7, 344, 291, 6, - -1, 124, 97, 239, 330, 240, 7, 344, 291, 6, - -1, 13, 14, 6, -1, 14, 97, 330, 6, -1, - 113, 97, 239, 330, 240, 7, 5, 5, 5, 6, - -1, 95, 239, 330, 240, 7, 344, 6, -1, 96, - 239, 330, 240, 7, 344, 6, -1, 100, 239, 330, - 240, 7, 344, 6, -1, 103, 239, 330, 240, 7, - 344, 6, -1, 107, 239, 330, 240, 7, 344, 6, - -1, 108, 239, 330, 240, 7, 344, 6, -1, 101, - 239, 330, 240, 7, 344, 6, -1, 102, 239, 330, - 240, 7, 344, 6, -1, 120, 239, 330, 240, 7, - 344, 6, -1, 145, 239, 330, 240, 7, 344, 6, - -1, 97, 4, 239, 330, 240, 7, 344, 6, -1, - 99, 239, 330, 240, 7, 344, 6, -1, 119, 239, - 330, 240, 7, 344, 6, -1, 124, 119, 239, 330, - 240, 7, 344, 6, -1, 127, 296, 239, 330, 240, - 7, 344, 6, -1, 127, 296, 239, 330, 240, 7, - 344, 4, 243, 343, 244, 6, -1, -1, 126, 295, - 294, 239, 290, 240, 271, 344, 6, -1, 91, -1, - 94, -1, 97, -1, 99, -1, 110, 243, 330, 244, - -1, 94, -1, 97, -1, 99, -1, 110, 243, 330, - 244, -1, 94, -1, 97, -1, 110, 243, 330, 244, - -1, 91, -1, 94, -1, 97, -1, 110, 243, 330, - 244, -1, 134, 341, 243, 300, 244, -1, 133, 243, - 341, 248, 341, 248, 330, 244, 243, 300, 244, -1, - 135, 341, 243, 300, 244, -1, 136, 243, 341, 248, - 330, 244, 243, 300, 244, -1, 136, 243, 341, 248, - 341, 244, 243, 300, 244, -1, 4, 243, 300, 244, - -1, 151, 94, 243, 347, 244, 97, 243, 330, 244, - -1, 148, 94, 239, 330, 240, 243, 347, 244, 6, - -1, 301, -1, 299, -1, -1, 301, 293, -1, 301, - 295, 243, 347, 244, 6, -1, 138, 123, 239, 330, - 240, 7, 344, 6, -1, 138, 91, 239, 330, 240, - 7, 243, 343, 244, 6, -1, 138, 123, 239, 330, - 240, 7, 243, 341, 248, 341, 248, 347, 244, 6, - -1, 138, 123, 239, 330, 240, 7, 243, 341, 248, - 341, 248, 341, 248, 347, 244, 6, -1, 138, 95, - 239, 330, 240, 7, 243, 341, 248, 347, 244, 6, - -1, 138, 101, 239, 330, 240, 7, 243, 341, 248, - 341, 248, 347, 244, 6, -1, 138, 102, 239, 330, - 240, 7, 243, 341, 248, 341, 248, 347, 244, 6, - -1, 138, 104, 239, 330, 240, 7, 243, 341, 248, - 341, 248, 347, 244, 6, -1, 138, 105, 239, 330, - 240, 7, 243, 341, 248, 341, 248, 347, 244, 6, - -1, 138, 4, 239, 330, 240, 7, 344, 6, -1, - 138, 4, 239, 330, 240, 7, 5, 6, -1, 138, - 4, 243, 330, 244, 6, -1, 149, 243, 301, 244, - -1, 132, 149, 243, 301, 244, -1, 149, 185, 241, - 330, 242, 6, -1, 149, 4, 241, 330, 242, 6, - -1, 149, 361, 6, -1, 149, 4, 4, 6, -1, - 149, 84, 6, -1, 174, 348, 243, 301, 244, -1, - 132, 174, 348, 243, 301, 244, -1, 209, 330, 243, - 301, 244, -1, 190, 5, 6, -1, 191, 5, 6, - -1, 190, 243, 301, 244, -1, 132, 190, 243, 301, - 244, -1, 191, 243, 301, 244, -1, 132, 191, 243, - 301, 244, -1, 361, 352, 6, -1, 73, 239, 358, - 240, 6, -1, 361, 361, 241, 330, 242, 351, 6, - -1, 361, 361, 361, 241, 330, 242, 6, -1, 361, - 330, 6, -1, 130, 239, 4, 240, 245, 4, 6, - -1, 168, 4, 6, -1, 183, 6, -1, 184, 6, - -1, 70, 6, -1, 71, 6, -1, 64, 6, -1, - 64, 243, 330, 248, 330, 248, 330, 248, 330, 248, - 330, 248, 330, 244, 6, -1, 65, 6, -1, 66, - 6, -1, 78, 6, -1, 79, 6, -1, 115, 6, - -1, 116, 243, 347, 244, 243, 347, 244, 243, 343, - 244, 243, 330, 248, 330, 244, 6, -1, 188, 239, - 243, 347, 244, 248, 352, 248, 352, 240, 6, -1, - 176, 239, 330, 8, 330, 240, -1, 176, 239, 330, - 8, 330, 8, 330, 240, -1, 176, 4, 177, 243, - 330, 8, 330, 244, -1, 176, 4, 177, 243, 330, - 8, 330, 8, 330, 244, -1, 178, -1, 189, 4, - -1, 189, 352, -1, 186, -1, 187, 361, 6, -1, - 187, 352, 6, -1, 179, 239, 330, 240, -1, 180, - 239, 330, 240, -1, 181, -1, 182, -1, 137, 341, - 243, 301, 244, -1, 137, 243, 341, 248, 341, 248, - 330, 244, 243, 301, 244, -1, 137, 243, 341, 248, - 341, 248, 341, 248, 330, 244, 243, 301, 244, -1, - -1, 137, 341, 243, 301, 311, 315, 244, -1, -1, + 242, 7, 100, 6, -1, 185, 241, 330, 242, 7, + 101, 6, -1, 185, 241, 330, 242, 245, 4, 7, + 330, 6, -1, 185, 241, 330, 242, 245, 4, 7, + 352, 6, -1, 185, 241, 330, 242, 245, 4, 7, + 243, 347, 244, 6, -1, 185, 241, 330, 242, 245, + 4, 6, -1, 130, 239, 4, 240, 245, 4, 7, + 330, 6, -1, 130, 239, 4, 240, 245, 4, 7, + 352, 6, -1, -1, 248, -1, -1, 277, 276, 361, + -1, 277, 276, 361, 7, 330, -1, -1, 277, 276, + 361, 7, 243, 344, 278, 283, 244, -1, -1, 277, + 276, 361, 273, 274, 7, 243, 344, 279, 283, 244, + -1, 277, 276, 361, 7, 352, -1, -1, 277, 276, + 361, 7, 243, 352, 280, 287, 244, -1, -1, 281, + 276, 351, -1, 330, 7, 352, -1, 282, 248, 330, + 7, 352, -1, 346, 7, 361, 239, 240, -1, -1, + 248, 285, -1, -1, 285, -1, 286, -1, 285, 248, + 286, -1, 4, 344, -1, 4, -1, 4, 243, 282, + 244, -1, 4, 352, -1, 4, 355, -1, -1, 248, + 288, -1, 289, -1, 288, 248, 289, -1, 4, 330, + -1, 4, 352, -1, 189, 352, -1, 4, 357, -1, + 4, 355, -1, 330, -1, 352, -1, 352, 248, 330, + -1, -1, 177, 95, 243, 330, 244, -1, -1, 123, + 341, -1, 91, 239, 330, 240, 7, 341, 6, -1, + 94, 239, 330, 240, 7, 344, 6, -1, 98, 239, + 330, 240, 7, 344, 6, -1, 92, 239, 330, 240, + 7, 344, 292, 6, -1, 93, 239, 330, 240, 7, + 344, 292, 6, -1, 169, 239, 330, 240, 7, 344, + 6, -1, 170, 239, 330, 240, 7, 344, 6, -1, + 171, 239, 330, 240, 7, 344, 173, 344, 172, 330, + 6, -1, 109, 239, 330, 240, 7, 344, 6, -1, + 94, 4, 239, 330, 240, 7, 344, 6, -1, 123, + 97, 239, 330, 240, 7, 344, 6, -1, 97, 239, + 330, 240, 7, 344, 291, 6, -1, 124, 97, 239, + 330, 240, 7, 344, 291, 6, -1, 13, 14, 6, + -1, 14, 97, 330, 6, -1, 113, 97, 239, 330, + 240, 7, 5, 5, 5, 6, -1, 95, 239, 330, + 240, 7, 344, 6, -1, 96, 239, 330, 240, 7, + 344, 6, -1, 100, 239, 330, 240, 7, 344, 6, + -1, 103, 239, 330, 240, 7, 344, 6, -1, 107, + 239, 330, 240, 7, 344, 6, -1, 108, 239, 330, + 240, 7, 344, 6, -1, 101, 239, 330, 240, 7, + 344, 6, -1, 102, 239, 330, 240, 7, 344, 6, + -1, 120, 239, 330, 240, 7, 344, 6, -1, 145, + 239, 330, 240, 7, 344, 6, -1, 97, 4, 239, + 330, 240, 7, 344, 6, -1, 99, 239, 330, 240, + 7, 344, 6, -1, 119, 239, 330, 240, 7, 344, + 6, -1, 124, 119, 239, 330, 240, 7, 344, 6, + -1, 127, 296, 239, 330, 240, 7, 344, 6, -1, + 127, 296, 239, 330, 240, 7, 344, 4, 243, 343, + 244, 6, -1, -1, 126, 295, 294, 239, 290, 240, + 271, 344, 6, -1, 91, -1, 94, -1, 97, -1, + 99, -1, 110, 243, 330, 244, -1, 94, -1, 97, + -1, 99, -1, 110, 243, 330, 244, -1, 94, -1, + 97, -1, 110, 243, 330, 244, -1, 91, -1, 94, + -1, 97, -1, 110, 243, 330, 244, -1, 134, 341, + 243, 300, 244, -1, 133, 243, 341, 248, 341, 248, + 330, 244, 243, 300, 244, -1, 135, 341, 243, 300, + 244, -1, 136, 243, 341, 248, 330, 244, 243, 300, + 244, -1, 136, 243, 341, 248, 341, 244, 243, 300, + 244, -1, 4, 243, 300, 244, -1, 151, 94, 243, + 347, 244, 97, 243, 330, 244, -1, 148, 94, 239, + 330, 240, 243, 347, 244, 6, -1, 301, -1, 299, + -1, -1, 301, 293, -1, 301, 295, 243, 347, 244, + 6, -1, 138, 123, 239, 330, 240, 7, 344, 6, + -1, 138, 91, 239, 330, 240, 7, 243, 343, 244, + 6, -1, 138, 123, 239, 330, 240, 7, 243, 341, + 248, 341, 248, 347, 244, 6, -1, 138, 123, 239, + 330, 240, 7, 243, 341, 248, 341, 248, 341, 248, + 347, 244, 6, -1, 138, 95, 239, 330, 240, 7, + 243, 341, 248, 347, 244, 6, -1, 138, 101, 239, + 330, 240, 7, 243, 341, 248, 341, 248, 347, 244, + 6, -1, 138, 102, 239, 330, 240, 7, 243, 341, + 248, 341, 248, 347, 244, 6, -1, 138, 104, 239, + 330, 240, 7, 243, 341, 248, 341, 248, 347, 244, + 6, -1, 138, 105, 239, 330, 240, 7, 243, 341, + 248, 341, 248, 347, 244, 6, -1, 138, 4, 239, + 330, 240, 7, 344, 6, -1, 138, 4, 239, 330, + 240, 7, 5, 6, -1, 138, 4, 243, 330, 244, + 6, -1, 149, 243, 301, 244, -1, 132, 149, 243, + 301, 244, -1, 149, 185, 241, 330, 242, 6, -1, + 149, 4, 241, 330, 242, 6, -1, 149, 361, 6, + -1, 149, 4, 4, 6, -1, 149, 84, 6, -1, + 174, 348, 243, 301, 244, -1, 132, 174, 348, 243, + 301, 244, -1, 209, 330, 243, 301, 244, -1, 190, + 5, 6, -1, 191, 5, 6, -1, 190, 243, 301, + 244, -1, 132, 190, 243, 301, 244, -1, 191, 243, + 301, 244, -1, 132, 191, 243, 301, 244, -1, 361, + 352, 6, -1, 73, 239, 358, 240, 6, -1, 361, + 361, 241, 330, 242, 351, 6, -1, 361, 361, 361, + 241, 330, 242, 6, -1, 361, 330, 6, -1, 130, + 239, 4, 240, 245, 4, 6, -1, 168, 4, 6, + -1, 183, 6, -1, 184, 6, -1, 70, 6, -1, + 71, 6, -1, 64, 6, -1, 64, 243, 330, 248, + 330, 248, 330, 248, 330, 248, 330, 248, 330, 244, + 6, -1, 65, 6, -1, 66, 6, -1, 78, 6, + -1, 79, 6, -1, 115, 6, -1, 116, 243, 347, + 244, 243, 347, 244, 243, 343, 244, 243, 330, 248, + 330, 244, 6, -1, 188, 239, 243, 347, 244, 248, + 352, 248, 352, 240, 6, -1, 176, 239, 330, 8, + 330, 240, -1, 176, 239, 330, 8, 330, 8, 330, + 240, -1, 176, 4, 177, 243, 330, 8, 330, 244, + -1, 176, 4, 177, 243, 330, 8, 330, 8, 330, + 244, -1, 178, -1, 189, 4, -1, 189, 352, -1, + 186, -1, 187, 361, 6, -1, 187, 352, 6, -1, + 179, 239, 330, 240, -1, 180, 239, 330, 240, -1, + 181, -1, 182, -1, 137, 341, 243, 301, 244, -1, 137, 243, 341, 248, 341, 248, 330, 244, 243, 301, - 312, 315, 244, -1, -1, 137, 243, 341, 248, 341, - 248, 341, 248, 330, 244, 243, 301, 313, 315, 244, - -1, -1, 137, 243, 301, 314, 315, 244, -1, 137, - 243, 301, 244, 129, 109, 243, 330, 244, -1, 119, - 344, -1, 124, 119, 344, -1, 121, 243, 347, 244, - 243, 347, 244, 243, 330, 244, -1, 316, -1, 315, - 316, -1, 154, 243, 330, 244, 6, -1, 154, 243, - 344, 248, 344, 244, 6, -1, 155, 6, -1, 146, - 6, -1, 146, 330, 6, -1, 160, 6, -1, 160, - 162, 6, -1, 161, 6, -1, 161, 162, 6, -1, - 156, 239, 330, 240, 7, 344, 129, 330, 6, -1, - 129, 4, 241, 330, 242, 6, -1, 140, -1, 141, - -1, 142, -1, 143, -1, 144, -1, -1, 149, 6, - -1, 132, 149, 6, -1, 149, 330, 6, -1, 132, - 149, 330, 6, -1, 317, 243, 301, 318, 244, 243, - 301, 318, 244, -1, 106, 239, 351, 240, -1, 317, - 239, 330, 240, 7, 243, 301, 318, 244, 243, 301, - 318, 244, 6, -1, -1, 129, 4, 330, -1, -1, - 4, -1, -1, 7, 344, -1, -1, 7, 330, -1, - -1, 139, 344, -1, 111, 112, 344, 7, 330, 6, - -1, 125, 94, 345, 7, 330, 321, 6, -1, 125, - 97, 345, 323, 322, 6, -1, 125, 99, 345, 323, - 6, -1, 163, 345, 6, -1, 152, 97, 243, 347, - 244, 7, 330, 6, -1, 146, 97, 345, 324, 6, - -1, 146, 99, 345, 6, -1, 147, 97, 345, 7, - 330, 6, -1, 128, 94, 243, 347, 244, 7, 243, - 347, 244, 325, 6, -1, 128, 97, 243, 347, 244, - 7, 243, 347, 244, 325, 6, -1, 128, 94, 243, - 347, 244, 7, 243, 347, 244, 133, 243, 341, 248, - 341, 248, 330, 244, 6, -1, 128, 97, 243, 347, - 244, 7, 243, 347, 244, 133, 243, 341, 248, 341, - 248, 330, 244, 6, -1, 128, 94, 243, 347, 244, - 7, 243, 347, 244, 134, 341, 6, -1, 128, 97, - 243, 347, 244, 7, 243, 347, 244, 134, 341, 6, - -1, 128, 97, 330, 243, 347, 244, 7, 330, 243, - 347, 244, 6, -1, 295, 243, 347, 244, 177, 295, - 243, 330, 244, 6, -1, 153, 297, 345, 6, -1, - 117, 298, 345, 6, -1, 131, 94, 344, 6, -1, - 127, 296, 344, 6, -1, 150, 6, -1, 150, 4, - 6, -1, 150, 91, 243, 347, 244, 6, -1, 198, - -1, 199, -1, 200, -1, 328, 6, -1, 328, 243, - 344, 244, 6, -1, 328, 243, 344, 248, 344, 244, - 6, -1, 328, 239, 344, 240, 243, 344, 248, 344, - 244, 6, -1, 331, -1, 239, 330, 240, -1, 228, - 330, -1, 227, 330, -1, 234, 330, -1, 330, 228, - 330, -1, 330, 227, 330, -1, 330, 229, 330, -1, - 330, 230, 330, -1, 330, 232, 330, -1, 330, 233, - 330, -1, 330, 231, 330, -1, 330, 238, 330, -1, - 330, 221, 330, -1, 330, 222, 330, -1, 330, 226, - 330, -1, 330, 225, 330, -1, 330, 220, 330, -1, - 330, 219, 330, -1, 330, 218, 330, -1, 330, 217, - 330, -1, 330, 223, 330, -1, 330, 224, 330, -1, - 330, 216, 330, 8, 330, -1, 16, 273, 330, 274, - -1, 17, 273, 330, 274, -1, 18, 273, 330, 274, - -1, 19, 273, 330, 274, -1, 20, 273, 330, 274, - -1, 21, 273, 330, 274, -1, 22, 273, 330, 274, - -1, 23, 273, 330, 274, -1, 24, 273, 330, 274, - -1, 26, 273, 330, 274, -1, 27, 273, 330, 248, - 330, 274, -1, 28, 273, 330, 274, -1, 29, 273, - 330, 274, -1, 30, 273, 330, 274, -1, 31, 273, - 330, 274, -1, 32, 273, 330, 274, -1, 33, 273, - 330, 274, -1, 34, 273, 330, 274, -1, 35, 273, - 330, 274, -1, 36, 273, 330, 248, 330, 274, -1, - 37, 273, 330, 248, 330, 274, -1, 38, 273, 330, - 248, 330, 274, -1, 25, 273, 330, 274, -1, 3, - -1, 10, -1, 15, -1, 11, -1, 12, -1, 205, - -1, 206, -1, 207, -1, 75, -1, 76, -1, 77, - -1, -1, 83, 273, 330, 332, 283, 274, -1, 335, - -1, 196, 273, 351, 274, -1, 196, 273, 351, 248, - 330, 274, -1, 337, -1, 361, 241, 330, 242, -1, - 361, 239, 330, 240, -1, 201, 239, 337, 240, -1, - 201, 239, 337, 245, 338, 240, -1, 203, 239, 337, - 333, 240, -1, 203, 239, 337, 245, 338, 333, 240, - -1, 203, 239, 337, 273, 330, 274, 333, 240, -1, - 203, 239, 337, 245, 338, 273, 330, 274, 333, 240, - -1, 202, 239, 352, 240, -1, 246, 361, 273, 274, - -1, 246, 337, 245, 338, 273, 274, -1, 86, 273, - 361, 274, -1, 86, 273, 274, -1, 361, 272, -1, - 361, 241, 330, 242, 272, -1, 361, 239, 330, 240, - 272, -1, 361, 245, 338, -1, 361, 9, 361, 245, - 338, -1, 361, 245, 338, 239, 330, 240, -1, 361, - 9, 361, 245, 338, 239, 330, 240, -1, 361, 245, - 338, 241, 330, 242, -1, 361, 9, 361, 245, 338, - 241, 330, 242, -1, 361, 241, 330, 242, 245, 4, - -1, 361, 245, 4, 272, -1, 361, 241, 330, 242, - 245, 4, 272, -1, 192, 239, 351, 248, 330, 240, - -1, 56, 239, 344, 248, 344, 240, -1, 57, 273, - 351, 248, 351, 274, -1, 55, 273, 351, 274, -1, - 58, 273, 351, 248, 351, 274, -1, 63, 239, 358, - 240, -1, -1, 248, 330, -1, -1, 248, 351, -1, - -1, 84, 337, 340, 336, 241, 284, 242, -1, 361, - -1, 361, 9, 361, -1, 4, -1, 87, -1, 87, - 330, -1, -1, 239, 339, 240, -1, 342, -1, 228, - 341, -1, 227, 341, -1, 341, 228, 341, -1, 341, - 227, 341, -1, 243, 330, 248, 330, 248, 330, 248, - 330, 248, 330, 244, -1, 243, 330, 248, 330, 248, - 330, 248, 330, 244, -1, 243, 330, 248, 330, 248, - 330, 244, -1, 239, 330, 248, 330, 248, 330, 240, - -1, 344, -1, 343, 248, 344, -1, 330, -1, 346, - -1, 243, 244, -1, 243, 347, 244, -1, 228, 243, - 347, 244, -1, 330, 229, 243, 347, 244, -1, 344, - -1, 5, -1, 228, 346, -1, 330, 229, 346, -1, - 330, 8, 330, -1, 330, 8, 330, 8, 330, -1, - 91, 243, 330, 244, -1, 295, 5, -1, 126, 295, - 345, -1, 295, 177, 64, 243, 330, 248, 330, 248, - 330, 248, 330, 248, 330, 248, 330, 244, -1, 299, - -1, 310, -1, 319, -1, 361, 273, 274, -1, 361, - 245, 338, 273, 274, -1, 361, 9, 361, 245, 338, - 273, 274, -1, 39, 241, 361, 242, -1, 39, 241, - 346, 242, -1, 39, 239, 346, 240, -1, 39, 273, - 243, 347, 244, 274, -1, 361, 273, 243, 347, 244, - 274, -1, 40, 273, 330, 248, 330, 248, 330, 274, - -1, 41, 273, 330, 248, 330, 248, 330, 274, -1, - 42, 273, 351, 274, -1, 43, 273, 330, 248, 330, - 248, 330, 248, 330, 248, 330, 248, 330, 274, -1, - 197, 273, 346, 274, -1, 32, 273, 346, 274, -1, - 330, -1, 346, -1, 347, 248, 330, -1, 347, 248, - 346, -1, 243, 330, 248, 330, 248, 330, 248, 330, - 244, -1, 243, 330, 248, 330, 248, 330, 244, -1, - 361, -1, 4, 245, 174, 245, 4, -1, 243, 350, - 244, -1, 361, 241, 330, 242, 245, 175, -1, 348, - -1, 350, 248, 348, -1, 352, -1, 361, -1, 361, - 241, 330, 242, -1, 361, 239, 330, 240, -1, 361, - 245, 338, -1, 361, 9, 361, 245, 338, -1, 361, - 245, 338, 239, 330, 240, -1, 361, 9, 361, 245, - 338, 239, 330, 240, -1, 361, 241, 330, 242, 245, - 4, -1, 126, 91, 243, 330, 244, -1, 126, 94, - 243, 330, 244, -1, 126, 97, 243, 330, 244, -1, - 126, 99, 243, 330, 244, -1, 5, -1, 210, 241, - 361, 242, -1, 67, -1, 208, -1, 72, -1, 74, - -1, 194, 239, 351, 240, -1, 193, 239, 351, 248, - 351, 240, -1, 195, 273, 351, 274, -1, 195, 273, - 351, 248, 351, 274, -1, 204, 239, 337, 334, 240, - -1, 204, 239, 337, 245, 338, 334, 240, -1, 48, - 273, 358, 274, -1, 49, 239, 351, 240, -1, 50, - 239, 351, 240, -1, 51, 239, 351, 248, 351, 248, - 351, 240, -1, 46, 273, 358, 274, -1, 60, 273, - 351, 274, -1, 61, 273, 351, 274, -1, 62, 273, - 351, 274, -1, 59, 273, 330, 248, 351, 248, 351, - 274, -1, 54, 273, 351, 248, 330, 248, 330, 274, - -1, 54, 273, 351, 248, 330, 274, -1, 47, 273, - 351, 274, -1, 47, 273, 351, 248, 347, 274, -1, - 68, 273, 351, 274, -1, 69, -1, 53, 273, 351, - 274, -1, 52, 273, 351, 274, -1, -1, 88, 273, - 352, 353, 287, 274, -1, 85, 273, 354, 274, -1, - 246, 330, -1, 361, 9, 246, 330, -1, 46, 273, - 357, 274, -1, 358, -1, 357, -1, 243, 358, 244, - -1, 351, -1, 359, -1, 358, 248, 351, -1, 358, - 248, 359, -1, 361, 239, 240, -1, 361, 245, 338, - 239, 240, -1, 361, 9, 361, 245, 338, 239, 240, - -1, 4, 247, 243, 330, 244, -1, 360, 247, 243, - 330, 244, -1, 211, 241, 351, 242, 247, 243, 330, - 244, -1, 4, -1, 360, -1, 211, 241, 351, 242, - -1 + 244, -1, 137, 243, 341, 248, 341, 248, 341, 248, + 330, 244, 243, 301, 244, -1, -1, 137, 341, 243, + 301, 311, 315, 244, -1, -1, 137, 243, 341, 248, + 341, 248, 330, 244, 243, 301, 312, 315, 244, -1, + -1, 137, 243, 341, 248, 341, 248, 341, 248, 330, + 244, 243, 301, 313, 315, 244, -1, -1, 137, 243, + 301, 314, 315, 244, -1, 137, 243, 301, 244, 129, + 109, 243, 330, 244, -1, 119, 344, -1, 124, 119, + 344, -1, 121, 243, 347, 244, 243, 347, 244, 243, + 330, 244, -1, 316, -1, 315, 316, -1, 154, 243, + 330, 244, 6, -1, 154, 243, 344, 248, 344, 244, + 6, -1, 155, 6, -1, 146, 6, -1, 146, 330, + 6, -1, 160, 6, -1, 160, 162, 6, -1, 161, + 6, -1, 161, 162, 6, -1, 156, 239, 330, 240, + 7, 344, 129, 330, 6, -1, 129, 4, 241, 330, + 242, 6, -1, 140, -1, 141, -1, 142, -1, 143, + -1, 144, -1, -1, 149, 6, -1, 132, 149, 6, + -1, 149, 330, 6, -1, 132, 149, 330, 6, -1, + 317, 243, 301, 318, 244, 243, 301, 318, 244, -1, + 106, 239, 351, 240, -1, 317, 239, 330, 240, 7, + 243, 301, 318, 244, 243, 301, 318, 244, 6, -1, + -1, 129, 4, 330, -1, -1, 4, -1, -1, 7, + 344, -1, -1, 7, 330, -1, -1, 139, 344, -1, + 111, 112, 344, 7, 330, 6, -1, 125, 94, 345, + 7, 330, 321, 6, -1, 125, 97, 345, 323, 322, + 6, -1, 125, 99, 345, 323, 6, -1, 163, 345, + 6, -1, 152, 97, 243, 347, 244, 7, 330, 6, + -1, 146, 97, 345, 324, 6, -1, 146, 99, 345, + 6, -1, 147, 97, 345, 7, 330, 6, -1, 128, + 94, 243, 347, 244, 7, 243, 347, 244, 325, 6, + -1, 128, 97, 243, 347, 244, 7, 243, 347, 244, + 325, 6, -1, 128, 94, 243, 347, 244, 7, 243, + 347, 244, 133, 243, 341, 248, 341, 248, 330, 244, + 6, -1, 128, 97, 243, 347, 244, 7, 243, 347, + 244, 133, 243, 341, 248, 341, 248, 330, 244, 6, + -1, 128, 94, 243, 347, 244, 7, 243, 347, 244, + 134, 341, 6, -1, 128, 97, 243, 347, 244, 7, + 243, 347, 244, 134, 341, 6, -1, 128, 97, 330, + 243, 347, 244, 7, 330, 243, 347, 244, 6, -1, + 295, 243, 347, 244, 177, 295, 243, 330, 244, 6, + -1, 153, 297, 345, 6, -1, 117, 298, 345, 6, + -1, 131, 94, 344, 6, -1, 127, 296, 344, 6, + -1, 150, 6, -1, 150, 4, 6, -1, 150, 91, + 243, 347, 244, 6, -1, 198, -1, 199, -1, 200, + -1, 328, 6, -1, 328, 243, 344, 244, 6, -1, + 328, 243, 344, 248, 344, 244, 6, -1, 328, 239, + 344, 240, 243, 344, 248, 344, 244, 6, -1, 331, + -1, 239, 330, 240, -1, 228, 330, -1, 227, 330, + -1, 234, 330, -1, 330, 228, 330, -1, 330, 227, + 330, -1, 330, 229, 330, -1, 330, 230, 330, -1, + 330, 232, 330, -1, 330, 233, 330, -1, 330, 231, + 330, -1, 330, 238, 330, -1, 330, 221, 330, -1, + 330, 222, 330, -1, 330, 226, 330, -1, 330, 225, + 330, -1, 330, 220, 330, -1, 330, 219, 330, -1, + 330, 218, 330, -1, 330, 217, 330, -1, 330, 223, + 330, -1, 330, 224, 330, -1, 330, 216, 330, 8, + 330, -1, 16, 273, 330, 274, -1, 17, 273, 330, + 274, -1, 18, 273, 330, 274, -1, 19, 273, 330, + 274, -1, 20, 273, 330, 274, -1, 21, 273, 330, + 274, -1, 22, 273, 330, 274, -1, 23, 273, 330, + 274, -1, 24, 273, 330, 274, -1, 26, 273, 330, + 274, -1, 27, 273, 330, 248, 330, 274, -1, 28, + 273, 330, 274, -1, 29, 273, 330, 274, -1, 30, + 273, 330, 274, -1, 31, 273, 330, 274, -1, 32, + 273, 330, 274, -1, 33, 273, 330, 274, -1, 34, + 273, 330, 274, -1, 35, 273, 330, 274, -1, 36, + 273, 330, 248, 330, 274, -1, 37, 273, 330, 248, + 330, 274, -1, 38, 273, 330, 248, 330, 274, -1, + 25, 273, 330, 274, -1, 3, -1, 10, -1, 15, + -1, 11, -1, 12, -1, 205, -1, 206, -1, 207, + -1, 75, -1, 76, -1, 77, -1, -1, 83, 273, + 330, 332, 283, 274, -1, 335, -1, 196, 273, 351, + 274, -1, 196, 273, 351, 248, 330, 274, -1, 337, + -1, 361, 241, 330, 242, -1, 361, 239, 330, 240, + -1, 201, 239, 337, 240, -1, 201, 239, 337, 245, + 338, 240, -1, 203, 239, 337, 333, 240, -1, 203, + 239, 337, 245, 338, 333, 240, -1, 203, 239, 337, + 273, 330, 274, 333, 240, -1, 203, 239, 337, 245, + 338, 273, 330, 274, 333, 240, -1, 202, 239, 352, + 240, -1, 246, 361, 273, 274, -1, 246, 337, 245, + 338, 273, 274, -1, 86, 273, 361, 274, -1, 86, + 273, 274, -1, 361, 272, -1, 361, 241, 330, 242, + 272, -1, 361, 239, 330, 240, 272, -1, 361, 245, + 338, -1, 361, 9, 361, 245, 338, -1, 361, 245, + 338, 239, 330, 240, -1, 361, 9, 361, 245, 338, + 239, 330, 240, -1, 361, 245, 338, 241, 330, 242, + -1, 361, 9, 361, 245, 338, 241, 330, 242, -1, + 361, 241, 330, 242, 245, 4, -1, 361, 245, 4, + 272, -1, 361, 241, 330, 242, 245, 4, 272, -1, + 192, 239, 351, 248, 330, 240, -1, 56, 239, 344, + 248, 344, 240, -1, 57, 273, 351, 248, 351, 274, + -1, 55, 273, 351, 274, -1, 58, 273, 351, 248, + 351, 274, -1, 63, 239, 358, 240, -1, -1, 248, + 330, -1, -1, 248, 351, -1, -1, 84, 337, 340, + 336, 241, 284, 242, -1, 361, -1, 361, 9, 361, + -1, 4, -1, 87, -1, 87, 330, -1, -1, 239, + 339, 240, -1, 342, -1, 228, 341, -1, 227, 341, + -1, 341, 228, 341, -1, 341, 227, 341, -1, 243, + 330, 248, 330, 248, 330, 248, 330, 248, 330, 244, + -1, 243, 330, 248, 330, 248, 330, 248, 330, 244, + -1, 243, 330, 248, 330, 248, 330, 244, -1, 239, + 330, 248, 330, 248, 330, 240, -1, 344, -1, 343, + 248, 344, -1, 330, -1, 346, -1, 243, 244, -1, + 243, 347, 244, -1, 228, 243, 347, 244, -1, 330, + 229, 243, 347, 244, -1, 344, -1, 5, -1, 228, + 346, -1, 330, 229, 346, -1, 330, 8, 330, -1, + 330, 8, 330, 8, 330, -1, 91, 243, 330, 244, + -1, 295, 5, -1, 126, 295, 345, -1, 295, 177, + 64, 243, 330, 248, 330, 248, 330, 248, 330, 248, + 330, 248, 330, 244, -1, 299, -1, 310, -1, 319, + -1, 361, 273, 274, -1, 361, 245, 338, 273, 274, + -1, 361, 9, 361, 245, 338, 273, 274, -1, 39, + 241, 361, 242, -1, 39, 241, 346, 242, -1, 39, + 239, 346, 240, -1, 39, 273, 243, 347, 244, 274, + -1, 361, 273, 243, 347, 244, 274, -1, 40, 273, + 330, 248, 330, 248, 330, 274, -1, 41, 273, 330, + 248, 330, 248, 330, 274, -1, 42, 273, 351, 274, + -1, 43, 273, 330, 248, 330, 248, 330, 248, 330, + 248, 330, 248, 330, 274, -1, 197, 273, 346, 274, + -1, 32, 273, 346, 274, -1, 330, -1, 346, -1, + 347, 248, 330, -1, 347, 248, 346, -1, 243, 330, + 248, 330, 248, 330, 248, 330, 244, -1, 243, 330, + 248, 330, 248, 330, 244, -1, 361, -1, 4, 245, + 174, 245, 4, -1, 243, 350, 244, -1, 361, 241, + 330, 242, 245, 175, -1, 348, -1, 350, 248, 348, + -1, 352, -1, 361, -1, 361, 241, 330, 242, -1, + 361, 239, 330, 240, -1, 361, 245, 338, -1, 361, + 9, 361, 245, 338, -1, 361, 245, 338, 239, 330, + 240, -1, 361, 9, 361, 245, 338, 239, 330, 240, + -1, 361, 241, 330, 242, 245, 4, -1, 126, 91, + 243, 330, 244, -1, 126, 94, 243, 330, 244, -1, + 126, 97, 243, 330, 244, -1, 126, 99, 243, 330, + 244, -1, 5, -1, 210, 241, 361, 242, -1, 67, + -1, 208, -1, 72, -1, 74, -1, 194, 239, 351, + 240, -1, 193, 239, 351, 248, 351, 240, -1, 195, + 273, 351, 274, -1, 195, 273, 351, 248, 351, 274, + -1, 204, 239, 337, 334, 240, -1, 204, 239, 337, + 245, 338, 334, 240, -1, 48, 273, 358, 274, -1, + 49, 239, 351, 240, -1, 50, 239, 351, 240, -1, + 51, 239, 351, 248, 351, 248, 351, 240, -1, 46, + 273, 358, 274, -1, 60, 273, 351, 274, -1, 61, + 273, 351, 274, -1, 62, 273, 351, 274, -1, 59, + 273, 330, 248, 351, 248, 351, 274, -1, 54, 273, + 351, 248, 330, 248, 330, 274, -1, 54, 273, 351, + 248, 330, 274, -1, 47, 273, 351, 274, -1, 47, + 273, 351, 248, 347, 274, -1, 68, 273, 351, 274, + -1, 69, -1, 53, 273, 351, 274, -1, 52, 273, + 351, 274, -1, -1, 88, 273, 352, 353, 287, 274, + -1, 85, 273, 354, 274, -1, 246, 330, -1, 361, + 9, 246, 330, -1, 46, 273, 357, 274, -1, 358, + -1, 357, -1, 243, 358, 244, -1, 351, -1, 359, + -1, 358, 248, 351, -1, 358, 248, 359, -1, 361, + 239, 240, -1, 361, 245, 338, 239, 240, -1, 361, + 9, 361, 245, 338, 239, 240, -1, 4, 247, 243, + 330, 244, -1, 360, 247, 243, 330, 244, -1, 211, + 241, 351, 242, 247, 243, 330, 244, -1, 4, -1, + 360, -1, 211, 241, 351, 242, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1423,55 +1424,55 @@ static const yytype_uint16 yyrline[] = 754, 754, 755, 755, 761, 762, 763, 764, 769, 775, 837, 852, 881, 891, 896, 904, 909, 917, 926, 931, 943, 960, 966, 975, 993, 1011, 1020, 1032, 1037, 1045, - 1065, 1088, 1099, 1107, 1129, 1152, 1190, 1211, 1223, 1237, - 1237, 1239, 1241, 1250, 1260, 1259, 1280, 1279, 1297, 1307, - 1306, 1320, 1322, 1330, 1336, 1341, 1367, 1369, 1372, 1374, - 1378, 1379, 1383, 1395, 1408, 1423, 1432, 1445, 1447, 1451, - 1452, 1457, 1465, 1474, 1482, 1496, 1514, 1518, 1525, 1534, - 1537, 1544, 1547, 1554, 1578, 1594, 1610, 1647, 1687, 1703, - 1719, 1741, 1757, 1776, 1792, 1813, 1824, 1830, 1836, 1843, - 1874, 1889, 1911, 1934, 1957, 1980, 2004, 2028, 2052, 2078, - 2095, 2111, 2129, 2147, 2177, 2207, 2206, 2236, 2238, 2240, - 2242, 2244, 2252, 2254, 2256, 2258, 2266, 2268, 2270, 2278, - 2280, 2282, 2284, 2294, 2310, 2326, 2342, 2358, 2374, 2411, - 2433, 2457, 2458, 2463, 2466, 2470, 2491, 2510, 2531, 2546, - 2562, 2580, 2631, 2652, 2674, 2697, 2802, 2818, 2853, 2875, - 2897, 2903, 2918, 2946, 2958, 2967, 2974, 2986, 3005, 3011, - 3017, 3024, 3031, 3038, 3050, 3123, 3141, 3158, 3173, 3206, - 3218, 3242, 3246, 3251, 3258, 3263, 3273, 3278, 3284, 3292, - 3296, 3300, 3309, 3373, 3389, 3406, 3423, 3445, 3467, 3502, - 3510, 3518, 3524, 3531, 3538, 3558, 3584, 3596, 3607, 3625, - 3643, 3662, 3661, 3686, 3685, 3712, 3711, 3736, 3735, 3758, - 3774, 3791, 3808, 3831, 3834, 3840, 3852, 3872, 3876, 3880, - 3884, 3888, 3892, 3896, 3900, 3909, 3922, 3923, 3924, 3925, - 3926, 3930, 3931, 3932, 3933, 3934, 3937, 3960, 3979, 4001, - 4004, 4020, 4023, 4040, 4043, 4049, 4052, 4059, 4062, 4069, - 4086, 4127, 4171, 4210, 4235, 4244, 4274, 4300, 4326, 4358, - 4385, 4411, 4437, 4463, 4489, 4511, 4522, 4570, 4619, 4631, - 4642, 4646, 4656, 4667, 4668, 4669, 4673, 4679, 4691, 4709, - 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4752, - 4753, 4754, 4755, 4756, 4757, 4758, 4759, 4760, 4761, 4762, - 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, - 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, - 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4798, 4799, 4800, - 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4813, 4812, - 4820, 4822, 4827, 4832, 4836, 4841, 4846, 4850, 4854, 4858, - 4862, 4866, 4870, 4876, 4892, 4897, 4903, 4909, 4928, 4949, - 4982, 4986, 4991, 4995, 4999, 5003, 5008, 5013, 5023, 5033, - 5038, 5049, 5058, 5063, 5068, 5096, 5097, 5103, 5104, 5110, - 5109, 5132, 5134, 5139, 5148, 5150, 5156, 5157, 5162, 5166, - 5170, 5174, 5178, 5185, 5189, 5193, 5197, 5204, 5209, 5216, - 5221, 5225, 5230, 5234, 5242, 5253, 5257, 5269, 5277, 5285, - 5292, 5302, 5325, 5331, 5342, 5348, 5358, 5368, 5378, 5390, - 5394, 5399, 5411, 5415, 5419, 5423, 5441, 5449, 5457, 5486, - 5496, 5512, 5523, 5528, 5532, 5536, 5548, 5552, 5564, 5581, - 5591, 5595, 5610, 5615, 5622, 5626, 5631, 5645, 5661, 5665, - 5669, 5673, 5677, 5685, 5691, 5697, 5703, 5712, 5716, 5720, - 5728, 5734, 5740, 5744, 5752, 5760, 5767, 5776, 5780, 5784, - 5799, 5813, 5827, 5839, 5855, 5864, 5873, 5883, 5894, 5902, - 5910, 5914, 5933, 5940, 5946, 5953, 5961, 5960, 5970, 5994, - 5996, 6002, 6007, 6009, 6014, 6019, 6024, 6026, 6030, 6042, - 6056, 6060, 6067, 6075, 6083, 6094, 6096, 6099 + 1065, 1088, 1099, 1107, 1114, 1121, 1143, 1166, 1204, 1225, + 1237, 1251, 1251, 1253, 1255, 1264, 1274, 1273, 1294, 1293, + 1311, 1321, 1320, 1334, 1336, 1344, 1350, 1355, 1381, 1383, + 1386, 1388, 1392, 1393, 1397, 1409, 1422, 1437, 1446, 1459, + 1461, 1465, 1466, 1471, 1479, 1488, 1496, 1510, 1528, 1532, + 1539, 1548, 1551, 1558, 1561, 1568, 1592, 1608, 1624, 1661, + 1701, 1717, 1733, 1755, 1771, 1790, 1806, 1827, 1838, 1844, + 1850, 1857, 1888, 1903, 1925, 1948, 1971, 1994, 2018, 2042, + 2066, 2092, 2109, 2125, 2143, 2161, 2191, 2221, 2220, 2250, + 2252, 2254, 2256, 2258, 2266, 2268, 2270, 2272, 2280, 2282, + 2284, 2292, 2294, 2296, 2298, 2308, 2324, 2340, 2356, 2372, + 2388, 2425, 2447, 2471, 2472, 2477, 2480, 2484, 2505, 2524, + 2545, 2560, 2576, 2594, 2645, 2666, 2688, 2711, 2816, 2832, + 2867, 2889, 2911, 2917, 2932, 2960, 2972, 2981, 2988, 3000, + 3019, 3025, 3031, 3038, 3045, 3052, 3064, 3137, 3155, 3172, + 3187, 3220, 3232, 3256, 3260, 3265, 3272, 3277, 3287, 3292, + 3298, 3306, 3310, 3314, 3323, 3387, 3403, 3420, 3437, 3459, + 3481, 3516, 3524, 3532, 3538, 3545, 3552, 3572, 3598, 3610, + 3621, 3639, 3657, 3676, 3675, 3700, 3699, 3726, 3725, 3750, + 3749, 3772, 3788, 3805, 3822, 3845, 3848, 3854, 3866, 3886, + 3890, 3894, 3898, 3902, 3906, 3910, 3914, 3923, 3936, 3937, + 3938, 3939, 3940, 3944, 3945, 3946, 3947, 3948, 3951, 3975, + 3994, 4017, 4020, 4036, 4039, 4056, 4059, 4065, 4068, 4075, + 4078, 4085, 4102, 4143, 4187, 4226, 4251, 4260, 4290, 4316, + 4342, 4374, 4401, 4427, 4453, 4479, 4505, 4527, 4538, 4586, + 4635, 4647, 4658, 4662, 4672, 4683, 4684, 4685, 4689, 4695, + 4707, 4725, 4753, 4754, 4755, 4756, 4757, 4758, 4759, 4760, + 4761, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, + 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786, + 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, + 4797, 4798, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4814, + 4815, 4816, 4817, 4818, 4819, 4820, 4821, 4822, 4823, 4824, + 4829, 4828, 4836, 4838, 4843, 4848, 4852, 4857, 4862, 4866, + 4870, 4874, 4878, 4882, 4886, 4892, 4908, 4913, 4919, 4925, + 4944, 4965, 4998, 5002, 5007, 5011, 5015, 5019, 5024, 5029, + 5039, 5049, 5054, 5065, 5074, 5079, 5084, 5112, 5113, 5119, + 5120, 5126, 5125, 5148, 5150, 5155, 5164, 5166, 5172, 5173, + 5178, 5182, 5186, 5190, 5194, 5201, 5205, 5209, 5213, 5220, + 5225, 5232, 5237, 5241, 5246, 5250, 5258, 5269, 5273, 5285, + 5293, 5301, 5308, 5318, 5341, 5347, 5358, 5364, 5374, 5384, + 5394, 5406, 5410, 5415, 5427, 5431, 5435, 5439, 5457, 5465, + 5473, 5502, 5512, 5528, 5539, 5544, 5548, 5552, 5564, 5568, + 5580, 5597, 5607, 5611, 5626, 5631, 5638, 5642, 5647, 5661, + 5677, 5681, 5685, 5689, 5693, 5701, 5707, 5713, 5719, 5728, + 5732, 5736, 5744, 5750, 5756, 5760, 5768, 5776, 5783, 5792, + 5796, 5800, 5815, 5829, 5843, 5855, 5871, 5880, 5889, 5899, + 5910, 5918, 5926, 5930, 5949, 5956, 5962, 5969, 5977, 5976, + 5986, 6010, 6012, 6018, 6023, 6025, 6030, 6035, 6040, 6042, + 6046, 6058, 6072, 6076, 6083, 6091, 6099, 6110, 6112, 6115 }; #endif @@ -1498,7 +1499,7 @@ static const char *const yytname[] = "tDefineNumber", "tDefineStruct", "tNameStruct", "tDimNameSpace", "tAppend", "tDefineString", "tSetNumber", "tSetString", "tPoint", "tCircle", "tEllipse", "tLine", "tSphere", "tPolarSphere", "tSurface", - "tSpline", "tVolume", "tBlock", "tCylinder", "tCone", "tTorus", + "tSpline", "tVolume", "tBox", "tCylinder", "tCone", "tTorus", "tEllipsoid", "tQuadric", "tShapeFromFile", "tRectangle", "tDisk", "tWire", "tGeoEntity", "tCharacteristic", "tLength", "tParametric", "tElliptic", "tRefineMesh", "tAdaptMesh", "tRelocateMesh", "tSetFactory", @@ -1604,55 +1605,55 @@ static const yytype_uint16 yyr1[] = 273, 273, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, - 276, 277, 277, 277, 278, 277, 279, 277, 277, 280, - 277, 281, 281, 282, 282, 282, 283, 283, 284, 284, - 285, 285, 286, 286, 286, 286, 286, 287, 287, 288, - 288, 289, 289, 289, 289, 289, 290, 290, 290, 291, - 291, 292, 292, 293, 293, 293, 293, 293, 293, 293, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 276, 276, 277, 277, 277, 278, 277, 279, 277, + 277, 280, 277, 281, 281, 282, 282, 282, 283, 283, + 284, 284, 285, 285, 286, 286, 286, 286, 286, 287, + 287, 288, 288, 289, 289, 289, 289, 289, 290, 290, + 290, 291, 291, 292, 292, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 294, 293, 295, 295, 295, - 295, 295, 296, 296, 296, 296, 297, 297, 297, 298, - 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, - 299, 300, 300, 301, 301, 301, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 303, 303, - 303, 303, 303, 303, 303, 304, 304, 305, 306, 306, - 306, 306, 306, 306, 307, 307, 307, 307, 307, 307, + 293, 293, 293, 293, 293, 293, 293, 294, 293, 295, + 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, + 297, 298, 298, 298, 298, 299, 299, 299, 299, 299, + 299, 299, 299, 300, 300, 301, 301, 301, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 303, 303, 304, 304, 305, + 306, 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 308, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 310, 310, - 310, 311, 310, 312, 310, 313, 310, 314, 310, 310, - 310, 310, 310, 315, 315, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 317, 317, 317, 317, - 317, 318, 318, 318, 318, 318, 319, 319, 320, 321, - 321, 322, 322, 323, 323, 324, 324, 325, 325, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 307, 307, 307, 307, 307, 308, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 310, 310, 310, 311, 310, 312, 310, 313, 310, 314, + 310, 310, 310, 310, 310, 315, 315, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 317, 317, + 317, 317, 317, 318, 318, 318, 318, 318, 319, 319, + 320, 321, 321, 322, 322, 323, 323, 324, 324, 325, + 325, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - 327, 327, 327, 328, 328, 328, 329, 329, 329, 329, + 326, 326, 327, 327, 327, 328, 328, 328, 329, 329, + 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 332, 331, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 332, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 333, 333, 334, 334, 336, - 335, 337, 337, 338, 339, 339, 340, 340, 341, 341, - 341, 341, 341, 342, 342, 342, 342, 343, 343, 344, - 344, 344, 344, 344, 344, 345, 345, 346, 346, 346, + 331, 331, 331, 331, 331, 331, 331, 333, 333, 334, + 334, 336, 335, 337, 337, 338, 339, 339, 340, 340, + 341, 341, 341, 341, 341, 342, 342, 342, 342, 343, + 343, 344, 344, 344, 344, 344, 344, 345, 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 347, 347, 347, 347, 348, 348, 348, 348, - 349, 349, 350, 350, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 352, 352, 352, + 346, 346, 346, 346, 347, 347, 347, 347, 348, 348, + 348, 348, 349, 349, 350, 350, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 353, 352, 352, 354, - 354, 355, 356, 356, 357, 358, 358, 358, 358, 359, - 359, 359, 360, 360, 360, 361, 361, 361 + 352, 352, 352, 352, 352, 352, 352, 352, 353, 352, + 352, 354, 354, 355, 356, 356, 357, 358, 358, 358, + 358, 359, 359, 359, 360, 360, 360, 361, 361, 361 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1668,55 +1669,55 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 5, 5, 2, 7, 7, 4, 3, 6, 9, 7, 6, 7, 6, 4, 8, 9, 9, 6, 9, 6, 9, 5, 8, 8, 11, 6, - 9, 5, 7, 9, 9, 11, 7, 9, 9, 0, - 1, 0, 3, 5, 0, 9, 0, 11, 5, 0, - 9, 0, 3, 3, 5, 5, 0, 2, 0, 1, - 1, 3, 2, 1, 4, 2, 2, 0, 2, 1, - 3, 2, 2, 2, 2, 2, 1, 1, 3, 0, - 5, 0, 2, 7, 7, 7, 8, 8, 7, 7, - 11, 7, 8, 8, 8, 9, 3, 4, 10, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, - 7, 7, 8, 8, 12, 0, 9, 1, 1, 1, - 1, 4, 1, 1, 1, 4, 1, 1, 4, 1, - 1, 1, 4, 5, 11, 5, 9, 9, 4, 9, - 9, 1, 1, 0, 2, 6, 8, 10, 14, 16, - 12, 14, 14, 14, 14, 8, 8, 6, 4, 5, - 6, 6, 3, 4, 3, 5, 6, 5, 3, 3, - 4, 5, 4, 5, 3, 5, 7, 7, 3, 7, - 3, 2, 2, 2, 2, 2, 15, 2, 2, 2, - 2, 2, 16, 11, 6, 8, 8, 10, 1, 2, - 2, 1, 3, 3, 4, 4, 1, 1, 5, 11, - 13, 0, 7, 0, 13, 0, 15, 0, 6, 9, - 2, 3, 10, 1, 2, 5, 7, 2, 2, 3, - 2, 3, 2, 3, 9, 6, 1, 1, 1, 1, - 1, 0, 2, 3, 3, 4, 9, 4, 14, 0, - 3, 0, 1, 0, 2, 0, 2, 0, 2, 6, - 7, 6, 5, 3, 8, 5, 4, 6, 11, 11, - 18, 18, 12, 12, 12, 10, 4, 4, 4, 4, - 2, 3, 6, 1, 1, 1, 2, 5, 7, 10, - 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, + 9, 5, 7, 7, 7, 9, 9, 11, 7, 9, + 9, 0, 1, 0, 3, 5, 0, 9, 0, 11, + 5, 0, 9, 0, 3, 3, 5, 5, 0, 2, + 0, 1, 1, 3, 2, 1, 4, 2, 2, 0, + 2, 1, 3, 2, 2, 2, 2, 2, 1, 1, + 3, 0, 5, 0, 2, 7, 7, 7, 8, 8, + 7, 7, 11, 7, 8, 8, 8, 9, 3, 4, + 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 8, 7, 7, 8, 8, 12, 0, 9, 1, + 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, + 4, 1, 1, 1, 4, 5, 11, 5, 9, 9, + 4, 9, 9, 1, 1, 0, 2, 6, 8, 10, + 14, 16, 12, 14, 14, 14, 14, 8, 8, 6, + 4, 5, 6, 6, 3, 4, 3, 5, 6, 5, + 3, 3, 4, 5, 4, 5, 3, 5, 7, 7, + 3, 7, 3, 2, 2, 2, 2, 2, 15, 2, + 2, 2, 2, 2, 16, 11, 6, 8, 8, 10, + 1, 2, 2, 1, 3, 3, 4, 4, 1, 1, + 5, 11, 13, 0, 7, 0, 13, 0, 15, 0, + 6, 9, 2, 3, 10, 1, 2, 5, 7, 2, + 2, 3, 2, 3, 2, 3, 9, 6, 1, 1, + 1, 1, 1, 0, 2, 3, 3, 4, 9, 4, + 14, 0, 3, 0, 1, 0, 2, 0, 2, 0, + 2, 6, 7, 6, 5, 3, 8, 5, 4, 6, + 11, 11, 18, 18, 12, 12, 12, 10, 4, 4, + 4, 4, 2, 3, 6, 1, 1, 1, 2, 5, + 7, 10, 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 6, 6, 6, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, - 1, 4, 6, 1, 4, 4, 4, 6, 5, 7, - 8, 10, 4, 4, 6, 4, 3, 2, 5, 5, - 3, 5, 6, 8, 6, 8, 6, 4, 7, 6, - 6, 6, 4, 6, 4, 0, 2, 0, 2, 0, - 7, 1, 3, 1, 1, 2, 0, 3, 1, 2, - 2, 3, 3, 11, 9, 7, 7, 1, 3, 1, - 1, 2, 3, 4, 5, 1, 1, 2, 3, 3, - 5, 4, 2, 3, 16, 1, 1, 1, 3, 5, - 7, 4, 4, 4, 6, 6, 8, 8, 4, 14, - 4, 4, 1, 1, 3, 3, 9, 7, 1, 5, - 3, 6, 1, 3, 1, 1, 4, 4, 3, 5, - 6, 8, 6, 5, 5, 5, 5, 1, 4, 1, - 1, 1, 1, 4, 6, 4, 6, 5, 7, 4, - 4, 4, 8, 4, 4, 4, 4, 8, 8, 6, - 4, 6, 4, 1, 4, 4, 0, 6, 4, 2, - 4, 4, 1, 1, 3, 1, 1, 3, 3, 3, - 5, 7, 5, 5, 8, 1, 1, 4 + 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, + 4, 4, 4, 4, 4, 6, 6, 6, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 6, 1, 4, 6, 1, 4, 4, 4, 6, + 5, 7, 8, 10, 4, 4, 6, 4, 3, 2, + 5, 5, 3, 5, 6, 8, 6, 8, 6, 4, + 7, 6, 6, 6, 4, 6, 4, 0, 2, 0, + 2, 0, 7, 1, 3, 1, 1, 2, 0, 3, + 1, 2, 2, 3, 3, 11, 9, 7, 7, 1, + 3, 1, 1, 2, 3, 4, 5, 1, 1, 2, + 3, 3, 5, 4, 2, 3, 16, 1, 1, 1, + 3, 5, 7, 4, 4, 4, 6, 6, 8, 8, + 4, 14, 4, 4, 1, 1, 3, 3, 9, 7, + 1, 5, 3, 6, 1, 3, 1, 1, 4, 4, + 3, 5, 6, 8, 6, 5, 5, 5, 5, 1, + 4, 1, 1, 1, 1, 4, 6, 4, 6, 5, + 7, 4, 4, 4, 8, 4, 4, 4, 4, 8, + 8, 6, 4, 6, 4, 1, 4, 4, 0, 6, + 4, 2, 4, 4, 1, 1, 3, 1, 1, 3, + 3, 3, 5, 7, 5, 5, 8, 1, 1, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1724,1058 +1725,996 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 0, 2, 3, 1, 585, 0, 0, 0, + 0, 0, 0, 2, 3, 1, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 0, 0, 188, 0, 0, - 189, 0, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 190, 0, 0, + 191, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 306, 307, 308, 309, - 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 308, 309, 310, 311, + 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 268, 0, 0, 276, 277, 0, 0, 0, 271, 0, - 0, 0, 0, 0, 353, 354, 355, 0, 0, 5, + 270, 0, 0, 278, 279, 0, 0, 0, 273, 0, + 0, 0, 0, 0, 355, 356, 357, 0, 0, 5, 6, 7, 8, 10, 0, 11, 24, 12, 13, 14, 15, 23, 22, 21, 16, 0, 17, 18, 19, 20, - 0, 25, 0, 586, 0, 213, 0, 0, 0, 0, - 0, 255, 0, 257, 258, 253, 254, 0, 259, 260, - 111, 121, 585, 466, 461, 70, 71, 0, 0, 0, + 0, 25, 0, 588, 0, 215, 0, 0, 0, 0, + 0, 257, 0, 259, 260, 255, 256, 0, 261, 262, + 113, 123, 587, 468, 463, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 199, 200, 201, 0, 0, 0, 407, - 408, 410, 411, 409, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 201, 202, 203, 0, 0, 0, 409, + 410, 412, 413, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 415, 416, 417, - 0, 0, 187, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 412, 413, 414, 0, 0, - 0, 0, 0, 0, 0, 495, 496, 0, 497, 479, - 360, 420, 423, 290, 480, 461, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 185, 192, 193, 194, 0, + 0, 0, 0, 0, 0, 0, 0, 417, 418, 419, + 0, 0, 189, 190, 191, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 414, 415, 416, 0, 0, + 0, 0, 0, 0, 0, 497, 498, 0, 499, 481, + 362, 422, 425, 292, 482, 463, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 187, 194, 195, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 468, 0, 0, 213, 0, + 0, 0, 0, 0, 0, 470, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 585, 0, 0, 213, 0, 0, 350, - 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, - 486, 0, 485, 0, 0, 0, 0, 0, 585, 0, - 0, 518, 0, 0, 0, 0, 251, 252, 0, 537, + 0, 0, 0, 587, 0, 0, 215, 0, 0, 352, + 0, 0, 0, 198, 199, 0, 0, 0, 0, 0, + 488, 0, 487, 0, 0, 0, 0, 0, 587, 0, + 0, 520, 0, 0, 0, 0, 253, 254, 0, 539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 539, 0, 563, 541, 542, 0, 0, - 0, 0, 0, 0, 540, 0, 0, 0, 0, 269, - 270, 0, 213, 0, 213, 0, 0, 0, 461, 0, - 0, 0, 213, 356, 0, 0, 76, 0, 63, 0, + 0, 0, 0, 541, 0, 565, 543, 544, 0, 0, + 0, 0, 0, 0, 542, 0, 0, 0, 0, 271, + 272, 0, 215, 0, 215, 0, 0, 0, 463, 0, + 0, 0, 215, 358, 0, 0, 76, 0, 63, 0, 0, 67, 66, 65, 64, 69, 68, 70, 71, 0, - 0, 0, 0, 0, 0, 524, 461, 0, 212, 0, - 211, 0, 166, 0, 0, 524, 525, 0, 0, 575, - 0, 576, 525, 109, 109, 0, 459, 0, 0, 0, + 0, 0, 0, 0, 0, 526, 463, 0, 214, 0, + 213, 0, 168, 0, 0, 526, 527, 0, 0, 577, + 0, 578, 527, 111, 111, 0, 461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 512, 513, 0, 0, 0, 0, 0, + 0, 0, 0, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 363, 0, 362, 487, 364, - 0, 481, 0, 0, 461, 492, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 365, 0, 364, 489, 366, + 0, 483, 0, 0, 463, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 71, - 0, 437, 0, 0, 0, 0, 0, 0, 291, 0, - 323, 323, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 0, 213, 213, 0, 470, 469, 0, 0, - 0, 0, 213, 213, 0, 0, 0, 0, 287, 0, - 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 325, 0, 0, 0, 0, 0, 234, 0, 0, - 232, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 250, 0, 0, 0, 0, 0, 213, 0, + 0, 439, 0, 0, 0, 0, 0, 0, 293, 0, + 325, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 215, 0, 215, 215, 0, 472, 471, 0, 0, + 0, 0, 215, 215, 0, 0, 0, 0, 289, 0, + 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 0, 0, 0, 0, 0, 236, 0, 0, + 234, 353, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 335, 252, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 273, 272, 0, 238, 0, - 239, 0, 0, 362, 0, 213, 0, 0, 0, 0, - 0, 0, 0, 311, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 275, 274, 0, 240, 0, + 241, 0, 0, 364, 0, 215, 0, 0, 0, 0, + 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 72, 73, 0, 0, 248, 38, 244, 0, 0, 0, - 0, 0, 208, 0, 0, 0, 214, 0, 0, 167, + 72, 73, 0, 0, 250, 38, 246, 0, 0, 0, + 0, 0, 210, 0, 0, 0, 216, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 464, - 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 112, 0, 0, 0, 466, + 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 317, 0, 0, 0, 191, 0, 0, 0, 0, 0, - 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 193, 0, 0, 0, 0, 0, + 0, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 461, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 418, 436, 0, 0, 493, 0, 0, 0, 0, - 0, 455, 0, 361, 482, 0, 0, 0, 489, 0, - 380, 379, 378, 377, 373, 374, 381, 382, 376, 375, - 366, 365, 0, 367, 488, 368, 371, 369, 370, 372, - 462, 0, 0, 463, 440, 0, 498, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 0, 0, 349, - 0, 0, 0, 0, 348, 0, 213, 0, 0, 0, - 0, 0, 472, 471, 0, 0, 0, 0, 0, 0, - 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 233, 0, 0, - 228, 0, 0, 0, 0, 346, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 274, 275, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 438, 0, 0, 495, 0, 0, 0, 0, + 0, 457, 0, 363, 484, 0, 0, 0, 491, 0, + 382, 381, 380, 379, 375, 376, 383, 384, 378, 377, + 368, 367, 0, 369, 490, 370, 373, 371, 372, 374, + 464, 0, 0, 465, 442, 0, 500, 0, 0, 0, + 0, 0, 0, 0, 323, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 350, 0, 215, 0, 0, 0, + 0, 0, 474, 473, 0, 0, 0, 0, 0, 0, + 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 338, 0, 0, 235, 0, 0, + 230, 0, 0, 0, 0, 348, 0, 0, 0, 363, + 0, 0, 0, 0, 0, 0, 0, 0, 276, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, - 0, 0, 457, 0, 0, 240, 242, 0, 367, 0, - 462, 440, 587, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 0, 0, 0, 0, 0, 361, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 568, 0, + 0, 0, 459, 0, 0, 242, 244, 0, 369, 0, + 464, 442, 589, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 0, 0, 0, 363, 0, 63, 0, 0, 0, 0, 79, 0, 63, 64, 0, - 0, 462, 0, 0, 440, 0, 0, 0, 0, 0, - 582, 28, 26, 27, 0, 0, 0, 0, 0, 463, - 528, 29, 0, 0, 245, 577, 578, 0, 579, 528, - 74, 112, 75, 122, 465, 467, 128, 0, 0, 0, + 0, 464, 0, 0, 442, 0, 0, 0, 0, 0, + 584, 28, 26, 27, 0, 0, 0, 0, 0, 465, + 530, 29, 0, 0, 247, 579, 580, 0, 581, 530, + 74, 114, 75, 124, 467, 469, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 514, 515, 202, 9, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 406, 393, 0, 395, 396, 397, 398, - 399, 511, 400, 401, 402, 0, 0, 0, 503, 502, - 501, 0, 0, 0, 508, 0, 452, 0, 0, 0, - 454, 126, 435, 491, 0, 0, 421, 510, 426, 0, - 432, 0, 0, 0, 0, 483, 0, 0, 433, 0, - 0, 0, 0, 0, 425, 424, 447, 70, 71, 0, - 0, 0, 0, 0, 0, 361, 319, 324, 322, 0, - 332, 0, 146, 147, 195, 361, 0, 0, 0, 0, - 229, 0, 241, 243, 0, 0, 0, 203, 205, 0, + 516, 517, 204, 9, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 408, 395, 0, 397, 398, 399, 400, + 401, 513, 402, 403, 404, 0, 0, 0, 505, 504, + 503, 0, 0, 0, 510, 0, 454, 0, 0, 0, + 456, 128, 437, 493, 0, 0, 423, 512, 428, 0, + 434, 0, 0, 0, 0, 485, 0, 0, 435, 0, + 0, 0, 0, 0, 427, 426, 449, 70, 71, 0, + 0, 0, 0, 0, 0, 363, 321, 326, 324, 0, + 334, 0, 148, 149, 197, 363, 0, 0, 0, 0, + 231, 0, 243, 245, 0, 0, 0, 205, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 293, 0, 278, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 335, 0, 0, 0, 0, - 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, - 0, 0, 235, 0, 0, 0, 0, 553, 0, 560, - 549, 550, 551, 0, 565, 564, 0, 0, 554, 555, - 556, 562, 569, 568, 0, 137, 0, 543, 0, 545, - 0, 0, 0, 538, 0, 237, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 357, 0, 583, + 295, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 337, 0, 0, 0, 0, + 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, + 0, 0, 237, 0, 0, 0, 0, 555, 0, 562, + 551, 552, 553, 0, 567, 566, 0, 0, 556, 557, + 558, 564, 571, 570, 0, 139, 0, 545, 0, 547, + 0, 0, 0, 540, 0, 239, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 359, 0, 585, 0, 0, 0, 0, 101, 63, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 61, 0, 39, 40, - 41, 42, 43, 0, 425, 424, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 527, 526, 0, 0, 0, - 0, 0, 0, 0, 133, 0, 129, 130, 0, 0, - 0, 151, 151, 0, 0, 0, 0, 0, 149, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 41, 42, 43, 0, 427, 426, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 529, 528, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 131, 132, 0, 0, + 0, 153, 153, 0, 0, 0, 0, 0, 151, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 455, 456, 0, - 428, 0, 0, 0, 490, 383, 484, 441, 439, 0, - 438, 0, 0, 499, 0, 0, 0, 0, 0, 0, - 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 236, 0, 0, 0, 0, 0, 0, 0, 298, 0, - 0, 297, 0, 300, 0, 302, 0, 288, 294, 0, - 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, - 0, 337, 0, 231, 230, 352, 0, 0, 35, 36, - 0, 0, 0, 0, 519, 0, 0, 0, 264, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 0, + 430, 0, 0, 0, 492, 385, 486, 443, 441, 0, + 440, 0, 0, 501, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, + 238, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 0, 299, 0, 302, 0, 304, 0, 290, 296, 0, + 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, + 0, 339, 0, 233, 232, 354, 0, 0, 35, 36, + 0, 0, 0, 0, 521, 0, 0, 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 457, 458, 547, 0, 441, 0, 0, 213, 313, 0, - 314, 213, 0, 0, 533, 534, 535, 536, 0, 86, - 0, 0, 0, 0, 84, 91, 93, 0, 522, 0, - 99, 0, 0, 0, 0, 81, 0, 0, 0, 0, - 0, 34, 441, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 31, 0, 529, 0, 0, 32, 0, 529, - 580, 0, 113, 118, 0, 0, 0, 132, 135, 136, - 460, 0, 77, 78, 153, 0, 0, 0, 0, 154, - 169, 170, 0, 0, 0, 155, 180, 171, 175, 176, - 172, 173, 174, 161, 0, 0, 394, 403, 404, 405, - 504, 0, 0, 0, 450, 451, 453, 127, 419, 449, - 422, 427, 0, 0, 455, 181, 434, 0, 70, 71, - 0, 446, 442, 444, 505, 177, 0, 0, 149, 0, - 0, 330, 0, 148, 0, 0, 0, 0, 249, 0, - 0, 0, 0, 213, 213, 0, 0, 299, 479, 0, - 0, 301, 303, 0, 0, 282, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, - 0, 158, 159, 0, 0, 0, 0, 102, 106, 0, - 561, 0, 0, 559, 0, 570, 0, 0, 138, 139, - 567, 544, 546, 0, 0, 0, 0, 0, 0, 311, - 315, 311, 0, 358, 85, 63, 0, 0, 0, 0, - 83, 0, 520, 0, 0, 0, 0, 0, 0, 573, - 572, 0, 0, 0, 0, 0, 477, 0, 0, 446, - 246, 442, 247, 0, 0, 215, 0, 0, 532, 530, - 0, 0, 114, 119, 0, 0, 0, 512, 513, 131, - 152, 156, 157, 162, 179, 0, 164, 0, 0, 0, - 0, 0, 0, 429, 0, 0, 0, 0, 500, 448, - 0, 163, 0, 182, 320, 0, 0, 183, 0, 0, - 0, 0, 0, 0, 476, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 226, 225, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 0, 0, 334, - 37, 0, 517, 0, 0, 266, 265, 0, 0, 0, - 0, 0, 0, 141, 142, 145, 144, 143, 0, 548, - 0, 584, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 97, 523, 0, 0, 0, 88, 0, 0, 0, - 44, 0, 0, 0, 0, 0, 46, 0, 33, 0, - 0, 581, 126, 137, 0, 0, 134, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 455, 430, 0, 443, - 445, 0, 165, 186, 0, 327, 327, 0, 107, 108, - 213, 0, 206, 207, 289, 0, 295, 0, 0, 213, - 0, 0, 0, 0, 0, 0, 0, 0, 210, 209, - 0, 0, 0, 0, 103, 104, 552, 558, 557, 140, - 0, 0, 0, 316, 0, 92, 94, 0, 100, 0, - 82, 574, 89, 90, 49, 0, 0, 0, 0, 478, - 0, 0, 443, 531, 0, 0, 0, 116, 571, 0, - 123, 0, 0, 168, 0, 0, 0, 0, 292, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 474, - 0, 305, 0, 0, 283, 0, 217, 0, 0, 0, - 0, 0, 0, 0, 516, 267, 0, 0, 345, 213, - 359, 0, 521, 0, 45, 0, 0, 0, 62, 47, - 0, 115, 120, 126, 0, 0, 150, 0, 0, 431, - 0, 0, 0, 0, 328, 338, 0, 0, 339, 0, - 204, 0, 296, 0, 279, 0, 213, 0, 0, 0, - 0, 0, 0, 160, 105, 263, 311, 98, 0, 0, - 0, 0, 0, 0, 124, 125, 0, 0, 0, 184, - 0, 342, 0, 343, 344, 473, 0, 0, 285, 220, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, - 59, 0, 0, 117, 0, 0, 0, 0, 0, 304, - 284, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 459, 460, 549, 0, 443, 0, 0, 215, + 315, 0, 316, 215, 0, 0, 535, 536, 537, 538, + 0, 86, 0, 0, 0, 0, 84, 91, 93, 0, + 524, 0, 99, 0, 0, 0, 0, 81, 0, 0, + 0, 0, 0, 34, 443, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 31, 0, 531, 0, 0, 32, + 0, 531, 582, 0, 115, 120, 0, 0, 0, 134, + 137, 138, 462, 0, 77, 78, 155, 0, 0, 0, + 0, 156, 171, 172, 0, 0, 0, 157, 182, 173, + 177, 178, 174, 175, 176, 163, 0, 0, 396, 405, + 406, 407, 506, 0, 0, 0, 452, 453, 455, 129, + 421, 451, 424, 429, 0, 0, 457, 183, 436, 0, + 70, 71, 0, 448, 444, 446, 507, 179, 0, 0, + 151, 0, 0, 332, 0, 150, 0, 0, 0, 0, + 251, 0, 0, 0, 0, 215, 215, 0, 0, 301, + 481, 0, 0, 303, 305, 0, 0, 284, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, + 0, 0, 0, 160, 161, 0, 0, 0, 0, 102, + 103, 104, 108, 0, 563, 0, 0, 561, 0, 572, + 0, 0, 140, 141, 569, 546, 548, 0, 0, 0, + 0, 0, 0, 313, 317, 313, 0, 360, 85, 63, + 0, 0, 0, 0, 83, 0, 522, 0, 0, 0, + 0, 0, 0, 575, 574, 0, 0, 0, 0, 0, + 479, 0, 0, 448, 248, 444, 249, 0, 0, 217, + 0, 0, 534, 532, 0, 0, 116, 121, 0, 0, + 0, 514, 515, 133, 154, 158, 159, 164, 181, 0, + 166, 0, 0, 0, 0, 0, 0, 431, 0, 0, + 0, 0, 502, 450, 0, 165, 0, 184, 322, 0, + 0, 185, 0, 0, 0, 0, 0, 0, 478, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 221, 222, 223, 224, 0, 218, 318, 50, 0, - 57, 0, 256, 0, 509, 0, 0, 0, 286, 0, - 0, 51, 0, 0, 262, 0, 0, 0, 219, 0, - 0, 0, 0, 494, 0, 0, 54, 52, 0, 55, - 0, 340, 341, 0, 0, 60, 58, 56 + 228, 227, 0, 0, 0, 0, 0, 0, 0, 0, + 218, 0, 0, 336, 37, 0, 519, 0, 0, 268, + 267, 0, 0, 0, 0, 0, 0, 143, 144, 147, + 146, 145, 0, 550, 0, 586, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 97, 525, 0, 0, 0, + 88, 0, 0, 0, 44, 0, 0, 0, 0, 0, + 46, 0, 33, 0, 0, 583, 128, 139, 0, 0, + 136, 0, 0, 0, 0, 0, 0, 508, 509, 0, + 457, 432, 0, 445, 447, 0, 167, 188, 0, 329, + 329, 0, 109, 110, 215, 0, 208, 209, 291, 0, + 297, 0, 0, 215, 0, 0, 0, 0, 0, 0, + 0, 0, 212, 211, 0, 0, 0, 0, 105, 106, + 554, 560, 559, 142, 0, 0, 0, 318, 0, 92, + 94, 0, 100, 0, 82, 576, 89, 90, 49, 0, + 0, 0, 0, 480, 0, 0, 445, 533, 0, 0, + 0, 118, 573, 0, 125, 0, 0, 170, 0, 0, + 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 476, 0, 307, 0, 0, 285, 0, + 219, 0, 0, 0, 0, 0, 0, 0, 518, 269, + 0, 0, 347, 215, 361, 0, 523, 0, 45, 0, + 0, 0, 62, 47, 0, 117, 122, 128, 0, 0, + 152, 0, 0, 433, 0, 0, 0, 0, 330, 340, + 0, 0, 341, 0, 206, 0, 298, 0, 281, 0, + 215, 0, 0, 0, 0, 0, 0, 162, 107, 265, + 313, 98, 0, 0, 0, 0, 0, 0, 126, 127, + 0, 0, 0, 186, 0, 344, 0, 345, 346, 475, + 0, 0, 287, 222, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 59, 0, 0, 119, 0, 0, + 0, 0, 0, 306, 286, 282, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 223, 224, 225, 226, 0, + 220, 320, 50, 0, 57, 0, 258, 0, 511, 0, + 0, 0, 288, 0, 0, 51, 0, 0, 264, 0, + 0, 0, 221, 0, 0, 0, 0, 496, 0, 0, + 54, 52, 0, 55, 0, 342, 343, 0, 0, 60, + 58, 56 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 109, 994, 110, 111, 980, 1769, 1775, - 1258, 1456, 1913, 2040, 1259, 2011, 2058, 1260, 2042, 1261, - 1262, 1460, 410, 551, 552, 1060, 112, 726, 433, 1782, - 1923, 1783, 434, 1666, 1323, 1285, 1286, 1287, 1417, 1608, - 1609, 1121, 1504, 1496, 706, 562, 254, 280, 326, 187, + -1, 2, 3, 109, 994, 110, 111, 980, 1773, 1779, + 1258, 1458, 1917, 2044, 1259, 2015, 2062, 1260, 2046, 1261, + 1262, 1462, 410, 551, 552, 1060, 112, 726, 433, 1786, + 1927, 1787, 434, 1670, 1323, 1285, 1286, 1287, 1419, 1612, + 1613, 1121, 1506, 1498, 706, 562, 254, 280, 326, 187, 255, 419, 420, 116, 117, 118, 119, 120, 121, 122, - 123, 256, 1153, 1945, 2002, 879, 1149, 1150, 257, 957, - 258, 127, 1351, 1119, 854, 893, 1883, 128, 129, 130, + 123, 256, 1153, 1949, 2006, 879, 1149, 1150, 257, 957, + 258, 127, 1351, 1119, 854, 893, 1887, 128, 129, 130, 131, 259, 260, 1081, 1094, 1212, 261, 731, 262, 844, - 730, 436, 577, 295, 1645, 332, 333, 264, 522, 340, - 1246, 1449, 429, 425, 1205, 936, 1489, 1638, 1639, 921, + 730, 436, 577, 295, 1649, 332, 333, 264, 522, 340, + 1246, 1451, 429, 425, 1205, 936, 1491, 1642, 1643, 921, 431, 133, 388 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1749 +#define YYPACT_NINF -1754 static const yytype_int16 yypact[] = { - 9817, 94, 160, 9968, -1749, -1749, -204, 153, 95, -20, - 21, 19, 282, 315, 321, 324, 97, 359, 362, 138, - 173, 23, 111, 111, 178, 232, 245, 58, 253, 307, - 63, 312, 333, 354, 365, 401, 407, 420, 432, 488, - 500, 339, 540, 579, 707, 524, -34, 533, 5325, 589, - 548, 661, -48, 341, 286, 502, 218, 594, 704, -68, - 603, -173, -173, 614, 205, 57, -1749, -1749, -1749, -1749, - -1749, 595, 394, 765, 779, 20, 78, 792, 791, 115, - 885, 886, 888, 3791, 907, 674, 682, 684, 28, 71, - -1749, 685, 686, -1749, -1749, 910, 916, 688, -1749, 10166, - 691, 10196, 32, 46, -1749, -1749, -1749, 9586, 690, -1749, - -1749, -1749, -1749, -1749, 692, -1749, -1749, -1749, -1749, -1749, - -1749, -1749, -1749, -1749, -1749, -17, -1749, -1749, -1749, -1749, - 4, -1749, 927, 687, 4612, 414, 693, 931, 9586, 10136, - 10136, -1749, 9586, -1749, -1749, -1749, -1749, 10136, -1749, -1749, - -1749, -1749, 694, 699, 930, -1749, -1749, 10226, 23, 9586, - 9586, 9586, 701, 9586, 9586, 9586, 703, 9586, 9586, 9586, - 9586, 9586, 9586, 9586, 10136, 9586, 9586, 9586, 9586, 5562, - 705, -1749, 7458, -1749, -1749, -1749, 700, 3791, 10136, -1749, - -1749, -1749, -1749, -1749, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 624, 111, 111, - 111, 111, 111, 706, 111, 111, 708, -1749, -1749, -1749, - 111, 111, 710, -1749, -1749, -1749, 5562, 827, 286, 711, - 111, 111, 715, 716, 717, -1749, -1749, -1749, 9586, 5799, - 9586, 9586, 6036, 23, 33, -1749, -1749, 718, -1749, 3411, - -1749, -1749, -1749, -1749, -1749, 98, 9586, 7458, 719, 720, - 6273, 3791, 3791, 3791, -1749, -1749, -1749, -1749, -1749, 721, - 6510, 722, 8331, 945, 5562, 725, 28, 726, 727, -173, - -173, -173, 9586, 9586, -100, -1749, 258, -173, 8408, 260, - 2, 723, 724, 733, 736, 738, 739, 740, 9586, 3791, - 3791, 3791, 741, 18, 954, 742, -1749, 975, 976, -1749, - 744, 745, 746, -1749, -1749, 747, 3791, 743, 753, 757, - -1749, 9586, -1749, 979, 1003, 9586, 9586, 9586, 474, 9586, - 767, -1749, 836, 9586, 9586, 9586, -1749, -1749, 9586, -1749, - 111, 111, 111, 775, 776, 777, 111, 111, 111, 111, - 111, 111, 111, -1749, 111, -1749, -1749, -1749, 111, 111, - 780, 784, 111, 795, -1749, 794, 1032, 1033, 797, -1749, - -1749, 1035, -1749, 1036, -1749, 111, 9586, 12406, 108, 10136, - 7458, 9586, -1749, -1749, 5562, 5562, -1749, 800, 10226, 503, - 1038, -1749, -1749, -1749, -1749, -1749, -1749, 9586, 9586, 40, - 5562, 1040, 498, 2139, 804, 1044, 37, 808, -1749, 809, - 10414, 9586, -1749, 2283, -127, -1749, 59, -114, 10344, -1749, - -110, -1749, 60, -165, -85, 965, -1749, 23, 806, 807, - 12922, 12947, 12972, 9586, 12997, 13022, 13047, 9586, 13072, 13097, - 13122, 13147, 13172, 13197, 13222, 816, 13247, 13272, 13297, 9457, - 1052, 9586, 7458, 8044, -1749, 140, 9586, 1054, 821, 9586, - 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, - 9586, 9586, 9586, 9586, 9586, 7458, 9586, 9586, 9586, 9586, - 9586, 9586, 7458, 7458, 819, 9586, 9586, 10136, 9586, 10136, - 5562, 10136, 10136, 10136, 9586, 74, 9586, 5562, 3791, 10136, - 10136, 7458, 23, 10226, 23, 825, 7458, 825, -1749, 825, - 13322, -1749, 309, 820, 90, -1749, 1000, 9586, 9586, 9586, - 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, - 9586, 6747, 9586, 9586, 9586, 9586, 9586, 23, 9586, 9586, - 1062, -1749, 618, 13347, 378, 9586, 9586, 9586, -1749, 1060, - 1063, 1063, 830, 9586, 9586, 1065, 7458, 7458, 12434, 832, - 1067, -1749, 834, -1749, -1749, -119, -1749, -1749, 10377, 10410, - -173, -173, 414, 414, -82, 8408, 8408, 9586, 4918, -78, - -1749, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, 9586, - 13372, 1071, 1073, 1074, 9586, 1076, 9586, -1749, 9586, 5155, - -1749, -1749, 7458, 7458, 7458, 9586, 1078, 9586, 9586, 9586, - 13397, -1749, -1749, 13422, 13447, 13472, 906, 10443, -1749, 842, - 8279, 13497, 13522, 12517, 10136, 10136, 10136, 10136, 10136, 10136, - 10136, 10136, 10136, 9586, 10136, 10136, 10136, 10136, 9, 10226, - 10136, 10136, 10136, 23, 23, -1749, -1749, 7458, -1749, 5392, - -1749, 5629, 9586, 825, 9586, -1749, 23, 9586, 9586, 1062, - 844, 434, 13547, 10349, 847, 448, 9586, 1082, 846, 848, - 849, 851, 9586, 13572, 12544, 157, 845, 1088, 1090, -1749, - -1749, -1749, 7458, 191, -1749, -1749, -1749, 23, 9586, 9586, - 1062, 856, -1749, 859, -45, 502, -1749, 867, 11565, -1749, - 136, 7458, 23, 9586, 9586, 1107, 1110, 7458, 9586, 1111, - 10136, 23, 8645, 1107, 1112, -1749, 23, 1113, 10136, 9586, - 883, 887, -1749, 9586, 10226, 1117, 1119, 1122, 13597, 1124, - 1125, 1129, 13622, 1130, 1132, 1135, 1136, 1138, 1139, 1140, - -1749, 1141, 1145, 1146, -1749, 9586, 13647, 7458, 911, 7458, - 11594, -1749, 1149, 12490, 12490, 12490, 12490, 12490, 12490, 12490, - 12490, 12490, 12490, 12490, 10476, 12490, 12490, 12490, 12490, 2249, - 628, 12490, 12490, 12490, 10509, 10542, 10575, 8044, 917, 914, - 83, 7458, 10608, 10641, 628, 10674, 628, 913, 915, 918, - -12, 14447, -1749, 628, 11623, -1749, 920, 100, 628, -181, - 919, 347, 449, 1151, -1749, 1107, 628, 921, 8363, 8600, - 677, 1415, 554, 554, 387, 387, 387, 387, 387, 387, - 436, 436, 7458, 423, -1749, 423, 423, 825, 825, 825, - 925, 13672, 12571, -150, 630, 7458, -1749, 1155, 922, 13697, - 13722, 13747, 9586, 5562, 1167, 1166, 8099, 11652, 13772, -1749, - 451, 454, 7458, 928, -1749, 5866, -1749, 6103, 6340, -173, - 9586, 9586, -1749, -1749, 933, 934, 8408, 9226, 1051, -36, - -173, 6577, 13797, 11681, 13822, 13847, 13872, 13897, 13922, 13947, - 13972, 1176, 9586, 1175, -1749, 9586, 13997, -1749, 12598, 12625, - -1749, 456, 457, 459, 11710, -1749, 12652, 12679, 10707, -1749, - 1177, 1179, 1181, 944, 9586, 6814, 9586, 9586, -1749, -1749, - 16, 295, 381, 295, 951, 952, 947, 628, 628, 948, - 10740, 628, 628, 628, 628, 9586, 628, 1184, -1749, 949, - 959, 422, 6, 958, 462, -1749, -1749, 12490, 423, 7051, - 956, 633, 955, 1027, 1199, 1058, 8729, 966, 968, 1203, - 5562, 11739, -1749, 9586, 9586, 9586, 9586, 2315, 161, 81, - 10226, 9586, 1206, 1209, 29, -1749, 467, 1168, 1169, 5562, - 22, 971, 14022, 12706, -44, 9586, 9586, 978, 981, 7458, - -1749, -1749, -1749, -1749, 10136, 106, 973, 14047, 12733, -1749, - 982, -1749, 202, 10773, -1749, -1749, -1749, 977, -1749, 985, - -1749, 72, -1749, -1749, 14447, -1749, 1222, 12490, 628, -173, - 5562, 5562, 1220, 5562, 5562, 5562, 1221, 5562, 5562, 5562, - 5562, 5562, 5562, 5562, 5562, 5562, 5562, 2713, 1223, 7458, - 8044, -1749, -1749, -1749, -1749, -1749, -1749, -1749, -1749, -1749, - -1749, -1749, -1749, -1749, -1749, 9586, -1749, -1749, -1749, -1749, - -1749, -1749, -1749, -1749, -1749, 9586, 9586, 9586, -1749, -1749, - -1749, 472, 9586, 9586, -1749, 9586, -1749, 5562, 10136, 10136, - -1749, 983, -1749, -1749, 9586, 9586, -1749, -1749, -1749, 1107, - -1749, 1107, 9586, 9586, 989, -1749, 5562, 111, -1749, 9586, - 9586, 9586, 478, 1107, -150, -147, -1749, 9586, 9586, 628, - 480, 5562, 7458, 1225, 1226, 1227, 4563, -1749, -1749, 1229, - -1749, 996, 14447, 990, -1749, 1230, 1233, 1236, 515, 1240, - -1749, 7288, -1749, -1749, -74, 10806, 10839, -1749, -1749, 11768, - -112, 1142, 1241, 8961, 1006, 1244, 1013, 34, 42, 266, - -1749, -55, -1749, -36, 1246, 1248, 1252, 1253, 1259, 1260, - 1261, 1263, 1264, 5562, 14447, -1749, 2842, 1012, 1266, 1267, - 1268, 1185, 1269, -1749, 1272, 1277, 9586, 5562, 5562, 5562, - 1280, 10872, -1749, 8676, 1174, 1281, 1282, -1749, 7458, -1749, - -1749, -1749, -1749, 10136, -1749, -1749, 9586, 10136, -1749, -1749, - -1749, -1749, 14447, -1749, 1045, 1041, 10136, -1749, 10136, -1749, - 1107, 10136, 1057, -1749, 1050, -1749, 1107, 9586, 9586, 1056, - 286, 1059, 9045, -1749, 2975, 1061, 5562, -1749, 1049, -1749, - 11797, 11826, 11855, 11884, -1749, -1749, 9586, 1294, 43, 9586, - 1295, 1297, 3018, -1749, 1298, 28, 1300, 1066, 628, 111, - 111, 1302, -1749, 1072, 1075, 1079, -1749, 1309, -1749, -1749, - -1749, -1749, -1749, 1107, 237, 683, 9586, 12760, 14072, 9586, - 9586, 516, 1310, 141, 1107, -1749, 1080, 9586, 1311, 9586, - 1107, 9277, 7690, 628, 4093, 1081, 1070, -1749, 1318, 1320, - 30, 1205, 1205, 5562, 1323, 1324, 1325, 5562, 1156, 1326, - 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, -1749, 1338, - 517, 12490, 12490, 12490, 12490, 628, 10905, 10938, 10971, 1108, - 628, 628, 1222, 628, 14097, 12490, 1109, 204, 14447, 12490, - -1749, 1341, 628, 11004, 14447, 14447, -1749, 640, -1749, 1346, - -1749, 14122, 12787, -1749, 628, 1345, 522, 5562, 5562, 5562, - 1350, 1351, -1749, 196, 9586, 5562, 1115, 1116, 1349, 383, - -1749, 9586, 9586, 9586, 1120, 1121, 1123, 1127, -1749, 3253, - 5562, -1749, 9586, -1749, 1354, -1749, 1356, -1749, -1749, 8408, - 308, 4851, -1749, 1126, 1128, 1131, 1133, 1134, 1144, 6984, - 1359, -1749, 7458, -1749, -1749, -1749, 1165, 9586, -1749, -1749, - 12814, 1364, 1366, 1200, -1749, 9586, 9586, 9586, -1749, 1369, - 621, 437, 1137, 8992, 1161, 9586, 24, 628, 1143, 628, - 1163, -1749, -1749, 10226, 643, 9586, 1178, -1749, -1749, 3380, - -1749, -1749, 1186, 1373, -1749, -1749, -1749, -1749, 3481, -1749, - 187, 1182, 1374, 3531, -1749, -1749, -1749, 28, -1749, 525, - -1749, 9586, 196, 2969, 1053, -1749, 1187, 9586, 9586, 5562, - 1189, -1749, 364, 1378, 1382, 14147, 1429, 1151, 14172, 14197, - 1430, -1749, -1749, 10136, 1198, 1380, 14222, -1749, 11037, 1201, - -1749, 4375, 14447, -1749, 1432, 111, 6036, -1749, -1749, -1749, - -1749, 1222, -1749, -1749, -1749, -173, 1435, 1436, 1437, -1749, - -1749, -1749, 1439, 1352, 1440, -1749, -1749, -1749, -1749, -1749, - -1749, -1749, -1749, -1749, 1443, 1211, -1749, -1749, -1749, -1749, - -1749, 9586, 9586, 9586, -1749, -1749, -1749, 1070, -1749, -1749, - -1749, -1749, 9586, 1212, 1207, -1749, -1749, 9586, 9586, 9586, - 628, -150, -1749, -1749, -1749, -1749, 1214, 1452, 1156, 1453, - 9586, -1749, 5562, 14447, 879, 7458, 7458, 9586, -1749, 8099, - 11913, 14247, 8917, 414, 414, 9586, 9586, -1749, 301, 1213, - 14272, -1749, -1749, 11942, -46, -1749, 1454, 1456, 5562, -173, - -173, -173, -173, -173, 5088, 1457, -1749, 545, 9586, 3844, - 1458, -1749, -1749, 5562, 9310, 1698, 14297, -1749, -1749, 7776, - -1749, 10136, 9586, -1749, 10136, 14447, 8013, 10226, 1217, -1749, - -1749, -1749, -1749, 1228, 1218, 9586, 9586, 11971, 9586, 10349, - -1749, 10349, 5562, -1749, -1749, 10226, 9586, 1461, 1445, 29, - -1749, 1463, -1749, 28, 12841, 5562, 10136, 1465, 628, -1749, - 1224, 628, 9586, 11070, 11103, 546, -1749, 9586, 9586, 447, - -1749, 1231, -1749, 1227, 1230, -1749, 1467, 9586, -1749, -1749, - 9586, 9354, -1749, -1749, 1232, 1053, 551, 7395, 1469, -1749, - 519, -1749, -1749, -1749, -1749, 1234, -1749, 1474, 5562, 12490, - 12490, 11136, 12490, -1749, 1242, 11169, 14322, 12868, -1749, -1749, - 9586, -1749, 1475, -1749, 14447, 1478, 1237, -1749, 552, 557, - 12462, 4029, 1479, 1243, -1749, -1749, 9586, 1245, 1247, 12000, - 12895, 1481, 5562, 1483, 1249, 9586, -1749, -1749, 558, -37, - -27, -21, -4, 133, 7221, 188, -1749, 1482, 12029, -1749, - -1749, 1321, -1749, 9586, 9586, -1749, -1749, 7458, 4131, 1488, - 1256, 12490, 628, 14447, -1749, -1749, -1749, -1749, 24, -1749, - 10226, -1749, 12058, 1255, 1257, 1258, 1491, 4312, -1749, 1493, - 1497, -1749, -1749, 1262, 1498, 559, -1749, 1502, 1503, 235, - 14447, 9586, 9586, 1270, 5562, 560, 14447, 14347, -1749, 14372, - 11202, -1749, 983, 1041, 5562, 628, -1749, 9586, 10226, 23, - 9586, 1504, 566, -1749, -1749, 9586, 1207, -1749, 9586, -1749, - -1749, 12087, -1749, -1749, 5562, 44, 547, 7458, -1749, -1749, - 414, 9619, -1749, -1749, -1749, 1505, -1749, 1271, 5562, -1749, - 12116, 1506, 7458, -173, -173, -173, -173, -173, -1749, -1749, - 9586, 12145, 12174, 567, -1749, -1749, -1749, -1749, -1749, -1749, - 1274, 1511, 1276, -1749, 1514, -1749, -1749, 28, -1749, 1347, - -1749, -1749, -1749, -1749, -1749, 9586, 11235, 11268, 5562, -1749, - 1515, 9586, 1283, -1749, 9586, 1279, 1285, -1749, -1749, 7722, - -1749, 1286, 12203, -1749, 1284, 11301, 1290, 11334, -1749, 568, - 1288, -173, 5562, 1527, 1291, -173, 1531, 573, 1296, -1749, - 9586, -1749, 1532, 1410, 9614, 1299, -1749, 574, 201, 203, - 219, 228, 233, 4485, -1749, -1749, 1535, 1537, -1749, -1749, - -1749, 1538, -1749, 1303, 14447, 9586, 9586, 575, -1749, 14447, - 11367, -1749, -1749, 983, 10226, 1305, -1749, 9586, 9586, -1749, - 9586, 1542, -173, 105, -1749, -1749, -173, 129, -1749, 1545, - -1749, 12232, -1749, 9586, -1749, -36, -1749, 1549, 7458, 7458, - 7458, 7458, 7221, -1749, -1749, -1749, 10349, -1749, 9586, 14397, - 11400, 36, 9586, 1313, -1749, -1749, 11433, 11466, 11499, -1749, - 288, -1749, 313, -1749, -1749, -1749, 4540, 413, 9653, -1749, - 576, 582, 583, 591, 328, 592, 1314, 597, -1749, 9586, - -1749, 5562, 12261, -1749, 9586, 9586, 9586, -173, -173, -1749, - -1749, -1749, -36, 1554, 1560, 1561, 1562, 7458, 1564, 1565, - 1566, 1336, 14422, 599, 1567, 12290, 12490, 11532, 343, 350, - 429, -1749, -1749, -1749, -1749, 600, -1749, -1749, -1749, 10136, - -1749, 1337, -1749, 1568, -1749, 9586, 9586, 9586, -1749, 1570, - 605, -1749, 1340, 5562, -1749, 12319, 12348, 12377, -1749, 1571, - 10136, 10136, 607, -1749, 1572, 1579, -1749, -1749, 608, -1749, - 1580, -1749, -1749, 1581, 10136, -1749, -1749, -1749 + 10058, 63, 60, 10209, -1754, -1754, 115, 161, 4, -85, + -37, 48, 211, 220, 234, 296, 66, 364, 374, 153, + 177, 28, 167, 167, 182, 218, 230, 24, 236, 239, + 43, 262, 276, 311, 332, 333, 356, 367, 381, 388, + 401, 181, 477, 506, 553, 370, 246, 407, 5870, 434, + 410, 595, -61, 625, 508, 567, 102, 437, 571, -24, + 461, -45, -45, 484, 319, 372, -1754, -1754, -1754, -1754, + -1754, 495, 351, 652, 646, 18, 44, 658, 666, 68, + 735, 762, 763, 5159, 774, 547, 575, 607, 11, 62, + -1754, 612, 613, -1754, -1754, 801, 815, 616, -1754, 10407, + 639, 3344, 19, 32, -1754, -1754, -1754, 9887, 653, -1754, + -1754, -1754, -1754, -1754, 633, -1754, -1754, -1754, -1754, -1754, + -1754, -1754, -1754, -1754, -1754, -71, -1754, -1754, -1754, -1754, + 49, -1754, 878, 669, 4897, 320, 672, 889, 9887, 10377, + 10377, -1754, 9887, -1754, -1754, -1754, -1754, 10377, -1754, -1754, + -1754, -1754, 682, 691, 925, -1754, -1754, 10437, 28, 9887, + 9887, 9887, 698, 9887, 9887, 9887, 702, 9887, 9887, 9887, + 9887, 9887, 9887, 9887, 10377, 9887, 9887, 9887, 9887, 6107, + 705, -1754, 8003, -1754, -1754, -1754, 703, 5159, 10377, -1754, + -1754, -1754, -1754, -1754, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 355, 167, 167, + 167, 167, 167, 706, 167, 167, 708, -1754, -1754, -1754, + 167, 167, 707, -1754, -1754, -1754, 6107, 830, 508, 713, + 167, 167, 714, 715, 716, -1754, -1754, -1754, 9887, 6344, + 9887, 9887, 6581, 28, 41, -1754, -1754, 717, -1754, 4814, + -1754, -1754, -1754, -1754, -1754, 118, 9887, 8003, 719, 720, + 6818, 5159, 5159, 5159, -1754, -1754, -1754, -1754, -1754, 718, + 7055, 721, 4351, 952, 6107, 722, 11, 723, 724, -45, + -45, -45, 9887, 9887, -151, -1754, 260, -45, 8876, 440, + 373, 730, 731, 733, 734, 739, 741, 742, 9887, 5159, + 5159, 5159, 743, 31, 957, 744, -1754, 968, 977, -1754, + 747, 751, 755, -1754, -1754, 766, 5159, 746, 769, 770, + -1754, 9887, -1754, 978, 1006, 9887, 9887, 9887, 337, 9887, + 771, -1754, 836, 9887, 9887, 9887, -1754, -1754, 9887, -1754, + 167, 167, 167, 776, 777, 780, 167, 167, 167, 167, + 167, 167, 167, -1754, 167, -1754, -1754, -1754, 167, 167, + 784, 795, 167, 796, -1754, 797, 1031, 1033, 798, -1754, + -1754, 1034, -1754, 1036, -1754, 167, 9887, 12514, 132, 10377, + 8003, 9887, -1754, -1754, 6107, 6107, -1754, 800, 10437, 591, + 1040, -1754, -1754, -1754, -1754, -1754, -1754, 9887, 9887, 36, + 6107, 1042, 17, 1993, 807, 1045, 74, 810, -1754, 808, + 10625, 9887, -1754, 2419, -128, -1754, 54, -108, 9450, -1754, + -12, -1754, 59, 84, 142, 967, -1754, 28, 812, 816, + 13030, 13055, 13080, 9887, 13105, 13130, 13155, 9887, 13180, 13205, + 13230, 13255, 13280, 13305, 13330, 823, 13355, 13380, 13405, 11644, + 1049, 9887, 8003, 4837, -1754, 382, 9887, 1059, 826, 9887, + 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, + 9887, 9887, 9887, 9887, 9887, 8003, 9887, 9887, 9887, 9887, + 9887, 9887, 8003, 8003, 824, 9887, 9887, 10377, 9887, 10377, + 6107, 10377, 10377, 10377, 9887, 34, 9887, 6107, 5159, 10377, + 10377, 8003, 28, 10437, 28, 831, 8003, 831, -1754, 831, + 13430, -1754, 426, 825, 73, -1754, 1007, 9887, 9887, 9887, + 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, + 9887, 7292, 9887, 9887, 9887, 9887, 9887, 28, 9887, 9887, + 1068, -1754, 620, 13455, 447, 9887, 9887, 9887, -1754, 1066, + 1070, 1070, 841, 9887, 9887, 1075, 8003, 8003, 12542, 842, + 1078, -1754, 843, -1754, -1754, -157, -1754, -1754, 9534, 9759, + -45, -45, 320, 320, -129, 8876, 8876, 9887, 2927, -124, + -1754, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9887, + 13480, 1082, 1084, 1085, 9887, 1089, 9887, -1754, 9887, 5226, + -1754, -1754, 8003, 8003, 8003, 9887, 1091, 9887, 9887, 9887, + 13505, -1754, -1754, 13530, 13555, 13580, 917, 10310, -1754, 855, + 4928, 13605, 13630, 12625, 10377, 10377, 10377, 10377, 10377, 10377, + 10377, 10377, 10377, 9887, 10377, 10377, 10377, 10377, 5, 10437, + 10377, 10377, 10377, 28, 28, -1754, -1754, 8003, -1754, 5463, + -1754, 5700, 9887, 831, 9887, -1754, 28, 9887, 9887, 1068, + 868, 462, 13655, 10560, 871, 472, 9887, 1110, 874, 876, + 880, 881, 9887, 13680, 12652, 186, 883, 1119, 1123, -1754, + -1754, -1754, 8003, 197, -1754, -1754, -1754, 28, 9887, 9887, + 1068, 890, -1754, 893, -46, 567, -1754, 891, 11673, -1754, + 21, 8003, 28, 9887, 9887, 1129, 1130, 8003, 9887, 1131, + 10377, 28, 8953, 1129, 1133, -1754, 28, 1134, 10377, 9887, + 903, 904, -1754, 9887, 10437, 1137, 1140, 1141, 13705, 1145, + 1146, 1147, 13730, 1148, 1149, 1150, 1151, 1152, 1154, 1155, + -1754, 1156, 1157, 1158, -1754, 9887, 13755, 8003, 924, 8003, + 11702, -1754, 1162, 12598, 12598, 12598, 12598, 12598, 12598, 12598, + 12598, 12598, 12598, 12598, 10555, 12598, 12598, 12598, 12598, 2034, + 545, 12598, 12598, 12598, 10588, 10621, 10654, 4837, 931, 930, + 97, 8003, 10687, 10720, 545, 10753, 545, 929, 932, 933, + 87, 14555, -1754, 545, 11731, -1754, 934, 222, 545, 13, + 938, 430, 511, 1166, -1754, 1129, 545, 940, 7939, 8266, + 1420, 570, 1003, 1003, 469, 469, 469, 469, 469, 469, + 515, 515, 8003, 304, -1754, 304, 304, 831, 831, 831, + 939, 13780, 12679, -94, 667, 8003, -1754, 1179, 944, 13805, + 13830, 13855, 9887, 6107, 1184, 1183, 8644, 11760, 13880, -1754, + 517, 520, 8003, 946, -1754, 5937, -1754, 6174, 6411, -45, + 9887, 9887, -1754, -1754, 948, 949, 8876, 4055, 1067, 414, + -45, 6648, 13905, 11789, 13930, 13955, 13980, 14005, 14030, 14055, + 14080, 1188, 9887, 1191, -1754, 9887, 14105, -1754, 12706, 12733, + -1754, 525, 527, 528, 11818, -1754, 12760, 12787, 10786, -1754, + 1192, 1194, 1197, 961, 9887, 6885, 9887, 9887, -1754, -1754, + 35, 343, 377, 343, 969, 970, 959, 545, 545, 963, + 10819, 545, 545, 545, 545, 9887, 545, 1203, -1754, 965, + 974, 463, -164, 973, 533, -1754, -1754, 12598, 304, 7122, + 971, 668, 975, 1041, 1210, 1071, 9185, 996, 1000, 1215, + 6107, 11847, -1754, 9887, 9887, 9887, 9887, 2444, 190, 116, + 10437, 9887, 1238, 1241, 30, -1754, 535, 1204, 1205, 6107, + 22, 1004, 14130, 12814, 140, 9887, 9887, 1013, 1014, 8003, + -1754, -1754, -1754, -1754, 10377, 124, 1009, 14155, 12841, -1754, + 1016, -1754, 145, 10852, -1754, -1754, -1754, 1015, -1754, 1019, + -1754, 79, -1754, -1754, 14555, -1754, 1255, 12598, 545, -45, + 6107, 6107, 1259, 6107, 6107, 6107, 1260, 6107, 6107, 6107, + 6107, 6107, 6107, 6107, 6107, 6107, 6107, 2579, 1261, 8003, + 4837, -1754, -1754, -1754, -1754, -1754, -1754, -1754, -1754, -1754, + -1754, -1754, -1754, -1754, -1754, 9887, -1754, -1754, -1754, -1754, + -1754, -1754, -1754, -1754, -1754, 9887, 9887, 9887, -1754, -1754, + -1754, 536, 9887, 9887, -1754, 9887, -1754, 6107, 10377, 10377, + -1754, 1022, -1754, -1754, 9887, 9887, -1754, -1754, -1754, 1129, + -1754, 1129, 9887, 9887, 1032, -1754, 6107, 167, -1754, 9887, + 9887, 9887, 561, 1129, -94, -13, -1754, 9887, 9887, 545, + 562, 6107, 8003, 1264, 1266, 1267, 2489, -1754, -1754, 1269, + -1754, 1037, 14555, 1028, -1754, 1271, 1272, 1273, 568, 1278, + -1754, 7359, -1754, -1754, -114, 10885, 10918, -1754, -1754, 11876, + -98, 1174, 1281, 9269, 1043, 1283, 1048, 33, 38, -67, + -1754, -89, -1754, 414, 1284, 1286, 1291, 1293, 1294, 1296, + 1297, 1298, 1299, 6107, 14555, -1754, 2619, 1064, 1302, 1303, + 1304, 1214, 1307, -1754, 1309, 1310, 9887, 6107, 6107, 6107, + 1313, 10951, -1754, 8589, 1682, 57, 1314, -1754, 8003, -1754, + -1754, -1754, -1754, 10377, -1754, -1754, 9887, 10377, -1754, -1754, + -1754, -1754, 14555, -1754, 1076, 1077, 10377, -1754, 10377, -1754, + 1129, 10377, 1083, -1754, 1080, -1754, 1129, 9887, 9887, 1081, + 508, 1086, 9501, -1754, 2967, 1087, 6107, -1754, 1088, -1754, + 11905, 11934, 11963, 11992, -1754, -1754, 9887, 1320, 45, 9887, + 1325, 1327, 3112, -1754, 1328, 11, 1330, 1093, 545, 167, + 167, 1331, -1754, 1099, 1100, 1097, -1754, 1335, -1754, -1754, + -1754, -1754, -1754, 1129, 450, 851, 9887, 12868, 14180, 9887, + 9887, 574, 1341, 25, 1129, -1754, 1103, 9887, 1343, 9887, + 1129, 9578, 8235, 545, 4105, 1108, 1107, -1754, 1345, 1351, + 94, 1235, 1235, 6107, 1353, 1354, 1356, 6107, 1186, 1358, + 1359, 1360, 1362, 1363, 1364, 1365, 1366, 1367, -1754, 1369, + 576, 12598, 12598, 12598, 12598, 545, 10984, 11017, 11050, 1135, + 545, 545, 1255, 545, 14205, 12598, 1136, -174, 14555, 12598, + -1754, 1371, 545, 11083, 14555, 14555, -1754, 694, -1754, 1375, + -1754, 14230, 12895, -1754, 545, 1377, 579, 6107, 6107, 6107, + 1378, 1379, -1754, 228, 9887, 6107, 1144, 1153, 1381, 283, + -1754, 9887, 9887, 9887, 1159, 1160, 1161, 1143, -1754, 3350, + 6107, -1754, 9887, -1754, 1384, -1754, 1385, -1754, -1754, 8876, + -39, 5396, -1754, 1163, 1164, 1165, 1167, 1168, 1169, 7529, + 1386, -1754, 8003, -1754, -1754, -1754, 1170, 9887, -1754, -1754, + 12922, 1387, 1388, 1222, -1754, 9887, 9887, 9887, -1754, 1391, + 1392, 1393, 429, 473, 1171, 8825, 1172, 9887, 26, 545, + 1175, 545, 1173, -1754, -1754, 10437, 699, 9887, 1189, -1754, + -1754, 3518, -1754, -1754, 1193, 1394, -1754, -1754, -1754, -1754, + 3552, -1754, 202, 1195, 1398, 3754, -1754, -1754, -1754, 11, + -1754, 582, -1754, 9887, 228, 1053, 1376, -1754, 1178, 9887, + 9887, 6107, 1196, -1754, 519, 1405, 1408, 14255, 1412, 1166, + 14280, 14305, 1425, -1754, -1754, 10377, 1208, 1430, 14330, -1754, + 11116, 1212, -1754, 4613, 14555, -1754, 1435, 167, 6581, -1754, + -1754, -1754, -1754, 1255, -1754, -1754, -1754, -45, 1443, 1448, + 1450, -1754, -1754, -1754, 1451, 1368, 1453, -1754, -1754, -1754, + -1754, -1754, -1754, -1754, -1754, -1754, 1455, 1219, -1754, -1754, + -1754, -1754, -1754, 9887, 9887, 9887, -1754, -1754, -1754, 1107, + -1754, -1754, -1754, -1754, 9887, 1225, 1218, -1754, -1754, 9887, + 9887, 9887, 545, -94, -1754, -1754, -1754, -1754, 1224, 1462, + 1186, 1463, 9887, -1754, 6107, 14555, 809, 8003, 8003, 9887, + -1754, 8644, 12021, 14355, 8909, 320, 320, 9887, 9887, -1754, + 301, 1223, 14380, -1754, -1754, 12050, -75, -1754, 1464, 1467, + 6107, -45, -45, -45, -45, -45, 5633, 1468, -1754, 584, + 9887, 3780, 1469, -1754, -1754, 6107, 9141, 1866, 14405, -1754, + -1754, -1754, -1754, 8321, -1754, 10377, 9887, -1754, 10377, 14555, + 8558, 10437, 1228, -1754, -1754, -1754, -1754, 1237, 1233, 9887, + 9887, 12079, 9887, 10560, -1754, 10560, 6107, -1754, -1754, 10437, + 9887, 1476, 1479, 30, -1754, 1478, -1754, 11, 12949, 6107, + 10377, 1480, 545, -1754, 1239, 545, 9887, 11149, 11182, 587, + -1754, 9887, 9887, 514, -1754, 1245, -1754, 1267, 1271, -1754, + 1483, 9887, -1754, -1754, 9887, 9810, -1754, -1754, 1247, 1376, + 589, 4650, 1484, -1754, 256, -1754, -1754, -1754, -1754, 1249, + -1754, 1489, 6107, 12598, 12598, 11215, 12598, -1754, 1256, 11248, + 14430, 12976, -1754, -1754, 9887, -1754, 1492, -1754, 14555, 1493, + 1252, -1754, 590, 592, 12570, 3814, 1494, 1258, -1754, -1754, + 9887, 1262, 1263, 12108, 13003, 1497, 6107, 1498, 1265, 9887, + -1754, -1754, 597, -58, -47, -36, -21, -14, 7766, 117, + -1754, 1503, 12137, -1754, -1754, 1332, -1754, 9887, 9887, -1754, + -1754, 8003, 3839, 1504, 1274, 12598, 545, 14555, -1754, -1754, + -1754, -1754, 26, -1754, 10437, -1754, 12166, 1268, 1275, 1276, + 1505, 4222, -1754, 1506, 1509, -1754, -1754, 1277, 1510, 599, + -1754, 1512, 1517, 185, 14555, 9887, 9887, 1282, 6107, 600, + 14555, 14455, -1754, 14480, 11281, -1754, 1022, 1077, 6107, 545, + -1754, 9887, 10437, 28, 9887, 1518, 605, -1754, -1754, 9887, + 1218, -1754, 9887, -1754, -1754, 12195, -1754, -1754, 6107, 415, + 523, 8003, -1754, -1754, 320, 9216, -1754, -1754, -1754, 1521, + -1754, 1287, 6107, -1754, 12224, 1524, 8003, -45, -45, -45, + -45, -45, -1754, -1754, 9887, 12253, 12282, 610, -1754, -1754, + -1754, -1754, -1754, -1754, 1292, 1527, 1295, -1754, 1528, -1754, + -1754, 11, -1754, 1370, -1754, -1754, -1754, -1754, -1754, 9887, + 11314, 11347, 6107, -1754, 1529, 9887, 1300, -1754, 9887, 1305, + 1306, -1754, -1754, 4776, -1754, 1301, 12311, -1754, 1315, 11380, + 1308, 11413, -1754, 621, 1316, -45, 6107, 1531, 1317, -45, + 1533, 624, 1312, -1754, 9887, -1754, 1535, 1413, 7596, 1318, + -1754, 626, 147, 201, 233, 238, 264, 4288, -1754, -1754, + 1538, 1540, -1754, -1754, -1754, 1547, -1754, 1319, 14555, 9887, + 9887, 627, -1754, 14555, 11446, -1754, -1754, 1022, 10437, 1333, + -1754, 9887, 9887, -1754, 9887, 1551, -45, 120, -1754, -1754, + -45, 122, -1754, 1559, -1754, 12340, -1754, 9887, -1754, 414, + -1754, 1566, 8003, 8003, 8003, 8003, 7766, -1754, -1754, -1754, + 10560, -1754, 9887, 14505, 11479, 51, 9887, 1337, -1754, -1754, + 11512, 11545, 11578, -1754, 313, -1754, 325, -1754, -1754, -1754, + 4549, 291, 7833, -1754, 629, 635, 637, 642, 328, 643, + 1338, 645, -1754, 9887, -1754, 6107, 12369, -1754, 9887, 9887, + 9887, -45, -45, -1754, -1754, -1754, 414, 1568, 1569, 1570, + 1573, 8003, 1579, 1582, 1583, 1347, 14530, 648, 1585, 12398, + 12598, 11611, 338, 350, 468, -1754, -1754, -1754, -1754, 673, + -1754, -1754, -1754, 10377, -1754, 1350, -1754, 1588, -1754, 9887, + 9887, 9887, -1754, 1589, 678, -1754, 1357, 6107, -1754, 12427, + 12456, 12485, -1754, 1591, 10377, 10377, 680, -1754, 1593, 1595, + -1754, -1754, 683, -1754, 1597, -1754, -1754, 1598, 10377, -1754, + -1754, -1754 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1749, -1749, -1749, -1749, 316, -1749, -1749, -1749, -1749, -370, - -1749, -1749, -1749, -1749, -1749, -1749, -1749, -1749, -1749, -1749, - -1749, -1749, -678, -131, 2528, 2635, -1749, 1157, -1749, -1749, - -1749, -1749, -1749, -1749, -1748, -1749, 270, 102, -188, -1749, - -152, -1749, 49, 310, 1596, -1749, -1, 895, -1749, -1749, - -2, -552, -287, -1749, -1749, -1749, -1749, -1749, -1749, -1749, - -1749, 1600, -1749, -1749, -1749, -1749, -1148, -1145, 1601, -1605, - 1602, -1749, -1749, -1749, 1047, -1749, -200, -1749, -1749, -1749, - -1749, 1731, -1749, -1749, -1318, 192, 1608, -1749, 0, -650, - -1749, -1749, 168, -1749, -1566, -28, -170, 1043, 1838, -278, - -16, -1749, 778, -43, -1749, -1749, 8, 162, -1571, -141, - 897, -1749, -3 + -1754, -1754, -1754, -1754, 334, -1754, -1754, -1754, -1754, -356, + -1754, -1754, -1754, -1754, -1754, -1754, -1754, -1754, -1754, -1754, + -1754, -1754, -672, -26, 3016, 3153, -1754, 1176, -1754, -1754, + -1754, -1754, -1754, -1754, -1753, -1754, 286, 119, -178, -1754, + -139, -1754, 64, 323, 1613, -1754, -1, 912, -1754, -1754, + -2, -577, -287, -1754, -1754, -1754, -1754, -1754, -1754, -1754, + -1754, 1615, -1754, -1754, -1754, -1754, -1145, -1142, 1617, -1609, + 1618, -1754, -1754, -1754, 1072, -1754, -185, -1754, -1754, -1754, + -1754, 1899, -1754, -1754, -1315, 206, 1626, -1754, 2, -659, + -1754, -1754, 99, -1754, -1537, -28, -162, 2067, 1311, -283, + 23, -1754, 91, -82, -1754, -1754, 47, 175, -1551, -143, + 915, -1754, -3 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -533 +#define YYTABLE_NINF -535 static const yytype_int16 yytable[] = { - 134, 115, 114, 411, 1378, 1380, 430, 971, 572, 1533, - 393, 588, 1718, 152, 1753, 979, 1754, 467, 154, 951, - 263, 153, 605, 1185, 313, 141, 1252, 152, 1606, 609, - 874, 875, 338, 152, 1865, 1746, 1494, 381, 525, 135, - 1373, 152, 1990, 136, 685, 265, 697, 1440, 1375, 269, - 984, 383, 269, 275, 290, 291, 376, 183, 380, 1088, - 184, 300, 162, 185, 1089, 1000, 292, 166, 712, 721, - 293, 270, 317, 1009, 987, 342, 186, 724, 152, 1282, - 265, 285, 318, 725, 319, 341, 405, 406, 1235, 405, - 406, 415, 547, 1142, 1785, 659, 377, 661, 1339, 437, - 4, 559, 560, 561, 314, 673, 286, 547, 580, 581, - 1143, 1971, 1792, 710, 438, 580, 581, 666, 1144, 1145, - 1146, 711, 287, 288, 1147, 1148, 716, 580, 581, 869, - 719, 416, 1365, 418, 717, 1973, 426, 426, 720, 601, - 602, 603, 991, 582, 432, 580, 581, 1472, 301, 580, - 581, 460, 302, 580, 581, 439, 616, 727, 303, 304, - 5, 305, 306, 725, 970, 1097, 876, 137, 1235, 320, - 880, 426, 580, 581, 1361, 1963, 265, 1880, 1881, 265, - 307, 580, 581, 1882, 265, 426, 1253, 1254, 1255, 1256, - 580, 581, 138, 1379, 1625, 1266, 1374, 1218, 977, -528, - 580, 581, 1715, 1235, 1376, 315, 580, 581, 263, 323, - 526, 1822, 324, 1607, 686, 687, 1684, 1441, 1442, 139, - 108, 1823, 391, 580, 581, 325, 392, 1824, 1080, 294, - 296, 108, 299, 265, 108, 1378, 720, 508, 1879, 108, - 108, 591, 558, 394, 1825, 592, 265, 395, 108, 265, - 524, 1210, 565, 523, 1211, 935, 570, 580, 581, 606, - 140, 1186, 142, 316, 265, 136, 1257, 265, 265, 265, - 265, 339, 1245, 405, 406, 382, 698, 265, 699, 1991, - -525, 265, 700, 341, 865, 108, 867, 868, 143, 384, - 1236, 1239, 1917, 401, 402, 403, 404, 163, 713, 722, - 714, 714, 167, 881, 715, 723, 265, 265, 265, 527, - 343, 155, 281, 156, 690, 282, 691, 405, 406, 405, - 406, 144, 548, 265, 549, 1070, 1238, 145, 550, 155, - 146, 156, 580, 581, 405, 406, 147, 548, 805, 549, - 690, 915, 691, 550, 405, 406, 1273, 667, 1085, 668, - 155, 1986, 156, 669, 759, 677, 580, 581, 992, 993, - 580, 581, 800, 992, 993, 148, 674, 675, 149, 401, - 402, 403, 404, 401, 402, 403, 404, 274, 949, 150, - 233, 1826, 688, 234, 758, 235, 426, 265, 759, 1558, - 1559, 265, 265, 405, 406, 1142, 41, 405, 406, 401, - 402, 403, 404, 401, 402, 403, 978, 265, 401, 402, - 403, 404, 1143, 701, 151, 580, 581, 159, 417, 707, - 1144, 1145, 1146, 405, 406, 2013, 1147, 1148, 580, 581, - 580, 581, 290, 291, 732, 271, 1827, 1142, 272, 1326, - 273, 1327, 1278, 155, 292, 156, 580, 581, 298, 1948, - 759, 1949, 1092, 1337, 1143, 580, 581, 575, 576, 265, - 580, 581, 1144, 1145, 1146, 584, 589, 1950, 1147, 1148, - 810, 160, 797, 405, 406, 1854, 1951, 2052, 1876, 558, - -527, 1952, 265, 1855, 161, 580, 581, 580, 581, 265, - 790, 309, 164, 310, 426, 923, 426, 265, 426, 426, - 432, 583, 803, 590, 265, 265, 426, 426, 265, 154, - 1377, 154, 809, 265, 811, 580, 581, 528, 529, 530, + 134, 115, 114, 572, 430, 874, 875, 1378, 1380, 152, + 951, 588, 1535, 971, 1757, 338, 1758, 376, 154, 380, + 263, 979, 313, 153, 381, 467, 1252, 991, 162, 609, + 1610, 1474, 152, 1869, 152, 605, 269, 383, 152, 1373, + 685, 984, 1185, 1722, 1375, 265, 525, 166, 318, 1442, + 319, 269, 415, 275, 141, 393, 1000, 1994, 270, 1750, + 5, 1409, 1142, 712, 1009, 155, 342, 156, 721, 4, + 580, 581, 317, 987, 1092, 438, 580, 581, 152, 1143, + 265, 1210, 437, 697, 1211, 341, 1282, 1144, 1145, 1146, + 1142, 869, 582, 1147, 1148, 659, 377, 661, 580, 581, + 1496, 138, 314, 580, 581, 673, 547, 1143, 411, 559, + 560, 561, 710, 580, 581, 1144, 1145, 1146, 1789, 876, + 711, 1147, 1148, 1235, 880, 285, 1975, 547, 1977, 580, + 581, 416, 716, 418, 1361, 320, 426, 426, 580, 581, + 717, 666, 405, 406, 432, 1796, 1365, 601, 602, 603, + 286, 460, 580, 581, 139, 439, 1097, 1410, 1411, 1379, + 294, 296, 323, 299, 616, 324, 287, 288, 391, 580, + 581, 426, 392, 1719, 1967, 137, 265, 1377, 325, 265, + 580, 581, 290, 291, 265, 426, 1253, 1254, 1255, 1256, + 1826, 580, 581, 970, 292, 1374, 281, 1235, 293, 282, + 1376, 1827, 140, 315, 977, 1577, 580, 581, 263, 1629, + 686, 687, 1828, 580, 581, 1611, 108, 143, 526, 1443, + 1444, 1688, 108, 405, 406, 414, 144, 1829, 719, 108, + 424, 427, 1339, 265, 1830, 1235, 720, 508, 1378, 108, + 145, 108, 558, 992, 993, 108, 265, 992, 993, 265, + 524, 935, 565, 1088, 339, 523, 570, 690, 1089, 691, + 692, 316, 382, 163, 265, 455, 1257, 265, 265, 265, + 265, 1883, 606, 1245, 690, 384, 691, 265, 136, 468, + 1186, 265, 167, 341, 865, 108, 867, 868, 394, 1560, + 1561, 142, 395, 713, 1995, 714, 1236, 1239, 722, 715, + 714, 343, 146, 881, 723, 147, 265, 265, 265, 527, + 405, 406, 155, 698, 156, 699, 677, -527, 155, 700, + 156, 580, 581, 265, 417, 1921, 724, 1080, 401, 402, + 403, 404, 725, 405, 406, 720, 548, 183, 549, 1070, + 184, 915, 550, 185, 580, 581, 805, 580, 581, 580, + 581, 1990, 405, 406, 405, 406, 186, 548, 135, 549, + 800, 1238, 136, 550, 1273, 1831, 674, 675, 405, 406, + 148, 667, 759, 668, 580, 581, 300, 669, 949, 1266, + 149, 1218, 688, -530, 727, 1278, 426, 265, 575, 576, + 725, 265, 265, 759, 150, 1952, 584, 589, 401, 402, + 403, 404, 401, 402, 403, 404, 155, 265, 156, 401, + 402, 403, 978, 701, 401, 402, 403, 404, 151, 707, + 1142, 159, 405, 406, 178, 1858, 405, 406, 580, 581, + 1326, 810, 1327, 1859, 732, 1602, 1603, 1143, 405, 406, + 401, 402, 403, 404, 1337, 1144, 1145, 1146, 309, 1953, + 310, 1147, 1148, 60, 61, 62, 63, 160, 2017, 265, + 580, 581, 690, 301, 691, 580, 581, 302, 74, 161, + 1085, 77, 797, 303, 304, 164, 305, 306, 165, 558, + 670, 1954, 265, 580, 581, 1880, 1955, 580, 581, 265, + 790, 580, 581, 923, 426, 307, 426, 265, 426, 426, + 432, 168, 803, 583, 265, 265, 426, 426, 265, 154, + 2056, 154, 1956, 265, 809, 169, 811, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 690, 1997, 691, 265, 546, - 580, 581, 1142, 720, 840, 1711, 165, 60, 61, 62, - 63, 168, 1575, 814, 972, 580, 581, 759, 1142, 1143, - 1420, 1998, 74, 265, 265, 77, 1424, 1144, 1145, 1146, - 580, 581, 169, 1147, 1148, 1143, 2007, 580, 581, 1131, - 418, 418, 178, 1144, 1145, 1146, 155, 707, 156, 1147, - 1148, 2036, 1091, 170, 678, 1092, 276, 679, 2037, 277, - 680, 278, 681, 1648, 171, 1616, 938, -529, 707, 265, - 265, 265, 279, 1462, 539, 540, 664, 542, 543, 544, - 545, 690, 848, 691, 1474, 546, 759, 1598, 1599, 1188, - 1479, 432, 426, 432, 426, 426, 426, 426, 426, 426, - 172, 426, 426, 426, 426, 937, 173, 426, 426, 426, - 154, 943, 179, 942, 265, 544, 545, 2000, 707, 174, - 707, 546, 690, 950, 691, 664, 542, 543, 544, 545, - 1208, 175, 707, 2038, 546, 1552, 180, 690, 953, 691, - 1884, 1885, 759, 405, 406, 759, 1882, 152, 349, 265, - -532, 1018, 959, 1095, 981, 1126, 960, 759, 1127, 759, - 1170, 1171, 759, 1172, 759, 759, 1214, 759, 265, 996, - 759, 1248, 1106, 181, 265, 759, 1315, 432, 1007, 626, - 759, 136, 1336, 1011, 1344, 426, 759, 176, 759, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 690, 177, - 691, 692, 359, 360, 361, 362, 580, 581, 872, 873, - 363, 364, 365, 576, 265, 366, 265, 367, 268, 1358, - 1470, 1515, 1626, 759, 759, 759, 1546, 182, 368, 1632, - 759, 369, 188, 1633, 1635, 533, 534, 535, 536, 537, - 538, 539, 540, 664, 542, 543, 544, 545, 265, 1727, - 1773, 267, 546, 759, 1774, 1786, 1805, 1977, 284, 1787, - 759, 1806, 1821, 1851, 1860, 759, 1774, 720, 1861, 399, - 1874, 1906, 1931, 1123, 1774, 759, 1774, 1939, 1947, 1961, - 2003, 759, 759, 1774, 759, 1117, 2004, 2005, 266, 265, - 759, 759, 1378, 283, 308, 2006, 2008, 1237, 1240, 759, - 759, 2010, 265, 2031, 2039, 1861, 289, 1774, 759, 2049, - 265, 2060, 2063, 2050, 2020, 1774, 2064, 297, 690, 265, - 691, 845, 311, 492, 707, 493, 707, 707, 690, 1107, - 691, 1108, 1217, 312, 1218, 1378, 370, 371, 372, 1538, - 707, 1539, 1615, 1696, 1616, 1697, 321, 373, 322, 327, - 328, 374, 329, 375, 108, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 334, 414, 335, 707, 546, 346, 424, 427, 405, - 406, 336, 347, 337, 344, 345, -526, 1241, 1463, 348, - 378, 389, 1228, 396, 397, 390, 421, 422, 435, 437, - 443, 136, 447, 466, 461, 500, 507, 503, 707, 569, - 509, 1251, 455, 506, 512, 513, 514, 265, 555, 556, - 607, 392, 593, 594, 563, 566, 468, 1448, 571, 573, - 574, 1247, 595, 1338, 1340, 596, 265, 597, 598, 599, - 604, 610, 611, 608, 617, 621, 265, 612, 613, 614, - 615, 426, 1291, 1292, 618, 1294, 1295, 1296, 619, 1298, - 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 622, - 628, 1707, 1708, 629, 637, 638, 639, 265, 265, 650, - 265, 265, 265, 651, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 265, 653, 654, 265, 1134, 655, 656, - 657, 658, 660, 676, 1140, 682, 689, 695, 1151, 1319, - 696, 135, 729, 702, 733, 734, 750, 152, 349, 755, - 761, 762, 791, 546, 817, 815, 843, 852, 1331, 856, - 853, 859, 863, 864, 265, 426, 426, 866, 892, 894, - 913, 895, 897, 1345, 905, 916, 952, 958, 962, 963, - 973, 964, 965, 265, 966, 974, 975, 985, 986, 350, + 541, 542, 543, 544, 545, 2004, 544, 545, 265, 546, + 580, 581, 546, 1142, 840, 1715, 290, 291, 1884, 1885, + 170, 1422, 580, 581, 1886, 580, 581, 1426, 292, 181, + 1143, 2001, 298, 265, 265, 580, 581, 938, 1144, 1145, + 1146, 171, 172, 2002, 1147, 1148, 2011, 580, 581, 1131, + 418, 418, 626, 690, 136, 691, 2040, 707, 794, 179, + 796, 720, 798, 799, 492, 173, 493, 1142, 2041, 274, + 806, 807, 233, 180, 1464, 234, 174, 235, 707, 265, + 265, 265, 591, 182, 1143, 1476, 592, 690, 41, 691, + 175, 1481, 1144, 1145, 1146, 1188, 758, 176, 1147, 1148, + 759, 432, 426, 432, 426, 426, 426, 426, 426, 426, + 177, 426, 426, 426, 426, 937, 188, 426, 426, 426, + 154, 943, 1018, 267, 265, 942, 1888, 1889, 707, 972, + 707, 276, 1886, 950, 277, 284, 278, 580, 581, 155, + 814, 156, 707, 266, 759, 1091, 283, 279, 1092, 872, + 873, 1554, 678, 590, 576, 679, 405, 406, 680, 265, + 681, 848, 268, -529, 981, 759, 539, 540, 664, 542, + 543, 544, 545, 690, 289, 691, 953, 546, 265, 996, + 759, 1208, 2042, 690, 265, 691, 959, 432, 1007, 271, + 960, 759, 272, 1011, 273, 426, 922, 297, 924, 925, + 926, 927, 928, 929, 308, 931, 932, 933, 934, 327, + 312, 939, 940, 941, 664, 542, 543, 544, 545, 311, + 405, 406, 321, 546, 265, 1095, 265, -534, 1652, 759, + 1620, 1126, -531, 322, 1127, 759, 328, 329, 759, 1170, + 1630, 1171, 1172, 759, 1123, 759, 759, 1214, 334, 1248, + 1315, 759, 1639, 759, 759, 690, 335, 691, 265, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 1981, 1336, 1344, 346, 546, 759, + 759, 1005, 1358, 1700, 336, 1701, 759, 1106, 1472, 1013, + 1517, 347, 759, 1548, 759, 1117, 1636, 759, 1731, 265, + 1637, 1777, 759, 1790, 1809, 1778, 1810, 1791, 759, 1378, + 759, 1825, 265, 1855, 1864, 1778, 337, 720, 1865, 1878, + 265, 344, 345, 1778, 1910, 152, 349, 348, 759, 265, + 690, 2024, 691, 845, 707, 1935, 707, 707, 1943, 1778, + 1951, 1965, 759, 2007, 759, 1778, 390, 759, 378, 2008, + 707, 2009, 1378, 759, 396, 759, 2010, 2012, 1241, 2014, + 759, 759, 2035, 1865, 389, 422, 1778, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 1107, 1217, 1108, 1218, + 359, 360, 361, 362, 707, 421, 397, 2043, 363, 364, + 365, 759, 2053, 366, 2064, 367, 2054, 2067, 1778, 136, + 435, 2068, 1228, 1540, 437, 1541, 368, 443, 1619, 369, + 1620, 447, 1237, 1240, 461, 500, 466, 503, 707, 507, + 506, 1251, 509, 512, 513, 514, 569, 265, 555, 556, + 392, 563, 1450, 607, 566, 571, 573, 574, 1134, 593, + 594, 1247, 595, 596, 610, 1140, 265, 399, 597, 1151, + 598, 599, 604, 611, 621, 608, 265, 617, 1711, 1712, + 612, 426, 1291, 1292, 613, 1294, 1295, 1296, 614, 1298, + 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 615, + 618, 619, 622, 629, 628, 637, 638, 265, 265, 639, + 265, 265, 265, 650, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 651, 653, 265, 655, 654, 656, + 658, 657, 660, 676, 370, 371, 372, 682, 689, 1319, + 695, 696, 702, 135, 729, 373, 755, 152, 349, 374, + 733, 375, 108, 750, 734, 761, 762, 791, 1331, 546, + 815, 817, 843, 852, 265, 426, 426, 853, 1338, 1340, + 856, 859, 863, 1345, 864, 1272, 866, 405, 406, 892, + 894, 913, 895, 265, -528, 897, 1465, 905, 916, 350, 351, 352, 353, 354, 355, 356, 357, 358, 265, 265, - 989, 999, 359, 360, 361, 362, 1001, 1004, 1010, 1012, - 363, 364, 365, 1015, 1019, 366, 1020, 367, 1016, 1021, - 707, 1023, 1024, 1338, 1340, 1390, 1025, 1027, 368, 1028, - 1619, 369, 1029, 1030, 1621, 1031, 1032, 1033, 1034, 1401, - 1402, 1403, 1035, 1036, 1039, 1043, 1069, 1068, 1096, 1090, - 265, 1077, 1111, 1078, 1099, 1112, 1079, 670, 1084, 1631, - 1103, 1118, 1120, 1129, 265, 265, 265, 1137, 1138, 399, - 1141, 1165, 1407, 1163, 1177, 265, 1178, 1290, 1179, 1180, - 426, 1191, 1192, 1204, 426, 1193, 1196, 1206, 1432, 1207, - 1213, 1216, 1219, 426, 1220, 426, 1221, 1222, 426, 1227, - 1225, 1226, 1243, 1244, 1249, 1250, 1263, 1269, 1274, 1426, - 1270, 1277, 1280, 265, 1281, 464, 1284, 1293, 1297, 1330, - 1309, 1322, 1347, 1348, 1349, 1352, 1353, 1355, 1354, 1483, - 1356, 1488, 341, 1357, 1359, 1367, 370, 371, 372, 1370, - 1371, 1366, 1372, 1381, 1382, 1392, 1487, 373, 1888, 1383, - 1384, 374, 426, 375, 108, 1498, 1385, 1386, 1387, 1502, - 1388, 1389, 1393, 1394, 1395, 794, 1397, 796, 1398, 798, - 799, 265, 1396, 1399, 1404, 1409, 1410, 806, 807, 1416, - 265, 1415, 518, 1433, 265, 464, 1636, 1422, 1423, 1425, - 1439, 1444, 1427, 1445, 1431, 1447, 1450, 1451, 1455, 1627, - 464, 1457, 1640, 1640, 1458, 1461, 1471, 1477, 1491, 1547, - 1548, 1549, 1459, 1490, 1492, 1475, 1493, 1554, 1495, 1499, - 1500, 1501, 1505, 1503, 1506, 1507, 1508, 1509, 1510, 1511, - 1512, 1513, 1569, 1514, 265, 265, 265, 1535, 1524, 1531, - 1541, 1545, 265, 1577, 1550, 1762, 1557, 1551, 1555, 1556, - 1571, 1585, 1572, 1563, 1564, 1586, 1565, 265, 1566, 1578, - 1591, 1579, 1592, 1593, 1580, 1597, 1581, 1582, 265, 1623, - 1614, 1629, 1649, 1611, 1658, 1601, 265, 1583, 1650, 265, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 664, 542, 543, 544, 545, 1588, 1604, - 1689, 1211, 546, 922, 1408, 924, 925, 926, 927, 928, - 929, 1618, 931, 932, 933, 934, 1642, 1628, 939, 940, - 941, 1646, 1647, 464, 1622, 1652, 1655, 1657, 1663, 1664, - 1661, 1671, 1672, 1673, 341, 1674, 1676, 1675, 1677, 1759, - 432, 432, 1683, 1662, 1678, 1092, 265, 1690, 1691, 1693, - 1716, 1712, 1717, 1726, 1730, 1748, 1750, 1758, 1749, 1761, - 426, 1766, 720, 1778, -530, 1784, 1789, 1790, 265, 1791, - 1804, 1802, 1797, 265, 1803, 1809, 1810, 1816, 1828, 1812, - 1818, 1813, 1819, 1830, 1835, 1765, 1836, 1845, 1005, 1842, - 1847, 1843, 1844, 1848, 1850, 518, 1013, 1849, 1852, 1853, - 1873, 1891, 1896, 1858, 1907, 1892, 1702, 1908, 1689, 1909, - 1910, 1918, 1912, 1921, 1695, 1925, -531, 1927, 780, 1922, - 1929, 1932, 1894, 1935, 1936, 788, 789, 1938, 1942, 1943, - 1940, 1954, 1946, 1955, 1957, 1965, 1958, 1574, 1969, 265, - 1646, 1974, 265, 265, 808, 1979, 1739, 1993, 2009, 464, - 2021, 418, 418, 1744, 1747, 1731, 2022, 2023, 2024, 1911, - 2026, 2027, 2028, 2032, 2044, 265, 2048, 2056, 2061, 2029, - 2043, 265, 1756, 2051, 834, 2062, 2065, 2066, 1987, 1473, - 265, 728, 1527, 1669, 1755, 1866, 1839, 1692, 426, 113, - 988, 426, 1497, 124, 125, 126, 1886, 1764, 855, 464, - 464, 132, 1613, 1760, 1745, 0, 1641, 1006, 707, 265, - 707, 0, 1956, 0, 0, 0, 1247, 0, 0, 0, - 341, 0, 265, 432, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 1646, 0, 0, 546, 0, 464, 464, 464, 0, 1978, - 0, 0, 432, 1670, 0, 0, 0, 0, 0, 0, + 952, 958, 359, 360, 361, 362, 962, 963, 1290, 964, + 363, 364, 365, 965, 966, 366, 974, 367, 973, 975, + 707, 985, 986, 999, 989, 1390, 1001, 1004, 368, 1010, + 1012, 369, 1623, 1015, 1019, 1016, 1625, 1020, 1021, 1401, + 1402, 1403, 1023, 1024, 1025, 1027, 1028, 1029, 1030, 1031, + 265, 1032, 1033, 1034, 1035, 1036, 1635, 1039, 1043, 1320, + 1321, 1068, 1069, 1096, 265, 265, 265, 1077, 1090, 399, + 1078, 1079, 1084, 1099, 1103, 265, 1111, 1112, 1118, 1120, + 426, 1129, 1137, 1138, 426, 1163, 1141, 1165, 1434, 1177, + 1485, 1178, 1490, 426, 1179, 426, 1180, 1193, 426, 1191, + 1192, 1196, 1204, 1206, 1207, 1213, 1216, 1221, 1220, 1428, + 1222, 1227, 1219, 265, 533, 534, 535, 536, 537, 538, + 539, 540, 664, 542, 543, 544, 545, 1892, 1338, 1340, + 1225, 546, 341, 1226, 1243, 1244, 370, 371, 372, 1263, + 1249, 1250, 1269, 1270, 1274, 1277, 1489, 373, 1281, 1284, + 1280, 374, 426, 375, 108, 1500, 1293, 1297, 1309, 1504, + 1322, 1347, 1330, 1348, 1349, 1352, 1354, 1353, 1355, 1356, + 1357, 265, 1359, 1366, 1414, 1367, 1370, 1372, 1416, 1371, + 265, 1381, 1382, 690, 265, 691, 1640, 1420, 1383, 1421, + 1384, 1385, 1423, 1386, 1387, 1388, 1389, 1392, 1393, 1394, + 1395, 1396, 1644, 1644, 1397, 1398, 1399, 1404, 1412, 1549, + 1550, 1551, 1417, 1424, 1427, 1418, 1441, 1556, 1425, 1429, + 1433, 1446, 1435, 1447, 1453, 1449, 1452, 1457, 1459, 1460, + 1461, 1463, 1571, 1618, 265, 265, 265, 1473, 1477, 1479, + 1492, 1494, 265, 1579, 1766, 1493, 1466, 1495, 1497, 1501, + 1502, 1587, 1503, 1505, 1507, 1508, 1509, 265, 1510, 1511, + 1512, 1513, 1514, 1515, 1516, 1526, 1533, 1537, 265, 1543, + 152, 349, 1552, 1547, 1568, 1553, 265, 1557, 1559, 265, + 1573, 1574, 1588, 1593, 1594, 1595, 1558, 1599, 1600, 1601, + 1627, 1667, 1565, 1566, 1567, 1633, 1580, 1581, 1582, 1653, + 1583, 1584, 1585, 1590, 1654, 1615, 1631, 1646, 1656, 1605, + 1608, 1211, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 1659, 1622, 1650, 1662, 359, 360, 361, 362, 1651, + 1632, 1626, 1668, 363, 364, 365, 341, 1661, 366, 1675, + 367, 1665, 432, 432, 1676, 1666, 1677, 1678, 265, 1680, + 1681, 368, 1682, 1679, 369, 1687, 1092, 1694, 1695, 1697, + 1720, 1716, 426, 1721, 1730, 1734, 1752, 1753, 1576, 1706, + 265, 1754, 1762, 1763, 1765, 265, 1770, 720, -532, 1782, + 1788, 1793, 1794, 465, 1795, 1808, 1801, 1769, 1806, 1807, + 1813, 1814, 399, 1820, 1834, 1822, 1816, 1817, 1823, 1832, + 1839, 1849, 1846, 1851, 1840, 1852, 1854, 1693, 1856, 1847, + 1848, 1743, 1853, 1857, 1877, 1862, 1699, 1895, 1748, 1751, + 1900, 1896, 1911, 1912, 1914, 1922, 1898, 1939, 1913, 1942, + 1929, 1946, 1947, -533, 1958, 1916, 1959, 1760, 1933, 1925, + 1926, 265, 1650, 1961, 265, 265, 1944, 1973, 1931, 1936, + 1940, 1950, 1962, 418, 418, 1978, 1660, 1735, 1915, 370, + 371, 372, 1983, 1969, 2025, 2026, 2027, 265, 554, 2028, + 373, 1997, 2013, 265, 374, 2030, 375, 108, 2031, 2032, + 2033, 2036, 265, 2047, 2048, 2052, 1674, 2060, 1759, 2065, + 2055, 2066, 426, 2069, 2070, 426, 1991, 1475, 1529, 1870, + 728, 1768, 1673, 1843, 1696, 1499, 113, 988, 124, 1640, + 125, 126, 707, 265, 707, 1890, 1960, 1693, 1617, 132, + 1247, 1645, 0, 855, 341, 1006, 265, 432, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 1650, 0, 1764, 1749, 546, 0, + 0, 0, 0, 1982, 0, 0, 432, 0, 0, 0, + 0, 0, 1844, 0, 0, 0, 0, 0, 0, 265, + 1723, 1724, 1725, 1726, 1727, 1729, 0, 0, 1821, 0, + 1407, 0, 0, 0, 0, 0, 1744, 0, 0, 1746, + 0, 671, 0, 0, 0, 0, 0, 0, 0, 0, + 1874, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, - 0, 0, 0, 0, 1817, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 464, 0, 0, 0, 0, 0, 1734, 1840, 0, 265, + 1863, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1871, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, + 1650, 0, 0, 0, 0, 265, 0, 0, 0, 0, + 1875, 0, 0, 0, 1897, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 265, 0, + 0, 0, 418, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 0, 265, 0, 0, 0, 812, 0, 0, + 0, 0, 0, 0, 1650, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1968, 0, 341, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1938, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 265, 464, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1870, 1859, 1719, 1720, 1721, - 1722, 1723, 1725, 0, 464, 0, 1867, 0, 0, 0, - 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 1272, 0, 0, 0, 1646, 0, 0, 0, - 0, 265, 0, 0, 0, 0, 1871, 0, 0, 0, - 1893, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 834, 265, 1041, 0, 265, 0, 0, 0, 418, 0, - 0, 0, 0, 0, 0, 265, 0, 0, 0, 265, + 0, 0, 0, 0, 1738, 0, 0, 860, 861, 0, + 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 707, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, + 546, 0, 1408, 901, 902, 903, 1902, 1903, 1904, 1905, + 1906, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, + 265, 265, 265, 265, 0, 0, 0, 0, 0, 707, + 0, 0, 0, 0, 0, 0, 0, 1650, 944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1646, 0, 0, 0, 464, 0, 0, 0, 387, 0, - 0, 0, 0, 0, 341, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1934, 265, 1320, 1321, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 0, 0, 423, - 0, 0, 0, 428, 0, 464, 0, 0, 0, 265, - 0, 1964, 0, 0, 0, 0, 0, 0, 464, 0, - 440, 441, 442, 707, 444, 445, 446, 0, 448, 449, - 450, 451, 452, 453, 454, 464, 456, 457, 458, 459, - 0, 0, 0, 463, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, - 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 1735, 0, 0, 265, 265, 265, 265, 265, - 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, - 0, 0, 0, 1646, 0, 0, 0, 0, 0, 0, - 0, 1412, 0, 0, 0, 1414, 0, 707, 0, 515, - 517, 519, 520, 463, 1418, 0, 1419, 0, 265, 1421, - 0, 1898, 1899, 1900, 1901, 1902, 0, 553, 463, 0, - 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 568, 0, 1646, 0, 0, 0, 0, - 465, 0, 0, 578, 579, 0, 426, 0, 0, 579, - 0, 0, 464, 0, 0, 0, 0, 0, 0, 600, - 265, 0, 0, 1464, 0, 0, 0, 426, 426, 1933, - 0, 0, 0, 1937, 0, 0, 0, 0, 0, 0, - 0, 426, 620, 0, 0, 0, 623, 624, 625, 0, - 627, 0, 0, 0, 630, 631, 632, 0, 0, 633, - 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 707, 0, 0, 1937, 0, 0, 0, 1941, 0, + 0, 0, 265, 0, 0, 0, 0, 0, 0, 694, + 0, 0, 0, 976, 0, 0, 387, 0, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1650, + 0, 0, 995, 0, 0, 0, 0, 0, 1002, 0, + 426, 0, 0, 413, 0, 1974, 0, 423, 0, 1976, + 0, 428, 527, 0, 265, 0, 0, 0, 0, 0, + 0, 426, 426, 0, 0, 1988, 0, 0, 440, 441, + 442, 0, 444, 445, 446, 426, 448, 449, 450, 451, + 452, 453, 454, 0, 456, 457, 458, 459, 0, 0, + 0, 463, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, + 2022, 2023, 1071, 0, 546, 0, 0, 0, 0, 0, + 1739, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1970, 0, 0, 0, 1972, 554, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, - 1984, 463, 672, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 683, 684, - 0, 0, 0, 0, 0, 694, 0, 0, 0, 0, - 0, 0, 708, 0, 0, 464, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2018, 2019, 0, 0, 0, - 0, 0, 0, 0, 738, 0, 0, 0, 742, 0, + 0, 0, 0, 1102, 0, 2061, 2063, 515, 517, 519, + 520, 463, 0, 0, 0, 0, 1110, 0, 0, 2071, + 0, 0, 0, 0, 0, 553, 463, 0, 0, 0, + 0, 0, 0, 1128, 0, 0, 0, 0, 0, 0, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 578, 579, 0, 0, 0, 0, 579, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 600, 0, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, + 620, 546, 0, 0, 623, 624, 625, 0, 627, 0, + 0, 0, 630, 631, 632, 0, 0, 633, 0, 464, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 757, 542, 543, 544, 545, 0, 0, + 0, 0, 546, 0, 690, 0, 691, 0, 0, 0, + 0, 0, 0, 0, 0, 663, 0, 0, 0, 463, + 672, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1271, 0, 0, 0, 0, 0, 683, 684, 0, 0, + 0, 0, 0, 0, 0, 0, 518, 0, 0, 464, + 708, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, + 0, 0, 738, 0, 0, 0, 742, 0, 0, 0, + 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 756, 517, 0, 0, 0, 760, 0, 0, 763, 764, + 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, + 775, 776, 777, 778, 779, 781, 782, 783, 784, 785, + 786, 787, 787, 0, 792, 793, 0, 795, 0, 0, + 0, 0, 0, 801, 0, 804, 0, 0, 0, 0, + 787, 0, 0, 0, 0, 463, 0, 0, 0, 0, + 0, 0, 0, 1346, 0, 709, 818, 819, 820, 821, + 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 833, 835, 836, 837, 838, 839, 0, 841, 842, 0, + 1234, 0, 0, 0, 849, 850, 851, 464, 0, 0, + 0, 0, 857, 858, 0, 463, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 756, 517, 0, 0, 0, 760, 0, 0, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 781, 782, 783, - 784, 785, 786, 787, 787, 0, 792, 793, 671, 795, - 0, 464, 0, 0, 0, 801, 0, 804, 0, 0, - 0, 0, 787, 0, 0, 0, 0, 463, 0, 0, - 0, 1656, 0, 0, 0, 0, 0, 527, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, - 830, 831, 833, 835, 836, 837, 838, 839, 0, 841, - 842, 0, 0, 0, 0, 0, 849, 850, 851, 709, - 0, 0, 0, 0, 857, 858, 0, 463, 463, 0, + 0, 0, 0, 0, 515, 663, 877, 0, 0, 0, + 882, 883, 884, 885, 886, 887, 888, 889, 890, 1413, + 0, 0, 0, 896, 0, 898, 0, 899, 0, 0, + 0, 463, 463, 463, 904, 0, 906, 907, 908, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 515, 663, 877, 0, - 0, 1234, 882, 883, 884, 885, 886, 887, 888, 889, - 890, 0, 0, 0, 0, 896, 0, 898, 0, 899, - 0, 0, 0, 463, 463, 463, 904, 0, 906, 907, - 908, 0, 0, 0, 812, 528, 529, 530, 531, 532, + 0, 0, 930, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 780, 0, 0, 0, 463, 0, 0, 788, + 789, 947, 0, 948, 0, 0, 841, 842, 0, 0, + 0, 0, 0, 0, 0, 961, 0, 0, 808, 0, + 0, 967, 0, 464, 0, 1308, 0, 0, 0, 0, + 0, 463, 0, 0, 0, 0, 0, 982, 983, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, + 463, 0, 997, 998, 0, 0, 463, 1003, 1350, 0, + 0, 997, 0, 0, 0, 1391, 0, 0, 1014, 0, + 0, 0, 1017, 464, 464, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, - 543, 544, 545, 0, 930, 0, 0, 546, 0, 1740, - 0, 0, 1742, 0, 0, 0, 0, 0, 463, 0, - 0, 0, 0, 947, 0, 948, 0, 0, 841, 842, - 0, 0, 0, 0, 860, 861, 0, 961, 0, 0, - 0, 0, 0, 967, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 463, 0, 0, 0, 0, 0, 982, - 983, 0, 0, 0, 0, 464, 0, 0, 0, 0, - 0, 0, 463, 0, 997, 998, 0, 0, 463, 1003, - 901, 902, 903, 997, 0, 0, 0, 0, 0, 0, - 1014, 0, 0, 0, 1017, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 757, 542, - 543, 544, 545, 0, 0, 0, 1037, 546, 833, 690, - 1040, 691, 0, 0, 0, 944, 0, 0, 0, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 463, 0, 0, 0, 0, 0, 0, 1668, - 976, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 664, 542, 543, 544, 545, 995, - 157, 158, 0, 546, 0, 1002, 0, 0, 0, 0, - 0, 0, 0, 463, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 463, 0, 0, 0, - 0, 0, 0, 1116, 0, 0, 0, 1122, 0, 0, - 0, 0, 0, 463, 0, 0, 0, 0, 464, 464, - 0, 1135, 1136, 0, 0, 0, 0, 1139, 0, 0, + 543, 544, 545, 0, 1037, 0, 833, 546, 1040, 0, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 664, 542, 543, 544, 545, 0, 464, + 464, 464, 546, 0, 0, 0, 0, 0, 0, 0, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1589, 0, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 464, 0, 0, 546, 0, 0, + 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 463, 0, 0, 0, 0, 0, + 0, 1116, 0, 0, 0, 1122, 0, 0, 0, 464, + 0, 463, 0, 0, 0, 0, 0, 0, 0, 1135, + 1136, 0, 0, 0, 0, 1139, 0, 0, 464, 0, + 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, + 0, 1164, 0, 0, 1166, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 1181, 0, 1183, 1184, 546, 0, 0, + 0, 0, 0, 0, 834, 0, 1041, 0, 0, 0, + 0, 0, 0, 0, 1202, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 0, 1224, 0, 546, 464, 0, + 0, 0, 1230, 1231, 1232, 1233, 0, 0, 1702, 1703, + 1242, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1267, 1268, 0, 0, 463, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1164, 0, 0, 1166, 464, 0, 1071, + 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 464, + 0, 0, 0, 0, 0, 0, 0, 0, 463, 0, + 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1311, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1312, 1313, 1314, 0, 0, 0, + 0, 1316, 1317, 1432, 1318, 0, 0, 0, 0, 0, + 0, 0, 0, 1324, 1325, 0, 0, 0, 0, 0, + 0, 1328, 1329, 0, 0, 0, 0, 0, 1333, 1334, + 1335, 0, 0, 0, 0, 0, 1341, 1342, 0, 0, + 0, 463, 0, 0, 0, 0, 0, 0, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 0, 0, 0, 38, 39, 40, 41, 157, 158, + 43, 0, 1369, 0, 0, 0, 703, 49, 0, 0, + 51, 704, 1837, 54, 705, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1181, 0, 1183, 1184, 0, + 0, 0, 71, 0, 0, 1400, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 463, 0, 0, + 0, 0, 0, 0, 0, 1415, 85, 86, 87, 0, + 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1341, 1342, 1448, 0, + 0, 1431, 1891, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1440, 0, 1901, 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 1202, 0, 0, 0, - 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1110, 0, 0, 0, 1224, 0, 0, - 0, 0, 0, 0, 1230, 1231, 1232, 1233, 0, 0, - 1128, 0, 1242, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1267, 1268, 0, 1308, - 463, 0, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, - 499, 0, 501, 502, 0, 0, 0, 0, 504, 505, - 0, 0, 0, 0, 0, 0, 0, 518, 510, 511, - 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 464, 0, 0, 0, 0, 0, 1311, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1312, 1313, 1314, 0, - 0, 0, 0, 1316, 1317, 0, 1318, 2041, 0, 0, - 0, 0, 0, 0, 0, 1324, 1325, 0, 0, 0, - 0, 0, 0, 1328, 1329, 0, 0, 1271, 2057, 2059, - 1333, 1334, 1335, 0, 0, 0, 0, 0, 1341, 1342, - 0, 0, 2067, 463, 0, 0, 0, 0, 1391, 0, - 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 464, 0, 0, 0, 0, - 0, 0, 0, 0, 1369, 0, 0, 1310, 634, 635, - 636, 0, 0, 0, 640, 641, 642, 643, 644, 645, - 646, 0, 647, 0, 0, 0, 648, 649, 0, 0, - 652, 0, 0, 0, 0, 0, 0, 1400, 0, 0, - 0, 0, 0, 662, 0, 0, 0, 0, 0, 463, - 0, 0, 0, 0, 0, 0, 0, 1413, 0, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 0, 1341, 1342, - 1346, 546, 0, 1429, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1438, 0, 0, - 1443, 0, 0, 152, 349, 0, 0, 0, 0, 0, - 0, 1430, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 464, 464, 464, 464, 464, 0, 1465, 0, 0, - 1468, 1469, 0, 0, 0, 0, 0, 0, 1476, 0, - 1478, 0, 1476, 1482, 0, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 1446, 0, 1411, 0, 359, 360, - 361, 362, 0, 0, 0, 0, 363, 364, 365, 0, - 0, 366, 0, 367, 0, 0, 0, 693, 0, 0, - 464, 0, 816, 0, 368, 0, 0, 369, 528, 529, + 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1467, 0, 0, 1470, 1471, + 0, 878, 0, 0, 0, 0, 1478, 0, 1480, 464, + 1478, 1484, 0, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, + 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, 494, 495, 496, 497, 498, 499, 0, + 501, 502, 0, 0, 0, 0, 504, 505, 0, 0, + 0, 0, 0, 1555, 0, 464, 510, 511, 0, 0, + 1562, 1563, 1564, 1984, 1985, 1986, 1987, 1989, 0, 1570, + 0, 1572, 0, 0, 0, 0, 0, 0, 1575, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 463, 0, 0, 0, 0, 1591, 0, 0, 0, + 0, 0, 0, 0, 1596, 1597, 1598, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1609, 0, 0, 0, + 0, 0, 2029, 0, 0, 0, 1621, 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 1553, 0, 0, 0, 0, - 0, 0, 1560, 1561, 1562, 399, 0, 0, 0, 0, - 0, 1568, 0, 1570, 0, 0, 0, 0, 0, 0, - 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 463, 0, 0, 0, 0, 1589, 0, - 0, 0, 0, 0, 0, 0, 1594, 1595, 1596, 0, - 802, 0, 0, 0, 0, 0, 1605, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1617, 0, 0, 0, - 0, 0, 370, 371, 372, 0, 0, 0, 0, 0, - 0, 0, 0, 373, 0, 0, 0, 374, 0, 375, - 108, 0, 1634, 0, 0, 0, 0, 846, 1643, 1644, - 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 664, 542, 543, 544, 545, 690, - 0, 691, 1636, 546, 0, 0, 0, 1667, 0, 0, + 540, 664, 542, 543, 544, 545, 0, 0, 379, 349, + 546, 0, 1638, 0, 0, 0, 1569, 0, 1647, 1648, + 0, 0, 0, 0, 0, 0, 634, 635, 636, 0, + 0, 0, 640, 641, 642, 643, 644, 645, 646, 0, + 647, 0, 0, 0, 648, 649, 0, 1671, 652, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 0, + 0, 662, 0, 359, 360, 361, 362, 0, 0, 0, + 0, 363, 364, 365, 0, 0, 366, 0, 367, 0, + 0, 0, 1683, 1684, 1685, 0, 0, 0, 0, 368, + 0, 0, 369, 1686, 0, 0, 0, 0, 1689, 1690, + 1691, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1698, 0, 0, 0, 0, 463, 463, 1704, 464, + 1705, 0, 0, 0, 0, 0, 1713, 1714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1587, 0, 0, 0, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, - 544, 545, 1679, 1680, 1681, 0, 546, 0, 0, 1567, - 0, 0, 0, 1682, 0, 0, 0, 0, 1685, 1686, - 1687, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1694, 0, 0, 0, 0, 463, 463, 1700, 0, - 1701, 0, 0, 0, 0, 0, 1709, 1710, 0, 0, + 0, 0, 0, 0, 0, 463, 0, 0, 0, 1732, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1742, 0, 0, 1745, 0, 0, 0, 1747, + 0, 0, 0, 0, 0, 0, 0, 0, 1690, 1691, + 0, 1756, 0, 0, 1624, 0, 0, 0, 0, 1761, + 0, 0, 0, 0, 0, 0, 0, 370, 371, 372, + 816, 0, 0, 0, 0, 1774, 0, 0, 373, 0, + 1780, 1781, 374, 0, 375, 1672, 0, 0, 1628, 0, + 1783, 0, 0, 1784, 1783, 693, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 0, 0, 0, 1805, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1815, + 0, 0, 0, 0, 0, 0, 0, 0, 1824, 0, + 0, 0, 0, 0, 464, 464, 0, 517, 0, 0, + 0, 0, 0, 0, 0, 0, 1835, 1836, 0, 0, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 464, 0, 0, 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 463, 0, 0, 0, 1728, + 0, 0, 0, 0, 1860, 1861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1738, 0, 0, 1741, 0, 0, 0, 1743, 0, 1093, - 0, 0, 0, 0, 0, 0, 1686, 1687, 0, 1752, - 0, 0, 0, 0, 0, 0, 0, 1757, 0, 0, + 1873, 0, 0, 1876, 0, 0, 0, 0, 1879, 0, + 0, 1881, 0, 0, 0, 846, 0, 0, 0, 0, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 463, 0, 0, 0, 0, + 0, 0, 0, 1907, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, + 544, 545, 0, 0, 0, 0, 546, 0, 1918, 0, + 1634, 0, 0, 0, 1923, 0, 0, 1924, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 664, 542, 543, 544, 545, 1733, 0, 0, 0, + 546, 0, 0, 1945, 0, 518, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 464, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1963, 1964, + 1812, 0, 0, 0, 0, 0, 0, 1093, 0, 0, + 1970, 1971, 0, 1972, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1838, 1980, 0, 0, 0, + 0, 463, 463, 463, 463, 463, 0, 0, 0, 0, + 1109, 1780, 0, 0, 0, 1996, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1109, 1770, 0, 0, 0, 0, 1776, 1777, - 0, 0, 0, 0, 0, 0, 1620, 0, 1779, 0, - 0, 1780, 1779, 1698, 1699, 0, 0, 0, 1044, 1045, - 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 0, - 1056, 1057, 1058, 1059, 0, 1061, 1062, 1063, 1064, 527, - 0, 1801, 0, 0, 0, 0, 0, 0, 0, 1074, - 0, 1076, 0, 0, 0, 0, 0, 1811, 1082, 0, - 0, 0, 1086, 1087, 0, 0, 1820, 0, 0, 0, - 0, 1098, 0, 0, 0, 517, 0, 0, 0, 0, - 0, 0, 0, 0, 1831, 1832, 0, 0, 463, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 1624, 0, 0, - 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1856, 1857, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1869, 0, - 0, 1872, 0, 0, 0, 0, 1875, 0, 0, 1877, - 0, 0, 0, 0, 0, 0, 0, 1630, 463, 1283, + 0, 0, 2016, 464, 0, 0, 0, 2019, 2020, 2021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 463, 0, 0, 1187, 1189, 1190, 0, - 0, 1903, 1194, 1195, 0, 0, 1198, 1199, 1200, 1201, - 0, 1203, 0, 0, 0, 1833, 1209, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1914, 0, 0, 0, - 0, 0, 1919, 0, 0, 1920, 528, 529, 530, 531, + 463, 0, 0, 0, 0, 0, 1044, 1045, 1046, 1047, + 1048, 1049, 1050, 1051, 1052, 1053, 1054, 0, 1056, 1057, + 1058, 1059, 0, 1061, 1062, 1063, 1064, 0, 2049, 2050, + 2051, 0, 0, 0, 0, 0, 0, 1074, 0, 1076, + 0, 0, 0, 0, 0, 0, 1082, 0, 0, 0, + 1086, 1087, 0, 0, 0, 0, 0, 0, 0, 1098, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, + 0, 0, 546, 0, 0, 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, - 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 1941, 0, 0, 0, 1332, 0, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 1887, 1959, 1960, 0, 546, - 0, 0, 1288, 1289, 0, 0, 0, 0, 1966, 1967, - 1897, 1968, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1976, 0, 0, 0, 0, 463, - 463, 463, 463, 463, 0, 0, 0, 0, 0, 1776, - 0, 0, 0, 1992, 0, 0, 0, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 2012, 0, 0, 0, 0, 2015, 2016, 2017, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 463, 0, - 0, 0, 0, 0, 1343, 0, 0, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 664, 542, 543, 544, 545, 0, 2045, 2046, 2047, 546, - 0, 0, 0, 0, 0, 0, 0, 1453, 1454, 0, - 0, 0, 0, 0, 0, 0, 1980, 1981, 1982, 1983, - 1985, 0, 0, 0, 189, 6, 330, 0, 0, 0, - 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2025, 222, 223, 224, 225, - 1729, 0, 0, 0, 226, 1532, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1540, 227, 228, 229, 0, - 0, 0, 0, 0, 230, 21, 0, 231, 0, 0, - 0, 0, 232, 1452, 0, 233, 0, 0, 234, 0, - 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 236, 0, 50, 0, 0, 237, 0, 238, 1484, 0, - 0, 0, 0, 0, 60, 61, 62, 63, 64, 0, - 0, 66, 67, 68, 69, 70, 0, 0, 0, 74, - 0, 0, 77, 0, 0, 0, 1516, 1517, 1518, 1519, - 1520, 0, 0, 0, 0, 1525, 1526, 0, 1528, 0, - 1530, 0, 0, 0, 1534, 0, 0, 1536, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1544, - 0, 0, 0, 239, 0, 0, 0, 240, 241, 0, - 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, - 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1665, 0, 0, 0, 0, 248, 249, - 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, - 331, 0, 0, 0, 252, 1808, 0, 253, 0, 0, - 0, 0, 0, 0, 0, 0, 1600, 0, 1603, 0, - 0, 0, 1610, 0, 1612, 0, 0, 0, 0, 0, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 464, + 464, 464, 464, 464, 0, 0, 0, 1283, 0, 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 0, 1637, 0, - 0, 0, 0, 0, 0, 0, 189, 6, 349, 0, - 0, 0, 0, 190, 191, 192, 0, 0, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 1834, 0, 1485, - 351, 352, 353, 354, 355, 356, 357, 358, 222, 223, - 224, 225, 359, 360, 361, 362, 226, 0, 0, 0, - 363, 364, 365, 0, 0, 366, 0, 367, 227, 228, - 229, 0, 0, 0, 0, 1688, 230, 21, 368, 231, - 0, 369, 0, 0, 232, 0, 0, 233, 0, 0, - 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, - 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, - 0, 0, 236, 0, 50, 0, 0, 237, 0, 238, - 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, - 64, 0, 0, 66, 67, 68, 69, 70, 0, 0, - 0, 74, 0, 0, 77, 528, 529, 530, 531, 532, + 0, 0, 546, 0, 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, - 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 1767, 0, 0, 1768, 0, 0, 0, - 0, 0, 0, 0, 0, 239, 370, 371, 372, 240, - 241, 0, 0, 0, 242, 243, 244, 373, 245, 246, - 247, 374, 0, 375, 108, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1793, 1794, 0, 1796, 1846, 0, - 248, 249, 0, 0, 0, 0, 0, 250, 0, 0, - 0, 0, 331, 0, 0, 0, 1486, 0, 0, 253, - 0, 0, 0, 0, 0, 0, 0, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 0, 1837, 1838, 189, 6, - 349, 0, 0, 0, 0, 190, 191, 192, 0, 0, + 543, 544, 545, 0, 1187, 1189, 1190, 546, 464, 0, + 1194, 1195, 0, 0, 1198, 1199, 1200, 1201, 0, 1203, + 0, 0, 0, 0, 1209, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 189, 6, + 349, 0, 0, 1332, 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, - 1868, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 0, 1487, 351, 352, 353, 354, 355, 356, 357, 358, 222, 223, 224, 225, 359, 360, 361, 362, 226, 0, - 0, 0, 363, 364, 365, 0, 0, 366, 0, 367, + 1288, 1289, 363, 364, 365, 0, 0, 366, 0, 367, 227, 228, 229, 0, 0, 0, 0, 0, 230, 21, 368, 231, 0, 369, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, 0, 0, 0, - 0, 1953, 0, 0, 236, 0, 50, 0, 0, 237, + 0, 0, 0, 0, 236, 0, 50, 0, 1850, 237, 0, 238, 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, 64, 0, 0, 66, 67, 68, 69, 70, - 0, 0, 0, 74, 0, 0, 77, 0, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 1999, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 239, 370, 371, - 372, 240, 241, 0, 0, 0, 242, 243, 244, 373, + 0, 0, 0, 74, 0, 0, 77, 0, 0, 0, + 0, 0, 1343, 0, 0, 1455, 1456, 0, 0, 0, + 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 1957, 909, 0, 239, 370, 371, + 372, 240, 241, 870, 0, 0, 242, 243, 244, 373, 245, 246, 247, 374, 0, 375, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 249, 0, 0, 0, 0, 0, 250, - 0, 0, 0, 0, 331, 189, 152, 349, 252, 398, - 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 385, 211, 212, 213, 214, 215, - 216, 2034, 0, 0, 0, 0, 0, 0, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 222, 223, 224, - 225, 359, 360, 361, 362, 226, 0, 0, 0, 363, - 364, 365, 0, 0, 366, 0, 367, 227, 228, 229, - 0, 0, 1350, 0, 0, 230, 21, 368, 231, 0, - 369, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, - 542, 543, 544, 545, 0, 0, 0, 0, 546, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 400, 0, 0, - 0, 546, 0, 0, 239, 370, 371, 372, 240, 0, - 0, 0, 0, 242, 243, 244, 373, 245, 246, 247, - 374, 0, 375, 108, 401, 402, 403, 404, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, - 386, 0, 0, 0, 0, 0, 250, 0, 405, 406, - 0, 407, 0, 408, 189, 6, 1576, 409, 253, 0, + 0, 0, 0, 1534, 331, 0, 0, 0, 1488, 0, + 0, 253, 0, 1542, 189, 152, 0, 0, 0, 0, 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, + 207, 208, 209, 385, 211, 212, 213, 214, 215, 216, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1454, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 0, - 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, - 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, - 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 236, 0, 50, 0, 0, 237, 0, 238, 0, 0, - 0, 0, 0, 0, 60, 61, 62, 63, 64, 0, - 0, 66, 67, 68, 69, 70, 0, 0, 0, 74, - 0, 0, 77, 0, 0, 0, 0, 0, 0, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 0, 0, 0, 38, 39, 40, 41, 0, - 0, 43, 0, 0, 0, 0, 0, 703, 49, 0, - 0, 51, 704, 239, 54, 705, 0, 240, 241, 0, - 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, - 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 248, 249, - 0, 0, 0, 0, 0, 250, 0, 85, 86, 87, - 331, 189, 6, 0, 252, 0, 0, 253, 190, 191, - 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, - 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 878, 227, 228, 229, 0, 0, 7, 8, - 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, - 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 0, 50, - 0, 0, 237, 0, 238, 0, 0, 0, 0, 0, - 0, 60, 61, 62, 63, 64, 0, 0, 66, 67, - 68, 69, 70, 0, 0, 0, 74, 0, 0, 77, - 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, - 0, 0, 38, 39, 40, 41, 0, 0, 43, 0, - 0, 0, 0, 0, 703, 49, 0, 0, 51, 704, - 239, 54, 705, 0, 240, 241, 0, 0, 0, 242, - 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, - 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 585, 1724, 0, 0, 0, - 0, 0, 250, 0, 85, 86, 87, 587, 189, 6, - 0, 293, 521, 0, 253, 190, 191, 192, 0, 0, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, - 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, - 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, - 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 236, 0, 50, 0, 0, 237, - 0, 238, 0, 0, 0, 0, 0, 0, 60, 61, - 62, 63, 64, 0, 0, 66, 67, 68, 69, 70, - 0, 0, 0, 74, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 0, 0, 0, 38, - 39, 40, 41, 0, 0, 43, 0, 0, 0, 0, - 0, 703, 49, 0, 0, 51, 704, 239, 54, 705, - 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, - 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, + 0, 0, 0, 0, 230, 21, 1486, 231, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, + 546, 0, 0, 0, 1518, 1519, 1520, 1521, 1522, 0, + 0, 0, 0, 1527, 1528, 0, 1530, 0, 1532, 0, + 0, 0, 1536, 0, 0, 1538, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1546, 0, 0, + 0, 0, 0, 1669, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, + 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 248, 249, 0, 0, 0, 0, 0, 250, - 0, 85, 86, 87, 251, 189, 6, 0, 252, 0, - 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, - 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 945, 227, 228, 229, - 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, - 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 236, 0, 50, 0, 0, 237, 0, 238, 0, - 0, 0, 0, 0, 0, 60, 61, 62, 63, 64, - 0, 0, 66, 67, 68, 69, 70, 0, 0, 0, - 74, 0, 0, 77, 0, 0, 0, 0, 0, 0, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 0, 0, 0, 38, 39, 40, 41, - 0, 0, 43, 0, 0, 0, 0, 0, 703, 49, - 0, 0, 51, 704, 239, 54, 705, 0, 240, 241, - 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, - 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, - 249, 0, 0, 0, 0, 0, 250, 0, 85, 86, - 87, 331, 189, 6, 0, 252, 0, 0, 253, 190, - 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, + 0, 0, 0, 239, 0, 0, 0, 240, 0, 0, + 0, 0, 242, 243, 244, 2003, 245, 246, 247, 0, + 0, 0, 108, 0, 0, 0, 1604, 0, 1607, 0, + 0, 0, 1614, 0, 1616, 0, 0, 0, 248, 386, + 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, + 331, 0, 0, 0, 567, 0, 0, 253, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1641, 0, + 0, 0, 0, 0, 0, 0, 189, 6, 349, 0, + 0, 0, 0, 190, 191, 192, 0, 0, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 1792, 527, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 222, 223, + 224, 225, 359, 360, 361, 362, 226, 0, 0, 0, + 363, 364, 365, 0, 0, 366, 0, 367, 227, 228, + 229, 0, 0, 0, 0, 1692, 230, 21, 368, 231, + 0, 369, 0, 0, 232, 0, 0, 233, 0, 0, + 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 236, 0, 50, 0, 0, 237, 0, 238, + 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, + 64, 0, 0, 66, 67, 68, 69, 70, 0, 0, + 0, 74, 0, 0, 77, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 1928, 0, 0, 0, 546, 0, 0, + 0, 0, 0, 0, 0, 1771, 0, 0, 1772, 0, + 0, 0, 0, 0, 0, 239, 370, 371, 372, 240, + 241, 0, 0, 0, 242, 243, 244, 373, 245, 246, + 247, 374, 527, 375, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1797, 1798, 0, 1800, + 248, 249, 0, 0, 0, 527, 0, 250, 0, 0, + 0, 0, 331, 0, 0, 0, 252, 0, 0, 253, + 0, 0, 0, 0, 0, 0, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 757, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1841, 1842, + 189, 152, 349, 0, 398, 0, 0, 190, 191, 192, + 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, + 211, 212, 213, 214, 215, 216, 917, 0, 0, 0, + 0, 0, 1872, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 222, 223, 224, 225, 359, 360, 361, 362, + 226, 0, 0, 0, 363, 364, 365, 0, 0, 366, + 0, 367, 227, 228, 229, 0, 0, 0, 0, 0, + 230, 21, 368, 231, 0, 369, 0, 0, 0, 0, + 0, 0, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, + 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, + 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 0, 0, + 0, 0, 546, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 757, 542, 543, 544, + 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, + 0, 0, 400, 0, 0, 0, 0, 0, 0, 239, + 370, 371, 372, 240, 0, 0, 0, 0, 242, 243, + 244, 373, 245, 246, 247, 374, 0, 375, 108, 401, + 402, 403, 404, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 248, 386, 0, 0, 0, 0, + 0, 250, 0, 405, 406, 0, 407, 0, 408, 0, + 0, 0, 409, 253, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, + 544, 545, 189, 6, 330, 0, 546, 0, 0, 190, + 191, 192, 0, 2038, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 946, 227, 228, 229, 0, 0, 7, + 0, 0, 0, 0, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, @@ -2790,16 +2729,16 @@ static const yytype_int16 yytable[] = 704, 239, 54, 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 248, 462, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 249, 0, 0, 0, 0, 0, 250, 0, 85, 86, 87, 331, 189, - 6, 0, 516, 0, 0, 253, 190, 191, 192, 0, + 6, 1578, 252, 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1130, 227, 228, 229, 0, 0, 7, 8, 0, 230, + 900, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, 0, 0, @@ -2814,15 +2753,15 @@ static const yytype_int16 yytable[] = 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 248, 462, 0, 0, 0, 0, 0, - 250, 0, 85, 86, 87, 331, 189, 6, 0, 0, - 521, 0, 253, 190, 191, 192, 0, 0, 193, 194, + 0, 0, 0, 248, 249, 0, 0, 0, 0, 0, + 250, 0, 85, 86, 87, 331, 189, 6, 0, 252, + 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1132, 227, 228, + 0, 0, 0, 0, 0, 0, 0, 945, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, @@ -2838,15 +2777,15 @@ static const yytype_int16 yytable[] = 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 248, 249, 0, 0, 0, 0, 0, 250, 0, 85, - 86, 87, 557, 189, 6, 0, 252, 0, 0, 253, + 585, 1728, 0, 0, 0, 0, 0, 250, 0, 85, + 86, 87, 587, 189, 6, 0, 293, 521, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1133, 227, 228, 229, 0, 0, + 0, 0, 0, 0, 946, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, @@ -2862,7 +2801,7 @@ static const yytype_int16 yytable[] = 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 249, 0, - 0, 0, 0, 0, 250, 0, 85, 86, 87, 564, + 0, 0, 0, 0, 250, 0, 85, 86, 87, 251, 189, 6, 0, 252, 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, @@ -2870,7 +2809,7 @@ static const yytype_int16 yytable[] = 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1152, 227, 228, 229, 0, 0, 7, 8, 0, + 0, 1130, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, 0, @@ -2885,15 +2824,15 @@ static const yytype_int16 yytable[] = 54, 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 248, 462, 0, 0, 0, 0, + 0, 0, 0, 0, 248, 249, 0, 0, 0, 0, 0, 250, 0, 85, 86, 87, 331, 189, 6, 0, - 832, 0, 0, 253, 190, 191, 192, 0, 0, 193, + 252, 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1182, 227, + 0, 0, 0, 0, 0, 0, 0, 0, 1132, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, @@ -2909,15 +2848,15 @@ static const yytype_int16 yytable[] = 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 248, 249, 0, 0, 0, 0, 0, 250, 0, - 85, 86, 87, 331, 189, 6, 0, 1584, 0, 0, + 0, 248, 462, 0, 0, 0, 0, 0, 250, 0, + 85, 86, 87, 331, 189, 6, 0, 516, 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1215, 227, 228, 229, 0, + 0, 0, 0, 0, 0, 1133, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, @@ -2928,20 +2867,20 @@ static const yytype_int16 yytable[] = 0, 0, 77, 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 38, 39, 40, 41, 0, - 0, 43, 1788, 527, 0, 0, 0, 703, 49, 0, + 0, 43, 0, 0, 0, 0, 0, 703, 49, 0, 0, 51, 704, 239, 54, 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 585, 1724, + 0, 0, 0, 0, 0, 0, 0, 0, 248, 462, 0, 0, 0, 0, 0, 250, 0, 85, 86, 87, - 587, 189, 6, 0, 293, 0, 0, 253, 190, 191, + 331, 189, 6, 0, 0, 521, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1360, 227, 228, 229, 0, 0, 0, 0, + 0, 0, 1152, 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, @@ -2949,119 +2888,237 @@ static const yytype_int16 yytable[] = 0, 0, 237, 0, 238, 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, 64, 0, 0, 66, 67, 68, 69, 70, 0, 0, 0, 74, 0, 0, 77, - 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 757, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 239, 0, 0, 0, 240, 241, 0, 0, 0, 242, + 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, + 0, 0, 38, 39, 40, 41, 0, 0, 43, 0, + 0, 0, 0, 0, 703, 49, 0, 0, 51, 704, + 239, 54, 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 248, 249, 0, 0, 0, + 0, 0, 250, 0, 85, 86, 87, 557, 189, 6, + 0, 252, 0, 0, 253, 190, 191, 192, 0, 0, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 248, 462, 0, 0, 0, - 0, 0, 250, 189, 152, 349, 0, 331, 0, 0, - 190, 191, 192, 0, 253, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 385, 211, 212, 213, 214, 215, 216, 1924, - 0, 0, 0, 0, 0, 0, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 222, 223, 224, 225, 359, - 360, 361, 362, 226, 0, 0, 0, 363, 364, 365, - 0, 0, 366, 0, 367, 227, 228, 229, 0, 0, - 0, 0, 0, 230, 21, 368, 231, 0, 369, 189, - 152, 349, 0, 0, 0, 0, 190, 191, 192, 0, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, - 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, - 0, 0, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 222, 223, 224, 225, 359, 360, 361, 362, 226, - 0, 0, 0, 363, 364, 365, 0, 0, 366, 0, - 367, 227, 228, 229, 0, 0, 0, 0, 0, 230, - 21, 368, 231, 0, 369, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 239, 370, 371, 372, 240, 0, 0, 0, - 0, 242, 243, 244, 373, 245, 246, 247, 374, 0, - 375, 108, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, - 0, 0, 0, 0, 250, 0, 0, 0, 0, 331, - 0, 0, 0, 1481, 0, 0, 253, 0, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 0, 0, 239, 370, - 371, 372, 240, 0, 0, 0, 0, 242, 243, 244, - 373, 245, 246, 247, 374, 0, 375, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 248, 386, 0, 0, 0, 0, 0, - 250, 0, 0, 0, 0, 331, 189, 152, 349, 1737, - 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, - 215, 216, 527, 0, 0, 0, 0, 0, 0, 1485, - 351, 352, 353, 354, 355, 356, 357, 358, 222, 223, - 224, 225, 359, 360, 361, 362, 226, 0, 0, 0, - 363, 364, 365, 0, 0, 366, 0, 367, 227, 228, - 229, 0, 0, 0, 0, 0, 230, 21, 368, 231, - 0, 369, 189, 152, 349, 0, 0, 0, 0, 190, - 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 385, 211, 212, 213, 214, 215, 216, 0, 0, - 0, 0, 0, 0, 0, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 222, 223, 224, 225, 359, 360, - 361, 362, 226, 0, 0, 0, 363, 364, 365, 0, - 0, 366, 0, 367, 227, 228, 229, 0, 0, 0, - 0, 0, 230, 21, 368, 231, 0, 369, 0, 0, + 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1182, + 227, 228, 229, 0, 0, 7, 8, 0, 230, 21, + 0, 231, 0, 0, 0, 0, 232, 0, 0, 233, + 0, 0, 234, 0, 235, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 0, 50, 0, 0, 237, + 0, 238, 0, 0, 0, 0, 0, 0, 60, 61, + 62, 63, 64, 0, 0, 66, 67, 68, 69, 70, + 0, 0, 0, 74, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 0, 0, 0, 38, + 39, 40, 41, 0, 0, 43, 0, 0, 0, 0, + 0, 703, 49, 0, 0, 51, 704, 239, 54, 705, + 0, 240, 241, 0, 0, 0, 242, 243, 244, 0, + 245, 246, 247, 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 239, 370, 371, 372, 240, - 0, 0, 0, 0, 242, 243, 244, 373, 245, 246, - 247, 374, 0, 375, 108, 0, 0, 0, 0, 0, + 0, 0, 248, 249, 0, 0, 0, 0, 0, 250, + 0, 85, 86, 87, 564, 189, 6, 0, 252, 0, + 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, + 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1215, 227, 228, 229, + 0, 0, 7, 8, 0, 230, 21, 0, 231, 0, + 0, 0, 0, 232, 0, 0, 233, 0, 0, 234, + 0, 235, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, + 0, 236, 0, 50, 0, 0, 237, 0, 238, 0, + 0, 0, 0, 0, 0, 60, 61, 62, 63, 64, + 0, 0, 66, 67, 68, 69, 70, 0, 0, 0, + 74, 0, 0, 77, 0, 0, 0, 0, 0, 0, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 38, 39, 40, 41, + 0, 0, 43, 0, 0, 0, 0, 0, 703, 49, + 0, 0, 51, 704, 239, 54, 705, 0, 240, 241, + 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, + 0, 0, 0, 108, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, + 462, 0, 0, 0, 0, 0, 250, 0, 85, 86, + 87, 331, 189, 6, 0, 832, 0, 0, 253, 190, + 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, + 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1360, 227, 228, 229, 0, 0, 7, + 8, 0, 230, 21, 0, 231, 0, 0, 0, 0, + 232, 0, 0, 233, 0, 0, 234, 0, 235, 0, + 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, + 50, 0, 0, 237, 0, 238, 0, 0, 0, 0, + 0, 0, 60, 61, 62, 63, 64, 0, 0, 66, + 67, 68, 69, 70, 0, 0, 0, 74, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 0, 0, 0, 38, 39, 40, 41, 0, 0, 43, + 0, 0, 0, 0, 0, 703, 49, 0, 0, 51, + 704, 239, 54, 705, 0, 240, 241, 0, 0, 0, + 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, + 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 249, 0, 0, + 0, 0, 0, 250, 0, 85, 86, 87, 331, 189, + 6, 0, 1586, 0, 0, 253, 190, 191, 192, 0, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 248, 386, 0, 0, 0, 0, 0, 250, 0, 0, - 0, 0, 331, 0, 0, 0, 1636, 0, 0, 253, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 757, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 917, 0, 0, - 0, 239, 370, 371, 372, 240, 0, 0, 0, 0, - 242, 243, 244, 373, 245, 246, 247, 374, 0, 375, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 248, 386, 0, 0, - 0, 0, 0, 250, 189, 152, 0, 0, 331, 0, - 0, 190, 191, 192, 0, 253, 193, 194, 195, 196, + 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1948, 227, 228, 229, 0, 0, 7, 8, 0, 230, + 21, 0, 231, 0, 0, 0, 0, 232, 0, 0, + 233, 0, 0, 234, 0, 235, 0, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 0, 236, 0, 50, 0, 0, + 237, 0, 238, 0, 0, 0, 0, 0, 0, 60, + 61, 62, 63, 64, 0, 0, 66, 67, 68, 69, + 70, 0, 0, 0, 74, 0, 0, 77, 0, 0, + 0, 0, 0, 0, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, + 38, 39, 40, 41, 0, 0, 43, 1100, 0, 0, + 0, 0, 703, 49, 0, 0, 51, 704, 239, 54, + 705, 0, 240, 241, 0, 0, 0, 242, 243, 244, + 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 585, 1728, 0, 0, 0, 0, 0, + 250, 0, 85, 86, 87, 587, 189, 6, 0, 293, + 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, + 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2005, 227, 228, + 229, 0, 0, 0, 0, 0, 230, 21, 0, 231, + 0, 0, 0, 0, 232, 0, 0, 233, 0, 0, + 234, 0, 235, 0, 0, 0, 0, 0, 0, 37, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 236, 0, 50, 0, 0, 237, 0, 238, + 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, + 64, 0, 0, 66, 67, 68, 69, 70, 0, 0, + 0, 74, 0, 0, 77, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 239, 0, 0, 0, 240, + 241, 0, 0, 0, 242, 243, 244, 0, 245, 246, + 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 248, 462, 0, 0, 0, 0, 0, 250, 189, 152, + 349, 0, 331, 0, 0, 190, 191, 192, 0, 253, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, + 213, 214, 215, 216, 1101, 0, 0, 0, 0, 0, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 222, 223, 224, 225, 359, 360, 361, 362, 226, 0, + 0, 0, 363, 364, 365, 0, 0, 366, 0, 367, + 227, 228, 229, 0, 0, 0, 0, 0, 230, 21, + 368, 231, 0, 369, 189, 152, 349, 0, 0, 0, + 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, 215, 216, - 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, - 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 227, 228, 229, 0, - 0, 189, 152, 0, 230, 21, 0, 231, 190, 191, + 0, 0, 0, 0, 0, 0, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 222, 223, 224, 225, + 359, 360, 361, 362, 226, 0, 0, 0, 363, 364, + 365, 0, 0, 366, 0, 367, 227, 228, 229, 0, + 0, 0, 0, 0, 230, 21, 368, 231, 0, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 239, 370, 371, + 372, 240, 0, 0, 0, 0, 242, 243, 244, 373, + 245, 246, 247, 374, 0, 375, 108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 248, 386, 0, 0, 0, 0, 0, 250, + 0, 0, 0, 0, 331, 0, 0, 0, 1483, 0, + 0, 253, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, + 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, + 0, 0, 0, 239, 370, 371, 372, 240, 0, 0, + 0, 0, 242, 243, 244, 373, 245, 246, 247, 374, + 0, 375, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, + 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, + 331, 189, 152, 349, 1741, 0, 0, 253, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 385, 211, 212, 213, 214, 215, 216, 0, 0, 0, + 385, 211, 212, 213, 214, 215, 216, 1406, 0, 0, + 0, 0, 0, 0, 1487, 351, 352, 353, 354, 355, + 356, 357, 358, 222, 223, 224, 225, 359, 360, 361, + 362, 226, 0, 0, 0, 363, 364, 365, 0, 0, + 366, 0, 367, 227, 228, 229, 0, 0, 0, 0, + 0, 230, 21, 368, 231, 0, 369, 189, 152, 349, + 0, 0, 0, 0, 190, 191, 192, 0, 0, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, + 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 222, + 223, 224, 225, 359, 360, 361, 362, 226, 0, 0, + 0, 363, 364, 365, 0, 0, 366, 0, 367, 227, + 228, 229, 0, 0, 0, 0, 0, 230, 21, 368, + 231, 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, - 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 227, 228, 229, 0, 0, 0, 0, - 0, 230, 21, 0, 231, 528, 529, 530, 531, 532, + 239, 370, 371, 372, 240, 0, 0, 0, 0, 242, + 243, 244, 373, 245, 246, 247, 374, 0, 375, 108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 248, 386, 0, 0, 0, + 0, 0, 250, 0, 0, 0, 0, 331, 0, 0, + 0, 1640, 0, 0, 253, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 239, 0, 0, 0, 240, 0, 0, - 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, - 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, - 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, - 331, 0, 0, 0, 567, 0, 0, 253, 0, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 239, 546, 0, 0, 240, 0, 0, 0, 1101, 242, - 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, + 0, 0, 0, 0, 0, 0, 239, 370, 371, 372, + 240, 0, 0, 0, 0, 242, 243, 244, 373, 245, + 246, 247, 374, 0, 375, 108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 386, 0, 0, 0, 0, 0, 250, 189, + 152, 0, 0, 331, 0, 0, 190, 191, 192, 0, + 253, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, + 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 585, 586, 0, 0, 0, - 0, 0, 250, 0, 0, 0, 0, 587, 189, 152, - 0, 293, 0, 0, 253, 190, 191, 192, 0, 0, + 0, 227, 228, 229, 0, 0, 189, 152, 0, 230, + 21, 0, 231, 190, 191, 192, 0, 0, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, + 215, 216, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, + 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, + 229, 0, 0, 0, 0, 0, 230, 21, 0, 231, + 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 690, 0, 691, 239, 0, + 0, 0, 240, 1606, 0, 0, 0, 242, 243, 244, + 0, 245, 246, 247, 0, 0, 0, 108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 585, 586, 0, 0, 0, 0, 0, + 250, 0, 0, 0, 0, 587, 0, 0, 0, 293, + 0, 0, 253, 0, 0, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 0, 239, 0, 546, 0, 240, + 0, 0, 0, 1709, 242, 243, 244, 1710, 245, 246, + 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 248, 386, 0, 0, 0, 0, 0, 250, 189, 152, + 0, 1223, 331, 1008, 0, 190, 191, 192, 0, 253, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, - 213, 214, 215, 216, 1406, 0, 0, 0, 0, 0, + 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 0, 0, 0, 0, 0, 230, 21, - 0, 231, 189, 152, 0, 1223, 0, 0, 0, 190, + 0, 231, 189, 152, 0, 1368, 0, 0, 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, 215, 216, 0, 0, @@ -3069,22 +3126,22 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 0, 0, 0, - 0, 0, 230, 21, 0, 231, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, - 542, 543, 544, 545, 0, 0, 0, 239, 546, 0, - 0, 240, 0, 0, 0, 0, 242, 243, 244, 0, + 0, 0, 230, 21, 0, 231, 0, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 664, 542, 543, 544, 545, 0, 0, 239, 0, 546, + 0, 240, 0, 0, 0, 1736, 242, 243, 244, 1737, 245, 246, 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, 0, 0, 0, 0, 250, - 0, 0, 0, 0, 331, 1008, 0, 0, 0, 0, + 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 253, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 239, 0, 0, 0, 240, 0, 0, 0, 0, + 1893, 239, 0, 0, 1894, 240, 0, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, 0, - 0, 0, 0, 250, 189, 152, 0, 1368, 331, 0, + 0, 0, 0, 250, 189, 152, 0, 1430, 331, 0, 0, 190, 191, 192, 0, 253, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, 215, 216, @@ -3092,310 +3149,261 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 0, - 0, 0, 0, 0, 230, 21, 0, 231, 189, 152, - 0, 1428, 0, 0, 0, 190, 191, 192, 0, 0, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, - 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, + 0, 189, 152, 0, 230, 21, 0, 231, 190, 191, + 192, 0, 0, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 385, 211, 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 227, 228, 229, 0, 0, 0, 0, 0, 230, 21, - 0, 231, 0, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 239, 0, 546, 0, 240, 0, 0, - 0, 1705, 242, 243, 244, 1706, 245, 246, 247, 0, + 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, + 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 227, 228, 229, 0, 0, 0, 0, + 0, 230, 21, 0, 231, 0, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 0, 0, 0, 239, 0, 0, 0, 240, 718, 0, + 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, - 331, 0, 0, 0, 0, 0, 0, 253, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 690, 0, 691, 0, 0, 239, 0, 0, - 1602, 240, 0, 0, 0, 0, 242, 243, 244, 0, - 245, 246, 247, 0, 0, 0, 108, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 253, 0, 0, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, + 239, 0, 546, 0, 240, 0, 0, 0, 0, 242, + 243, 244, 870, 245, 246, 247, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 248, 386, 0, 0, 0, 0, 0, 250, - 189, 152, 0, 0, 331, 0, 0, 190, 191, 192, - 0, 253, 193, 194, 195, 196, 197, 198, 199, 200, + 0, 0, 0, 0, 0, 248, 386, 0, 0, 0, + 0, 0, 250, 189, 152, 0, 0, 331, 1482, 0, + 190, 191, 192, 0, 253, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 385, 211, 212, 213, 214, 215, 216, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, + 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 227, 228, 229, 0, 0, + 189, 152, 0, 230, 21, 0, 231, 190, 191, 192, + 0, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 227, 228, 229, 0, 0, 189, 152, 0, - 230, 21, 0, 231, 190, 191, 192, 0, 0, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 385, 211, 212, 213, - 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, - 223, 224, 225, 0, 0, 0, 0, 226, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, - 228, 229, 0, 0, 0, 0, 0, 230, 21, 0, - 231, 0, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, - 0, 0, 0, 0, 546, 0, 909, 0, 0, 239, - 0, 0, 0, 240, 870, 0, 0, 0, 242, 243, + 0, 0, 227, 228, 229, 0, 0, 0, 0, 0, + 230, 21, 0, 231, 0, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, + 0, 0, 239, 0, 0, 0, 240, 871, 0, 0, + 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, + 0, 0, 0, 0, 250, 0, 0, 0, 0, 331, + 1785, 0, 0, 0, 0, 0, 253, 0, -4, 1, + 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, + 0, -4, -4, 0, 0, 0, 0, 0, 0, 239, + 0, 0, 0, 240, 0, 0, 0, 0, 242, 243, 244, 0, 245, 246, 247, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 386, 0, 0, 0, 0, - 0, 250, 0, 0, 0, 0, 331, 1480, 0, 0, - 0, 0, 0, 253, 0, 0, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, - 542, 543, 544, 545, 0, 0, 239, 0, 546, 0, - 240, 0, 0, 0, 1732, 242, 243, 244, 1733, 245, - 246, 247, 0, 0, 0, 108, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 248, 386, 0, 0, 0, 0, 0, 250, 189, - 152, 0, 0, 331, 1781, 0, 190, 191, 192, 0, - 253, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 385, 211, - 212, 213, 214, 215, 216, 0, 0, 7, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 222, 223, 224, 225, 0, 0, 0, 0, 226, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 227, 228, 229, 0, 0, 7, 8, 0, 230, - 21, 0, 231, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 754, 0, 0, 0, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, - 0, 38, 39, 40, 41, 0, 0, 43, 0, 0, - 0, 0, 0, 703, 49, 0, 0, 51, 704, 0, - 54, 705, 0, 0, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 0, 0, 71, - 38, 39, 40, 41, 0, 0, 43, 0, 0, 0, - 0, 0, 703, 49, 0, 0, 51, 704, 239, 54, - 705, 0, 240, 85, 86, 87, 0, 242, 243, 244, - 0, 245, 246, 247, 0, 0, 0, 108, 71, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 248, 386, 0, 0, -4, 1, 0, - 250, -4, 85, 86, 87, 331, 0, 0, 0, 0, - -4, -4, 253, 0, 0, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, - 543, 544, 545, 0, 0, 0, 0, 546, 1944, 0, - 0, -4, -4, 1889, 0, 0, 0, 1890, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, -4, -4, 0, 0, 0, -4, -4, 0, - -4, 0, 0, 0, 0, -4, -4, 2001, -4, -4, - 0, -4, 0, 0, 0, 0, -4, -4, -4, -4, + 0, 250, -4, -4, -4, 0, 331, 0, -4, -4, + 0, -4, 0, 253, 0, 0, -4, -4, 0, -4, + -4, 0, -4, 0, 0, 0, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, 0, 0, -4, -4, -4, -4, -4, -4, 0, - -4, 0, -4, -4, -4, -4, -4, -4, -4, 0, - -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, - -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, + -4, -4, 0, 0, -4, -4, -4, -4, -4, -4, + 0, -4, 0, -4, -4, -4, -4, -4, -4, -4, + 0, -4, -4, -4, -4, -4, -4, 0, -4, -4, + -4, -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, 0, 6, 0, -4, -4, -4, 0, 0, 0, - -4, 7, 8, 0, 0, -4, -4, -4, -4, 0, - 0, -4, 0, -4, 0, -4, -4, -4, -4, -4, - -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, - 0, 0, 9, 10, 0, -4, -4, -4, 0, 0, - 0, 0, 0, 0, 0, 0, -4, 0, -4, 0, - 0, 0, 11, 12, 13, 0, 0, 0, 14, 15, - 0, 16, 0, 0, 0, 0, 17, 18, 0, 19, - 20, 0, 21, 0, 0, 0, 0, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, - 0, 43, 0, 44, 45, 46, 47, 48, 49, 50, - 0, 51, 52, 53, 54, 55, 56, 0, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 0, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 0, 0, 0, 80, 81, 82, 0, 0, - 0, 83, 0, 0, 0, 0, 84, 85, 86, 87, - 152, 349, 88, 0, 89, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 0, 0, 0, 0, 0, 0, 104, 105, 106, 0, - 152, 349, 0, 0, 0, 0, 0, 107, 0, 108, - 0, 0, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 0, 0, 0, 0, 359, 360, 361, 362, 0, - 379, 349, 0, 363, 364, 365, 0, 0, 366, 0, - 367, 0, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 368, 0, 0, 369, 359, 360, 361, 362, 0, - 0, 349, 0, 363, 364, 365, 0, 0, 366, 0, - 367, 0, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 368, 0, 0, 369, 359, 360, 361, 362, 0, - 0, 0, 399, 363, 364, 365, 0, 0, 366, 0, - 367, 0, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 368, 0, 0, 369, 359, 360, 361, 362, 0, - 0, 0, 0, 363, 364, 365, 0, 0, 366, 0, - 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 368, 0, 0, 369, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 373, 0, 0, 0, 374, 0, 375, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, - 371, 372, 7, 8, 0, 0, 0, 0, 0, 0, - 373, 0, 0, 0, 374, 0, 375, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 373, 0, 0, 0, 374, 0, 375, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, - 371, 372, 0, 0, 0, 0, 0, 7, 8, 0, - 373, 0, 0, 0, 374, 0, 375, 0, 0, 0, + -4, -4, 0, 6, 0, -4, -4, -4, 0, 0, + 0, -4, 7, 8, 0, 0, -4, -4, -4, -4, + 0, 0, -4, 0, -4, 0, -4, -4, -4, -4, + -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + 0, 0, 0, 9, 10, 0, -4, -4, -4, 0, + 0, 0, 0, 0, 0, 0, 0, -4, 0, -4, + 0, 0, 0, 11, 12, 13, 0, 0, 0, 14, + 15, 0, 16, 0, 0, 0, 0, 17, 18, 0, + 19, 20, 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 0, 0, 0, 38, 39, 40, 41, - 0, 0, 43, 0, 0, 0, 0, 0, 703, 49, - 0, 0, 51, 704, 0, 54, 705, 0, 0, 0, - 0, 955, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 956, 0, - 0, 0, 0, 0, 0, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 85, 86, - 87, 38, 39, 40, 41, 0, 0, 43, 0, 0, - 0, 0, 0, 703, 49, 0, 0, 51, 704, 0, - 54, 705, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 85, 86, 87, 0, 0, 0, 0, - 0, 0, 718, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 870, 528, 529, 530, 531, + 34, 35, 36, 0, 0, 37, 38, 39, 40, 41, + 42, 0, 43, 0, 44, 45, 46, 47, 48, 49, + 50, 0, 51, 52, 53, 54, 55, 56, 0, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 0, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 0, 0, 0, 80, 81, 82, 0, + 0, 0, 83, 0, 0, 0, 0, 84, 85, 86, + 87, 152, 349, 88, 0, 89, 0, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 0, 0, 0, 0, 0, 0, 104, 105, 106, + 0, 152, 349, 0, 0, 0, 0, 0, 107, 0, + 108, 0, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 0, 0, 0, 0, 359, 360, 361, 362, + 0, 0, 349, 0, 363, 364, 365, 0, 0, 366, + 0, 367, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 368, 0, 0, 369, 359, 360, 361, 362, + 0, 0, 0, 0, 363, 364, 365, 0, 0, 366, + 0, 367, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 368, 0, 0, 369, 359, 360, 361, 362, + 0, 0, 0, 399, 363, 364, 365, 0, 0, 366, + 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 368, 0, 0, 369, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 871, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 914, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, - 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1055, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, - 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1065, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 0, 0, 0, 0, 0, 0, 0, 0, 914, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 370, 371, 372, 7, 8, 0, 0, 0, 0, 0, + 0, 373, 0, 0, 0, 374, 0, 375, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 370, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 0, 373, 0, 0, 0, 374, 0, 375, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 370, 371, 372, 0, 0, 0, 0, 0, 7, 8, + 0, 373, 0, 0, 0, 374, 0, 375, 0, 0, + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 0, 0, 0, 38, 39, 40, + 41, 0, 0, 43, 0, 0, 0, 0, 0, 703, + 49, 0, 0, 51, 704, 0, 54, 705, 0, 0, + 0, 0, 955, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, 0, 956, + 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 85, + 86, 87, 38, 39, 40, 41, 0, 0, 43, 0, + 0, 0, 0, 0, 703, 49, 0, 0, 51, 704, + 0, 54, 705, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 546, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 1055, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1072, 528, 529, 530, + 0, 0, 0, 0, 0, 0, 1065, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1075, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1067, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1176, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1072, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1197, 528, + 0, 0, 0, 0, 0, 0, 0, 0, 1073, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1279, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1075, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1362, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1176, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1363, 528, 529, + 0, 0, 0, 0, 0, 0, 0, 1197, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1405, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1279, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1521, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1362, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1522, 528, 529, 530, + 0, 0, 0, 0, 0, 0, 1363, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1523, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1405, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1537, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1523, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1660, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1524, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1771, 528, + 0, 0, 0, 0, 0, 0, 0, 0, 1525, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1772, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1539, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1795, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1664, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1798, 528, 529, + 0, 0, 0, 0, 0, 0, 0, 1775, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1864, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1776, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1915, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1799, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1916, 528, 529, 530, + 0, 0, 0, 0, 0, 0, 1802, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1928, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1868, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1930, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1919, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1962, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1920, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1989, 528, + 0, 0, 0, 0, 0, 0, 0, 0, 1932, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1994, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1934, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1995, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1966, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1996, 528, 529, + 0, 0, 0, 0, 0, 0, 0, 1993, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2035, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1998, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 990, + 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1999, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, + 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2000, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2039, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 0, 1042, 528, + 0, 0, 546, 0, 0, 0, 0, 0, 754, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 0, 0, 0, 0, 0, 1083, 528, 529, + 0, 546, 0, 0, 0, 0, 0, 990, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 1124, 528, 529, 530, + 546, 0, 0, 0, 0, 0, 1042, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 1155, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1083, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 1173, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1124, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 1229, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1155, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 1364, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1173, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 1434, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1229, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 1435, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1364, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 1436, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, @@ -3403,852 +3411,794 @@ static const yytype_int16 yytable[] = 0, 0, 546, 0, 0, 0, 0, 0, 1437, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 0, 0, 0, 0, 0, 1703, 528, 529, + 0, 546, 0, 0, 0, 0, 0, 1438, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 1714, 528, 529, 530, + 546, 0, 0, 0, 0, 0, 1439, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 1751, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1707, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 1814, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1718, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 1829, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1755, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 1841, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1818, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 1878, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1833, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 1895, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1845, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 1904, + 0, 0, 0, 546, 0, 0, 0, 0, 0, 1882, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 0, 1905, 528, + 0, 0, 546, 0, 0, 0, 0, 0, 1899, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 0, 0, 0, 0, 0, 1926, 528, 529, + 0, 546, 0, 0, 0, 0, 0, 1908, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 1975, 528, 529, 530, + 546, 0, 0, 0, 0, 0, 1909, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 0, 0, 2014, 528, 529, 530, 531, + 0, 0, 0, 0, 0, 1930, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 2033, 528, 529, 530, 531, 532, + 0, 0, 0, 0, 1979, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 0, 0, 2053, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 2018, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 2054, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 2037, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 2055, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 2057, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, - 0, 0, 0, 0, 546, 0, 0, 0, 0, 665, + 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, + 2058, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 0, 0, 0, 0, 2059, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 862, 528, 529, + 0, 0, 546, 0, 0, 0, 0, 665, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 1807, 528, 529, 530, 531, + 546, 0, 0, 0, 0, 862, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 690, 0, 691, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 0, 0, 920, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 969, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 1105, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1811, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, - 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 1168, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 544, 545, 0, 0, 0, 0, 546, 0, 690, 0, + 691, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 1169, 528, 529, + 0, 0, 0, 546, 0, 0, 0, 920, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 0, 0, 1174, 528, 529, 530, 531, 532, + 546, 0, 0, 0, 969, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, - 0, 1175, 528, 529, 530, 531, 532, 533, 534, 535, + 0, 1105, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, - 0, 0, 0, 0, 546, 0, 0, 0, 1265, 528, + 0, 0, 0, 0, 546, 0, 0, 0, 1168, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, - 0, 546, 0, 0, 0, 1276, 528, 529, 530, 531, + 0, 546, 0, 0, 0, 1169, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, - 0, 0, 1466, 528, 529, 530, 531, 532, 533, 534, + 0, 0, 1174, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 0, 0, 1543, + 545, 0, 0, 0, 0, 546, 0, 0, 0, 1175, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, - 0, 0, 546, 0, 0, 0, 1590, 528, 529, 530, + 0, 0, 546, 0, 0, 0, 1265, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, - 0, 0, 0, 1763, 528, 529, 530, 531, 532, 533, + 0, 0, 0, 1276, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, 0, - 1800, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 1468, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, - 0, 0, 0, 546, 0, 0, 0, 1815, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 735, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 736, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 737, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 739, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 740, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 741, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 743, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 744, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 745, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 746, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 747, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 748, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 749, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 751, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 752, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 753, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 813, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 847, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 891, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 909, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 910, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 911, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 912, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 918, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 919, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 954, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 968, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1022, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1026, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1038, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1104, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1113, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1114, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1115, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1125, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1154, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1156, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1157, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1158, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1159, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1160, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1161, 528, 529, + 0, 0, 0, 546, 0, 0, 0, 1545, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1162, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1167, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1264, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1275, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1467, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1529, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1542, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1651, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1653, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1654, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1659, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1704, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1713, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1736, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1799, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1862, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 1863, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546, 0, 1988, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 664, 542, 543, 544, 545, 0, 0, 0, 0, - 546, 0, 2030, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 664, 542, 543, 544, - 545, 0, 0, 0, 0, 546 + 546, 0, 0, 0, 1592, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 664, 542, + 543, 544, 545, 0, 0, 0, 0, 546, 0, 0, + 0, 1767, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 664, 542, 543, 544, 545, + 0, 0, 0, 0, 546, 0, 0, 0, 1804, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 664, 542, 543, 544, 545, 0, 0, 0, + 0, 546, 0, 0, 0, 1819, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 735, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 736, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 737, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 739, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 740, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 741, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 743, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 744, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 745, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 746, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 747, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 748, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 749, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 751, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 752, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 753, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 813, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 847, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 891, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 909, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 910, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 911, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 912, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 918, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 919, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 954, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 968, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1022, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1026, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1038, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1104, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1113, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1114, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1115, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1125, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1154, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1156, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1157, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1158, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1159, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1160, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1161, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1162, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1167, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1264, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1275, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1469, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1531, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1544, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1655, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1657, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1658, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1663, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1708, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1717, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1740, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1803, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1866, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 1867, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546, 0, 1992, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 664, + 542, 543, 544, 545, 0, 0, 0, 0, 546, 0, + 2034, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 664, 542, 543, 544, 545, 0, + 0, 0, 0, 546 }; static const yytype_int16 yycheck[] = { - 3, 3, 3, 134, 1149, 1153, 147, 685, 286, 1327, - 6, 298, 1578, 4, 1619, 693, 1621, 187, 21, 669, - 48, 21, 4, 7, 4, 6, 4, 4, 4, 316, - 582, 583, 4, 4, 1782, 1606, 6, 5, 5, 243, - 6, 4, 6, 247, 4, 48, 9, 4, 6, 97, - 700, 5, 97, 54, 227, 228, 99, 91, 101, 240, - 94, 4, 4, 97, 245, 715, 239, 4, 9, 9, - 243, 119, 75, 723, 119, 4, 110, 242, 4, 7, - 83, 149, 4, 248, 6, 88, 236, 237, 7, 236, - 237, 134, 9, 129, 1665, 382, 99, 384, 245, 9, - 6, 271, 272, 273, 84, 392, 174, 9, 227, 228, - 146, 6, 1678, 240, 157, 227, 228, 9, 154, 155, - 156, 248, 190, 191, 160, 161, 240, 227, 228, 248, - 240, 134, 244, 135, 248, 6, 139, 140, 248, 309, - 310, 311, 6, 243, 147, 227, 228, 6, 91, 227, - 228, 179, 95, 227, 228, 158, 326, 242, 101, 102, - 0, 104, 105, 248, 7, 815, 248, 14, 7, 91, - 248, 174, 227, 228, 248, 1923, 179, 133, 134, 182, - 123, 227, 228, 139, 187, 188, 164, 165, 166, 167, - 227, 228, 97, 248, 7, 239, 162, 241, 7, 243, - 227, 228, 248, 7, 162, 185, 227, 228, 236, 94, - 177, 248, 97, 189, 174, 175, 1534, 174, 175, 239, - 211, 248, 239, 227, 228, 110, 243, 248, 240, 61, - 62, 211, 64, 236, 211, 1380, 248, 238, 1804, 211, - 211, 239, 270, 239, 248, 243, 249, 243, 211, 252, - 253, 245, 280, 253, 248, 246, 284, 227, 228, 241, - 239, 245, 243, 243, 267, 247, 244, 270, 271, 272, - 273, 243, 243, 236, 237, 243, 239, 280, 241, 243, - 243, 284, 245, 286, 571, 211, 573, 574, 6, 243, - 968, 969, 1858, 212, 213, 214, 215, 239, 239, 239, - 241, 241, 239, 590, 245, 245, 309, 310, 311, 8, - 239, 239, 94, 241, 240, 97, 242, 236, 237, 236, - 237, 6, 239, 326, 241, 242, 245, 6, 245, 239, - 6, 241, 227, 228, 236, 237, 239, 239, 508, 241, - 240, 628, 242, 245, 236, 237, 240, 239, 248, 241, - 239, 1956, 241, 245, 248, 398, 227, 228, 222, 223, - 227, 228, 503, 222, 223, 6, 394, 395, 6, 212, - 213, 214, 215, 212, 213, 214, 215, 91, 665, 241, - 94, 248, 410, 97, 244, 99, 389, 390, 248, 6, - 7, 394, 395, 236, 237, 129, 110, 236, 237, 212, - 213, 214, 215, 212, 213, 214, 215, 410, 212, 213, - 214, 215, 146, 416, 241, 227, 228, 239, 4, 420, - 154, 155, 156, 236, 237, 1991, 160, 161, 227, 228, - 227, 228, 227, 228, 437, 94, 248, 129, 97, 1089, - 99, 1091, 240, 239, 239, 241, 227, 228, 243, 248, - 248, 248, 248, 1103, 146, 227, 228, 289, 290, 462, - 227, 228, 154, 155, 156, 297, 298, 248, 160, 161, - 513, 239, 500, 236, 237, 240, 248, 2043, 1796, 507, - 243, 248, 485, 248, 239, 227, 228, 227, 228, 492, - 493, 97, 239, 99, 497, 636, 499, 500, 501, 502, - 503, 243, 505, 243, 507, 508, 509, 510, 511, 512, - 244, 514, 512, 516, 514, 227, 228, 216, 217, 218, + 3, 3, 3, 286, 147, 582, 583, 1149, 1153, 4, + 669, 298, 1327, 685, 1623, 4, 1625, 99, 21, 101, + 48, 693, 4, 21, 5, 187, 4, 6, 4, 316, + 4, 6, 4, 1786, 4, 4, 97, 5, 4, 6, + 4, 700, 7, 1580, 6, 48, 5, 4, 4, 4, + 6, 97, 134, 54, 6, 6, 715, 6, 119, 1610, + 0, 4, 129, 9, 723, 239, 4, 241, 9, 6, + 227, 228, 75, 119, 248, 157, 227, 228, 4, 146, + 83, 245, 9, 9, 248, 88, 7, 154, 155, 156, + 129, 248, 243, 160, 161, 382, 99, 384, 227, 228, + 6, 97, 84, 227, 228, 392, 9, 146, 134, 271, + 272, 273, 240, 227, 228, 154, 155, 156, 1669, 248, + 248, 160, 161, 7, 248, 149, 6, 9, 6, 227, + 228, 134, 240, 135, 248, 91, 139, 140, 227, 228, + 248, 9, 236, 237, 147, 1682, 244, 309, 310, 311, + 174, 179, 227, 228, 239, 158, 815, 100, 101, 248, + 61, 62, 94, 64, 326, 97, 190, 191, 239, 227, + 228, 174, 243, 248, 1927, 14, 179, 244, 110, 182, + 227, 228, 227, 228, 187, 188, 164, 165, 166, 167, + 248, 227, 228, 7, 239, 162, 94, 7, 243, 97, + 162, 248, 239, 185, 7, 244, 227, 228, 236, 7, + 174, 175, 248, 227, 228, 189, 211, 6, 177, 174, + 175, 1536, 211, 236, 237, 134, 6, 248, 240, 211, + 139, 140, 245, 236, 248, 7, 248, 238, 1380, 211, + 6, 211, 270, 222, 223, 211, 249, 222, 223, 252, + 253, 246, 280, 240, 243, 253, 284, 240, 245, 242, + 243, 243, 243, 239, 267, 174, 244, 270, 271, 272, + 273, 1808, 241, 243, 240, 243, 242, 280, 247, 188, + 245, 284, 239, 286, 571, 211, 573, 574, 239, 6, + 7, 243, 243, 239, 243, 241, 968, 969, 239, 245, + 241, 239, 6, 590, 245, 239, 309, 310, 311, 8, + 236, 237, 239, 239, 241, 241, 398, 243, 239, 245, + 241, 227, 228, 326, 4, 1862, 242, 240, 212, 213, + 214, 215, 248, 236, 237, 248, 239, 91, 241, 242, + 94, 628, 245, 97, 227, 228, 508, 227, 228, 227, + 228, 1960, 236, 237, 236, 237, 110, 239, 243, 241, + 503, 245, 247, 245, 240, 248, 394, 395, 236, 237, + 6, 239, 248, 241, 227, 228, 4, 245, 665, 239, + 6, 241, 410, 243, 242, 240, 389, 390, 289, 290, + 248, 394, 395, 248, 241, 248, 297, 298, 212, 213, + 214, 215, 212, 213, 214, 215, 239, 410, 241, 212, + 213, 214, 215, 416, 212, 213, 214, 215, 241, 420, + 129, 239, 236, 237, 243, 240, 236, 237, 227, 228, + 1089, 513, 1091, 248, 437, 6, 7, 146, 236, 237, + 212, 213, 214, 215, 1103, 154, 155, 156, 97, 248, + 99, 160, 161, 133, 134, 135, 136, 239, 1995, 462, + 227, 228, 240, 91, 242, 227, 228, 95, 148, 239, + 248, 151, 500, 101, 102, 239, 104, 105, 239, 507, + 389, 248, 485, 227, 228, 1800, 248, 227, 228, 492, + 493, 227, 228, 636, 497, 123, 499, 500, 501, 502, + 503, 239, 505, 243, 507, 508, 509, 510, 511, 512, + 2047, 514, 248, 516, 512, 239, 514, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 240, 248, 242, 541, 238, - 227, 228, 129, 248, 547, 244, 239, 133, 134, 135, - 136, 239, 244, 244, 685, 227, 228, 248, 129, 146, - 1210, 248, 148, 566, 567, 151, 1216, 154, 155, 156, - 227, 228, 239, 160, 161, 146, 248, 227, 228, 866, - 582, 583, 243, 154, 155, 156, 239, 588, 241, 160, - 161, 248, 245, 239, 91, 248, 94, 94, 248, 97, - 97, 99, 99, 239, 239, 241, 649, 243, 609, 612, - 613, 614, 110, 1263, 227, 228, 229, 230, 231, 232, - 233, 240, 244, 242, 1274, 238, 248, 6, 7, 248, - 1280, 634, 635, 636, 637, 638, 639, 640, 641, 642, + 229, 230, 231, 232, 233, 244, 232, 233, 541, 238, + 227, 228, 238, 129, 547, 244, 227, 228, 133, 134, + 239, 1210, 227, 228, 139, 227, 228, 1216, 239, 6, + 146, 248, 243, 566, 567, 227, 228, 649, 154, 155, + 156, 239, 239, 248, 160, 161, 248, 227, 228, 866, + 582, 583, 245, 240, 247, 242, 248, 588, 497, 112, + 499, 248, 501, 502, 239, 239, 241, 129, 248, 91, + 509, 510, 94, 97, 1263, 97, 239, 99, 609, 612, + 613, 614, 239, 243, 146, 1274, 243, 240, 110, 242, + 239, 1280, 154, 155, 156, 248, 244, 239, 160, 161, + 248, 634, 635, 636, 637, 638, 639, 640, 641, 642, 239, 644, 645, 646, 647, 648, 239, 650, 651, 652, - 653, 654, 112, 653, 657, 232, 233, 244, 659, 239, - 661, 238, 240, 666, 242, 229, 230, 231, 232, 233, - 248, 239, 673, 244, 238, 1353, 97, 240, 244, 242, - 133, 134, 248, 236, 237, 248, 139, 4, 5, 692, - 243, 734, 244, 244, 697, 244, 248, 248, 244, 248, - 244, 244, 248, 244, 248, 248, 244, 248, 711, 712, - 248, 244, 843, 6, 717, 248, 244, 720, 721, 245, - 248, 247, 244, 726, 244, 728, 248, 239, 248, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 240, 239, - 242, 243, 59, 60, 61, 62, 227, 228, 580, 581, - 67, 68, 69, 585, 757, 72, 759, 74, 97, 244, - 244, 244, 1440, 248, 248, 248, 244, 243, 85, 244, - 248, 88, 239, 248, 1452, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 791, 244, - 244, 243, 238, 248, 248, 244, 244, 1945, 94, 248, - 248, 244, 244, 244, 244, 248, 248, 248, 248, 126, - 244, 244, 244, 856, 248, 248, 248, 244, 244, 244, - 244, 248, 248, 248, 248, 853, 244, 244, 239, 832, - 248, 248, 1977, 239, 239, 244, 244, 968, 969, 248, - 248, 244, 845, 244, 244, 248, 243, 248, 248, 244, - 853, 244, 244, 248, 2002, 248, 248, 243, 240, 862, - 242, 243, 97, 239, 865, 241, 867, 868, 240, 239, - 242, 241, 239, 94, 241, 2020, 193, 194, 195, 239, - 881, 241, 239, 4, 241, 6, 94, 204, 97, 4, - 4, 208, 4, 210, 211, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 4, 134, 239, 915, 238, 6, 139, 140, 236, - 237, 239, 6, 239, 239, 239, 243, 970, 245, 241, - 239, 241, 960, 6, 247, 243, 243, 6, 239, 9, - 239, 247, 239, 243, 239, 239, 119, 239, 949, 4, - 239, 979, 174, 243, 239, 239, 239, 960, 239, 239, - 6, 243, 239, 239, 243, 243, 188, 1245, 243, 243, - 243, 974, 239, 1104, 1105, 239, 979, 239, 239, 239, - 239, 6, 6, 241, 241, 6, 989, 243, 243, 243, - 243, 994, 1020, 1021, 241, 1023, 1024, 1025, 241, 1027, - 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 6, - 243, 1563, 1564, 177, 239, 239, 239, 1020, 1021, 239, + 653, 654, 734, 243, 657, 653, 133, 134, 659, 685, + 661, 94, 139, 666, 97, 94, 99, 227, 228, 239, + 244, 241, 673, 239, 248, 245, 239, 110, 248, 580, + 581, 1353, 91, 243, 585, 94, 236, 237, 97, 692, + 99, 244, 97, 243, 697, 248, 227, 228, 229, 230, + 231, 232, 233, 240, 243, 242, 244, 238, 711, 712, + 248, 248, 244, 240, 717, 242, 244, 720, 721, 94, + 248, 248, 97, 726, 99, 728, 635, 243, 637, 638, + 639, 640, 641, 642, 239, 644, 645, 646, 647, 4, + 94, 650, 651, 652, 229, 230, 231, 232, 233, 97, + 236, 237, 94, 238, 757, 244, 759, 243, 239, 248, + 241, 244, 243, 97, 244, 248, 4, 4, 248, 244, + 1442, 244, 244, 248, 856, 248, 248, 244, 4, 244, + 244, 248, 1454, 248, 248, 240, 239, 242, 791, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 1949, 244, 244, 6, 238, 248, + 248, 720, 244, 4, 239, 6, 248, 843, 244, 728, + 244, 6, 248, 244, 248, 853, 244, 248, 244, 832, + 248, 244, 248, 244, 244, 248, 244, 248, 248, 1981, + 248, 244, 845, 244, 244, 248, 239, 248, 248, 244, + 853, 239, 239, 248, 244, 4, 5, 241, 248, 862, + 240, 2006, 242, 243, 865, 244, 867, 868, 244, 248, + 244, 244, 248, 244, 248, 248, 243, 248, 239, 244, + 881, 244, 2024, 248, 6, 248, 244, 244, 970, 244, + 248, 248, 244, 248, 241, 6, 248, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 239, 239, 241, 241, + 59, 60, 61, 62, 915, 243, 247, 244, 67, 68, + 69, 248, 244, 72, 244, 74, 248, 244, 248, 247, + 239, 248, 960, 239, 9, 241, 85, 239, 239, 88, + 241, 239, 968, 969, 239, 239, 243, 239, 949, 119, + 243, 979, 239, 239, 239, 239, 4, 960, 239, 239, + 243, 243, 1245, 6, 243, 243, 243, 243, 869, 239, + 239, 974, 239, 239, 6, 876, 979, 126, 239, 880, + 239, 239, 239, 6, 6, 241, 989, 241, 1565, 1566, + 243, 994, 1020, 1021, 243, 1023, 1024, 1025, 243, 1027, + 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 243, + 241, 241, 6, 177, 243, 239, 239, 1020, 1021, 239, 1023, 1024, 1025, 239, 1027, 1028, 1029, 1030, 1031, 1032, - 1033, 1034, 1035, 1036, 239, 241, 1039, 869, 6, 6, - 243, 6, 6, 243, 876, 7, 6, 243, 880, 1077, - 6, 243, 87, 244, 248, 248, 240, 4, 5, 7, - 6, 240, 243, 238, 64, 245, 4, 7, 1096, 239, - 7, 6, 240, 6, 1077, 1078, 1079, 243, 7, 6, - 174, 7, 6, 1111, 6, 243, 242, 240, 6, 243, - 245, 243, 243, 1096, 243, 7, 6, 241, 239, 46, + 1033, 1034, 1035, 1036, 239, 239, 1039, 6, 241, 6, + 6, 243, 6, 243, 193, 194, 195, 7, 6, 1077, + 243, 6, 244, 243, 87, 204, 7, 4, 5, 208, + 248, 210, 211, 240, 248, 6, 240, 243, 1096, 238, + 245, 64, 4, 7, 1077, 1078, 1079, 7, 1104, 1105, + 239, 6, 240, 1111, 6, 994, 243, 236, 237, 7, + 6, 174, 7, 1096, 243, 6, 245, 6, 243, 46, 47, 48, 49, 50, 51, 52, 53, 54, 1111, 1112, - 243, 4, 59, 60, 61, 62, 6, 6, 6, 6, - 67, 68, 69, 240, 7, 72, 7, 74, 241, 7, - 1131, 7, 7, 1264, 1265, 1163, 7, 7, 85, 7, - 1427, 88, 7, 7, 1431, 7, 7, 7, 7, 1177, - 1178, 1179, 7, 7, 243, 6, 242, 240, 7, 240, - 1163, 248, 7, 248, 243, 243, 248, 389, 248, 1447, - 245, 4, 6, 245, 1177, 1178, 1179, 244, 244, 126, - 129, 6, 8, 7, 7, 1188, 7, 1019, 7, 245, - 1193, 240, 240, 9, 1197, 248, 248, 248, 1226, 240, - 242, 245, 247, 1206, 177, 1208, 7, 149, 1211, 6, - 244, 243, 6, 4, 46, 46, 245, 239, 245, 1220, - 239, 239, 245, 1226, 239, 182, 4, 7, 7, 240, - 7, 248, 7, 7, 7, 6, 240, 7, 248, 1282, - 7, 1284, 1245, 7, 4, 4, 193, 194, 195, 243, - 6, 109, 239, 7, 6, 243, 1284, 204, 1810, 7, - 7, 208, 1265, 210, 211, 1293, 7, 7, 7, 1297, - 7, 7, 6, 6, 6, 497, 7, 499, 6, 501, - 502, 1284, 97, 6, 4, 4, 4, 509, 510, 248, - 1293, 246, 249, 244, 1297, 252, 243, 240, 248, 243, - 6, 6, 243, 6, 243, 7, 6, 241, 6, 1440, - 267, 239, 1453, 1454, 239, 6, 6, 6, 248, 1347, - 1348, 1349, 243, 242, 6, 245, 6, 1355, 123, 6, - 6, 6, 6, 177, 6, 6, 6, 6, 6, 6, - 6, 6, 1370, 5, 1347, 1348, 1349, 6, 240, 240, - 4, 6, 1355, 1381, 4, 1633, 7, 6, 243, 243, - 6, 1389, 6, 243, 243, 6, 243, 1370, 241, 243, - 6, 243, 6, 173, 243, 6, 243, 243, 1381, 6, - 1423, 7, 4, 240, 4, 248, 1389, 243, 6, 1392, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 243, 248, - 1541, 248, 238, 635, 240, 637, 638, 639, 640, 641, - 642, 243, 644, 645, 646, 647, 239, 245, 650, 651, - 652, 1459, 243, 390, 248, 6, 6, 239, 1481, 7, - 239, 6, 6, 6, 1447, 6, 6, 95, 5, 4, - 1453, 1454, 240, 1481, 243, 248, 1459, 243, 6, 6, - 6, 248, 6, 6, 6, 248, 248, 6, 240, 6, - 1473, 6, 248, 6, 243, 243, 7, 243, 1481, 5, - 243, 6, 240, 1486, 6, 6, 243, 6, 6, 244, - 7, 244, 243, 172, 6, 1636, 240, 6, 720, 244, - 7, 244, 244, 6, 6, 462, 728, 245, 6, 6, - 6, 6, 6, 243, 240, 244, 1559, 6, 1649, 243, - 6, 6, 175, 244, 1552, 239, 243, 243, 485, 244, - 240, 243, 1819, 6, 243, 492, 493, 6, 6, 129, - 244, 6, 243, 6, 6, 240, 243, 1379, 6, 1552, - 1578, 6, 1555, 1556, 511, 6, 1599, 244, 244, 516, - 6, 1563, 1564, 1606, 1607, 1593, 6, 6, 6, 1847, - 6, 6, 6, 6, 6, 1578, 6, 6, 6, 243, - 243, 1584, 1625, 243, 541, 6, 6, 6, 1958, 1273, - 1593, 434, 1322, 1491, 1622, 1783, 1748, 1548, 1601, 3, - 705, 1604, 1292, 3, 3, 3, 1806, 1635, 561, 566, - 567, 3, 1420, 1629, 1606, -1, 1454, 720, 1619, 1622, - 1621, -1, 1909, -1, -1, -1, 1629, -1, -1, -1, - 1633, -1, 1635, 1636, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - 1678, -1, -1, 238, -1, 612, 613, 614, -1, 1946, - -1, -1, 1665, 1495, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1678, -1, -1, -1, -1, - -1, -1, -1, -1, 1712, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 657, -1, -1, -1, -1, -1, 8, 1750, -1, 1712, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1724, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1737, 692, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1788, 1774, 1579, 1580, 1581, - 1582, 1583, 1584, -1, 711, -1, 1784, -1, -1, -1, - 717, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1774, 994, -1, -1, -1, 1804, -1, -1, -1, - -1, 1784, -1, -1, -1, -1, 1789, -1, -1, -1, - 1818, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 757, 1804, 759, -1, 1807, -1, -1, -1, 1810, -1, - -1, -1, -1, -1, -1, 1818, -1, -1, -1, 1822, + 242, 240, 59, 60, 61, 62, 6, 243, 1019, 243, + 67, 68, 69, 243, 243, 72, 7, 74, 245, 6, + 1131, 241, 239, 4, 243, 1163, 6, 6, 85, 6, + 6, 88, 1429, 240, 7, 241, 1433, 7, 7, 1177, + 1178, 1179, 7, 7, 7, 7, 7, 7, 7, 7, + 1163, 7, 7, 7, 7, 7, 1449, 243, 6, 1078, + 1079, 240, 242, 7, 1177, 1178, 1179, 248, 240, 126, + 248, 248, 248, 243, 245, 1188, 7, 243, 4, 6, + 1193, 245, 244, 244, 1197, 7, 129, 6, 1226, 7, + 1282, 7, 1284, 1206, 7, 1208, 245, 248, 1211, 240, + 240, 248, 9, 248, 240, 242, 245, 7, 177, 1220, + 149, 6, 247, 1226, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 1814, 1264, 1265, + 244, 238, 1245, 243, 6, 4, 193, 194, 195, 245, + 46, 46, 239, 239, 245, 239, 1284, 204, 239, 4, + 245, 208, 1265, 210, 211, 1293, 7, 7, 7, 1297, + 248, 7, 240, 7, 7, 6, 248, 240, 7, 7, + 7, 1284, 4, 109, 1193, 4, 243, 239, 1197, 6, + 1293, 7, 6, 240, 1297, 242, 243, 1206, 7, 1208, + 7, 7, 1211, 7, 7, 7, 7, 243, 6, 6, + 6, 97, 1455, 1456, 7, 6, 6, 4, 4, 1347, + 1348, 1349, 246, 240, 243, 248, 6, 1355, 248, 243, + 243, 6, 244, 6, 241, 7, 6, 6, 239, 239, + 243, 6, 1370, 1425, 1347, 1348, 1349, 6, 245, 6, + 242, 6, 1355, 1381, 1637, 248, 1265, 6, 123, 6, + 6, 1389, 6, 177, 6, 6, 6, 1370, 6, 6, + 6, 6, 6, 6, 5, 240, 240, 6, 1381, 4, + 4, 5, 4, 6, 241, 6, 1389, 243, 7, 1392, + 6, 6, 6, 6, 6, 173, 243, 6, 6, 6, + 6, 1483, 243, 243, 243, 7, 243, 243, 243, 4, + 243, 243, 243, 243, 6, 240, 1442, 239, 6, 248, + 248, 248, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 6, 243, 1461, 4, 59, 60, 61, 62, 243, + 245, 248, 7, 67, 68, 69, 1449, 239, 72, 6, + 74, 239, 1455, 1456, 6, 1483, 6, 6, 1461, 6, + 5, 85, 243, 95, 88, 240, 248, 243, 6, 6, + 6, 248, 1475, 6, 6, 6, 248, 240, 1379, 1561, + 1483, 248, 6, 4, 6, 1488, 6, 248, 243, 6, + 243, 7, 243, 182, 5, 243, 240, 1640, 6, 6, + 6, 243, 126, 6, 172, 7, 244, 244, 243, 6, + 6, 6, 244, 7, 240, 6, 6, 1543, 6, 244, + 244, 1603, 245, 6, 6, 243, 1554, 6, 1610, 1611, + 6, 244, 240, 6, 6, 6, 1823, 6, 243, 6, + 239, 6, 129, 243, 6, 175, 6, 1629, 240, 244, + 244, 1554, 1580, 6, 1557, 1558, 244, 6, 243, 243, + 243, 243, 243, 1565, 1566, 6, 1475, 1595, 1851, 193, + 194, 195, 6, 240, 6, 6, 6, 1580, 267, 6, + 204, 244, 244, 1586, 208, 6, 210, 211, 6, 6, + 243, 6, 1595, 243, 6, 6, 1497, 6, 1626, 6, + 243, 6, 1605, 6, 6, 1608, 1962, 1273, 1322, 1787, + 434, 1639, 1493, 1752, 1550, 1292, 3, 705, 3, 243, + 3, 3, 1623, 1626, 1625, 1810, 1913, 1653, 1422, 3, + 1633, 1456, -1, 561, 1637, 720, 1639, 1640, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 1682, -1, 1633, 1610, 238, -1, + -1, -1, -1, 1950, -1, -1, 1669, -1, -1, -1, + -1, -1, 1754, -1, -1, -1, -1, -1, -1, 1682, + 1581, 1582, 1583, 1584, 1585, 1586, -1, -1, 1716, -1, + 8, -1, -1, -1, -1, -1, 1605, -1, -1, 1608, + -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, + 1792, -1, -1, 1716, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1728, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1741, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1858, -1, -1, -1, 791, -1, -1, -1, 107, -1, - -1, -1, -1, -1, 1847, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1882, 1858, 1078, 1079, -1, -1, - -1, -1, -1, -1, -1, 134, -1, -1, -1, 138, - -1, -1, -1, 142, -1, 832, -1, -1, -1, 1882, - -1, 1924, -1, -1, -1, -1, -1, -1, 845, -1, - 159, 160, 161, 1894, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 862, 175, 176, 177, 178, - -1, -1, -1, 182, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, - -1, -1, 244, -1, -1, 1948, 1949, 1950, 1951, 1952, - -1, -1, -1, -1, -1, 1956, -1, -1, -1, -1, - -1, -1, -1, 1991, -1, -1, -1, -1, -1, -1, - -1, 1193, -1, -1, -1, 1197, -1, 1978, -1, 248, - 249, 250, 251, 252, 1206, -1, 1208, -1, 1991, 1211, - -1, 1823, 1824, 1825, 1826, 1827, -1, 266, 267, -1, - -1, -1, -1, -1, 2007, -1, -1, -1, -1, -1, - -1, -1, -1, 282, -1, 2043, -1, -1, -1, -1, - 182, -1, -1, 292, 293, -1, 2029, -1, -1, 298, - -1, -1, 989, -1, -1, -1, -1, -1, -1, 308, - 2043, -1, -1, 1265, -1, -1, -1, 2050, 2051, 1881, - -1, -1, -1, 1885, -1, -1, -1, -1, -1, -1, - -1, 2064, 331, -1, -1, -1, 335, 336, 337, -1, - 339, -1, -1, -1, 343, 344, 345, -1, -1, 348, - -1, -1, 1039, -1, -1, -1, -1, -1, -1, -1, + 1778, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1788, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1778, -1, -1, -1, -1, + 1808, -1, -1, -1, -1, 1788, -1, -1, -1, -1, + 1793, -1, -1, -1, 1822, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1808, -1, -1, 1811, -1, + -1, -1, 1814, -1, -1, -1, -1, -1, -1, 1822, + -1, -1, -1, 1826, -1, -1, -1, 516, -1, -1, + -1, -1, -1, -1, 1862, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1928, -1, 1851, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1886, 1862, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1932, -1, -1, -1, 1936, 267, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, - 1952, 390, 391, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 407, 408, - -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, - -1, -1, 421, -1, -1, 1112, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1997, 1998, -1, -1, -1, - -1, -1, -1, -1, 443, -1, -1, -1, 447, -1, + -1, -1, -1, -1, 8, -1, -1, 566, 567, -1, + -1, -1, -1, 1886, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1898, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, + 238, -1, 240, 612, 613, 614, 1827, 1828, 1829, 1830, + 1831, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1952, + 1953, 1954, 1955, 1956, -1, -1, -1, -1, -1, 1960, + -1, -1, -1, -1, -1, -1, -1, 1995, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 461, 462, -1, -1, -1, 466, -1, -1, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, -1, 495, 496, 390, 498, - -1, 1188, -1, -1, -1, 504, -1, 506, -1, -1, - -1, -1, 511, -1, -1, -1, -1, 516, -1, -1, - -1, 1473, -1, -1, -1, -1, -1, 8, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, -1, 548, - 549, -1, -1, -1, -1, -1, 555, 556, 557, 6, - -1, -1, -1, -1, 563, 564, -1, 566, 567, -1, + -1, 1982, -1, -1, 1885, -1, -1, -1, 1889, -1, + -1, -1, 1995, -1, -1, -1, -1, -1, -1, 6, + -1, -1, -1, 692, -1, -1, 107, -1, 2011, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2047, + -1, -1, 711, -1, -1, -1, -1, -1, 717, -1, + 2033, -1, -1, 134, -1, 1936, -1, 138, -1, 1940, + -1, 142, 8, -1, 2047, -1, -1, -1, -1, -1, + -1, 2054, 2055, -1, -1, 1956, -1, -1, 159, 160, + 161, -1, 163, 164, 165, 2068, 167, 168, 169, 170, + 171, 172, 173, -1, 175, 176, 177, 178, -1, -1, + -1, 182, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 2001, 2002, 791, -1, 238, -1, -1, -1, -1, -1, + 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2033, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 585, 586, 587, -1, - -1, 6, 591, 592, 593, 594, 595, 596, 597, 598, - 599, -1, -1, -1, -1, 604, -1, 606, -1, 608, - -1, -1, -1, 612, 613, 614, 615, -1, 617, 618, - 619, -1, -1, -1, 516, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, 643, -1, -1, 238, -1, 1601, - -1, -1, 1604, -1, -1, -1, -1, -1, 657, -1, - -1, -1, -1, 662, -1, 664, -1, -1, 667, 668, - -1, -1, -1, -1, 566, 567, -1, 676, -1, -1, - -1, -1, -1, 682, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 692, -1, -1, -1, -1, -1, 698, - 699, -1, -1, -1, -1, 1392, -1, -1, -1, -1, - -1, -1, 711, -1, 713, 714, -1, -1, 717, 718, - 612, 613, 614, 722, -1, -1, -1, -1, -1, -1, - 729, -1, -1, -1, 733, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, 755, 238, 757, 240, - 759, 242, -1, -1, -1, 657, -1, -1, -1, 216, + -1, -1, -1, 832, -1, 2054, 2055, 248, 249, 250, + 251, 252, -1, -1, -1, -1, 845, -1, -1, 2068, + -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, + -1, -1, -1, 862, -1, -1, -1, -1, -1, -1, + -1, 282, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 292, 293, -1, -1, -1, -1, 298, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 308, -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, - -1, 238, 791, -1, -1, -1, -1, -1, -1, 1486, - 692, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 711, - 22, 23, -1, 238, -1, 717, -1, -1, -1, -1, - -1, -1, -1, 832, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 845, -1, -1, -1, - -1, -1, -1, 852, -1, -1, -1, 856, -1, -1, - -1, -1, -1, 862, -1, -1, -1, -1, 1555, 1556, - -1, 870, 871, -1, -1, -1, -1, 876, -1, -1, + 331, 238, -1, -1, 335, 336, 337, -1, 339, -1, + -1, -1, 343, 344, 345, -1, -1, 348, -1, 182, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + -1, -1, 238, -1, 240, -1, 242, -1, -1, -1, + -1, -1, -1, -1, -1, 386, -1, -1, -1, 390, + 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 989, -1, -1, -1, -1, -1, 407, 408, -1, -1, + -1, -1, -1, -1, -1, -1, 249, -1, -1, 252, + 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, + -1, -1, 443, -1, -1, -1, 447, -1, -1, -1, + 1039, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 461, 462, -1, -1, -1, 466, -1, -1, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, + 491, 492, 493, -1, 495, 496, -1, 498, -1, -1, + -1, -1, -1, 504, -1, 506, -1, -1, -1, -1, + 511, -1, -1, -1, -1, 516, -1, -1, -1, -1, + -1, -1, -1, 1112, -1, 6, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, -1, 548, 549, -1, + 6, -1, -1, -1, 555, 556, 557, 390, -1, -1, + -1, -1, 563, 564, -1, 566, 567, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 892, -1, -1, 895, 1584, -1, 791, + -1, -1, -1, -1, 585, 586, 587, -1, -1, -1, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 1188, + -1, -1, -1, 604, -1, 606, -1, 608, -1, -1, + -1, 612, 613, 614, 615, -1, 617, 618, 619, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 914, -1, 916, 917, -1, + -1, -1, 643, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 485, -1, -1, -1, 657, -1, -1, 492, + 493, 662, -1, 664, -1, -1, 667, 668, -1, -1, + -1, -1, -1, -1, -1, 676, -1, -1, 511, -1, + -1, 682, -1, 516, -1, 6, -1, -1, -1, -1, + -1, 692, -1, -1, -1, -1, -1, 698, 699, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 541, -1, + 711, -1, 713, 714, -1, -1, 717, 718, 129, -1, + -1, 722, -1, -1, -1, 6, -1, -1, 729, -1, + -1, -1, 733, 566, 567, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, 755, -1, 757, 238, 759, -1, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, 612, + 613, 614, 238, -1, -1, -1, -1, -1, -1, -1, + 791, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1392, -1, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, 657, -1, -1, 238, -1, -1, + -1, 832, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 845, -1, -1, -1, -1, -1, + -1, 852, -1, -1, -1, 856, -1, -1, -1, 692, + -1, 862, -1, -1, -1, -1, -1, -1, -1, 870, + 871, -1, -1, -1, -1, 876, -1, -1, 711, -1, + -1, -1, -1, -1, 717, -1, -1, -1, -1, -1, + -1, 892, -1, -1, 895, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 914, -1, 916, 917, 238, -1, -1, + -1, -1, -1, -1, 757, -1, 759, -1, -1, -1, + -1, -1, -1, -1, 935, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, 956, -1, 238, 791, -1, + -1, -1, 963, 964, 965, 966, -1, -1, 1557, 1558, + 971, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 985, 986, -1, -1, 989, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 832, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 134, -1, -1, -1, 935, -1, -1, -1, - 832, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 845, -1, -1, -1, 956, -1, -1, - -1, -1, -1, -1, 963, 964, 965, 966, -1, -1, - 862, -1, 971, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 985, 986, -1, 6, - 989, -1, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, 224, 225, -1, -1, -1, -1, 230, 231, - -1, -1, -1, -1, -1, -1, -1, 1724, 240, 241, - 1039, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1737, -1, -1, -1, -1, -1, 1055, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1065, 1066, 1067, -1, - -1, -1, -1, 1072, 1073, -1, 1075, 2029, -1, -1, - -1, -1, -1, -1, -1, 1084, 1085, -1, -1, -1, - -1, -1, -1, 1092, 1093, -1, -1, 989, 2050, 2051, - 1099, 1100, 1101, -1, -1, -1, -1, -1, 1107, 1108, - -1, -1, 2064, 1112, -1, -1, -1, -1, 6, -1, - 1807, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1822, -1, -1, -1, -1, - -1, -1, -1, -1, 1143, -1, -1, 1039, 350, 351, - 352, -1, -1, -1, 356, 357, 358, 359, 360, 361, - 362, -1, 364, -1, -1, -1, 368, 369, -1, -1, - 372, -1, -1, -1, -1, -1, -1, 1176, -1, -1, - -1, -1, -1, 385, -1, -1, -1, -1, -1, 1188, - -1, -1, -1, -1, -1, -1, -1, 1196, -1, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, -1, 1217, 1218, - 1112, 238, -1, 1222, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1236, -1, -1, - 1239, -1, -1, 4, 5, -1, -1, -1, -1, -1, - -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1948, 1949, 1950, 1951, 1952, -1, 1266, -1, -1, - 1269, 1270, -1, -1, -1, -1, -1, -1, 1277, -1, - 1279, -1, 1281, 1282, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 6, -1, 1188, -1, 59, 60, - 61, 62, -1, -1, -1, -1, 67, 68, 69, -1, - -1, 72, -1, 74, -1, -1, -1, 412, -1, -1, - 2007, -1, 524, -1, 85, -1, -1, 88, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, -1, -1, -1, 1354, -1, -1, -1, -1, - -1, -1, 1361, 1362, 1363, 126, -1, -1, -1, -1, - -1, 1370, -1, 1372, -1, -1, -1, -1, -1, -1, - 1379, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1392, -1, -1, -1, -1, 1397, -1, - -1, -1, -1, -1, -1, -1, 1405, 1406, 1407, -1, - 505, -1, -1, -1, -1, -1, 1415, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1425, -1, -1, -1, - -1, -1, 193, 194, 195, -1, -1, -1, -1, -1, - -1, -1, -1, 204, -1, -1, -1, 208, -1, 210, - 211, -1, 1451, -1, -1, -1, -1, 552, 1457, 1458, - -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 240, - -1, 242, 243, 238, -1, -1, -1, 1486, -1, -1, + -1, -1, 845, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 862, + -1, -1, -1, -1, -1, -1, -1, -1, 1039, -1, + 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1055, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1065, 1066, 1067, -1, -1, -1, + -1, 1072, 1073, 6, 1075, -1, -1, -1, -1, -1, + -1, -1, -1, 1084, 1085, -1, -1, -1, -1, -1, + -1, 1092, 1093, -1, -1, -1, -1, -1, 1099, 1100, + 1101, -1, -1, -1, -1, -1, 1107, 1108, -1, -1, + -1, 1112, -1, -1, -1, -1, -1, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, -1, -1, -1, 107, 108, 109, 110, 22, 23, + 113, -1, 1143, -1, -1, -1, 119, 120, -1, -1, + 123, 124, 1741, 126, 127, -1, 989, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1392, -1, -1, -1, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 1521, 1522, 1523, -1, 238, -1, -1, 6, - -1, -1, -1, 1532, -1, -1, -1, -1, 1537, 1538, - 1539, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1550, -1, -1, -1, -1, 1555, 1556, 1557, -1, - 1559, -1, -1, -1, -1, -1, 1565, 1566, -1, -1, + -1, -1, 145, -1, -1, 1176, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1188, -1, -1, + -1, -1, -1, -1, -1, 1196, 169, 170, 171, -1, + -1, -1, -1, -1, -1, -1, 1039, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1217, 1218, 6, -1, + -1, 1222, 1811, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1236, -1, 1826, 1239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1584, -1, -1, -1, 1588, + 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1266, -1, -1, 1269, 1270, + -1, 244, -1, -1, -1, -1, 1277, -1, 1279, 1112, + 1281, 1282, -1, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + 224, 225, -1, -1, -1, -1, 230, 231, -1, -1, + -1, -1, -1, 1354, -1, 1188, 240, 241, -1, -1, + 1361, 1362, 1363, 1952, 1953, 1954, 1955, 1956, -1, 1370, + -1, 1372, -1, -1, -1, -1, -1, -1, 1379, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1599, -1, -1, 1602, -1, -1, -1, 1606, -1, 811, - -1, -1, -1, -1, -1, -1, 1615, 1616, -1, 1618, - -1, -1, -1, -1, -1, -1, -1, 1626, -1, -1, + -1, 1392, -1, -1, -1, -1, 1397, -1, -1, -1, + -1, -1, -1, -1, 1405, 1406, 1407, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1417, -1, -1, -1, + -1, -1, 2011, -1, -1, -1, 1427, -1, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 4, 5, + 238, -1, 1453, -1, -1, -1, 6, -1, 1459, 1460, + -1, -1, -1, -1, -1, -1, 350, 351, 352, -1, + -1, -1, 356, 357, 358, 359, 360, 361, 362, -1, + 364, -1, -1, -1, 368, 369, -1, 1488, 372, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, + -1, 385, -1, 59, 60, 61, 62, -1, -1, -1, + -1, 67, 68, 69, -1, -1, 72, -1, 74, -1, + -1, -1, 1523, 1524, 1525, -1, -1, -1, -1, 85, + -1, -1, 88, 1534, -1, -1, -1, -1, 1539, 1540, + 1541, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1552, -1, -1, -1, -1, 1557, 1558, 1559, 1392, + 1561, -1, -1, -1, -1, -1, 1567, 1568, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 844, 1642, -1, -1, -1, -1, 1647, 1648, - -1, -1, -1, -1, -1, -1, 6, -1, 1657, -1, - -1, 1660, 1661, 1555, 1556, -1, -1, -1, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, -1, - 775, 776, 777, 778, -1, 780, 781, 782, 783, 8, - -1, 1690, -1, -1, -1, -1, -1, -1, -1, 794, - -1, 796, -1, -1, -1, -1, -1, 1706, 803, -1, - -1, -1, 807, 808, -1, -1, 1715, -1, -1, -1, - -1, 816, -1, -1, -1, 1724, -1, -1, -1, -1, - -1, -1, -1, -1, 1733, 1734, -1, -1, 1737, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 6, -1, -1, - -1, 238, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1771, 1772, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1787, -1, - -1, 1790, -1, -1, -1, -1, 1795, -1, -1, 1798, - -1, -1, -1, -1, -1, -1, -1, 6, 1807, 1011, + -1, -1, -1, -1, -1, 1586, -1, -1, -1, 1590, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1822, -1, -1, 921, 922, 923, -1, - -1, 1830, 927, 928, -1, -1, 931, 932, 933, 934, - -1, 936, -1, -1, -1, 1737, 941, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1855, -1, -1, -1, - -1, -1, 1861, -1, -1, 1864, 216, 217, 218, 219, + -1, -1, 1603, -1, -1, 1606, -1, -1, -1, 1610, + -1, -1, -1, -1, -1, -1, -1, -1, 1619, 1620, + -1, 1622, -1, -1, 6, -1, -1, -1, -1, 1630, + -1, -1, -1, -1, -1, -1, -1, 193, 194, 195, + 524, -1, -1, -1, -1, 1646, -1, -1, 204, -1, + 1651, 1652, 208, -1, 210, 1488, -1, -1, 6, -1, + 1661, -1, -1, 1664, 1665, 412, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, - -1, 1890, -1, -1, -1, 1097, -1, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 1807, 1915, 1916, -1, 238, - -1, -1, 1017, 1018, -1, -1, -1, -1, 1927, 1928, - 1822, 1930, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1943, -1, -1, -1, -1, 1948, - 1949, 1950, 1951, 1952, -1, -1, -1, -1, -1, 1958, - -1, -1, -1, 1962, -1, -1, -1, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, - 1989, -1, -1, -1, -1, 1994, 1995, 1996, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2007, -1, - -1, -1, -1, -1, 1109, -1, -1, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, -1, 2035, 2036, 2037, 238, - -1, -1, -1, -1, -1, -1, -1, 1249, 1250, -1, - -1, -1, -1, -1, -1, -1, 1948, 1949, 1950, 1951, - 1952, -1, -1, -1, 3, 4, 5, -1, -1, -1, - -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2007, 55, 56, 57, 58, - 6, -1, -1, -1, 63, 1327, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1337, 75, 76, 77, -1, - -1, -1, -1, -1, 83, 84, -1, 86, -1, -1, - -1, -1, 91, 1248, -1, 94, -1, -1, 97, -1, - 99, -1, -1, -1, -1, -1, -1, 106, -1, -1, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - 119, -1, 121, -1, -1, 124, -1, 126, 1283, -1, - -1, -1, -1, -1, 133, 134, 135, 136, 137, -1, - -1, 140, 141, 142, 143, 144, -1, -1, -1, 148, - -1, -1, 151, -1, -1, -1, 1311, 1312, 1313, 1314, - 1315, -1, -1, -1, -1, 1320, 1321, -1, 1323, -1, - 1325, -1, -1, -1, 1329, -1, -1, 1332, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1344, - -1, -1, -1, 192, -1, -1, -1, 196, 197, -1, - -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, - -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1485, -1, -1, -1, -1, 227, 228, - -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, - 239, -1, -1, -1, 243, 6, -1, 246, -1, -1, - -1, -1, -1, -1, -1, -1, 1411, -1, 1413, -1, - -1, -1, 1417, -1, 1419, -1, -1, -1, -1, -1, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - -1, -1, 238, -1, -1, -1, -1, -1, 1453, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, - -1, -1, -1, 10, 11, 12, -1, -1, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 6, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, -1, -1, -1, -1, 1540, 83, 84, 85, 86, - -1, 88, -1, -1, 91, -1, -1, 94, -1, -1, - 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, - -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, 119, -1, 121, -1, -1, 124, -1, 126, - -1, -1, -1, -1, -1, -1, 133, 134, 135, 136, - 137, -1, -1, 140, 141, 142, 143, 144, -1, -1, - -1, 148, -1, -1, 151, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, - -1, -1, -1, 1638, -1, -1, 1641, -1, -1, -1, - -1, -1, -1, -1, -1, 192, 193, 194, 195, 196, - 197, -1, -1, -1, 201, 202, 203, 204, 205, 206, - 207, 208, -1, 210, 211, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1679, 1680, -1, 1682, 6, -1, - 227, 228, -1, -1, -1, -1, -1, 234, -1, -1, - -1, -1, 239, -1, -1, -1, 243, -1, -1, 246, - -1, -1, -1, -1, -1, -1, -1, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, - -1, -1, -1, -1, -1, -1, 1741, 1742, 3, 4, - 5, -1, -1, -1, -1, 10, 11, 12, -1, -1, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, - 1785, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, - -1, -1, 67, 68, 69, -1, -1, 72, -1, 74, - 75, 76, 77, -1, -1, -1, -1, -1, 83, 84, - 85, 86, -1, 88, -1, -1, 91, -1, -1, 94, - -1, -1, 97, -1, 99, -1, -1, -1, -1, -1, - -1, 106, -1, -1, -1, 110, -1, -1, -1, -1, - -1, 6, -1, -1, 119, -1, 121, -1, -1, 124, - -1, 126, -1, -1, -1, -1, -1, -1, 133, 134, - 135, 136, 137, -1, -1, 140, 141, 142, 143, 144, - -1, -1, -1, 148, -1, -1, 151, -1, 216, 217, + -1, -1, -1, 1694, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1710, + -1, -1, -1, -1, -1, -1, -1, -1, 1719, -1, + -1, -1, -1, -1, 1557, 1558, -1, 1728, -1, -1, + -1, -1, -1, -1, -1, -1, 1737, 1738, -1, -1, + 1741, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1586, -1, -1, -1, -1, 505, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1775, 1776, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1791, -1, -1, 1794, -1, -1, -1, -1, 1799, -1, + -1, 1802, -1, -1, -1, 552, -1, -1, -1, -1, + 1811, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1826, -1, -1, -1, -1, + -1, -1, -1, 1834, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, -1, -1, 238, -1, 1859, -1, + 6, -1, -1, -1, 1865, -1, -1, 1868, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 6, -1, -1, -1, - 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 192, 193, 194, - 195, 196, 197, -1, -1, -1, 201, 202, 203, 204, - 205, 206, 207, 208, -1, 210, 211, -1, -1, -1, + 238, -1, -1, 1894, -1, 1728, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1741, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1919, 1920, + 6, -1, -1, -1, -1, -1, -1, 811, -1, -1, + 1931, 1932, -1, 1934, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, 1947, -1, -1, -1, + -1, 1952, 1953, 1954, 1955, 1956, -1, -1, -1, -1, + 844, 1962, -1, -1, -1, 1966, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1811, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, - -1, -1, -1, -1, 239, 3, 4, 5, 243, 7, - -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 2016, -1, -1, -1, -1, -1, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, 67, - 68, 69, -1, -1, 72, -1, 74, 75, 76, 77, - -1, -1, 129, -1, -1, 83, 84, 85, 86, -1, - 88, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, + -1, -1, 1993, 1826, -1, -1, -1, 1998, 1999, 2000, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 216, 217, 218, 219, + 2011, -1, -1, -1, -1, -1, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, -1, 775, 776, + 777, 778, -1, 780, 781, 782, 783, -1, 2039, 2040, + 2041, -1, -1, -1, -1, -1, -1, 794, -1, 796, + -1, -1, -1, -1, -1, -1, 803, -1, -1, -1, + 807, 808, -1, -1, -1, -1, -1, -1, -1, 816, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + -1, -1, 238, -1, -1, -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, -1, -1, -1, -1, 238, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 185, -1, -1, - -1, 238, -1, -1, 192, 193, 194, 195, 196, -1, - -1, -1, -1, 201, 202, 203, 204, 205, 206, 207, - 208, -1, 210, 211, 212, 213, 214, 215, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, - 228, -1, -1, -1, -1, -1, 234, -1, 236, 237, - -1, 239, -1, 241, 3, 4, 5, 245, 246, -1, - -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, - -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, - -1, 13, 14, -1, 83, 84, -1, 86, -1, -1, - -1, -1, 91, -1, -1, 94, -1, -1, 97, -1, - 99, -1, -1, -1, -1, -1, -1, 106, -1, -1, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - 119, -1, 121, -1, -1, 124, -1, 126, -1, -1, - -1, -1, -1, -1, 133, 134, 135, 136, 137, -1, - -1, 140, 141, 142, 143, 144, -1, -1, -1, 148, - -1, -1, 151, -1, -1, -1, -1, -1, -1, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, -1, -1, -1, 107, 108, 109, 110, -1, - -1, 113, -1, -1, -1, -1, -1, 119, 120, -1, - -1, 123, 124, 192, 126, 127, -1, 196, 197, -1, - -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, - -1, -1, 211, 145, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, - -1, -1, -1, -1, -1, 234, -1, 169, 170, 171, - 239, 3, 4, -1, 243, -1, -1, 246, 10, 11, - 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 244, 75, 76, 77, -1, -1, 13, 14, - -1, 83, 84, -1, 86, -1, -1, -1, -1, 91, - -1, -1, 94, -1, -1, 97, -1, 99, -1, -1, - -1, -1, -1, -1, 106, -1, -1, -1, 110, -1, - -1, -1, -1, -1, -1, -1, -1, 119, -1, 121, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, - -1, 133, 134, 135, 136, 137, -1, -1, 140, 141, - 142, 143, 144, -1, -1, -1, 148, -1, -1, 151, - -1, -1, -1, -1, -1, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, - -1, -1, 107, 108, 109, 110, -1, -1, 113, -1, - -1, -1, -1, -1, 119, 120, -1, -1, 123, 124, - 192, 126, 127, -1, 196, 197, -1, -1, -1, 201, - 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, - 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, - -1, -1, 234, -1, 169, 170, 171, 239, 3, 4, - -1, 243, 244, -1, 246, 10, 11, 12, -1, -1, + 230, 231, 232, 233, -1, -1, -1, -1, 238, 1952, + 1953, 1954, 1955, 1956, -1, -1, -1, 1011, -1, -1, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + -1, -1, 238, -1, -1, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, 921, 922, 923, 238, 2011, -1, + 927, 928, -1, -1, 931, 932, 933, 934, -1, 936, + -1, -1, -1, -1, 941, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, + 5, -1, -1, 1097, -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 244, - 75, 76, 77, -1, -1, 13, 14, -1, 83, 84, - -1, 86, -1, -1, -1, -1, 91, -1, -1, 94, + -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + 1017, 1018, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, -1, -1, -1, -1, -1, 83, 84, + 85, 86, -1, 88, -1, -1, 91, -1, -1, 94, -1, -1, 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, -1, -1, -1, 110, -1, -1, -1, -1, - -1, -1, -1, -1, 119, -1, 121, -1, -1, 124, + -1, -1, -1, -1, 119, -1, 121, -1, 6, 124, -1, 126, -1, -1, -1, -1, -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, 141, 142, 143, 144, -1, -1, -1, 148, -1, -1, 151, -1, -1, -1, - -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, -1, -1, -1, 107, - 108, 109, 110, -1, -1, 113, -1, -1, -1, -1, - -1, 119, 120, -1, -1, 123, 124, 192, 126, 127, - -1, 196, 197, -1, -1, -1, 201, 202, 203, -1, - 205, 206, 207, -1, -1, -1, 211, 145, -1, -1, + -1, -1, 1109, -1, -1, 1249, 1250, -1, -1, -1, + -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, 6, 240, -1, 192, 193, 194, + 195, 196, 197, 248, -1, -1, 201, 202, 203, 204, + 205, 206, 207, 208, -1, 210, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, - -1, 169, 170, 171, 239, 3, 4, -1, 243, -1, - -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, - 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 244, 75, 76, 77, - -1, -1, 13, 14, -1, 83, 84, -1, 86, -1, - -1, -1, -1, 91, -1, -1, 94, -1, -1, 97, - -1, 99, -1, -1, -1, -1, -1, -1, 106, -1, - -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, - -1, 119, -1, 121, -1, -1, 124, -1, 126, -1, - -1, -1, -1, -1, -1, 133, 134, 135, 136, 137, - -1, -1, 140, 141, 142, 143, 144, -1, -1, -1, - 148, -1, -1, 151, -1, -1, -1, -1, -1, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, -1, -1, -1, 107, 108, 109, 110, - -1, -1, 113, -1, -1, -1, -1, -1, 119, 120, - -1, -1, 123, 124, 192, 126, 127, -1, 196, 197, - -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, - -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, - 228, -1, -1, -1, -1, -1, 234, -1, 169, 170, - 171, 239, 3, 4, -1, 243, -1, -1, 246, 10, - 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, + -1, -1, -1, 1327, 239, -1, -1, -1, 243, -1, + -1, 246, -1, 1337, 3, 4, -1, -1, -1, -1, + -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1248, -1, -1, -1, -1, 55, 56, 57, 58, + -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, -1, -1, 83, 84, 1283, 86, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, + 238, -1, -1, -1, 1311, 1312, 1313, 1314, 1315, -1, + -1, -1, -1, 1320, 1321, -1, 1323, -1, 1325, -1, + -1, -1, 1329, -1, -1, 1332, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1344, -1, -1, + -1, -1, -1, 1487, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 192, -1, -1, -1, 196, -1, -1, + -1, -1, 201, 202, 203, 6, 205, 206, 207, -1, + -1, -1, 211, -1, -1, -1, 1413, -1, 1415, -1, + -1, -1, 1419, -1, 1421, -1, -1, -1, 227, 228, + -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, + 239, -1, -1, -1, 243, -1, -1, 246, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1455, -1, + -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, + -1, -1, -1, 10, 11, 12, -1, -1, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 7, 8, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, + 77, -1, -1, -1, -1, 1542, 83, 84, 85, 86, + -1, 88, -1, -1, 91, -1, -1, 94, -1, -1, + 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, + -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, + -1, -1, 119, -1, 121, -1, -1, 124, -1, 126, + -1, -1, -1, -1, -1, -1, 133, 134, 135, 136, + 137, -1, -1, 140, 141, 142, 143, 144, -1, -1, + -1, 148, -1, -1, 151, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 7, -1, -1, -1, 238, -1, -1, + -1, -1, -1, -1, -1, 1642, -1, -1, 1645, -1, + -1, -1, -1, -1, -1, 192, 193, 194, 195, 196, + 197, -1, -1, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 8, 210, 211, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1683, 1684, -1, 1686, + 227, 228, -1, -1, -1, 8, -1, 234, -1, -1, + -1, -1, 239, -1, -1, -1, 243, -1, -1, 246, + -1, -1, -1, -1, -1, -1, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1745, 1746, + 3, 4, 5, -1, 7, -1, -1, 10, 11, 12, + -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 8, -1, -1, -1, + -1, -1, 1789, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 67, 68, 69, -1, -1, 72, + -1, 74, 75, 76, 77, -1, -1, -1, -1, -1, + 83, 84, 85, 86, -1, 88, -1, -1, -1, -1, + -1, -1, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, + -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + -1, -1, 238, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, + -1, -1, 185, -1, -1, -1, -1, -1, -1, 192, + 193, 194, 195, 196, -1, -1, -1, -1, 201, 202, + 203, 204, 205, 206, 207, 208, -1, 210, 211, 212, + 213, 214, 215, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, + -1, 234, -1, 236, 237, -1, 239, -1, 241, -1, + -1, -1, 245, 246, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 3, 4, 5, -1, 238, -1, -1, 10, + 11, 12, -1, 2020, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 244, 75, 76, 77, -1, -1, 13, + -1, -1, -1, -1, 75, 76, 77, -1, -1, 13, 14, -1, 83, 84, -1, 86, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, -1, -1, -1, 110, @@ -4265,7 +4215,7 @@ static const yytype_int16 yycheck[] = 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, -1, 169, 170, 171, 239, 3, - 4, -1, 243, -1, -1, 246, 10, 11, 12, -1, + 4, 5, 243, -1, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, @@ -4288,8 +4238,8 @@ static const yytype_int16 yycheck[] = -1, 205, 206, 207, -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, - 234, -1, 169, 170, 171, 239, 3, 4, -1, -1, - 244, -1, 246, 10, 11, 12, -1, -1, 15, 16, + 234, -1, 169, 170, 171, 239, 3, 4, -1, 243, + -1, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, @@ -4312,7 +4262,7 @@ static const yytype_int16 yycheck[] = 207, -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, -1, 169, - 170, 171, 239, 3, 4, -1, 243, -1, -1, 246, + 170, 171, 239, 3, 4, -1, 243, 244, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -4401,20 +4351,20 @@ static const yytype_int16 yycheck[] = -1, -1, 151, -1, -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, -1, -1, 107, 108, 109, 110, -1, - -1, 113, 7, 8, -1, -1, -1, 119, 120, -1, + -1, 113, -1, -1, -1, -1, -1, 119, 120, -1, -1, 123, 124, 192, 126, 127, -1, 196, 197, -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, -1, 169, 170, 171, - 239, 3, 4, -1, 243, -1, -1, 246, 10, 11, + 239, 3, 4, -1, -1, 244, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 244, 75, 76, 77, -1, -1, -1, -1, + -1, -1, 244, 75, 76, 77, -1, -1, 13, 14, -1, 83, 84, -1, 86, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, -1, -1, -1, 110, -1, @@ -4422,114 +4372,232 @@ static const yytype_int16 yycheck[] = -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, 141, 142, 143, 144, -1, -1, -1, 148, -1, -1, 151, - -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 192, -1, -1, -1, 196, 197, -1, -1, -1, 201, + -1, -1, -1, -1, -1, -1, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, + -1, -1, 107, 108, 109, 110, -1, -1, 113, -1, + -1, -1, -1, -1, 119, 120, -1, -1, 123, 124, + 192, 126, 127, -1, 196, 197, -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, - -1, -1, 234, 3, 4, 5, -1, 239, -1, -1, - 10, 11, 12, -1, 246, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, - -1, -1, -1, -1, -1, -1, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, 67, 68, 69, - -1, -1, 72, -1, 74, 75, 76, 77, -1, -1, - -1, -1, -1, 83, 84, 85, 86, -1, 88, 3, - 4, 5, -1, -1, -1, -1, 10, 11, 12, -1, + -1, -1, 234, -1, 169, 170, 171, 239, 3, 4, + -1, 243, -1, -1, 246, 10, 11, 12, -1, -1, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 244, + 75, 76, 77, -1, -1, 13, 14, -1, 83, 84, + -1, 86, -1, -1, -1, -1, 91, -1, -1, 94, + -1, -1, 97, -1, 99, -1, -1, -1, -1, -1, + -1, 106, -1, -1, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, 119, -1, 121, -1, -1, 124, + -1, 126, -1, -1, -1, -1, -1, -1, 133, 134, + 135, 136, 137, -1, -1, 140, 141, 142, 143, 144, + -1, -1, -1, 148, -1, -1, 151, -1, -1, -1, + -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, -1, -1, -1, 107, + 108, 109, 110, -1, -1, 113, -1, -1, -1, -1, + -1, 119, 120, -1, -1, 123, 124, 192, 126, 127, + -1, 196, 197, -1, -1, -1, 201, 202, 203, -1, + 205, 206, 207, -1, -1, -1, 211, 145, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, + -1, 169, 170, 171, 239, 3, 4, -1, 243, -1, + -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, + 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 244, 75, 76, 77, + -1, -1, 13, 14, -1, 83, 84, -1, 86, -1, + -1, -1, -1, 91, -1, -1, 94, -1, -1, 97, + -1, 99, -1, -1, -1, -1, -1, -1, 106, -1, + -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, + -1, 119, -1, 121, -1, -1, 124, -1, 126, -1, + -1, -1, -1, -1, -1, 133, 134, 135, 136, 137, + -1, -1, 140, 141, 142, 143, 144, -1, -1, -1, + 148, -1, -1, 151, -1, -1, -1, -1, -1, -1, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, -1, -1, -1, 107, 108, 109, 110, + -1, -1, 113, -1, -1, -1, -1, -1, 119, 120, + -1, -1, 123, 124, 192, 126, 127, -1, 196, 197, + -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, + -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, + 228, -1, -1, -1, -1, -1, 234, -1, 169, 170, + 171, 239, 3, 4, -1, 243, -1, -1, 246, 10, + 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, + -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 244, 75, 76, 77, -1, -1, 13, + 14, -1, 83, 84, -1, 86, -1, -1, -1, -1, + 91, -1, -1, 94, -1, -1, 97, -1, 99, -1, + -1, -1, -1, -1, -1, 106, -1, -1, -1, 110, + -1, -1, -1, -1, -1, -1, -1, -1, 119, -1, + 121, -1, -1, 124, -1, 126, -1, -1, -1, -1, + -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, + 141, 142, 143, 144, -1, -1, -1, 148, -1, -1, + 151, -1, -1, -1, -1, -1, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + -1, -1, -1, 107, 108, 109, 110, -1, -1, 113, + -1, -1, -1, -1, -1, 119, 120, -1, -1, 123, + 124, 192, 126, 127, -1, 196, 197, -1, -1, -1, + 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, + 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, + -1, -1, -1, 234, -1, 169, 170, 171, 239, 3, + 4, -1, 243, -1, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, - -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, 67, 68, 69, -1, -1, 72, -1, - 74, 75, 76, 77, -1, -1, -1, -1, -1, 83, - 84, 85, 86, -1, 88, -1, -1, -1, -1, -1, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 192, 193, 194, 195, 196, -1, -1, -1, - -1, 201, 202, 203, 204, 205, 206, 207, 208, -1, - 210, 211, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, - -1, -1, -1, -1, 234, -1, -1, -1, -1, 239, - -1, -1, -1, 243, -1, -1, 246, -1, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, -1, -1, -1, -1, -1, -1, 192, 193, - 194, 195, 196, -1, -1, -1, -1, 201, 202, 203, - 204, 205, 206, 207, 208, -1, 210, 211, -1, -1, + -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 244, 75, 76, 77, -1, -1, 13, 14, -1, 83, + 84, -1, 86, -1, -1, -1, -1, 91, -1, -1, + 94, -1, -1, 97, -1, 99, -1, -1, -1, -1, + -1, -1, 106, -1, -1, -1, 110, -1, -1, -1, + -1, -1, -1, -1, -1, 119, -1, 121, -1, -1, + 124, -1, 126, -1, -1, -1, -1, -1, -1, 133, + 134, 135, 136, 137, -1, -1, 140, 141, 142, 143, + 144, -1, -1, -1, 148, -1, -1, 151, -1, -1, + -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, -1, -1, -1, + 107, 108, 109, 110, -1, -1, 113, 8, -1, -1, + -1, -1, 119, 120, -1, -1, 123, 124, 192, 126, + 127, -1, 196, 197, -1, -1, -1, 201, 202, 203, + -1, 205, 206, 207, -1, -1, -1, 211, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, - 234, -1, -1, -1, -1, 239, 3, 4, 5, 243, + 234, -1, 169, 170, 171, 239, 3, 4, -1, 243, -1, -1, 246, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 8, -1, -1, -1, -1, -1, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, -1, -1, -1, -1, -1, 83, 84, 85, 86, - -1, 88, 3, 4, 5, -1, -1, -1, -1, 10, - 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, - -1, -1, -1, -1, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, -1, -1, -1, 67, 68, 69, -1, - -1, 72, -1, 74, 75, 76, 77, -1, -1, -1, - -1, -1, 83, 84, 85, 86, -1, 88, -1, -1, + 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, + 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 244, 75, 76, + 77, -1, -1, -1, -1, -1, 83, 84, -1, 86, + -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, + 97, -1, 99, -1, -1, -1, -1, -1, -1, 106, + -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, + -1, -1, 119, -1, 121, -1, -1, 124, -1, 126, + -1, -1, -1, -1, -1, -1, 133, 134, 135, 136, + 137, -1, -1, 140, 141, 142, 143, 144, -1, -1, + -1, 148, -1, -1, 151, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 192, 193, 194, 195, 196, - -1, -1, -1, -1, 201, 202, 203, 204, 205, 206, - 207, 208, -1, 210, 211, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 192, -1, -1, -1, 196, + 197, -1, -1, -1, 201, 202, 203, -1, 205, 206, + 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 227, 228, -1, -1, -1, -1, -1, 234, -1, -1, - -1, -1, 239, -1, -1, -1, 243, -1, -1, 246, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - -1, -1, 238, -1, -1, -1, -1, 8, -1, -1, - -1, 192, 193, 194, 195, 196, -1, -1, -1, -1, - 201, 202, 203, 204, 205, 206, 207, 208, -1, 210, - 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, - -1, -1, -1, 234, 3, 4, -1, -1, 239, -1, - -1, 10, 11, 12, -1, 246, 15, 16, 17, 18, + 227, 228, -1, -1, -1, -1, -1, 234, 3, 4, + 5, -1, 239, -1, -1, 10, 11, 12, -1, 246, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 8, -1, -1, -1, -1, -1, + -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, 67, 68, 69, -1, -1, 72, -1, 74, + 75, 76, 77, -1, -1, -1, -1, -1, 83, 84, + 85, 86, -1, 88, 3, 4, 5, -1, -1, -1, + -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, - -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, - -1, 3, 4, -1, 83, 84, -1, 86, 10, 11, - 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, -1, -1, 67, 68, + 69, -1, -1, 72, -1, 74, 75, 76, 77, -1, + -1, -1, -1, -1, 83, 84, 85, 86, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 75, 76, 77, -1, -1, -1, -1, - -1, 83, 84, -1, 86, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, - -1, -1, -1, 192, -1, -1, -1, 196, -1, -1, - -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, - -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 192, 193, 194, + 195, 196, -1, -1, -1, -1, 201, 202, 203, 204, + 205, 206, 207, 208, -1, 210, 211, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, + -1, -1, -1, -1, 239, -1, -1, -1, 243, -1, + -1, 246, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, + -1, -1, -1, 192, 193, 194, 195, 196, -1, -1, + -1, -1, 201, 202, 203, 204, 205, 206, 207, 208, + -1, 210, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, - 239, -1, -1, -1, 243, -1, -1, 246, -1, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, - 192, 238, -1, -1, 196, -1, -1, -1, 8, 201, - 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, + 239, 3, 4, 5, 243, -1, -1, 246, 10, 11, + 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 8, -1, -1, + -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, 67, 68, 69, -1, -1, + 72, -1, 74, 75, 76, 77, -1, -1, -1, -1, + -1, 83, 84, 85, 86, -1, 88, 3, 4, 5, + -1, -1, -1, -1, 10, 11, 12, -1, -1, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, -1, -1, -1, -1, -1, -1, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, + -1, 67, 68, 69, -1, -1, 72, -1, 74, 75, + 76, 77, -1, -1, -1, -1, -1, 83, 84, 85, + 86, -1, 88, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 192, 193, 194, 195, 196, -1, -1, -1, -1, 201, + 202, 203, 204, 205, 206, 207, 208, -1, 210, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, - -1, -1, 234, -1, -1, -1, -1, 239, 3, 4, - -1, 243, -1, -1, 246, 10, 11, 12, -1, -1, + -1, -1, 234, -1, -1, -1, -1, 239, -1, -1, + -1, 243, -1, -1, 246, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, + -1, -1, -1, -1, -1, -1, 192, 193, 194, 195, + 196, -1, -1, -1, -1, 201, 202, 203, 204, 205, + 206, 207, 208, -1, 210, 211, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 227, 228, -1, -1, -1, -1, -1, 234, 3, + 4, -1, -1, 239, -1, -1, 10, 11, 12, -1, + 246, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 75, 76, 77, -1, -1, 3, 4, -1, 83, + 84, -1, 86, 10, 11, 12, -1, -1, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, + 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 75, 76, + 77, -1, -1, -1, -1, -1, 83, 84, -1, 86, + -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, -1, 242, 192, -1, + -1, -1, 196, 248, -1, -1, -1, 201, 202, 203, + -1, 205, 206, 207, -1, -1, -1, 211, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, + 234, -1, -1, -1, -1, 239, -1, -1, -1, 243, + -1, -1, 246, -1, -1, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, 192, -1, 238, -1, 196, + -1, -1, -1, 244, 201, 202, 203, 248, 205, 206, + 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 227, 228, -1, -1, -1, -1, -1, 234, 3, 4, + -1, 6, 239, 240, -1, 10, 11, 12, -1, 246, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 8, -1, -1, -1, -1, -1, + 35, 36, 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -4542,18 +4610,18 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, - -1, -1, 83, 84, -1, 86, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, -1, -1, -1, 192, 238, -1, - -1, 196, -1, -1, -1, -1, 201, 202, 203, -1, + -1, -1, 83, 84, -1, 86, -1, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, -1, -1, 192, -1, 238, + -1, 196, -1, -1, -1, 244, 201, 202, 203, 248, 205, 206, 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, - -1, -1, -1, -1, 239, 240, -1, -1, -1, -1, + -1, -1, -1, -1, 239, -1, -1, -1, -1, -1, -1, 246, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, - -1, 192, -1, -1, -1, 196, -1, -1, -1, -1, + 244, 192, -1, -1, 248, 196, -1, -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, @@ -4565,107 +4633,62 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, - -1, -1, -1, -1, 83, 84, -1, 86, 3, 4, - -1, 6, -1, -1, -1, 10, 11, 12, -1, -1, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, + -1, 3, 4, -1, 83, 84, -1, 86, 10, 11, + 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 75, 76, 77, -1, -1, -1, -1, -1, 83, 84, - -1, 86, -1, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, 192, -1, 238, -1, 196, -1, -1, - -1, 244, 201, 202, 203, 248, 205, 206, 207, -1, + -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 75, 76, 77, -1, -1, -1, -1, + -1, 83, 84, -1, 86, -1, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + -1, -1, -1, 192, -1, -1, -1, 196, 248, -1, + -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, - 239, -1, -1, -1, -1, -1, -1, 246, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, -1, 242, -1, -1, 192, -1, -1, - 248, 196, -1, -1, -1, -1, 201, 202, 203, -1, - 205, 206, 207, -1, -1, -1, 211, -1, -1, -1, + 239, -1, -1, -1, -1, -1, -1, 246, -1, -1, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 192, -1, 238, -1, 196, -1, -1, -1, -1, 201, + 202, 203, 248, 205, 206, 207, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 227, 228, -1, -1, -1, -1, -1, 234, - 3, 4, -1, -1, 239, -1, -1, 10, 11, 12, - -1, 246, 15, 16, 17, 18, 19, 20, 21, 22, + -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, + -1, -1, 234, 3, 4, -1, -1, 239, 240, -1, + 10, 11, 12, -1, 246, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, + -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, + 3, 4, -1, 83, 84, -1, 86, 10, 11, 12, + -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 75, 76, 77, -1, -1, 3, 4, -1, - 83, 84, -1, 86, 10, 11, 12, -1, -1, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, - 56, 57, 58, -1, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, - 76, 77, -1, -1, -1, -1, -1, 83, 84, -1, - 86, -1, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, -1, -1, 238, -1, 240, -1, -1, 192, - -1, -1, -1, 196, 248, -1, -1, -1, 201, 202, + -1, -1, 75, 76, 77, -1, -1, -1, -1, -1, + 83, 84, -1, 86, -1, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, + -1, -1, 192, -1, -1, -1, 196, 248, -1, -1, + -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, + -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, + -1, -1, -1, -1, 234, -1, -1, -1, -1, 239, + 240, -1, -1, -1, -1, -1, 246, -1, 0, 1, + -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, + -1, 13, 14, -1, -1, -1, -1, -1, -1, 192, + -1, -1, -1, 196, -1, -1, -1, -1, 201, 202, 203, -1, 205, 206, 207, -1, -1, -1, 211, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 228, -1, -1, -1, -1, - -1, 234, -1, -1, -1, -1, 239, 240, -1, -1, - -1, -1, -1, 246, -1, -1, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, -1, -1, 192, -1, 238, -1, - 196, -1, -1, -1, 244, 201, 202, 203, 248, 205, - 206, 207, -1, -1, -1, 211, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 227, 228, -1, -1, -1, -1, -1, 234, 3, - 4, -1, -1, 239, 240, -1, 10, 11, 12, -1, - 246, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, -1, -1, 13, 14, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 55, 56, 57, 58, -1, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 75, 76, 77, -1, -1, 13, 14, -1, 83, - 84, -1, 86, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, - -1, 244, -1, -1, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, -1, -1, - -1, 107, 108, 109, 110, -1, -1, 113, -1, -1, - -1, -1, -1, 119, 120, -1, -1, 123, 124, -1, - 126, 127, -1, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, -1, -1, 145, - 107, 108, 109, 110, -1, -1, 113, -1, -1, -1, - -1, -1, 119, 120, -1, -1, 123, 124, 192, 126, - 127, -1, 196, 169, 170, 171, -1, 201, 202, 203, - -1, 205, 206, 207, -1, -1, -1, 211, 145, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 227, 228, -1, -1, 0, 1, -1, - 234, 4, 169, 170, 171, 239, -1, -1, -1, -1, - 13, 14, 246, -1, -1, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, -1, 238, 244, -1, - -1, 44, 45, 244, -1, -1, -1, 248, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 64, 65, 66, -1, -1, -1, 70, 71, -1, - 73, -1, -1, -1, -1, 78, 79, 244, 81, 82, - -1, 84, -1, -1, -1, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, -1, -1, 106, 107, 108, 109, 110, 111, -1, - 113, -1, 115, 116, 117, 118, 119, 120, 121, -1, - 123, 124, 125, 126, 127, 128, -1, 130, 131, 132, - 133, 134, 135, 136, 137, 138, -1, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, -1, 4, -1, 157, 158, 159, -1, -1, -1, - 163, 13, 14, -1, -1, 168, 169, 170, 171, -1, - -1, 174, -1, 176, -1, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, - -1, -1, 44, 45, -1, 198, 199, 200, -1, -1, - -1, -1, -1, -1, -1, -1, 209, -1, 211, -1, - -1, -1, 64, 65, 66, -1, -1, -1, 70, 71, - -1, 73, -1, -1, -1, -1, 78, 79, -1, 81, + -1, 234, 64, 65, 66, -1, 239, -1, 70, 71, + -1, 73, -1, 246, -1, -1, 78, 79, -1, 81, 82, -1, 84, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, @@ -4673,76 +4696,65 @@ static const yytype_int16 yycheck[] = -1, 123, 124, 125, 126, 127, 128, -1, 130, 131, 132, 133, 134, 135, 136, 137, 138, -1, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, -1, -1, -1, 157, 158, 159, -1, -1, - -1, 163, -1, -1, -1, -1, 168, 169, 170, 171, - 4, 5, 174, -1, 176, -1, 178, 179, 180, 181, + 152, 153, -1, 4, -1, 157, 158, 159, -1, -1, + -1, 163, 13, 14, -1, -1, 168, 169, 170, 171, + -1, -1, 174, -1, 176, -1, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - -1, -1, -1, -1, -1, -1, 198, 199, 200, -1, - 4, 5, -1, -1, -1, -1, -1, 209, -1, 211, - -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, -1, -1, -1, -1, 59, 60, 61, 62, -1, - 4, 5, -1, 67, 68, 69, -1, -1, 72, -1, - 74, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 85, -1, -1, 88, 59, 60, 61, 62, -1, - -1, 5, -1, 67, 68, 69, -1, -1, 72, -1, - 74, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 85, -1, -1, 88, 59, 60, 61, 62, -1, - -1, -1, 126, 67, 68, 69, -1, -1, 72, -1, - 74, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 85, -1, -1, 88, 59, 60, 61, 62, -1, - -1, -1, -1, 67, 68, 69, -1, -1, 72, -1, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, -1, -1, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, - 194, 195, -1, -1, -1, -1, -1, -1, -1, -1, - 204, -1, -1, -1, 208, -1, 210, 211, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, - 194, 195, 13, 14, -1, -1, -1, -1, -1, -1, - 204, -1, -1, -1, 208, -1, 210, 211, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, - 194, 195, -1, -1, -1, -1, -1, -1, -1, -1, - 204, -1, -1, -1, 208, -1, 210, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, - 194, 195, -1, -1, -1, -1, -1, 13, 14, -1, - 204, -1, -1, -1, 208, -1, 210, -1, -1, -1, + -1, -1, -1, 44, 45, -1, 198, 199, 200, -1, + -1, -1, -1, -1, -1, -1, -1, 209, -1, 211, + -1, -1, -1, 64, 65, 66, -1, -1, -1, 70, + 71, -1, 73, -1, -1, -1, -1, 78, 79, -1, + 81, 82, -1, 84, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, -1, -1, -1, 107, 108, 109, 110, - -1, -1, 113, -1, -1, -1, -1, -1, 119, 120, - -1, -1, 123, 124, -1, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 145, -1, -1, -1, 149, -1, - -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 169, 170, - 171, 107, 108, 109, 110, -1, -1, 113, -1, -1, - -1, -1, -1, 119, 120, -1, -1, 123, 124, -1, - 126, 127, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 145, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - -1, -1, 238, 169, 170, 171, -1, -1, -1, -1, - -1, -1, 248, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 248, 216, 217, 218, 219, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + 111, -1, 113, -1, 115, 116, 117, 118, 119, 120, + 121, -1, 123, 124, 125, 126, 127, 128, -1, 130, + 131, 132, 133, 134, 135, 136, 137, 138, -1, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, -1, -1, -1, 157, 158, 159, -1, + -1, -1, 163, -1, -1, -1, -1, 168, 169, 170, + 171, 4, 5, 174, -1, 176, -1, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, -1, -1, -1, -1, -1, 198, 199, 200, + -1, 4, 5, -1, -1, -1, -1, -1, 209, -1, + 211, -1, -1, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, -1, 59, 60, 61, 62, + -1, -1, 5, -1, 67, 68, 69, -1, -1, 72, + -1, 74, -1, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 85, -1, -1, 88, 59, 60, 61, 62, + -1, -1, -1, -1, 67, 68, 69, -1, -1, 72, + -1, 74, -1, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 85, -1, -1, 88, 59, 60, 61, 62, + -1, -1, -1, 126, 67, 68, 69, -1, -1, 72, + -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 85, -1, -1, 88, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 248, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, - -1, 238, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 248, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 248, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 248, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 248, 216, 217, 218, 219, 220, 221, 222, 223, 224, + -1, -1, -1, -1, -1, -1, -1, -1, 248, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 193, 194, 195, 13, 14, -1, -1, -1, -1, -1, + -1, 204, -1, -1, -1, 208, -1, 210, 211, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 193, 194, 195, -1, -1, -1, -1, -1, -1, -1, + -1, 204, -1, -1, -1, 208, -1, 210, 211, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 193, 194, 195, -1, -1, -1, -1, -1, 13, 14, + -1, 204, -1, -1, -1, 208, -1, 210, -1, -1, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, -1, -1, -1, 107, 108, 109, + 110, -1, -1, 113, -1, -1, -1, -1, -1, 119, + 120, -1, -1, 123, 124, -1, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 145, -1, -1, -1, 149, + -1, -1, -1, -1, -1, -1, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 169, + 170, 171, 107, 108, 109, 110, -1, -1, 113, -1, + -1, -1, -1, -1, 119, 120, -1, -1, 123, 124, + -1, 126, 127, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 145, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 238, 169, 170, 171, -1, -1, -1, -1, -1, -1, 248, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, @@ -4841,7 +4853,14 @@ static const yytype_int16 yycheck[] = 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, 244, + -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 248, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 248, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, 244, 216, @@ -4925,7 +4944,10 @@ static const yytype_int16 yycheck[] = 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, 244, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, -1, -1, 238, -1, -1, -1, -1, 243, + -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, + 244, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, -1, -1, -1, -1, 244, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, -1, 243, 216, 217, @@ -4934,7 +4956,26 @@ static const yytype_int16 yycheck[] = 238, -1, -1, -1, -1, 243, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, - 240, -1, 242, 216, 217, 218, 219, 220, 221, 222, + -1, -1, -1, 243, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, -1, -1, 238, -1, 240, -1, + 242, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, + 238, -1, -1, -1, 242, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, + -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, -1, -1, 238, -1, -1, -1, 242, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, + -1, 238, -1, -1, -1, 242, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + -1, -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, @@ -4947,189 +4988,173 @@ static const yytype_int16 yycheck[] = 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, -1, -1, 242, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, - -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, -1, -1, 238, -1, -1, -1, 242, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, - -1, 238, -1, -1, -1, 242, 216, 217, 218, 219, + -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, + 238, -1, -1, -1, 242, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, -1, -1, 238, -1, -1, + -1, 242, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, -1, -1, 238, -1, -1, -1, 242, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, + -1, 238, -1, -1, -1, 242, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, - -1, -1, 242, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, -1, -1, 242, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - -1, -1, 238, -1, -1, -1, 242, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, -1, -1, -1, -1, 238, - -1, -1, -1, 242, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, -1, -1, 238, -1, -1, -1, - 242, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, - -1, -1, -1, 238, -1, -1, -1, 242, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238, -1, 240, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, -1, -1, - 238, -1, 240, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, -1, -1, -1, -1, 238 + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238, -1, 240, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, -1, -1, 238, -1, + 240, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, -1, -1, 238 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -5277,72 +5302,73 @@ static const yytype_uint16 yystos[] = 315, 7, 6, 7, 7, 7, 7, 7, 7, 7, 344, 6, 243, 6, 6, 6, 97, 7, 6, 6, 330, 344, 344, 344, 4, 248, 8, 8, 240, 4, - 4, 347, 351, 330, 351, 246, 248, 287, 351, 351, - 338, 351, 240, 248, 338, 243, 295, 243, 6, 330, - 6, 243, 344, 244, 244, 244, 244, 244, 330, 6, - 4, 174, 175, 330, 6, 6, 6, 7, 348, 350, - 6, 241, 274, 273, 273, 6, 260, 239, 239, 243, - 270, 6, 338, 245, 351, 330, 242, 240, 330, 330, - 244, 6, 6, 253, 338, 245, 330, 6, 330, 338, - 240, 243, 330, 352, 274, 46, 243, 344, 352, 355, - 242, 248, 6, 6, 6, 123, 292, 292, 344, 6, - 6, 6, 344, 177, 291, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 5, 244, 274, 274, 274, 274, - 274, 248, 248, 248, 240, 274, 274, 285, 274, 240, - 274, 240, 273, 333, 274, 6, 274, 248, 239, 241, - 273, 4, 240, 242, 274, 6, 244, 344, 344, 344, - 4, 6, 271, 330, 344, 243, 243, 7, 6, 7, - 330, 330, 330, 243, 243, 243, 241, 6, 330, 344, - 330, 6, 6, 330, 341, 244, 5, 344, 243, 243, - 243, 243, 243, 243, 243, 344, 6, 347, 243, 330, - 242, 6, 6, 173, 330, 330, 330, 6, 6, 7, - 274, 248, 248, 274, 248, 330, 4, 189, 288, 289, - 274, 240, 274, 334, 352, 239, 241, 330, 243, 301, - 6, 301, 248, 6, 6, 7, 271, 272, 245, 7, - 6, 348, 244, 248, 330, 271, 243, 274, 356, 357, - 358, 356, 239, 330, 330, 343, 344, 243, 239, 4, - 6, 240, 6, 240, 240, 6, 351, 239, 4, 240, - 248, 239, 344, 352, 7, 273, 282, 330, 346, 286, - 341, 6, 6, 6, 6, 95, 6, 5, 243, 330, - 330, 330, 330, 240, 333, 330, 330, 330, 274, 272, - 243, 6, 291, 6, 330, 344, 4, 6, 347, 347, - 330, 330, 352, 244, 240, 244, 248, 300, 300, 330, - 330, 244, 248, 240, 244, 248, 6, 6, 343, 341, - 341, 341, 341, 341, 228, 341, 6, 244, 330, 6, - 6, 344, 244, 248, 8, 244, 240, 243, 330, 352, - 351, 330, 351, 330, 352, 355, 357, 352, 248, 240, - 248, 244, 330, 318, 318, 344, 352, 330, 6, 4, - 349, 6, 348, 242, 344, 358, 6, 274, 274, 257, - 330, 248, 248, 244, 248, 258, 330, 330, 6, 330, - 330, 240, 278, 280, 243, 357, 244, 248, 7, 7, - 243, 5, 343, 274, 274, 248, 274, 240, 248, 240, - 242, 330, 6, 6, 243, 244, 244, 243, 6, 6, - 243, 330, 244, 244, 244, 242, 6, 344, 7, 243, - 330, 244, 248, 248, 248, 248, 248, 248, 6, 244, - 172, 330, 330, 347, 6, 6, 240, 274, 274, 289, - 352, 244, 244, 244, 244, 6, 6, 7, 6, 245, - 6, 244, 6, 6, 240, 248, 330, 330, 243, 344, - 244, 248, 240, 240, 248, 283, 287, 344, 274, 330, - 352, 361, 330, 6, 244, 330, 333, 330, 244, 343, - 133, 134, 139, 325, 133, 134, 325, 347, 300, 244, - 248, 6, 244, 344, 301, 244, 6, 347, 341, 341, - 341, 341, 341, 330, 244, 244, 244, 240, 6, 243, - 6, 348, 175, 261, 330, 248, 248, 343, 6, 330, - 330, 244, 244, 279, 7, 239, 244, 243, 248, 240, - 248, 244, 243, 341, 344, 6, 243, 341, 6, 244, - 244, 330, 6, 129, 244, 312, 243, 244, 248, 248, - 248, 248, 248, 6, 6, 6, 301, 6, 243, 330, - 330, 244, 248, 283, 352, 240, 330, 330, 330, 6, - 341, 6, 341, 6, 6, 244, 330, 315, 301, 6, - 347, 347, 347, 347, 341, 347, 318, 258, 240, 248, - 6, 243, 330, 244, 248, 248, 248, 248, 248, 6, - 244, 244, 313, 244, 244, 244, 244, 248, 244, 244, - 244, 264, 330, 343, 244, 330, 330, 330, 341, 341, - 315, 6, 6, 6, 6, 347, 6, 6, 6, 243, - 240, 244, 6, 244, 274, 248, 248, 248, 244, 244, - 262, 351, 267, 243, 6, 330, 330, 330, 6, 244, - 248, 243, 343, 244, 244, 244, 6, 351, 265, 351, - 244, 6, 6, 244, 248, 6, 6, 351 + 100, 101, 4, 347, 351, 330, 351, 246, 248, 287, + 351, 351, 338, 351, 240, 248, 338, 243, 295, 243, + 6, 330, 6, 243, 344, 244, 244, 244, 244, 244, + 330, 6, 4, 174, 175, 330, 6, 6, 6, 7, + 348, 350, 6, 241, 274, 273, 273, 6, 260, 239, + 239, 243, 270, 6, 338, 245, 351, 330, 242, 240, + 330, 330, 244, 6, 6, 253, 338, 245, 330, 6, + 330, 338, 240, 243, 330, 352, 274, 46, 243, 344, + 352, 355, 242, 248, 6, 6, 6, 123, 292, 292, + 344, 6, 6, 6, 344, 177, 291, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 5, 244, 274, 274, + 274, 274, 274, 248, 248, 248, 240, 274, 274, 285, + 274, 240, 274, 240, 273, 333, 274, 6, 274, 248, + 239, 241, 273, 4, 240, 242, 274, 6, 244, 344, + 344, 344, 4, 6, 271, 330, 344, 243, 243, 7, + 6, 7, 330, 330, 330, 243, 243, 243, 241, 6, + 330, 344, 330, 6, 6, 330, 341, 244, 5, 344, + 243, 243, 243, 243, 243, 243, 243, 344, 6, 347, + 243, 330, 242, 6, 6, 173, 330, 330, 330, 6, + 6, 6, 6, 7, 274, 248, 248, 274, 248, 330, + 4, 189, 288, 289, 274, 240, 274, 334, 352, 239, + 241, 330, 243, 301, 6, 301, 248, 6, 6, 7, + 271, 272, 245, 7, 6, 348, 244, 248, 330, 271, + 243, 274, 356, 357, 358, 356, 239, 330, 330, 343, + 344, 243, 239, 4, 6, 240, 6, 240, 240, 6, + 351, 239, 4, 240, 248, 239, 344, 352, 7, 273, + 282, 330, 346, 286, 341, 6, 6, 6, 6, 95, + 6, 5, 243, 330, 330, 330, 330, 240, 333, 330, + 330, 330, 274, 272, 243, 6, 291, 6, 330, 344, + 4, 6, 347, 347, 330, 330, 352, 244, 240, 244, + 248, 300, 300, 330, 330, 244, 248, 240, 244, 248, + 6, 6, 343, 341, 341, 341, 341, 341, 228, 341, + 6, 244, 330, 6, 6, 344, 244, 248, 8, 244, + 240, 243, 330, 352, 351, 330, 351, 330, 352, 355, + 357, 352, 248, 240, 248, 244, 330, 318, 318, 344, + 352, 330, 6, 4, 349, 6, 348, 242, 344, 358, + 6, 274, 274, 257, 330, 248, 248, 244, 248, 258, + 330, 330, 6, 330, 330, 240, 278, 280, 243, 357, + 244, 248, 7, 7, 243, 5, 343, 274, 274, 248, + 274, 240, 248, 240, 242, 330, 6, 6, 243, 244, + 244, 243, 6, 6, 243, 330, 244, 244, 244, 242, + 6, 344, 7, 243, 330, 244, 248, 248, 248, 248, + 248, 248, 6, 244, 172, 330, 330, 347, 6, 6, + 240, 274, 274, 289, 352, 244, 244, 244, 244, 6, + 6, 7, 6, 245, 6, 244, 6, 6, 240, 248, + 330, 330, 243, 344, 244, 248, 240, 240, 248, 283, + 287, 344, 274, 330, 352, 361, 330, 6, 244, 330, + 333, 330, 244, 343, 133, 134, 139, 325, 133, 134, + 325, 347, 300, 244, 248, 6, 244, 344, 301, 244, + 6, 347, 341, 341, 341, 341, 341, 330, 244, 244, + 244, 240, 6, 243, 6, 348, 175, 261, 330, 248, + 248, 343, 6, 330, 330, 244, 244, 279, 7, 239, + 244, 243, 248, 240, 248, 244, 243, 341, 344, 6, + 243, 341, 6, 244, 244, 330, 6, 129, 244, 312, + 243, 244, 248, 248, 248, 248, 248, 6, 6, 6, + 301, 6, 243, 330, 330, 244, 248, 283, 352, 240, + 330, 330, 330, 6, 341, 6, 341, 6, 6, 244, + 330, 315, 301, 6, 347, 347, 347, 347, 341, 347, + 318, 258, 240, 248, 6, 243, 330, 244, 248, 248, + 248, 248, 248, 6, 244, 244, 313, 244, 244, 244, + 244, 248, 244, 244, 244, 264, 330, 343, 244, 330, + 330, 330, 341, 341, 315, 6, 6, 6, 6, 347, + 6, 6, 6, 243, 240, 244, 6, 244, 274, 248, + 248, 248, 244, 244, 262, 351, 267, 243, 6, 330, + 330, 330, 6, 244, 248, 243, 343, 244, 244, 244, + 6, 351, 265, 351, 244, 6, 6, 244, 248, 6, + 6, 351 }; #define yyerrok (yyerrstatus = 0) @@ -7194,6 +7220,26 @@ yyreduce: case 103: #line 1108 "Gmsh.y" { +#if defined(HAVE_MESH) + if(!GModel::current()->getFields()->newField((int)(yyvsp[(3) - (7)].d), "Box")) + yymsg(0, "Cannot create field %i of type '%s'", (int)(yyvsp[(3) - (7)].d), "Box"); +#endif + ;} + break; + + case 104: +#line 1115 "Gmsh.y" + { +#if defined(HAVE_MESH) + if(!GModel::current()->getFields()->newField((int)(yyvsp[(3) - (7)].d), "Cylinder")) + yymsg(0, "Cannot create field %i of type '%s'", (int)(yyvsp[(3) - (7)].d), "Cylinder"); +#endif + ;} + break; + + case 105: +#line 1122 "Gmsh.y" + { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d)); if(field){ @@ -7216,8 +7262,8 @@ yyreduce: ;} break; - case 104: -#line 1130 "Gmsh.y" + case 106: +#line 1144 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d)); @@ -7242,8 +7288,8 @@ yyreduce: ;} break; - case 105: -#line 1153 "Gmsh.y" + case 107: +#line 1167 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (11)].d)); @@ -7283,8 +7329,8 @@ yyreduce: ;} break; - case 106: -#line 1191 "Gmsh.y" + case 108: +#line 1205 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (7)].d)); @@ -7304,8 +7350,8 @@ yyreduce: ;} break; - case 107: -#line 1212 "Gmsh.y" + case 109: +#line 1226 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -7319,8 +7365,8 @@ yyreduce: ;} break; - case 108: -#line 1224 "Gmsh.y" + case 110: +#line 1238 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -7334,8 +7380,8 @@ yyreduce: ;} break; - case 112: -#line 1242 "Gmsh.y" + case 114: +#line 1256 "Gmsh.y" { std::string key((yyvsp[(3) - (3)].c)); std::vector<double> val(1, 0.); @@ -7346,8 +7392,8 @@ yyreduce: ;} break; - case 113: -#line 1251 "Gmsh.y" + case 115: +#line 1265 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)); std::vector<double> val(1, (yyvsp[(5) - (5)].d)); @@ -7358,13 +7404,13 @@ yyreduce: ;} break; - case 114: -#line 1260 "Gmsh.y" + case 116: +#line 1274 "Gmsh.y" { init_options(); ;} break; - case 115: -#line 1262 "Gmsh.y" + case 117: +#line 1276 "Gmsh.y" { if(List_Nbr((yyvsp[(6) - (9)].l)) != 1) yymsg(1, "List notation should be used to define list '%s[]'", (yyvsp[(3) - (9)].c)); @@ -7384,13 +7430,13 @@ yyreduce: ;} break; - case 116: -#line 1280 "Gmsh.y" + case 118: +#line 1294 "Gmsh.y" { init_options(); ;} break; - case 117: -#line 1282 "Gmsh.y" + case 119: +#line 1296 "Gmsh.y" { std::string key((yyvsp[(3) - (11)].c)); std::vector<double> val; @@ -7408,8 +7454,8 @@ yyreduce: ;} break; - case 118: -#line 1298 "Gmsh.y" + case 120: +#line 1312 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c)); if(!gmsh_yystringsymbols.count(key)){ @@ -7420,13 +7466,13 @@ yyreduce: ;} break; - case 119: -#line 1307 "Gmsh.y" + case 121: +#line 1321 "Gmsh.y" { init_options(); ;} break; - case 120: -#line 1309 "Gmsh.y" + case 122: +#line 1323 "Gmsh.y" { std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c)); if(!gmsh_yysymbols.count(key)){ @@ -7438,8 +7484,8 @@ yyreduce: ;} break; - case 122: -#line 1323 "Gmsh.y" + case 124: +#line 1337 "Gmsh.y" { std::string name((yyvsp[(3) - (3)].c)); Msg::UndefineOnelabParameter(name); @@ -7447,8 +7493,8 @@ yyreduce: ;} break; - case 123: -#line 1331 "Gmsh.y" + case 125: +#line 1345 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)}; @@ -7456,16 +7502,16 @@ yyreduce: ;} break; - case 124: -#line 1337 "Gmsh.y" + case 126: +#line 1351 "Gmsh.y" { doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)}; List_Add((yyval.l), &v); ;} break; - case 125: -#line 1342 "Gmsh.y" + case 127: +#line 1356 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); int n = List_Nbr((yyvsp[(1) - (5)].l)); @@ -7491,8 +7537,8 @@ yyreduce: ;} break; - case 132: -#line 1384 "Gmsh.y" + case 134: +#line 1398 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); for(int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++){ @@ -7506,8 +7552,8 @@ yyreduce: ;} break; - case 133: -#line 1396 "Gmsh.y" + case 135: +#line 1410 "Gmsh.y" { std::string key((yyvsp[(1) - (1)].c)); double v; @@ -7522,8 +7568,8 @@ yyreduce: ;} break; - case 134: -#line 1409 "Gmsh.y" + case 136: +#line 1423 "Gmsh.y" { std::string key((yyvsp[(1) - (4)].c)); for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -7539,8 +7585,8 @@ yyreduce: ;} break; - case 135: -#line 1424 "Gmsh.y" + case 137: +#line 1438 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); std::string val((yyvsp[(2) - (2)].c)); @@ -7550,8 +7596,8 @@ yyreduce: ;} break; - case 136: -#line 1433 "Gmsh.y" + case 138: +#line 1447 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); for(int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++){ @@ -7564,8 +7610,8 @@ yyreduce: ;} break; - case 141: -#line 1458 "Gmsh.y" + case 143: +#line 1472 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); double val = (yyvsp[(2) - (2)].d); @@ -7574,8 +7620,8 @@ yyreduce: ;} break; - case 142: -#line 1466 "Gmsh.y" + case 144: +#line 1480 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); std::string val((yyvsp[(2) - (2)].c)); @@ -7585,8 +7631,8 @@ yyreduce: ;} break; - case 143: -#line 1475 "Gmsh.y" + case 145: +#line 1489 "Gmsh.y" { std::string key("Macro"); std::string val((yyvsp[(2) - (2)].c)); @@ -7595,8 +7641,8 @@ yyreduce: ;} break; - case 144: -#line 1483 "Gmsh.y" + case 146: +#line 1497 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); for(int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++){ @@ -7611,8 +7657,8 @@ yyreduce: ;} break; - case 145: -#line 1497 "Gmsh.y" + case 147: +#line 1511 "Gmsh.y" { std::string key((yyvsp[(1) - (2)].c)); for(int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++){ @@ -7627,15 +7673,15 @@ yyreduce: ;} break; - case 146: -#line 1515 "Gmsh.y" + case 148: +#line 1529 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; - case 147: -#line 1519 "Gmsh.y" + case 149: +#line 1533 "Gmsh.y" { int t = GModel::current()->getGEOInternals()->getMaxPhysicalTag(); GModel::current()->getGEOInternals()->setMaxPhysicalTag(t + 1); @@ -7644,44 +7690,44 @@ yyreduce: ;} break; - case 148: -#line 1526 "Gmsh.y" + case 150: +#line 1540 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), dim_entity, (yyvsp[(3) - (3)].d)); Free((yyvsp[(1) - (3)].c)); ;} break; - case 149: -#line 1534 "Gmsh.y" + case 151: +#line 1548 "Gmsh.y" { (yyval.i) = -1; ;} break; - case 150: -#line 1538 "Gmsh.y" + case 152: +#line 1552 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(4) - (5)].d); ;} break; - case 151: -#line 1544 "Gmsh.y" + case 153: +#line 1558 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.; ;} break; - case 152: -#line 1548 "Gmsh.y" + case 154: +#line 1562 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; - case 153: -#line 1555 "Gmsh.y" + case 155: +#line 1569 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); double x = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[0]; @@ -7707,8 +7753,8 @@ yyreduce: ;} break; - case 154: -#line 1579 "Gmsh.y" + case 156: +#line 1593 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -7726,8 +7772,8 @@ yyreduce: ;} break; - case 155: -#line 1595 "Gmsh.y" + case 157: +#line 1609 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -7745,8 +7791,8 @@ yyreduce: ;} break; - case 156: -#line 1611 "Gmsh.y" + case 158: +#line 1625 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags); @@ -7785,8 +7831,8 @@ yyreduce: ;} break; - case 157: -#line 1648 "Gmsh.y" + case 159: +#line 1662 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags); @@ -7828,8 +7874,8 @@ yyreduce: ;} break; - case 158: -#line 1688 "Gmsh.y" + case 160: +#line 1702 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -7847,8 +7893,8 @@ yyreduce: ;} break; - case 159: -#line 1704 "Gmsh.y" + case 161: +#line 1718 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -7866,8 +7912,8 @@ yyreduce: ;} break; - case 160: -#line 1721 "Gmsh.y" + case 162: +#line 1735 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (11)].l), tags); @@ -7890,8 +7936,8 @@ yyreduce: ;} break; - case 161: -#line 1742 "Gmsh.y" + case 163: +#line 1756 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -7909,8 +7955,8 @@ yyreduce: ;} break; - case 162: -#line 1758 "Gmsh.y" + case 164: +#line 1772 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags); @@ -7931,8 +7977,8 @@ yyreduce: ;} break; - case 163: -#line 1777 "Gmsh.y" + case 165: +#line 1791 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags); @@ -7950,8 +7996,8 @@ yyreduce: ;} break; - case 164: -#line 1793 "Gmsh.y" + case 166: +#line 1807 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); std::vector<int> wires; ListOfDouble2Vector((yyvsp[(6) - (8)].l), wires); @@ -7974,8 +8020,8 @@ yyreduce: ;} break; - case 165: -#line 1814 "Gmsh.y" + case 167: +#line 1828 "Gmsh.y" { yymsg(2, "'Ruled Surface' command is deprecated: use 'Surface' instead"); int num = (int)(yyvsp[(4) - (9)].d); @@ -7988,8 +8034,8 @@ yyreduce: ;} break; - case 166: -#line 1825 "Gmsh.y" + case 168: +#line 1839 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; @@ -7997,8 +8043,8 @@ yyreduce: ;} break; - case 167: -#line 1831 "Gmsh.y" + case 169: +#line 1845 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; @@ -8006,8 +8052,8 @@ yyreduce: ;} break; - case 168: -#line 1837 "Gmsh.y" + case 170: +#line 1851 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); @@ -8016,8 +8062,8 @@ yyreduce: ;} break; - case 169: -#line 1844 "Gmsh.y" + case 171: +#line 1858 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -8050,8 +8096,8 @@ yyreduce: ;} break; - case 170: -#line 1875 "Gmsh.y" + case 172: +#line 1889 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -8068,23 +8114,23 @@ yyreduce: ;} break; - case 171: -#line 1890 "Gmsh.y" + case 173: +#line 1904 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ if(param.size() == 6){ - r = GModel::current()->getOCCInternals()->addBlock + r = GModel::current()->getOCCInternals()->addBox (num, param[0], param[1], param[2], param[3], param[4], param[5]); } else{ - yymsg(0, "Block requires 6 parameters"); + yymsg(0, "Box requires 6 parameters"); } } else{ - yymsg(0, "Block only available with OpenCASCADE geometry kernel"); + yymsg(0, "Box only available with OpenCASCADE geometry kernel"); } if(!r) yymsg(0, "Could not add block"); List_Delete((yyvsp[(6) - (7)].l)); @@ -8093,8 +8139,8 @@ yyreduce: ;} break; - case 172: -#line 1912 "Gmsh.y" + case 174: +#line 1926 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8119,8 +8165,8 @@ yyreduce: ;} break; - case 173: -#line 1935 "Gmsh.y" + case 175: +#line 1949 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8145,8 +8191,8 @@ yyreduce: ;} break; - case 174: -#line 1958 "Gmsh.y" + case 176: +#line 1972 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8171,8 +8217,8 @@ yyreduce: ;} break; - case 175: -#line 1981 "Gmsh.y" + case 177: +#line 1995 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8198,8 +8244,8 @@ yyreduce: ;} break; - case 176: -#line 2005 "Gmsh.y" + case 178: +#line 2019 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8225,8 +8271,8 @@ yyreduce: ;} break; - case 177: -#line 2029 "Gmsh.y" + case 179: +#line 2043 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8252,8 +8298,8 @@ yyreduce: ;} break; - case 178: -#line 2053 "Gmsh.y" + case 180: +#line 2067 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<double> param; ListOfDouble2Vector((yyvsp[(6) - (7)].l), param); @@ -8281,8 +8327,8 @@ yyreduce: ;} break; - case 179: -#line 2079 "Gmsh.y" + case 181: +#line 2093 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags); @@ -8301,8 +8347,8 @@ yyreduce: ;} break; - case 180: -#line 2096 "Gmsh.y" + case 182: +#line 2110 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags); @@ -8320,8 +8366,8 @@ yyreduce: ;} break; - case 181: -#line 2112 "Gmsh.y" + case 183: +#line 2126 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); std::vector<int> wires; ListOfDouble2Vector((yyvsp[(6) - (7)].l), wires); @@ -8341,8 +8387,8 @@ yyreduce: ;} break; - case 182: -#line 2130 "Gmsh.y" + case 184: +#line 2144 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); std::vector<int> wires; ListOfDouble2Vector((yyvsp[(7) - (8)].l), wires); @@ -8362,8 +8408,8 @@ yyreduce: ;} break; - case 183: -#line 2148 "Gmsh.y" + case 185: +#line 2162 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); std::vector<int> tags; ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags); @@ -8395,8 +8441,8 @@ yyreduce: ;} break; - case 184: -#line 2179 "Gmsh.y" + case 186: +#line 2193 "Gmsh.y" { // Particular case only for dim 2 (Surface) if ((yyvsp[(2) - (12)].i) == 2) { @@ -8426,15 +8472,15 @@ yyreduce: ;} break; - case 185: -#line 2207 "Gmsh.y" + case 187: +#line 2221 "Gmsh.y" { dim_entity = (yyvsp[(2) - (2)].i); ;} break; - case 186: -#line 2211 "Gmsh.y" + case 188: +#line 2225 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); int op = (yyvsp[(7) - (9)].i); @@ -8459,100 +8505,100 @@ yyreduce: ;} break; - case 187: -#line 2237 "Gmsh.y" + case 189: +#line 2251 "Gmsh.y" { (yyval.i) = 0; ;} break; - case 188: -#line 2239 "Gmsh.y" + case 190: +#line 2253 "Gmsh.y" { (yyval.i) = 1; ;} break; - case 189: -#line 2241 "Gmsh.y" + case 191: +#line 2255 "Gmsh.y" { (yyval.i) = 2; ;} break; - case 190: -#line 2243 "Gmsh.y" + case 192: +#line 2257 "Gmsh.y" { (yyval.i) = 3; ;} break; - case 191: -#line 2245 "Gmsh.y" + case 193: +#line 2259 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(3) - (4)].d); if ((yyval.i)<0 || (yyval.i)>3) yymsg(0, "GeoEntity dim out of range [0,3]"); ;} break; - case 192: -#line 2253 "Gmsh.y" + case 194: +#line 2267 "Gmsh.y" { (yyval.i) = 1; ;} break; - case 193: -#line 2255 "Gmsh.y" + case 195: +#line 2269 "Gmsh.y" { (yyval.i) = 2; ;} break; - case 194: -#line 2257 "Gmsh.y" + case 196: +#line 2271 "Gmsh.y" { (yyval.i) = 3; ;} break; - case 195: -#line 2259 "Gmsh.y" + case 197: +#line 2273 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(3) - (4)].d); if ((yyval.i)<1 || (yyval.i)>3) yymsg(0, "GeoEntity dim out of range [1,3]"); ;} break; - case 196: -#line 2267 "Gmsh.y" + case 198: +#line 2281 "Gmsh.y" { (yyval.i) = 1; ;} break; - case 197: -#line 2269 "Gmsh.y" + case 199: +#line 2283 "Gmsh.y" { (yyval.i) = 2; ;} break; - case 198: -#line 2271 "Gmsh.y" + case 200: +#line 2285 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(3) - (4)].d); if ((yyval.i)<1 || (yyval.i)>2) yymsg(0, "GeoEntity dim out of range [1,2]"); ;} break; - case 199: -#line 2279 "Gmsh.y" + case 201: +#line 2293 "Gmsh.y" { (yyval.i) = 0; ;} break; - case 200: -#line 2281 "Gmsh.y" + case 202: +#line 2295 "Gmsh.y" { (yyval.i) = 1; ;} break; - case 201: -#line 2283 "Gmsh.y" + case 203: +#line 2297 "Gmsh.y" { (yyval.i) = 2; ;} break; - case 202: -#line 2285 "Gmsh.y" + case 204: +#line 2299 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(3) - (4)].d); if ((yyval.i)<0 || (yyval.i)>2) yymsg(0, "GeoEntity dim out of range [0,2]"); ;} break; - case 203: -#line 2295 "Gmsh.y" + case 205: +#line 2309 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -8570,8 +8616,8 @@ yyreduce: ;} break; - case 204: -#line 2311 "Gmsh.y" + case 206: +#line 2325 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), dimTags); @@ -8589,8 +8635,8 @@ yyreduce: ;} break; - case 205: -#line 2327 "Gmsh.y" + case 207: +#line 2341 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -8608,8 +8654,8 @@ yyreduce: ;} break; - case 206: -#line 2343 "Gmsh.y" + case 208: +#line 2357 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags); @@ -8627,8 +8673,8 @@ yyreduce: ;} break; - case 207: -#line 2359 "Gmsh.y" + case 209: +#line 2373 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags); @@ -8646,8 +8692,8 @@ yyreduce: ;} break; - case 208: -#line 2375 "Gmsh.y" + case 210: +#line 2389 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), inDimTags); @@ -8686,8 +8732,8 @@ yyreduce: ;} break; - case 209: -#line 2412 "Gmsh.y" + case 211: +#line 2426 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -8710,8 +8756,8 @@ yyreduce: ;} break; - case 210: -#line 2434 "Gmsh.y" + case 212: +#line 2448 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -8734,32 +8780,32 @@ yyreduce: ;} break; - case 211: -#line 2457 "Gmsh.y" + case 213: +#line 2471 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 212: -#line 2458 "Gmsh.y" + case 214: +#line 2472 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 213: -#line 2463 "Gmsh.y" + case 215: +#line 2477 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; - case 214: -#line 2467 "Gmsh.y" + case 216: +#line 2481 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; - case 215: -#line 2471 "Gmsh.y" + case 217: +#line 2485 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -8777,8 +8823,8 @@ yyreduce: ;} break; - case 216: -#line 2492 "Gmsh.y" + case 218: +#line 2506 "Gmsh.y" { if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ int t = (int)(yyvsp[(4) - (8)].d); @@ -8799,8 +8845,8 @@ yyreduce: ;} break; - case 217: -#line 2511 "Gmsh.y" + case 219: +#line 2525 "Gmsh.y" { int t = (int)(yyvsp[(4) - (10)].d); if(gLevelset::find(t)){ @@ -8823,8 +8869,8 @@ yyreduce: ;} break; - case 218: -#line 2533 "Gmsh.y" + case 220: +#line 2547 "Gmsh.y" { int t = (int)(yyvsp[(4) - (14)].d); if(gLevelset::find(t)){ @@ -8840,8 +8886,8 @@ yyreduce: ;} break; - case 219: -#line 2548 "Gmsh.y" + case 221: +#line 2562 "Gmsh.y" { int t = (int)(yyvsp[(4) - (16)].d); if(gLevelset::find(t)){ @@ -8858,8 +8904,8 @@ yyreduce: ;} break; - case 220: -#line 2563 "Gmsh.y" + case 222: +#line 2577 "Gmsh.y" { if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ int t = (int)(yyvsp[(4) - (12)].d); @@ -8879,8 +8925,8 @@ yyreduce: ;} break; - case 221: -#line 2582 "Gmsh.y" + case 223: +#line 2596 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ int t = (int)(yyvsp[(4) - (14)].d); @@ -8932,8 +8978,8 @@ yyreduce: ;} break; - case 222: -#line 2633 "Gmsh.y" + case 224: +#line 2647 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 1){ int t = (int)(yyvsp[(4) - (14)].d); @@ -8955,8 +9001,8 @@ yyreduce: ;} break; - case 223: -#line 2654 "Gmsh.y" + case 225: +#line 2668 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 3){ int t = (int)(yyvsp[(4) - (14)].d); @@ -8979,8 +9025,8 @@ yyreduce: ;} break; - case 224: -#line 2676 "Gmsh.y" + case 226: +#line 2690 "Gmsh.y" { if(List_Nbr((yyvsp[(12) - (14)].l)) == 5){ int t = (int)(yyvsp[(4) - (14)].d); @@ -9004,8 +9050,8 @@ yyreduce: ;} break; - case 225: -#line 2698 "Gmsh.y" + case 227: +#line 2712 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ int t = (int)(yyvsp[(4) - (8)].d); @@ -9112,8 +9158,8 @@ yyreduce: ;} break; - case 226: -#line 2803 "Gmsh.y" + case 228: +#line 2817 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ int t = (int)(yyvsp[(4) - (8)].d); @@ -9131,8 +9177,8 @@ yyreduce: ;} break; - case 227: -#line 2819 "Gmsh.y" + case 229: +#line 2833 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ int t = (int)(yyvsp[(4) - (6)].d); @@ -9164,8 +9210,8 @@ yyreduce: ;} break; - case 228: -#line 2854 "Gmsh.y" + case 230: +#line 2868 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9189,8 +9235,8 @@ yyreduce: ;} break; - case 229: -#line 2876 "Gmsh.y" + case 231: +#line 2890 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9214,8 +9260,8 @@ yyreduce: ;} break; - case 230: -#line 2898 "Gmsh.y" + case 232: +#line 2912 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -9223,8 +9269,8 @@ yyreduce: ;} break; - case 231: -#line 2904 "Gmsh.y" + case 233: +#line 2918 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -9241,8 +9287,8 @@ yyreduce: ;} break; - case 232: -#line 2919 "Gmsh.y" + case 234: +#line 2933 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -9272,8 +9318,8 @@ yyreduce: ;} break; - case 233: -#line 2947 "Gmsh.y" + case 235: +#line 2961 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -9287,15 +9333,15 @@ yyreduce: ;} break; - case 234: -#line 2959 "Gmsh.y" + case 236: +#line 2973 "Gmsh.y" { gmsh_yynamespaces.clear(); ;} break; - case 235: -#line 2968 "Gmsh.y" + case 237: +#line 2982 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9304,8 +9350,8 @@ yyreduce: ;} break; - case 236: -#line 2975 "Gmsh.y" + case 238: +#line 2989 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(5) - (6)].l), dimTags); @@ -9314,8 +9360,8 @@ yyreduce: ;} break; - case 237: -#line 2987 "Gmsh.y" + case 239: +#line 3001 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9331,8 +9377,8 @@ yyreduce: ;} break; - case 238: -#line 3006 "Gmsh.y" + case 240: +#line 3020 "Gmsh.y" { std::string what = (yyvsp[(2) - (3)].c); setVisibility(-1, 1, false); @@ -9340,8 +9386,8 @@ yyreduce: ;} break; - case 239: -#line 3012 "Gmsh.y" + case 241: +#line 3026 "Gmsh.y" { std::string what = (yyvsp[(2) - (3)].c); setVisibility(-1, 0, false); @@ -9349,8 +9395,8 @@ yyreduce: ;} break; - case 240: -#line 3018 "Gmsh.y" + case 242: +#line 3032 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9359,8 +9405,8 @@ yyreduce: ;} break; - case 241: -#line 3025 "Gmsh.y" + case 243: +#line 3039 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9369,8 +9415,8 @@ yyreduce: ;} break; - case 242: -#line 3032 "Gmsh.y" + case 244: +#line 3046 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags); @@ -9379,8 +9425,8 @@ yyreduce: ;} break; - case 243: -#line 3039 "Gmsh.y" + case 245: +#line 3053 "Gmsh.y" { std::vector<std::pair<int, int> > dimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags); @@ -9389,8 +9435,8 @@ yyreduce: ;} break; - case 244: -#line 3051 "Gmsh.y" + case 246: +#line 3065 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -9465,8 +9511,8 @@ yyreduce: ;} break; - case 245: -#line 3124 "Gmsh.y" + case 247: +#line 3138 "Gmsh.y" { int n = List_Nbr((yyvsp[(3) - (5)].l)); if(n == 1){ @@ -9486,8 +9532,8 @@ yyreduce: ;} break; - case 246: -#line 3142 "Gmsh.y" + case 248: +#line 3156 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -9506,8 +9552,8 @@ yyreduce: ;} break; - case 247: -#line 3159 "Gmsh.y" + case 249: +#line 3173 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -9524,8 +9570,8 @@ yyreduce: ;} break; - case 248: -#line 3174 "Gmsh.y" + case 250: +#line 3188 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -9560,8 +9606,8 @@ yyreduce: ;} break; - case 249: -#line 3207 "Gmsh.y" + case 251: +#line 3221 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -9575,8 +9621,8 @@ yyreduce: ;} break; - case 250: -#line 3219 "Gmsh.y" + case 252: +#line 3233 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -9602,23 +9648,23 @@ yyreduce: ;} break; - case 251: -#line 3243 "Gmsh.y" + case 253: +#line 3257 "Gmsh.y" { Msg::Exit(0); ;} break; - case 252: -#line 3247 "Gmsh.y" + case 254: +#line 3261 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; ;} break; - case 253: -#line 3252 "Gmsh.y" + case 255: +#line 3266 "Gmsh.y" { // force sync if(GModel::current()->getOCCInternals()) @@ -9627,16 +9673,16 @@ yyreduce: ;} break; - case 254: -#line 3259 "Gmsh.y" + case 256: +#line 3273 "Gmsh.y" { new GModel(); GModel::current(GModel::list.size() - 1); ;} break; - case 255: -#line 3264 "Gmsh.y" + case 257: +#line 3278 "Gmsh.y" { CTX::instance()->forcedBBox = 0; if(GModel::current()->getOCCInternals() && @@ -9648,16 +9694,16 @@ yyreduce: ;} break; - case 256: -#line 3274 "Gmsh.y" + case 258: +#line 3288 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); ;} break; - case 257: -#line 3279 "Gmsh.y" + case 259: +#line 3293 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -9665,8 +9711,8 @@ yyreduce: ;} break; - case 258: -#line 3285 "Gmsh.y" + case 260: +#line 3299 "Gmsh.y" { #if defined(HAVE_OPENGL) CTX::instance()->mesh.changed = ENT_ALL; @@ -9676,22 +9722,22 @@ yyreduce: ;} break; - case 259: -#line 3293 "Gmsh.y" + case 261: +#line 3307 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; - case 260: -#line 3297 "Gmsh.y" + case 262: +#line 3311 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); ;} break; - case 261: -#line 3301 "Gmsh.y" + case 263: +#line 3315 "Gmsh.y" { if(GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged()) @@ -9702,8 +9748,8 @@ yyreduce: ;} break; - case 262: -#line 3311 "Gmsh.y" + case 264: +#line 3325 "Gmsh.y" { int lock = CTX::instance()->lock; CTX::instance()->lock = 0; @@ -9763,8 +9809,8 @@ yyreduce: ;} break; - case 263: -#line 3374 "Gmsh.y" + case 265: +#line 3388 "Gmsh.y" { #if defined(HAVE_POPPLER) std::vector<int> is; @@ -9778,8 +9824,8 @@ yyreduce: ;} break; - case 264: -#line 3390 "Gmsh.y" + case 266: +#line 3404 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -9798,8 +9844,8 @@ yyreduce: ;} break; - case 265: -#line 3407 "Gmsh.y" + case 267: +#line 3421 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -9818,8 +9864,8 @@ yyreduce: ;} break; - case 266: -#line 3424 "Gmsh.y" + case 268: +#line 3438 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -9843,8 +9889,8 @@ yyreduce: ;} break; - case 267: -#line 3446 "Gmsh.y" + case 269: +#line 3460 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -9868,8 +9914,8 @@ yyreduce: ;} break; - case 268: -#line 3468 "Gmsh.y" + case 270: +#line 3482 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -9906,8 +9952,8 @@ yyreduce: ;} break; - case 269: -#line 3503 "Gmsh.y" + case 271: +#line 3517 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9917,8 +9963,8 @@ yyreduce: ;} break; - case 270: -#line 3511 "Gmsh.y" + case 272: +#line 3525 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction (std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9928,8 +9974,8 @@ yyreduce: ;} break; - case 271: -#line 3519 "Gmsh.y" + case 273: +#line 3533 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9937,8 +9983,8 @@ yyreduce: ;} break; - case 272: -#line 3525 "Gmsh.y" + case 274: +#line 3539 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9947,8 +9993,8 @@ yyreduce: ;} break; - case 273: -#line 3532 "Gmsh.y" + case 275: +#line 3546 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction (std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -9957,8 +10003,8 @@ yyreduce: ;} break; - case 274: -#line 3539 "Gmsh.y" + case 276: +#line 3553 "Gmsh.y" { ImbricatedTest++; if(ImbricatedTest > MAX_RECUR_TESTS-1){ @@ -9980,8 +10026,8 @@ yyreduce: ;} break; - case 275: -#line 3559 "Gmsh.y" + case 277: +#line 3573 "Gmsh.y" { if(ImbricatedTest > 0){ if (statusImbricatedTests[ImbricatedTest]){ @@ -10009,8 +10055,8 @@ yyreduce: ;} break; - case 276: -#line 3585 "Gmsh.y" + case 278: +#line 3599 "Gmsh.y" { if(ImbricatedTest > 0){ if(statusImbricatedTests[ImbricatedTest]){ @@ -10024,8 +10070,8 @@ yyreduce: ;} break; - case 277: -#line 3597 "Gmsh.y" + case 279: +#line 3611 "Gmsh.y" { ImbricatedTest--; if(ImbricatedTest < 0) @@ -10033,8 +10079,8 @@ yyreduce: ;} break; - case 278: -#line 3608 "Gmsh.y" + case 280: +#line 3622 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), inDimTags); @@ -10054,8 +10100,8 @@ yyreduce: ;} break; - case 279: -#line 3626 "Gmsh.y" + case 281: +#line 3640 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), inDimTags); @@ -10075,8 +10121,8 @@ yyreduce: ;} break; - case 280: -#line 3644 "Gmsh.y" + case 282: +#line 3658 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(12) - (13)].l), inDimTags); @@ -10096,8 +10142,8 @@ yyreduce: ;} break; - case 281: -#line 3662 "Gmsh.y" + case 283: +#line 3676 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10105,8 +10151,8 @@ yyreduce: ;} break; - case 282: -#line 3668 "Gmsh.y" + case 284: +#line 3682 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(4) - (7)].l), inDimTags); @@ -10126,8 +10172,8 @@ yyreduce: ;} break; - case 283: -#line 3686 "Gmsh.y" + case 285: +#line 3700 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10135,8 +10181,8 @@ yyreduce: ;} break; - case 284: -#line 3692 "Gmsh.y" + case 286: +#line 3706 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(10) - (13)].l), inDimTags); @@ -10158,8 +10204,8 @@ yyreduce: ;} break; - case 285: -#line 3712 "Gmsh.y" + case 287: +#line 3726 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10167,8 +10213,8 @@ yyreduce: ;} break; - case 286: -#line 3718 "Gmsh.y" + case 288: +#line 3732 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(12) - (15)].l), inDimTags); @@ -10188,8 +10234,8 @@ yyreduce: ;} break; - case 287: -#line 3736 "Gmsh.y" + case 289: +#line 3750 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -10197,8 +10243,8 @@ yyreduce: ;} break; - case 288: -#line 3742 "Gmsh.y" + case 290: +#line 3756 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (6)].l), inDimTags); @@ -10217,8 +10263,8 @@ yyreduce: ;} break; - case 289: -#line 3759 "Gmsh.y" + case 291: +#line 3773 "Gmsh.y" { std::vector<std::pair<int, int> > inDimTags, outDimTags; ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), inDimTags); @@ -10236,8 +10282,8 @@ yyreduce: ;} break; - case 290: -#line 3775 "Gmsh.y" + case 292: +#line 3789 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10256,8 +10302,8 @@ yyreduce: ;} break; - case 291: -#line 3792 "Gmsh.y" + case 293: +#line 3806 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10276,8 +10322,8 @@ yyreduce: ;} break; - case 292: -#line 3809 "Gmsh.y" + case 294: +#line 3823 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10299,20 +10345,20 @@ yyreduce: ;} break; - case 293: -#line 3832 "Gmsh.y" + case 295: +#line 3846 "Gmsh.y" { ;} break; - case 294: -#line 3835 "Gmsh.y" + case 296: +#line 3849 "Gmsh.y" { ;} break; - case 295: -#line 3841 "Gmsh.y" + case 297: +#line 3855 "Gmsh.y" { int n = (int)fabs((yyvsp[(3) - (5)].d)); if(n){ // we accept n==0 to easily disable layers @@ -10326,8 +10372,8 @@ yyreduce: ;} break; - case 296: -#line 3853 "Gmsh.y" + case 298: +#line 3867 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -10349,57 +10395,57 @@ yyreduce: ;} break; - case 297: -#line 3873 "Gmsh.y" + case 299: +#line 3887 "Gmsh.y" { extr.mesh.ScaleLast = true; ;} break; - case 298: -#line 3877 "Gmsh.y" + case 300: +#line 3891 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; - case 299: -#line 3881 "Gmsh.y" + case 301: +#line 3895 "Gmsh.y" { extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false; ;} break; - case 300: -#line 3885 "Gmsh.y" + case 302: +#line 3899 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1; ;} break; - case 301: -#line 3889 "Gmsh.y" + case 303: +#line 3903 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB; ;} break; - case 302: -#line 3893 "Gmsh.y" + case 304: +#line 3907 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1; ;} break; - case 303: -#line 3897 "Gmsh.y" + case 305: +#line 3911 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB; ;} break; - case 304: -#line 3901 "Gmsh.y" + case 306: +#line 3915 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(6) - (9)].l), tags); int num = (int)(yyvsp[(3) - (9)].d); @@ -10410,8 +10456,8 @@ yyreduce: ;} break; - case 305: -#line 3910 "Gmsh.y" + case 307: +#line 3924 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -10421,70 +10467,71 @@ yyreduce: ;} break; - case 306: -#line 3922 "Gmsh.y" + case 308: +#line 3936 "Gmsh.y" { (yyval.i) = OCC_Internals::Union; ;} break; - case 307: -#line 3923 "Gmsh.y" + case 309: +#line 3937 "Gmsh.y" { (yyval.i) = OCC_Internals::Intersection; ;} break; - case 308: -#line 3924 "Gmsh.y" + case 310: +#line 3938 "Gmsh.y" { (yyval.i) = OCC_Internals::Difference; ;} break; - case 309: -#line 3925 "Gmsh.y" + case 311: +#line 3939 "Gmsh.y" { (yyval.i) = OCC_Internals::Section; ;} break; - case 310: -#line 3926 "Gmsh.y" + case 312: +#line 3940 "Gmsh.y" { (yyval.i) = OCC_Internals::Fragments; ;} break; - case 311: -#line 3930 "Gmsh.y" + case 313: +#line 3944 "Gmsh.y" { (yyval.i) = 0; ;} break; - case 312: -#line 3931 "Gmsh.y" + case 314: +#line 3945 "Gmsh.y" { (yyval.i) = 1; ;} break; - case 313: -#line 3932 "Gmsh.y" + case 315: +#line 3946 "Gmsh.y" { (yyval.i) = 2; ;} break; - case 314: -#line 3933 "Gmsh.y" + case 316: +#line 3947 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].d) ? 1 : 0; ;} break; - case 315: -#line 3934 "Gmsh.y" + case 317: +#line 3948 "Gmsh.y" { (yyval.i) = (yyvsp[(3) - (4)].d) ? 2 : 0; ;} break; - case 316: -#line 3939 "Gmsh.y" + case 318: +#line 3953 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ std::vector<std::pair<int, int > > object, tool, out; + std::vector<std::vector<std::pair<int, int > > > outMap; ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), object); ListOfShapes2VectorOfPairs((yyvsp[(7) - (9)].l), tool); // currently we don't distinguish between Delete and Recursive Delete: // we always delete recursively. Let us know if you have examples where // having the choice would be interesting r = GModel::current()->getOCCInternals()->booleanOperator - (-1, (OCC_Internals::BooleanOperator)(yyvsp[(1) - (9)].i), object, tool, out, (yyvsp[(4) - (9)].i), (yyvsp[(8) - (9)].i)); + (-1, (OCC_Internals::BooleanOperator)(yyvsp[(1) - (9)].i), object, tool, out, outMap, (yyvsp[(4) - (9)].i), (yyvsp[(8) - (9)].i)); VectorOfPairs2ListOfShapes(out, (yyval.l)); } else{ @@ -10496,8 +10543,8 @@ yyreduce: ;} break; - case 317: -#line 3961 "Gmsh.y" + case 319: +#line 3976 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); bool r = true; @@ -10515,19 +10562,20 @@ yyreduce: ;} break; - case 318: -#line 3981 "Gmsh.y" + case 320: +#line 3996 "Gmsh.y" { bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ std::vector<std::pair<int, int> > object, tool, out; + std::vector<std::vector<std::pair<int, int > > > outMap; ListOfShapes2VectorOfPairs((yyvsp[(7) - (14)].l), object); ListOfShapes2VectorOfPairs((yyvsp[(11) - (14)].l), tool); // currently we don't distinguish between Delete and Recursive Delete: // we always delete recursively. Let us know if you have examples where // having the choice would be interesting r = GModel::current()->getOCCInternals()->booleanOperator - ((int)(yyvsp[(3) - (14)].d), (OCC_Internals::BooleanOperator)(yyvsp[(1) - (14)].i), object, tool, out, (yyvsp[(8) - (14)].i), (yyvsp[(12) - (14)].i)); + ((int)(yyvsp[(3) - (14)].d), (OCC_Internals::BooleanOperator)(yyvsp[(1) - (14)].i), object, tool, out, outMap, (yyvsp[(8) - (14)].i), (yyvsp[(12) - (14)].i)); } if(!r) yymsg(0, "Could not apply boolean operator"); List_Delete((yyvsp[(7) - (14)].l)); @@ -10535,15 +10583,15 @@ yyreduce: ;} break; - case 319: -#line 4001 "Gmsh.y" + case 321: +#line 4017 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; - case 320: -#line 4005 "Gmsh.y" + case 322: +#line 4021 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -10558,15 +10606,15 @@ yyreduce: ;} break; - case 321: -#line 4020 "Gmsh.y" + case 323: +#line 4036 "Gmsh.y" { (yyval.i) = -1; // left ;} break; - case 322: -#line 4024 "Gmsh.y" + case 324: +#line 4040 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -10582,50 +10630,50 @@ yyreduce: ;} break; - case 323: -#line 4040 "Gmsh.y" + case 325: +#line 4056 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; - case 324: -#line 4044 "Gmsh.y" + case 326: +#line 4060 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; - case 325: -#line 4049 "Gmsh.y" + case 327: +#line 4065 "Gmsh.y" { (yyval.i) = 45; ;} break; - case 326: -#line 4053 "Gmsh.y" + case 328: +#line 4069 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; - case 327: -#line 4059 "Gmsh.y" + case 329: +#line 4075 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; - case 328: -#line 4063 "Gmsh.y" + case 330: +#line 4079 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; - case 329: -#line 4070 "Gmsh.y" + case 331: +#line 4086 "Gmsh.y" { // mesh sizes at vertices are stored in internal CAD data, as they can be // specified during vertex creation and copied around during CAD @@ -10644,8 +10692,8 @@ yyreduce: ;} break; - case 330: -#line 4087 "Gmsh.y" + case 332: +#line 4103 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10688,8 +10736,8 @@ yyreduce: ;} break; - case 331: -#line 4128 "Gmsh.y" + case 333: +#line 4144 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10735,8 +10783,8 @@ yyreduce: ;} break; - case 332: -#line 4172 "Gmsh.y" + case 334: +#line 4188 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10777,8 +10825,8 @@ yyreduce: ;} break; - case 333: -#line 4211 "Gmsh.y" + case 335: +#line 4227 "Gmsh.y" { // transfinite constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10805,8 +10853,8 @@ yyreduce: ;} break; - case 334: -#line 4236 "Gmsh.y" + case 336: +#line 4252 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++){ double d; @@ -10817,8 +10865,8 @@ yyreduce: ;} break; - case 335: -#line 4245 "Gmsh.y" + case 337: +#line 4261 "Gmsh.y" { // recombine constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10850,8 +10898,8 @@ yyreduce: ;} break; - case 336: -#line 4275 "Gmsh.y" + case 338: +#line 4291 "Gmsh.y" { // recombine constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10879,8 +10927,8 @@ yyreduce: ;} break; - case 337: -#line 4301 "Gmsh.y" + case 339: +#line 4317 "Gmsh.y" { // smoothing constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -10908,8 +10956,8 @@ yyreduce: ;} break; - case 338: -#line 4328 "Gmsh.y" + case 340: +#line 4344 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master lines (%d) different from number of " @@ -10942,8 +10990,8 @@ yyreduce: ;} break; - case 339: -#line 4360 "Gmsh.y" + case 341: +#line 4376 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -10971,8 +11019,8 @@ yyreduce: ;} break; - case 340: -#line 4387 "Gmsh.y" + case 342: +#line 4403 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -10999,8 +11047,8 @@ yyreduce: ;} break; - case 341: -#line 4413 "Gmsh.y" + case 343: +#line 4429 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11027,8 +11075,8 @@ yyreduce: ;} break; - case 342: -#line 4439 "Gmsh.y" + case 344: +#line 4455 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master edges (%d) different from number of " @@ -11055,8 +11103,8 @@ yyreduce: ;} break; - case 343: -#line 4465 "Gmsh.y" + case 345: +#line 4481 "Gmsh.y" { if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l))){ yymsg(0, "Number of master faces (%d) different from number of " @@ -11083,8 +11131,8 @@ yyreduce: ;} break; - case 344: -#line 4491 "Gmsh.y" + case 346: +#line 4507 "Gmsh.y" { if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){ yymsg(0, "Number of master surface edges (%d) different from number of " @@ -11107,8 +11155,8 @@ yyreduce: ;} break; - case 345: -#line 4512 "Gmsh.y" + case 347: +#line 4528 "Gmsh.y" { if (((yyvsp[(6) - (10)].i)==2 || (yyvsp[(6) - (10)].i)==3) && (yyvsp[(1) - (10)].i)<(yyvsp[(6) - (10)].i) ) { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags); @@ -11121,8 +11169,8 @@ yyreduce: ;} break; - case 346: -#line 4523 "Gmsh.y" + case 348: +#line 4539 "Gmsh.y" { // reverse mesh constraints are stored in GEO internals in addition to // GModel, as they can be copied around during GEO operations @@ -11172,8 +11220,8 @@ yyreduce: ;} break; - case 347: -#line 4571 "Gmsh.y" + case 349: +#line 4587 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ switch ((yyvsp[(2) - (4)].i)) { @@ -11224,8 +11272,8 @@ yyreduce: ;} break; - case 348: -#line 4620 "Gmsh.y" + case 350: +#line 4636 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -11239,8 +11287,8 @@ yyreduce: ;} break; - case 349: -#line 4632 "Gmsh.y" + case 351: +#line 4648 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags); GModel::current()->getGEOInternals()->setCompoundMesh((yyvsp[(2) - (4)].i), tags); @@ -11248,15 +11296,15 @@ yyreduce: ;} break; - case 350: -#line 4643 "Gmsh.y" + case 352: +#line 4659 "Gmsh.y" { GModel::current()->getGEOInternals()->removeAllDuplicates(); ;} break; - case 351: -#line 4647 "Gmsh.y" + case 353: +#line 4663 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) GModel::current()->getGEOInternals()->removeAllDuplicates(); @@ -11268,8 +11316,8 @@ yyreduce: ;} break; - case 352: -#line 4657 "Gmsh.y" + case 354: +#line 4673 "Gmsh.y" { std::vector<int> tags; ListOfDouble2Vector((yyvsp[(4) - (6)].l), tags); GModel::current()->getGEOInternals()->mergeVertices(tags); @@ -11277,23 +11325,23 @@ yyreduce: ;} break; - case 353: -#line 4667 "Gmsh.y" + case 355: +#line 4683 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; - case 354: -#line 4668 "Gmsh.y" + case 356: +#line 4684 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; - case 355: -#line 4669 "Gmsh.y" + case 357: +#line 4685 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; - case 356: -#line 4674 "Gmsh.y" + case 358: +#line 4690 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -11301,8 +11349,8 @@ yyreduce: ;} break; - case 357: -#line 4680 "Gmsh.y" + case 359: +#line 4696 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -11316,8 +11364,8 @@ yyreduce: ;} break; - case 358: -#line 4692 "Gmsh.y" + case 360: +#line 4708 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -11337,8 +11385,8 @@ yyreduce: ;} break; - case 359: -#line 4710 "Gmsh.y" + case 361: +#line 4726 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -11363,48 +11411,48 @@ yyreduce: ;} break; - case 360: -#line 4737 "Gmsh.y" + case 362: +#line 4753 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 361: -#line 4738 "Gmsh.y" + case 363: +#line 4754 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; - case 362: -#line 4739 "Gmsh.y" + case 364: +#line 4755 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; - case 363: -#line 4740 "Gmsh.y" + case 365: +#line 4756 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; - case 364: -#line 4741 "Gmsh.y" + case 366: +#line 4757 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; - case 365: -#line 4742 "Gmsh.y" + case 367: +#line 4758 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; - case 366: -#line 4743 "Gmsh.y" + case 368: +#line 4759 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; - case 367: -#line 4744 "Gmsh.y" + case 369: +#line 4760 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; - case 368: -#line 4746 "Gmsh.y" + case 370: +#line 4762 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -11413,258 +11461,258 @@ yyreduce: ;} break; - case 369: -#line 4752 "Gmsh.y" + case 371: +#line 4768 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) | (int)(yyvsp[(3) - (3)].d); ;} break; - case 370: -#line 4753 "Gmsh.y" + case 372: +#line 4769 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) & (int)(yyvsp[(3) - (3)].d); ;} break; - case 371: -#line 4754 "Gmsh.y" + case 373: +#line 4770 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; - case 372: -#line 4755 "Gmsh.y" + case 374: +#line 4771 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; - case 373: -#line 4756 "Gmsh.y" + case 375: +#line 4772 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; - case 374: -#line 4757 "Gmsh.y" + case 376: +#line 4773 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; - case 375: -#line 4758 "Gmsh.y" + case 377: +#line 4774 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; - case 376: -#line 4759 "Gmsh.y" + case 378: +#line 4775 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; - case 377: -#line 4760 "Gmsh.y" + case 379: +#line 4776 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; - case 378: -#line 4761 "Gmsh.y" + case 380: +#line 4777 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; - case 379: -#line 4762 "Gmsh.y" + case 381: +#line 4778 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; - case 380: -#line 4763 "Gmsh.y" + case 382: +#line 4779 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; - case 381: -#line 4764 "Gmsh.y" + case 383: +#line 4780 "Gmsh.y" { (yyval.d) = ((int)(yyvsp[(1) - (3)].d) >> (int)(yyvsp[(3) - (3)].d)); ;} break; - case 382: -#line 4765 "Gmsh.y" + case 384: +#line 4781 "Gmsh.y" { (yyval.d) = ((int)(yyvsp[(1) - (3)].d) << (int)(yyvsp[(3) - (3)].d)); ;} break; - case 383: -#line 4766 "Gmsh.y" + case 385: +#line 4782 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; - case 384: -#line 4767 "Gmsh.y" + case 386: +#line 4783 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; - case 385: -#line 4768 "Gmsh.y" + case 387: +#line 4784 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; - case 386: -#line 4769 "Gmsh.y" + case 388: +#line 4785 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; - case 387: -#line 4770 "Gmsh.y" + case 389: +#line 4786 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; - case 388: -#line 4771 "Gmsh.y" + case 390: +#line 4787 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; - case 389: -#line 4772 "Gmsh.y" + case 391: +#line 4788 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; - case 390: -#line 4773 "Gmsh.y" + case 392: +#line 4789 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; - case 391: -#line 4774 "Gmsh.y" + case 393: +#line 4790 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; - case 392: -#line 4775 "Gmsh.y" + case 394: +#line 4791 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; - case 393: -#line 4776 "Gmsh.y" + case 395: +#line 4792 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; - case 394: -#line 4777 "Gmsh.y" + case 396: +#line 4793 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; - case 395: -#line 4778 "Gmsh.y" + case 397: +#line 4794 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; - case 396: -#line 4779 "Gmsh.y" + case 398: +#line 4795 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; - case 397: -#line 4780 "Gmsh.y" + case 399: +#line 4796 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; - case 398: -#line 4781 "Gmsh.y" + case 400: +#line 4797 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; - case 399: -#line 4782 "Gmsh.y" + case 401: +#line 4798 "Gmsh.y" { (yyval.d) = std::abs((yyvsp[(3) - (4)].d)); ;} break; - case 400: -#line 4783 "Gmsh.y" + case 402: +#line 4799 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; - case 401: -#line 4784 "Gmsh.y" + case 403: +#line 4800 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; - case 402: -#line 4785 "Gmsh.y" + case 404: +#line 4801 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; - case 403: -#line 4786 "Gmsh.y" + case 405: +#line 4802 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 404: -#line 4787 "Gmsh.y" + case 406: +#line 4803 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 405: -#line 4788 "Gmsh.y" + case 407: +#line 4804 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; - case 406: -#line 4789 "Gmsh.y" + case 408: +#line 4805 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; - case 407: -#line 4798 "Gmsh.y" + case 409: +#line 4814 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 408: -#line 4799 "Gmsh.y" + case 410: +#line 4815 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; - case 409: -#line 4800 "Gmsh.y" + case 411: +#line 4816 "Gmsh.y" { (yyval.d) = (double)ImbricatedTest; ;} break; - case 410: -#line 4801 "Gmsh.y" + case 412: +#line 4817 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; - case 411: -#line 4802 "Gmsh.y" + case 413: +#line 4818 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; - case 412: -#line 4803 "Gmsh.y" + case 414: +#line 4819 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; - case 413: -#line 4804 "Gmsh.y" + case 415: +#line 4820 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; - case 414: -#line 4805 "Gmsh.y" + case 416: +#line 4821 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; - case 415: -#line 4806 "Gmsh.y" + case 417: +#line 4822 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; - case 416: -#line 4807 "Gmsh.y" + case 418: +#line 4823 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; - case 417: -#line 4808 "Gmsh.y" + case 419: +#line 4824 "Gmsh.y" { (yyval.d) = TotalRam(); ;} break; - case 418: -#line 4813 "Gmsh.y" + case 420: +#line 4829 "Gmsh.y" { init_options(); ;} break; - case 419: -#line 4815 "Gmsh.y" + case 421: +#line 4831 "Gmsh.y" { std::vector<double> val(1, (yyvsp[(3) - (6)].d)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -11672,92 +11720,92 @@ yyreduce: ;} break; - case 420: -#line 4821 "Gmsh.y" + case 422: +#line 4837 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 421: -#line 4823 "Gmsh.y" + case 423: +#line 4839 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); ;} break; - case 422: -#line 4828 "Gmsh.y" + case 424: +#line 4844 "Gmsh.y" { (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); ;} break; - case 423: -#line 4833 "Gmsh.y" + case 425: +#line 4849 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(1) - (1)].c2).char1, (yyvsp[(1) - (1)].c2).char2); ;} break; - case 424: -#line 4838 "Gmsh.y" + case 426: +#line 4854 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float(NULL, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d)); ;} break; - case 425: -#line 4843 "Gmsh.y" + case 427: +#line 4859 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float(NULL, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d)); ;} break; - case 426: -#line 4847 "Gmsh.y" + case 428: +#line 4863 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (4)].c2).char1, (yyvsp[(3) - (4)].c2).char2, 1, 0, 0., 1); ;} break; - case 427: -#line 4851 "Gmsh.y" + case 429: +#line 4867 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (6)].c2).char1, (yyvsp[(3) - (6)].c2).char2, (yyvsp[(5) - (6)].c), 0, 0., 1); ;} break; - case 428: -#line 4855 "Gmsh.y" + case 430: +#line 4871 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (5)].c2).char1, (yyvsp[(3) - (5)].c2).char2, 1, 0, (yyvsp[(4) - (5)].d), 2); ;} break; - case 429: -#line 4859 "Gmsh.y" + case 431: +#line 4875 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2, (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].d), 2); ;} break; - case 430: -#line 4863 "Gmsh.y" + case 432: +#line 4879 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (8)].c2).char1, (yyvsp[(3) - (8)].c2).char2, 2, (int)(yyvsp[(5) - (8)].d), (yyvsp[(7) - (8)].d), 2); ;} break; - case 431: -#line 4867 "Gmsh.y" + case 433: +#line 4883 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (10)].c2).char1, (yyvsp[(3) - (10)].c2).char2, (yyvsp[(5) - (10)].c), (int)(yyvsp[(7) - (10)].d), (yyvsp[(9) - (10)].d), 2); ;} break; - case 432: -#line 4871 "Gmsh.y" + case 434: +#line 4887 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.d) = !StatFile(tmp); @@ -11765,8 +11813,8 @@ yyreduce: ;} break; - case 433: -#line 4877 "Gmsh.y" + case 435: +#line 4893 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]); @@ -11783,15 +11831,15 @@ yyreduce: ;} break; - case 434: -#line 4893 "Gmsh.y" + case 436: +#line 4909 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float_getDim((yyvsp[(2) - (6)].c2).char1, (yyvsp[(2) - (6)].c2).char2, (yyvsp[(4) - (6)].c)); ;} break; - case 435: -#line 4898 "Gmsh.y" + case 437: +#line 4914 "Gmsh.y" { std::string struct_namespace((yyvsp[(3) - (4)].c)); (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size(); @@ -11799,16 +11847,16 @@ yyreduce: ;} break; - case 436: -#line 4904 "Gmsh.y" + case 438: +#line 4920 "Gmsh.y" { std::string struct_namespace(std::string("")); (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size(); ;} break; - case 437: -#line 4910 "Gmsh.y" + case 439: +#line 4926 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -11829,8 +11877,8 @@ yyreduce: ;} break; - case 438: -#line 4929 "Gmsh.y" + case 440: +#line 4945 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11852,8 +11900,8 @@ yyreduce: ;} break; - case 439: -#line 4950 "Gmsh.y" + case 441: +#line 4966 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -11875,58 +11923,58 @@ yyreduce: ;} break; - case 440: -#line 4983 "Gmsh.y" + case 442: +#line 4999 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c)); ;} break; - case 441: -#line 4987 "Gmsh.y" + case 443: +#line 5003 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;} break; - case 442: -#line 4992 "Gmsh.y" + case 444: +#line 5008 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; - case 443: -#line 4996 "Gmsh.y" + case 445: +#line 5012 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; - case 444: -#line 5000 "Gmsh.y" + case 446: +#line 5016 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; - case 445: -#line 5004 "Gmsh.y" + case 447: +#line 5020 "Gmsh.y" { (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; - case 446: -#line 5009 "Gmsh.y" + case 448: +#line 5025 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); ;} break; - case 447: -#line 5014 "Gmsh.y" + case 449: +#line 5030 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -11938,8 +11986,8 @@ yyreduce: ;} break; - case 448: -#line 5024 "Gmsh.y" + case 450: +#line 5040 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -11951,16 +11999,16 @@ yyreduce: ;} break; - case 449: -#line 5034 "Gmsh.y" + case 451: +#line 5050 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); ;} break; - case 450: -#line 5039 "Gmsh.y" + case 452: +#line 5055 "Gmsh.y" { int matches = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -11973,8 +12021,8 @@ yyreduce: ;} break; - case 451: -#line 5050 "Gmsh.y" + case 453: +#line 5066 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -11985,24 +12033,24 @@ yyreduce: ;} break; - case 452: -#line 5059 "Gmsh.y" + case 454: +#line 5075 "Gmsh.y" { (yyval.d) = strlen((yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); ;} break; - case 453: -#line 5064 "Gmsh.y" + case 455: +#line 5080 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); ;} break; - case 454: -#line 5069 "Gmsh.y" + case 456: +#line 5085 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -12028,28 +12076,28 @@ yyreduce: ;} break; - case 455: -#line 5096 "Gmsh.y" + case 457: +#line 5112 "Gmsh.y" { (yyval.d) = 0.; ;} break; - case 456: -#line 5098 "Gmsh.y" + case 458: +#line 5114 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d);;} break; - case 457: -#line 5103 "Gmsh.y" + case 459: +#line 5119 "Gmsh.y" { (yyval.c) = NULL; ;} break; - case 458: -#line 5105 "Gmsh.y" + case 460: +#line 5121 "Gmsh.y" { (yyval.c) = (yyvsp[(2) - (2)].c);;} break; - case 459: -#line 5110 "Gmsh.y" + case 461: +#line 5126 "Gmsh.y" { std::string struct_namespace((yyvsp[(2) - (3)].c2).char1? (yyvsp[(2) - (3)].c2).char1 : std::string("")), struct_name((yyvsp[(2) - (3)].c2).char2); @@ -12058,8 +12106,8 @@ yyreduce: ;} break; - case 460: -#line 5117 "Gmsh.y" + case 462: +#line 5133 "Gmsh.y" { std::string struct_namespace((yyvsp[(2) - (7)].c2).char1? (yyvsp[(2) - (7)].c2).char1 : std::string("")), struct_name((yyvsp[(2) - (7)].c2).char2); @@ -12074,151 +12122,151 @@ yyreduce: ;} break; - case 461: -#line 5133 "Gmsh.y" + case 463: +#line 5149 "Gmsh.y" { (yyval.c2).char1 = NULL; (yyval.c2).char2 = (yyvsp[(1) - (1)].c); ;} break; - case 462: -#line 5135 "Gmsh.y" + case 464: +#line 5151 "Gmsh.y" { (yyval.c2).char1 = (yyvsp[(1) - (3)].c); (yyval.c2).char2 = (yyvsp[(3) - (3)].c); ;} break; - case 463: -#line 5140 "Gmsh.y" + case 465: +#line 5156 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); flag_tSTRING_alloc = 1; ;} break; - case 464: -#line 5149 "Gmsh.y" + case 466: +#line 5165 "Gmsh.y" { (yyval.i) = 99; ;} break; - case 465: -#line 5151 "Gmsh.y" + case 467: +#line 5167 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; - case 466: -#line 5156 "Gmsh.y" + case 468: +#line 5172 "Gmsh.y" { (yyval.i) = 0; ;} break; - case 467: -#line 5158 "Gmsh.y" + case 469: +#line 5174 "Gmsh.y" { (yyval.i) = (yyvsp[(2) - (3)].i); ;} break; - case 468: -#line 5163 "Gmsh.y" + case 470: +#line 5179 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; - case 469: -#line 5167 "Gmsh.y" + case 471: +#line 5183 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; - case 470: -#line 5171 "Gmsh.y" + case 472: +#line 5187 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; - case 471: -#line 5175 "Gmsh.y" + case 473: +#line 5191 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; - case 472: -#line 5179 "Gmsh.y" + case 474: +#line 5195 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; - case 473: -#line 5186 "Gmsh.y" + case 475: +#line 5202 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; - case 474: -#line 5190 "Gmsh.y" + case 476: +#line 5206 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; - case 475: -#line 5194 "Gmsh.y" + case 477: +#line 5210 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 476: -#line 5198 "Gmsh.y" + case 478: +#line 5214 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 477: -#line 5205 "Gmsh.y" + case 479: +#line 5221 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); ;} break; - case 478: -#line 5210 "Gmsh.y" + case 480: +#line 5226 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; - case 479: -#line 5217 "Gmsh.y" + case 481: +#line 5233 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 480: -#line 5222 "Gmsh.y" + case 482: +#line 5238 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 481: -#line 5226 "Gmsh.y" + case 483: +#line 5242 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); ;} break; - case 482: -#line 5231 "Gmsh.y" + case 484: +#line 5247 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 483: -#line 5235 "Gmsh.y" + case 485: +#line 5251 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12228,8 +12276,8 @@ yyreduce: ;} break; - case 484: -#line 5243 "Gmsh.y" + case 486: +#line 5259 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12239,15 +12287,15 @@ yyreduce: ;} break; - case 485: -#line 5254 "Gmsh.y" + case 487: +#line 5270 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 486: -#line 5258 "Gmsh.y" + case 488: +#line 5274 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -12258,8 +12306,8 @@ yyreduce: ;} break; - case 487: -#line 5270 "Gmsh.y" + case 489: +#line 5286 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12269,8 +12317,8 @@ yyreduce: ;} break; - case 488: -#line 5278 "Gmsh.y" + case 490: +#line 5294 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -12280,8 +12328,8 @@ yyreduce: ;} break; - case 489: -#line 5286 "Gmsh.y" + case 491: +#line 5302 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -12290,8 +12338,8 @@ yyreduce: ;} break; - case 490: -#line 5293 "Gmsh.y" + case 492: +#line 5309 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -12303,8 +12351,8 @@ yyreduce: ;} break; - case 491: -#line 5303 "Gmsh.y" + case 493: +#line 5319 "Gmsh.y" { (yyval.l) = List_Create(3, 1, sizeof(double)); int tag = (int)(yyvsp[(3) - (4)].d); @@ -12329,8 +12377,8 @@ yyreduce: ;} break; - case 492: -#line 5326 "Gmsh.y" + case 494: +#line 5342 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); getAllElementaryTags((yyvsp[(1) - (2)].i), (yyval.l)); @@ -12338,8 +12386,8 @@ yyreduce: ;} break; - case 493: -#line 5332 "Gmsh.y" + case 495: +#line 5348 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); if(!(yyvsp[(3) - (3)].l)){ @@ -12352,16 +12400,16 @@ yyreduce: ;} break; - case 494: -#line 5344 "Gmsh.y" + case 496: +#line 5360 "Gmsh.y" { (yyval.l) = List_Create(10, 10, sizeof(double)); getElementaryTagsInBoundingBox((yyvsp[(1) - (16)].i), (yyvsp[(5) - (16)].d), (yyvsp[(7) - (16)].d), (yyvsp[(9) - (16)].d), (yyvsp[(11) - (16)].d), (yyvsp[(13) - (16)].d), (yyvsp[(15) - (16)].d), (yyval.l)); ;} break; - case 495: -#line 5349 "Gmsh.y" + case 497: +#line 5365 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -12373,8 +12421,8 @@ yyreduce: ;} break; - case 496: -#line 5359 "Gmsh.y" + case 498: +#line 5375 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -12386,8 +12434,8 @@ yyreduce: ;} break; - case 497: -#line 5369 "Gmsh.y" + case 499: +#line 5385 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -12399,8 +12447,8 @@ yyreduce: ;} break; - case 498: -#line 5379 "Gmsh.y" + case 500: +#line 5395 "Gmsh.y" { (yyval.l) = List_Create(20, 20, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -12414,22 +12462,22 @@ yyreduce: ;} break; - case 499: -#line 5391 "Gmsh.y" + case 501: +#line 5407 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat(NULL, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c)); ;} break; - case 500: -#line 5395 "Gmsh.y" + case 502: +#line 5411 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].c)); ;} break; - case 501: -#line 5400 "Gmsh.y" + case 503: +#line 5416 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -12443,29 +12491,29 @@ yyreduce: ;} break; - case 502: -#line 5412 "Gmsh.y" + case 504: +#line 5428 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; - case 503: -#line 5416 "Gmsh.y" + case 505: +#line 5432 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; - case 504: -#line 5420 "Gmsh.y" + case 506: +#line 5436 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (6)].l); ;} break; - case 505: -#line 5424 "Gmsh.y" + case 507: +#line 5440 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -12485,8 +12533,8 @@ yyreduce: ;} break; - case 506: -#line 5442 "Gmsh.y" + case 508: +#line 5458 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -12496,8 +12544,8 @@ yyreduce: ;} break; - case 507: -#line 5450 "Gmsh.y" + case 509: +#line 5466 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(double)); for(int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++) { @@ -12507,8 +12555,8 @@ yyreduce: ;} break; - case 508: -#line 5458 "Gmsh.y" + case 510: +#line 5474 "Gmsh.y" { Msg::Barrier(); FILE *File; @@ -12539,8 +12587,8 @@ yyreduce: ;} break; - case 509: -#line 5487 "Gmsh.y" + case 511: +#line 5503 "Gmsh.y" { double x0 = (yyvsp[(3) - (14)].d), x1 = (yyvsp[(5) - (14)].d), y0 = (yyvsp[(7) - (14)].d), y1 = (yyvsp[(9) - (14)].d), ys = (yyvsp[(11) - (14)].d); int N = (int)(yyvsp[(13) - (14)].d); @@ -12552,8 +12600,8 @@ yyreduce: ;} break; - case 510: -#line 5497 "Gmsh.y" + case 512: +#line 5513 "Gmsh.y" { std::vector<double> tmp; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -12571,8 +12619,8 @@ yyreduce: ;} break; - case 511: -#line 5513 "Gmsh.y" + case 513: +#line 5529 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double *d = (double*)List_Pointer((yyvsp[(3) - (4)].l), i); @@ -12582,30 +12630,30 @@ yyreduce: ;} break; - case 512: -#line 5524 "Gmsh.y" + case 514: +#line 5540 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 513: -#line 5529 "Gmsh.y" + case 515: +#line 5545 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 514: -#line 5533 "Gmsh.y" + case 516: +#line 5549 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; - case 515: -#line 5537 "Gmsh.y" + case 517: +#line 5553 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -12616,22 +12664,22 @@ yyreduce: ;} break; - case 516: -#line 5549 "Gmsh.y" + case 518: +#line 5565 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; - case 517: -#line 5553 "Gmsh.y" + case 519: +#line 5569 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; - case 518: -#line 5565 "Gmsh.y" + case 520: +#line 5581 "Gmsh.y" { int flag = 0; if(gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ @@ -12650,8 +12698,8 @@ yyreduce: ;} break; - case 519: -#line 5582 "Gmsh.y" + case 521: +#line 5598 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -12660,15 +12708,15 @@ yyreduce: ;} break; - case 520: -#line 5592 "Gmsh.y" + case 522: +#line 5608 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 521: -#line 5596 "Gmsh.y" + case 523: +#line 5612 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -12682,38 +12730,38 @@ yyreduce: ;} break; - case 522: -#line 5611 "Gmsh.y" + case 524: +#line 5627 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); ;} break; - case 523: -#line 5616 "Gmsh.y" + case 525: +#line 5632 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; - case 524: -#line 5623 "Gmsh.y" + case 526: +#line 5639 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 525: -#line 5627 "Gmsh.y" + case 527: +#line 5643 "Gmsh.y" { // No need to extend to Struct_FullName (a Tag is not a String) (yyval.c) = treat_Struct_FullName_String(NULL, (yyvsp[(1) - (1)].c)); ;} break; - case 526: -#line 5632 "Gmsh.y" + case 528: +#line 5648 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12729,8 +12777,8 @@ yyreduce: ;} break; - case 527: -#line 5646 "Gmsh.y" + case 529: +#line 5662 "Gmsh.y" { std::string val; int j = (int)(yyvsp[(3) - (4)].d); @@ -12746,36 +12794,36 @@ yyreduce: ;} break; - case 528: -#line 5662 "Gmsh.y" + case 530: +#line 5678 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(NULL, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c)); ;} break; - case 529: -#line 5666 "Gmsh.y" + case 531: +#line 5682 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c)); ;} break; - case 530: -#line 5670 "Gmsh.y" + case 532: +#line 5686 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(NULL, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c), (int)(yyvsp[(5) - (6)].d)); ;} break; - case 531: -#line 5674 "Gmsh.y" + case 533: +#line 5690 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c), (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d)); ;} break; - case 532: -#line 5678 "Gmsh.y" + case 534: +#line 5694 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -12785,8 +12833,8 @@ yyreduce: ;} break; - case 533: -#line 5686 "Gmsh.y" + case 535: +#line 5702 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(0, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12794,8 +12842,8 @@ yyreduce: ;} break; - case 534: -#line 5692 "Gmsh.y" + case 536: +#line 5708 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(1, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12803,8 +12851,8 @@ yyreduce: ;} break; - case 535: -#line 5698 "Gmsh.y" + case 537: +#line 5714 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(2, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12812,8 +12860,8 @@ yyreduce: ;} break; - case 536: -#line 5704 "Gmsh.y" + case 538: +#line 5720 "Gmsh.y" { std::string name = GModel::current()->getPhysicalName(3, (int)(yyvsp[(4) - (5)].d)); (yyval.c) = (char*)Malloc((name.size() + 1) * sizeof(char)); @@ -12821,22 +12869,22 @@ yyreduce: ;} break; - case 537: -#line 5713 "Gmsh.y" + case 539: +#line 5729 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 538: -#line 5717 "Gmsh.y" + case 540: +#line 5733 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 539: -#line 5721 "Gmsh.y" + case 541: +#line 5737 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -12846,8 +12894,8 @@ yyreduce: ;} break; - case 540: -#line 5729 "Gmsh.y" + case 542: +#line 5745 "Gmsh.y" { std::string exe = Msg::GetExecutableName(); (yyval.c) = (char *)Malloc(exe.size() + 1); @@ -12855,8 +12903,8 @@ yyreduce: ;} break; - case 541: -#line 5735 "Gmsh.y" + case 543: +#line 5751 "Gmsh.y" { std::string action = Msg::GetOnelabAction(); (yyval.c) = (char *)Malloc(action.size() + 1); @@ -12864,15 +12912,15 @@ yyreduce: ;} break; - case 542: -#line 5741 "Gmsh.y" + case 544: +#line 5757 "Gmsh.y" { (yyval.c) = strsave((char*)"Gmsh"); ;} break; - case 543: -#line 5745 "Gmsh.y" + case 545: +#line 5761 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -12882,8 +12930,8 @@ yyreduce: ;} break; - case 544: -#line 5753 "Gmsh.y" + case 546: +#line 5769 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12893,8 +12941,8 @@ yyreduce: ;} break; - case 545: -#line 5761 "Gmsh.y" + case 547: +#line 5777 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12903,8 +12951,8 @@ yyreduce: ;} break; - case 546: -#line 5768 "Gmsh.y" + case 548: +#line 5784 "Gmsh.y" { std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -12914,22 +12962,22 @@ yyreduce: ;} break; - case 547: -#line 5777 "Gmsh.y" + case 549: +#line 5793 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_String(NULL, (yyvsp[(3) - (5)].c2).char2, 1, 0, (yyvsp[(4) - (5)].c), 2); ;} break; - case 548: -#line 5781 "Gmsh.y" + case 550: +#line 5797 "Gmsh.y" { (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2, (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].c), 2); ;} break; - case 549: -#line 5785 "Gmsh.y" + case 551: +#line 5801 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -12946,8 +12994,8 @@ yyreduce: ;} break; - case 550: -#line 5800 "Gmsh.y" + case 552: +#line 5816 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -12963,8 +13011,8 @@ yyreduce: ;} break; - case 551: -#line 5814 "Gmsh.y" + case 553: +#line 5830 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -12980,8 +13028,8 @@ yyreduce: ;} break; - case 552: -#line 5828 "Gmsh.y" + case 554: +#line 5844 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -12995,8 +13043,8 @@ yyreduce: ;} break; - case 553: -#line 5840 "Gmsh.y" + case 555: +#line 5856 "Gmsh.y" { int size = 1; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -13014,8 +13062,8 @@ yyreduce: ;} break; - case 554: -#line 5856 "Gmsh.y" + case 556: +#line 5872 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13026,8 +13074,8 @@ yyreduce: ;} break; - case 555: -#line 5865 "Gmsh.y" + case 557: +#line 5881 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13038,8 +13086,8 @@ yyreduce: ;} break; - case 556: -#line 5874 "Gmsh.y" + case 558: +#line 5890 "Gmsh.y" { int i = 0; while ((yyvsp[(3) - (4)].c)[i]) { @@ -13051,8 +13099,8 @@ yyreduce: ;} break; - case 557: -#line 5884 "Gmsh.y" + case 559: +#line 5900 "Gmsh.y" { if((yyvsp[(3) - (8)].d)){ (yyval.c) = (yyvsp[(5) - (8)].c); @@ -13065,8 +13113,8 @@ yyreduce: ;} break; - case 558: -#line 5895 "Gmsh.y" + case 560: +#line 5911 "Gmsh.y" { std::string in = (yyvsp[(3) - (8)].c); std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d)); @@ -13076,8 +13124,8 @@ yyreduce: ;} break; - case 559: -#line 5903 "Gmsh.y" + case 561: +#line 5919 "Gmsh.y" { std::string in = (yyvsp[(3) - (6)].c); std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos); @@ -13087,15 +13135,15 @@ yyreduce: ;} break; - case 560: -#line 5911 "Gmsh.y" + case 562: +#line 5927 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 561: -#line 5915 "Gmsh.y" + case 563: +#line 5931 "Gmsh.y" { char tmpstring[5000]; int i = printListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -13116,8 +13164,8 @@ yyreduce: ;} break; - case 562: -#line 5934 "Gmsh.y" + case 564: +#line 5950 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13126,8 +13174,8 @@ yyreduce: ;} break; - case 563: -#line 5941 "Gmsh.y" + case 565: +#line 5957 "Gmsh.y" { std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13135,8 +13183,8 @@ yyreduce: ;} break; - case 564: -#line 5947 "Gmsh.y" + case 566: +#line 5963 "Gmsh.y" { std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0]; (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13145,8 +13193,8 @@ yyreduce: ;} break; - case 565: -#line 5954 "Gmsh.y" + case 567: +#line 5970 "Gmsh.y" { std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c)); (yyval.c) = (char*)Malloc((tmp.size() + 1) * sizeof(char)); @@ -13155,13 +13203,13 @@ yyreduce: ;} break; - case 566: -#line 5961 "Gmsh.y" + case 568: +#line 5977 "Gmsh.y" { init_options(); ;} break; - case 567: -#line 5963 "Gmsh.y" + case 569: +#line 5979 "Gmsh.y" { std::string val((yyvsp[(3) - (6)].c)); Msg::ExchangeOnelabParameter("", val, floatOptions, charOptions); @@ -13171,8 +13219,8 @@ yyreduce: ;} break; - case 568: -#line 5971 "Gmsh.y" + case 570: +#line 5987 "Gmsh.y" { std::string out; const std::string * key_struct = NULL; @@ -13195,58 +13243,58 @@ yyreduce: ;} break; - case 569: -#line 5995 "Gmsh.y" + case 571: +#line 6011 "Gmsh.y" { struct_namespace = std::string(""); (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; - case 570: -#line 5997 "Gmsh.y" + case 572: +#line 6013 "Gmsh.y" { struct_namespace = (yyvsp[(1) - (4)].c); Free((yyvsp[(1) - (4)].c)); (yyval.d) = (yyvsp[(4) - (4)].d); ;} break; - case 571: -#line 6003 "Gmsh.y" + case 573: +#line 6019 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); ;} break; - case 572: -#line 6008 "Gmsh.y" + case 574: +#line 6024 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 573: -#line 6010 "Gmsh.y" + case 575: +#line 6026 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 574: -#line 6015 "Gmsh.y" + case 576: +#line 6031 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 575: -#line 6020 "Gmsh.y" + case 577: +#line 6036 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); ;} break; - case 576: -#line 6025 "Gmsh.y" + case 578: +#line 6041 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 577: -#line 6027 "Gmsh.y" + case 579: +#line 6043 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; - case 578: -#line 6031 "Gmsh.y" + case 580: +#line 6047 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ char* c; @@ -13257,8 +13305,8 @@ yyreduce: ;} break; - case 579: -#line 6043 "Gmsh.y" + case 581: +#line 6059 "Gmsh.y" { (yyval.l) = List_Create(20, 20, sizeof(char *)); if(!gmsh_yystringsymbols.count((yyvsp[(1) - (3)].c))) @@ -13274,22 +13322,22 @@ yyreduce: ;} break; - case 580: -#line 6057 "Gmsh.y" + case 582: +#line 6073 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString(NULL, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c)); ;} break; - case 581: -#line 6061 "Gmsh.y" + case 583: +#line 6077 "Gmsh.y" { (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].c)); ;} break; - case 582: -#line 6068 "Gmsh.y" + case 584: +#line 6084 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13299,8 +13347,8 @@ yyreduce: ;} break; - case 583: -#line 6076 "Gmsh.y" + case 585: +#line 6092 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -13310,8 +13358,8 @@ yyreduce: ;} break; - case 584: -#line 6084 "Gmsh.y" + case 586: +#line 6100 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(7) - (8)].d)); @@ -13321,24 +13369,24 @@ yyreduce: ;} break; - case 585: -#line 6095 "Gmsh.y" + case 587: +#line 6111 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 586: -#line 6097 "Gmsh.y" + case 588: +#line 6113 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 587: -#line 6100 "Gmsh.y" + case 589: +#line 6116 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 13342 "Gmsh.tab.cpp" +#line 13390 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -13552,7 +13600,7 @@ yyreturn: } -#line 6103 "Gmsh.y" +#line 6119 "Gmsh.y" void assignVariable(const std::string &name, int index, int assignType, @@ -14153,12 +14201,13 @@ double treat_Struct_FullName_Float } else if (type_var == 2) { gmsh_yysymbol &s(gmsh_yysymbols[c2]); - if((int)s.value.size() < index + 1){ + if(index < 0 || (int)s.value.size() < index + 1){ out = val_default; if (type_treat == 0) yymsg(0, "Uninitialized variable '%s[%d]'", c2, index); } - else + else{ out = s.value[index]; + } } else { out = val_default; diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp index 8bebf4cf9e971a7412368e144c17030c11cd9f3a..6a40502da1b980d6caf1bad4e47e159e12d1a8ed 100644 --- a/Parser/Gmsh.tab.hpp +++ b/Parser/Gmsh.tab.hpp @@ -136,7 +136,7 @@ tSurface = 352, tSpline = 353, tVolume = 354, - tBlock = 355, + tBox = 355, tCylinder = 356, tCone = 357, tTorus = 358, @@ -363,7 +363,7 @@ #define tSurface 352 #define tSpline 353 #define tVolume 354 -#define tBlock 355 +#define tBox 355 #define tCylinder 356 #define tCone 357 #define tTorus 358 diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 4c50dcd5faffad144709786a41ee914cd7df41cc..9495b5acbc59669e2eeef8907827df8db0d129a3 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -192,7 +192,7 @@ struct doubleXstring{ %token tDefineNumber tDefineStruct tNameStruct tDimNameSpace tAppend %token tDefineString tSetNumber tSetString %token tPoint tCircle tEllipse tLine tSphere tPolarSphere tSurface tSpline tVolume -%token tBlock tCylinder tCone tTorus tEllipsoid tQuadric tShapeFromFile +%token tBox tCylinder tCone tTorus tEllipsoid tQuadric tShapeFromFile %token tRectangle tDisk tWire tGeoEntity %token tCharacteristic tLength tParametric tElliptic tRefineMesh tAdaptMesh %token tRelocateMesh tSetFactory tThruSections tWedge tFillet tChamfer @@ -1104,6 +1104,20 @@ Affectation : #endif Free($6); } + | tField '[' FExpr ']' tAFFECT tBox tEND + { +#if defined(HAVE_MESH) + if(!GModel::current()->getFields()->newField((int)$3, "Box")) + yymsg(0, "Cannot create field %i of type '%s'", (int)$3, "Box"); +#endif + } + | tField '[' FExpr ']' tAFFECT tCylinder tEND + { +#if defined(HAVE_MESH) + if(!GModel::current()->getFields()->newField((int)$3, "Cylinder")) + yymsg(0, "Cannot create field %i of type '%s'", (int)$3, "Cylinder"); +#endif + } | tField '[' FExpr ']' '.' tSTRING tAFFECT FExpr tEND { #if defined(HAVE_MESH) @@ -1886,22 +1900,22 @@ Shape : $$.Type = 0; $$.Num = num; } - | tBlock '(' FExpr ')' tAFFECT ListOfDouble tEND + | tBox '(' FExpr ')' tAFFECT ListOfDouble tEND { int num = (int)$3; std::vector<double> param; ListOfDouble2Vector($6, param); bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ if(param.size() == 6){ - r = GModel::current()->getOCCInternals()->addBlock + r = GModel::current()->getOCCInternals()->addBox (num, param[0], param[1], param[2], param[3], param[4], param[5]); } else{ - yymsg(0, "Block requires 6 parameters"); + yymsg(0, "Box requires 6 parameters"); } } else{ - yymsg(0, "Block only available with OpenCASCADE geometry kernel"); + yymsg(0, "Box only available with OpenCASCADE geometry kernel"); } if(!r) yymsg(0, "Could not add block"); List_Delete($6); @@ -3941,13 +3955,14 @@ Boolean : bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ std::vector<std::pair<int, int > > object, tool, out; + std::vector<std::vector<std::pair<int, int > > > outMap; ListOfShapes2VectorOfPairs($3, object); ListOfShapes2VectorOfPairs($7, tool); // currently we don't distinguish between Delete and Recursive Delete: // we always delete recursively. Let us know if you have examples where // having the choice would be interesting r = GModel::current()->getOCCInternals()->booleanOperator - (-1, (OCC_Internals::BooleanOperator)$1, object, tool, out, $4, $8); + (-1, (OCC_Internals::BooleanOperator)$1, object, tool, out, outMap, $4, $8); VectorOfPairs2ListOfShapes(out, $$); } else{ @@ -3982,13 +3997,14 @@ BooleanShape : bool r = true; if(gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals()){ std::vector<std::pair<int, int> > object, tool, out; + std::vector<std::vector<std::pair<int, int > > > outMap; ListOfShapes2VectorOfPairs($7, object); ListOfShapes2VectorOfPairs($11, tool); // currently we don't distinguish between Delete and Recursive Delete: // we always delete recursively. Let us know if you have examples where // having the choice would be interesting r = GModel::current()->getOCCInternals()->booleanOperator - ((int)$3, (OCC_Internals::BooleanOperator)$1, object, tool, out, $8, $12); + ((int)$3, (OCC_Internals::BooleanOperator)$1, object, tool, out, outMap, $8, $12); } if(!r) yymsg(0, "Could not apply boolean operator"); List_Delete($7); @@ -6700,12 +6716,13 @@ double treat_Struct_FullName_Float } else if (type_var == 2) { gmsh_yysymbol &s(gmsh_yysymbols[c2]); - if((int)s.value.size() < index + 1){ + if(index < 0 || (int)s.value.size() < index + 1){ out = val_default; if (type_treat == 0) yymsg(0, "Uninitialized variable '%s[%d]'", c2, index); } - else + else{ out = s.value[index]; + } } else { out = val_default; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 06908fabefdb003c76ac7bc7084179a3df38e2f3..70775a21babdd0254159e809ef5925d7d56006ba 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -380,8 +380,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 251 -#define YY_END_OF_BUFFER 252 +#define YY_NUM_RULES 252 +#define YY_END_OF_BUFFER 253 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -389,148 +389,148 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1280] = +static yyconst flex_int16_t yy_accept[1281] = { 0, - 0, 0, 252, 250, 1, 1, 250, 5, 250, 6, - 250, 250, 250, 250, 250, 245, 21, 2, 250, 16, - 250, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 250, 29, 25, 19, 26, - 17, 27, 18, 0, 247, 3, 4, 20, 246, 245, - 0, 23, 33, 30, 28, 31, 32, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 136, 137, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 169, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 223, 224, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 24, 22, 0, - 246, 0, 0, 248, 249, 35, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - - 249, 249, 77, 79, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 107, 249, 249, 249, 249, 249, 249, 249, 249, - 117, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 147, 249, - 249, 249, 249, 249, 249, 158, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 190, - 249, 249, 249, 249, 199, 249, 249, 249, 249, 249, - 249, 208, 249, 249, 249, 249, 226, 249, 249, 249, - - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 0, 247, 0, 0, 246, 249, 249, - 37, 249, 249, 249, 249, 249, 249, 249, 47, 48, - 249, 249, 249, 249, 249, 249, 60, 249, 249, 63, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 74, - 249, 249, 78, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 93, 94, 249, 99, 249, 249, 249, 249, - 249, 106, 249, 109, 249, 249, 249, 113, 249, 249, - 116, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 131, 132, 249, 249, 249, 249, 249, 249, 249, 249, - - 249, 144, 145, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 178, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 198, 200, 249, 249, 249, 249, 249, - 207, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 225, 227, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 244, 10, - 15, 9, 8, 249, 12, 14, 0, 246, 34, 249, - 249, 249, 40, 249, 249, 249, 249, 49, 249, 51, - - 249, 53, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 70, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 102, - 103, 249, 249, 249, 110, 249, 249, 249, 115, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 134, - 249, 249, 139, 249, 249, 249, 249, 249, 148, 249, - 249, 249, 249, 154, 249, 249, 249, 249, 249, 249, - 162, 249, 165, 249, 249, 249, 170, 249, 172, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 188, 189, 249, 249, 249, 249, 249, 249, 249, - - 201, 249, 249, 249, 205, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 232, 233, 249, 249, 249, 249, 249, - 241, 249, 243, 11, 249, 13, 249, 249, 39, 249, - 43, 42, 44, 45, 249, 52, 249, 249, 249, 249, - 249, 249, 66, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 89, 90, 249, 249, - 249, 249, 100, 101, 249, 105, 249, 249, 112, 249, - 249, 249, 249, 249, 123, 249, 249, 249, 249, 249, - 249, 249, 249, 140, 141, 249, 249, 249, 249, 249, - - 249, 249, 155, 249, 157, 249, 249, 249, 249, 249, - 249, 249, 171, 249, 174, 249, 249, 249, 249, 249, - 249, 249, 185, 249, 187, 249, 249, 249, 249, 249, - 249, 249, 249, 203, 204, 249, 209, 249, 211, 249, - 213, 249, 249, 249, 217, 249, 219, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 239, 249, - 242, 7, 249, 249, 249, 46, 50, 249, 249, 249, - 249, 64, 249, 249, 249, 249, 249, 72, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 92, - 95, 249, 249, 249, 249, 108, 249, 249, 249, 249, - - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 175, - 249, 249, 249, 249, 249, 249, 186, 249, 249, 249, - 249, 249, 249, 249, 249, 206, 249, 212, 249, 249, - 249, 249, 220, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 61, 249, 249, 67, 249, 249, - 249, 73, 249, 249, 249, 249, 84, 249, 249, 249, - 249, 249, 96, 249, 98, 249, 249, 249, 118, 249, - - 249, 249, 249, 249, 249, 249, 129, 249, 133, 249, - 249, 142, 143, 249, 149, 249, 152, 153, 249, 249, - 249, 161, 249, 249, 249, 167, 168, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 202, 249, 249, 249, 249, 249, 221, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 38, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 68, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 97, 104, 249, 249, 249, 249, - 249, 122, 124, 126, 127, 249, 249, 138, 249, 150, - - 249, 249, 249, 249, 164, 249, 249, 249, 249, 249, - 180, 181, 182, 249, 249, 249, 249, 249, 194, 249, - 196, 249, 210, 214, 249, 249, 249, 222, 228, 249, - 249, 249, 249, 249, 249, 237, 249, 240, 249, 249, - 249, 249, 249, 249, 249, 249, 62, 249, 69, 71, - 249, 249, 249, 82, 249, 249, 249, 249, 249, 111, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 159, 249, 249, 166, 249, 249, 249, 249, 183, - 249, 249, 192, 193, 249, 249, 249, 216, 249, 249, - 230, 249, 249, 249, 249, 249, 249, 249, 249, 249, - - 249, 249, 249, 59, 249, 75, 76, 249, 249, 249, - 249, 249, 88, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 151, 249, 249, 249, 173, 249, 249, - 249, 249, 249, 249, 249, 215, 249, 249, 249, 234, - 249, 236, 249, 36, 249, 249, 249, 249, 249, 58, - 249, 249, 249, 249, 86, 87, 91, 249, 249, 249, - 249, 125, 249, 249, 249, 146, 249, 160, 163, 249, - 249, 249, 184, 249, 195, 249, 218, 249, 231, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 156, 249, 249, - - 249, 249, 197, 249, 235, 249, 249, 249, 249, 249, - 57, 65, 80, 249, 85, 249, 249, 249, 249, 128, - 249, 249, 249, 249, 179, 191, 229, 249, 249, 249, - 249, 249, 249, 249, 114, 249, 249, 249, 249, 249, - 176, 249, 249, 41, 249, 55, 249, 249, 83, 249, - 249, 249, 249, 249, 249, 238, 54, 249, 249, 249, - 249, 249, 249, 249, 177, 249, 249, 119, 120, 121, - 130, 249, 56, 249, 249, 249, 135, 81, 0 + 0, 0, 253, 251, 1, 1, 251, 5, 251, 6, + 251, 251, 251, 251, 251, 246, 21, 2, 251, 16, + 251, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 251, 29, 25, 19, 26, + 17, 27, 18, 0, 248, 3, 4, 20, 247, 246, + 0, 23, 33, 30, 28, 31, 32, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 137, 138, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 170, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 224, 225, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 24, 22, 0, + 247, 0, 0, 249, 250, 35, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 53, 250, 250, 250, 250, 250, 250, 250, 250, 250, + + 250, 250, 250, 78, 80, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 108, 250, 250, 250, 250, 250, 250, 250, + 250, 118, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 148, + 250, 250, 250, 250, 250, 250, 159, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 191, 250, 250, 250, 250, 200, 250, 250, 250, 250, + 250, 250, 209, 250, 250, 250, 250, 227, 250, 250, + + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 0, 248, 0, 0, 247, 250, + 250, 37, 250, 250, 250, 250, 250, 250, 250, 47, + 48, 250, 250, 250, 250, 250, 250, 61, 250, 250, + 64, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 75, 250, 250, 79, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 94, 95, 250, 100, 250, 250, 250, + 250, 250, 107, 250, 110, 250, 250, 250, 114, 250, + 250, 117, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 132, 133, 250, 250, 250, 250, 250, 250, 250, + + 250, 250, 145, 146, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 179, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 199, 201, 250, 250, 250, 250, + 250, 208, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 226, 228, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 245, + 10, 15, 9, 8, 250, 12, 14, 0, 247, 34, + 250, 250, 250, 40, 250, 250, 250, 250, 49, 250, + + 51, 250, 54, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 71, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 103, 104, 250, 250, 250, 111, 250, 250, 250, 116, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 135, 250, 250, 140, 250, 250, 250, 250, 250, 149, + 250, 250, 250, 250, 155, 250, 250, 250, 250, 250, + 250, 163, 250, 166, 250, 250, 250, 171, 250, 173, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 189, 190, 250, 250, 250, 250, 250, 250, + + 250, 202, 250, 250, 250, 206, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 233, 234, 250, 250, 250, 250, + 250, 242, 250, 244, 11, 250, 13, 250, 250, 39, + 250, 43, 42, 44, 45, 250, 52, 250, 250, 250, + 250, 250, 250, 67, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 90, 91, 250, + 250, 250, 250, 101, 102, 250, 106, 250, 250, 113, + 250, 250, 250, 250, 250, 124, 250, 250, 250, 250, + 250, 250, 250, 250, 141, 142, 250, 250, 250, 250, + + 250, 250, 250, 156, 250, 158, 250, 250, 250, 250, + 250, 250, 250, 172, 250, 175, 250, 250, 250, 250, + 250, 250, 250, 186, 250, 188, 250, 250, 250, 250, + 250, 250, 250, 250, 204, 205, 250, 210, 250, 212, + 250, 214, 250, 250, 250, 218, 250, 220, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 240, + 250, 243, 7, 250, 250, 250, 46, 50, 250, 250, + 250, 250, 65, 250, 250, 250, 250, 250, 73, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 93, 96, 250, 250, 250, 250, 109, 250, 250, 250, + + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 176, 250, 250, 250, 250, 250, 250, 187, 250, 250, + 250, 250, 250, 250, 250, 250, 207, 250, 213, 250, + 250, 250, 250, 221, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 62, 250, 250, 68, 250, + 250, 250, 74, 250, 250, 250, 250, 85, 250, 250, + 250, 250, 250, 97, 250, 99, 250, 250, 250, 119, + + 250, 250, 250, 250, 250, 250, 250, 130, 250, 134, + 250, 250, 143, 144, 250, 150, 250, 153, 154, 250, + 250, 250, 162, 250, 250, 250, 168, 169, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 203, 250, 250, 250, 250, 250, + 222, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 38, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 69, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 98, 105, 250, 250, 250, + 250, 250, 123, 125, 127, 128, 250, 250, 139, 250, + + 151, 250, 250, 250, 250, 165, 250, 250, 250, 250, + 250, 181, 182, 183, 250, 250, 250, 250, 250, 195, + 250, 197, 250, 211, 215, 250, 250, 250, 223, 229, + 250, 250, 250, 250, 250, 250, 238, 250, 241, 250, + 250, 250, 250, 250, 250, 250, 250, 63, 250, 70, + 72, 250, 250, 250, 83, 250, 250, 250, 250, 250, + 112, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 160, 250, 250, 167, 250, 250, 250, 250, + 184, 250, 250, 193, 194, 250, 250, 250, 217, 250, + 250, 231, 250, 250, 250, 250, 250, 250, 250, 250, + + 250, 250, 250, 250, 60, 250, 76, 77, 250, 250, + 250, 250, 250, 89, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 152, 250, 250, 250, 174, 250, + 250, 250, 250, 250, 250, 250, 216, 250, 250, 250, + 235, 250, 237, 250, 36, 250, 250, 250, 250, 250, + 59, 250, 250, 250, 250, 87, 88, 92, 250, 250, + 250, 250, 126, 250, 250, 250, 147, 250, 161, 164, + 250, 250, 250, 185, 250, 196, 250, 219, 250, 232, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 157, 250, + + 250, 250, 250, 198, 250, 236, 250, 250, 250, 250, + 250, 58, 66, 81, 250, 86, 250, 250, 250, 250, + 129, 250, 250, 250, 250, 180, 192, 230, 250, 250, + 250, 250, 250, 250, 250, 115, 250, 250, 250, 250, + 250, 177, 250, 250, 41, 250, 56, 250, 250, 84, + 250, 250, 250, 250, 250, 250, 239, 55, 250, 250, + 250, 250, 250, 250, 250, 178, 250, 250, 120, 121, + 122, 131, 250, 57, 250, 250, 250, 136, 82, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -577,295 +577,297 @@ static yyconst flex_int32_t yy_meta[74] = 2, 2, 1 } ; -static yyconst flex_int16_t yy_base[1281] = +static yyconst flex_int16_t yy_base[1282] = { 0, - 0, 0, 1409, 1410, 1410, 1410, 1387, 1410, 1401, 1410, - 1385, 65, 66, 64, 76, 78, 1387, 1410, 62, 1383, + 0, 0, 1410, 1411, 1411, 1411, 1388, 1411, 1402, 1411, + 1386, 65, 66, 64, 76, 78, 1388, 1411, 62, 1384, 77, 51, 62, 70, 55, 69, 87, 103, 86, 108, - 0, 1343, 104, 111, 125, 46, 123, 1335, 122, 178, - 151, 126, 1340, 56, 1348, 1326, 1410, 1410, 1410, 1410, - 1410, 1410, 1410, 1387, 194, 1410, 1410, 1410, 237, 244, - 209, 1410, 1410, 1410, 1410, 1410, 1410, 0, 63, 1336, - 1348, 1342, 1338, 1331, 1342, 1335, 1342, 1327, 24, 1327, - 97, 132, 1331, 1338, 1321, 214, 1317, 1331, 1318, 1323, - 142, 219, 1332, 111, 1328, 1314, 1327, 173, 1327, 210, - - 1314, 1313, 1309, 1312, 1330, 119, 1305, 1318, 92, 1306, - 1325, 0, 1300, 1304, 1293, 134, 167, 147, 1332, 1312, - 155, 1310, 1319, 1300, 1289, 1293, 1304, 1304, 1290, 1289, - 1281, 0, 199, 229, 1295, 1302, 1289, 240, 138, 1290, - 1311, 1298, 1279, 195, 1284, 1287, 1281, 233, 1277, 1276, - 1275, 222, 0, 0, 1303, 1277, 229, 236, 250, 1288, - 251, 1273, 1278, 1275, 1281, 1267, 1261, 1410, 1410, 308, - 313, 322, 296, 328, 1265, 1267, 1262, 1264, 1269, 1276, - 1271, 278, 1262, 1261, 1262, 1253, 1262, 1267, 1258, 1255, - 1256, 179, 1255, 287, 1262, 1259, 234, 1249, 285, 1257, - - 1244, 1236, 1251, 0, 1257, 1240, 1247, 1246, 1249, 1248, - 1251, 1262, 1261, 1239, 1226, 1238, 1241, 321, 1231, 1233, - 239, 0, 1226, 1224, 1230, 190, 1236, 1246, 1224, 1233, - 0, 1233, 1252, 1254, 326, 1225, 1227, 1226, 1216, 1215, - 1248, 1222, 1207, 1220, 1217, 1218, 307, 1203, 319, 1216, - 1220, 1202, 1204, 1209, 1196, 0, 1210, 1226, 1211, 1201, - 1206, 1209, 1200, 1190, 1194, 1199, 1192, 1203, 1190, 1198, - 1197, 289, 1191, 1185, 1178, 1192, 1195, 1182, 1189, 0, - 1182, 333, 1177, 1169, 1182, 1185, 1174, 1182, 1177, 1176, - 1165, 338, 1177, 1170, 1178, 1200, 1171, 1159, 1158, 1173, - - 1155, 1173, 1153, 1171, 1158, 1165, 1153, 1163, 1154, 1146, - 1158, 1159, 327, 383, 393, 402, 407, 412, 1144, 1151, - 0, 1142, 1147, 1141, 1145, 1143, 1147, 1154, 0, 1186, - 1144, 1143, 1146, 1140, 1144, 1144, 0, 1134, 1126, 0, - 1139, 1143, 1132, 1153, 1124, 1128, 1122, 1129, 1123, 0, - 1132, 1145, 0, 1115, 1128, 1119, 1118, 1117, 1110, 1109, - 1126, 1125, 0, 0, 1110, 1140, 1109, 1116, 1104, 1111, - 1100, 0, 1098, 0, 1113, 1136, 1110, 0, 1109, 1096, - 0, 1093, 1111, 1097, 1096, 1094, 1087, 1087, 1104, 1124, - 0, 0, 1092, 1083, 1108, 1083, 1081, 1081, 1078, 1085, - - 1080, 0, 1113, 1127, 1077, 1074, 341, 1076, 1072, 1112, - 1076, 342, 1072, 1067, 1083, 1066, 1070, 1067, 1071, 1074, - 1069, 1058, 1059, 1056, 322, 0, 1062, 1072, 1055, 1058, - 1067, 1052, 1051, 1048, 1062, 1061, 1059, 1055, 1061, 1041, - 1059, 1040, 1053, 0, 0, 1052, 1037, 1038, 327, 1041, - 0, 382, 1044, 1047, 1034, 1045, 1029, 1035, 1044, 1045, - 1040, 1056, 0, 0, 1056, 1066, 1031, 1046, 1015, 1020, - 1026, 1018, 1029, 1014, 1016, 1025, 1019, 1025, 0, 0, - 0, 1018, 0, 1023, 1016, 0, 418, 429, 0, 1006, - 1037, 1019, 1025, 1018, 1003, 1007, 1006, 0, 1005, 0, - - 1000, 0, 1015, 1006, 1013, 1002, 1007, 1008, 1005, 1008, - 1003, 993, 1011, 992, 984, 994, 987, 996, 987, 995, - 993, 992, 991, 990, 982, 981, 336, 986, 974, 0, - 0, 986, 971, 984, 0, 964, 967, 974, 0, 975, - 401, 964, 961, 964, 968, 962, 967, 954, 962, 0, - 984, 956, 0, 955, 964, 953, 969, 952, 0, 967, - 989, 965, 956, 0, 940, 952, 948, 942, 946, 955, - 0, 956, 0, 952, 952, 952, 0, 941, 0, 959, - 946, 934, 941, 947, 935, 929, 941, 944, 931, 925, - 937, 0, 0, 954, 939, 936, 926, 920, 919, 954, - - 0, 926, 928, 927, 0, 912, 911, 915, 913, 914, - 913, 920, 155, 922, 916, 903, 918, 901, 905, 913, - 898, 922, 910, 0, 0, 926, 315, 904, 907, 933, - 0, 905, 0, 0, 902, 0, 889, 902, 0, 897, - 0, 0, 0, 937, 899, 0, 890, 889, 884, 889, - 882, 879, 0, 885, 883, 884, 893, 888, 879, 878, - 871, 894, 869, 882, 413, 869, 0, 0, 880, 879, - 395, 874, 0, 0, 873, 0, 876, 871, 0, 878, - 864, 417, 901, 867, 0, 872, 872, 864, 852, 866, - 863, 879, 863, 0, 0, 862, 863, 851, 861, 37, - - 61, 81, 0, 143, 0, 199, 226, 263, 427, 291, - 319, 342, 0, 341, 0, 348, 363, 418, 360, 397, - 420, 391, 0, 406, 0, 411, 400, 395, 413, 397, - 408, 401, 414, 0, 0, 415, 0, 413, 0, 419, - 0, 418, 424, 415, 0, 433, 0, 425, 414, 428, - 412, 415, 421, 433, 432, 446, 438, 427, 0, 440, - 0, 0, 437, 425, 425, 0, 0, 467, 438, 423, - 456, 0, 445, 447, 450, 440, 454, 0, 453, 457, - 450, 446, 485, 448, 452, 447, 449, 468, 476, 0, - 0, 453, 463, 470, 473, 0, 457, 457, 464, 493, - - 490, 485, 462, 477, 478, 471, 480, 483, 463, 501, - 486, 471, 486, 480, 488, 476, 485, 491, 483, 478, - 480, 489, 498, 482, 486, 501, 494, 498, 531, 0, - 507, 496, 499, 490, 507, 508, 0, 496, 508, 502, - 512, 509, 506, 507, 505, 0, 520, 0, 515, 506, - 525, 513, 0, 504, 524, 525, 514, 522, 515, 523, - 516, 524, 519, 534, 522, 550, 534, 535, 536, 529, - 534, 543, 536, 573, 0, 537, 535, 0, 548, 547, - 544, 0, 537, 543, 543, 550, 0, 547, 549, 545, - 544, 549, 0, 561, 0, 553, 548, 559, 0, 579, - - 580, 593, 548, 569, 557, 568, 0, 556, 0, 601, - 559, 0, 0, 598, 0, 575, 0, 0, 564, 579, - 566, 0, 565, 572, 577, 0, 0, 582, 584, 575, - 571, 586, 587, 588, 576, 607, 577, 592, 581, 582, - 581, 594, 590, 0, 598, 581, 596, 603, 618, 0, - 597, 598, 601, 602, 603, 599, 613, 606, 611, 639, - 613, 618, 0, 630, 615, 621, 604, 621, 616, 612, - 615, 619, 0, 605, 625, 626, 619, 619, 617, 617, - 634, 628, 633, 638, 0, 0, 622, 620, 649, 650, - 661, 0, 651, 0, 649, 628, 653, 0, 640, 666, - - 642, 633, 644, 645, 0, 652, 639, 653, 669, 654, - 0, 0, 0, 652, 656, 675, 659, 640, 0, 656, - 0, 685, 0, 0, 646, 663, 668, 0, 0, 668, - 667, 658, 656, 670, 656, 0, 662, 0, 658, 663, - 673, 673, 676, 664, 670, 662, 0, 668, 0, 0, - 669, 670, 678, 685, 672, 687, 680, 690, 692, 0, - 691, 697, 698, 699, 681, 700, 701, 719, 693, 692, - 687, 0, 694, 694, 0, 704, 713, 706, 695, 0, - 695, 713, 0, 0, 701, 707, 712, 0, 706, 699, - 0, 707, 697, 727, 718, 711, 717, 707, 722, 716, - - 712, 721, 718, 0, 713, 0, 0, 719, 732, 735, - 720, 731, 0, 734, 749, 744, 745, 746, 727, 734, - 745, 758, 744, 0, 742, 744, 739, 0, 748, 732, - 754, 748, 733, 745, 748, 0, 755, 742, 744, 0, - 746, 0, 746, 0, 756, 749, 762, 750, 755, 0, - 761, 764, 753, 760, 0, 0, 0, 773, 795, 796, - 797, 0, 758, 768, 791, 0, 769, 0, 0, 765, - 786, 773, 0, 780, 0, 781, 0, 782, 0, 779, - 770, 776, 786, 779, 788, 781, 792, 772, 783, 779, - 780, 807, 808, 809, 798, 799, 805, 0, 787, 803, - - 791, 793, 0, 793, 0, 811, 800, 801, 796, 813, - 0, 0, 828, 801, 0, 811, 826, 827, 828, 0, - 834, 830, 807, 809, 0, 0, 0, 814, 810, 826, - 812, 812, 818, 809, 0, 850, 851, 852, 836, 860, - 0, 820, 821, 0, 836, 0, 833, 860, 0, 854, - 855, 856, 835, 865, 831, 0, 0, 836, 837, 863, - 864, 865, 850, 876, 0, 844, 847, 0, 0, 0, - 0, 871, 0, 855, 881, 844, 0, 0, 1410, 908 + 0, 1344, 104, 111, 125, 46, 123, 1336, 122, 178, + 151, 126, 1341, 56, 1349, 1327, 1411, 1411, 1411, 1411, + 1411, 1411, 1411, 1388, 194, 1411, 1411, 1411, 237, 244, + 209, 1411, 1411, 1411, 1411, 1411, 1411, 0, 63, 1337, + 1349, 1343, 1339, 1332, 1343, 1336, 1343, 1328, 24, 1328, + 134, 92, 1332, 1339, 1322, 214, 1318, 1332, 1319, 1324, + 144, 219, 1333, 111, 1329, 1315, 1328, 134, 1328, 210, + + 1315, 1314, 1310, 1313, 1331, 119, 1306, 1319, 155, 1307, + 1326, 0, 1301, 1305, 1294, 167, 178, 151, 1333, 1313, + 183, 1311, 1320, 1301, 1290, 1294, 1305, 1305, 1291, 1290, + 1282, 0, 199, 95, 1296, 1303, 1290, 232, 150, 1291, + 1312, 1299, 1280, 233, 1285, 1288, 1282, 233, 1278, 1277, + 1276, 172, 0, 0, 1304, 1278, 222, 237, 244, 1289, + 248, 1274, 1279, 1276, 1282, 1268, 1262, 1411, 1411, 302, + 307, 316, 322, 327, 1266, 1268, 1263, 1265, 1270, 1277, + 1272, 261, 1263, 1262, 1263, 1254, 1263, 1268, 1259, 1256, + 0, 1257, 204, 1256, 250, 1263, 1260, 293, 1250, 298, + + 1258, 1245, 1237, 1252, 0, 1258, 1241, 1248, 1247, 1250, + 1249, 1252, 1263, 1262, 1240, 1227, 1239, 1242, 318, 1232, + 1234, 240, 0, 1227, 1225, 1231, 255, 1237, 1247, 1225, + 1234, 0, 1234, 1253, 1255, 325, 1226, 1228, 1227, 1217, + 1216, 1249, 1223, 1208, 1221, 1218, 1219, 310, 1204, 314, + 1217, 1221, 1203, 1205, 1210, 1197, 0, 1211, 1227, 1212, + 1202, 1207, 1210, 1201, 1191, 1195, 1200, 1193, 1204, 1191, + 1199, 1198, 297, 1192, 1186, 1179, 1193, 1196, 1183, 1190, + 0, 1183, 340, 1178, 1170, 1183, 1186, 1175, 1183, 1178, + 1177, 1166, 345, 1178, 1171, 1179, 1201, 1172, 1160, 1159, + + 1174, 1156, 1174, 1154, 1172, 1159, 1166, 1154, 1164, 1155, + 1147, 1159, 1160, 334, 390, 400, 409, 414, 419, 1145, + 1152, 0, 1143, 1148, 1142, 1146, 1144, 1148, 1155, 0, + 1187, 1145, 1144, 1147, 1141, 1145, 1145, 0, 1135, 1127, + 0, 1140, 1144, 1133, 1154, 1125, 1129, 1123, 1130, 1124, + 0, 1133, 1146, 0, 1116, 1129, 1120, 1119, 1118, 1111, + 1110, 1127, 1126, 0, 0, 1111, 1141, 1110, 1117, 1105, + 1112, 1101, 0, 1099, 0, 1114, 1137, 1111, 0, 1110, + 1097, 0, 1094, 1112, 1098, 1097, 1095, 1088, 1088, 1105, + 1125, 0, 0, 1093, 1084, 1109, 1084, 1082, 1082, 1079, + + 1086, 1081, 0, 1114, 1128, 1078, 1075, 316, 1077, 1073, + 1113, 1077, 330, 1073, 1068, 1084, 1067, 1071, 1068, 1072, + 1075, 1070, 1059, 1060, 1057, 325, 0, 1063, 1073, 1056, + 1059, 1068, 1053, 1052, 1049, 1063, 1062, 1060, 1056, 1062, + 1042, 1060, 1041, 1054, 0, 0, 1053, 1038, 1039, 314, + 1042, 0, 389, 1045, 1048, 1035, 1046, 1030, 1036, 1045, + 1046, 1041, 1057, 0, 0, 1057, 1067, 1032, 1047, 1016, + 1021, 1027, 1019, 1030, 1015, 1017, 1026, 1020, 1026, 0, + 0, 0, 1019, 0, 1024, 1017, 0, 425, 436, 0, + 1007, 1038, 1020, 1026, 1019, 1004, 1008, 1007, 0, 1006, + + 0, 1001, 0, 1016, 1007, 1014, 1003, 1008, 1009, 1006, + 1009, 1004, 994, 1012, 993, 985, 995, 988, 997, 988, + 996, 994, 993, 992, 991, 983, 982, 328, 987, 975, + 0, 0, 987, 972, 985, 0, 965, 968, 975, 0, + 976, 362, 965, 962, 965, 969, 963, 968, 955, 963, + 0, 985, 957, 0, 956, 965, 954, 970, 953, 0, + 968, 990, 966, 957, 0, 941, 953, 949, 943, 947, + 956, 0, 957, 0, 953, 953, 953, 0, 942, 0, + 960, 947, 935, 942, 948, 936, 930, 942, 945, 932, + 926, 938, 0, 0, 955, 940, 937, 927, 921, 920, + + 955, 0, 927, 929, 928, 0, 913, 912, 916, 914, + 915, 914, 921, 385, 923, 917, 904, 919, 902, 906, + 914, 899, 923, 911, 0, 0, 927, 324, 905, 908, + 934, 0, 906, 0, 0, 903, 0, 890, 903, 0, + 898, 0, 0, 0, 938, 900, 0, 891, 890, 885, + 890, 883, 880, 0, 886, 884, 885, 894, 889, 880, + 879, 872, 895, 870, 883, 420, 870, 0, 0, 881, + 880, 402, 875, 0, 0, 874, 0, 877, 872, 0, + 879, 865, 434, 902, 868, 0, 873, 873, 865, 853, + 867, 864, 880, 864, 0, 0, 863, 864, 852, 862, + + 37, 61, 92, 0, 140, 0, 165, 198, 215, 432, + 261, 292, 302, 0, 313, 0, 332, 340, 412, 341, + 352, 374, 344, 0, 359, 0, 372, 361, 393, 411, + 396, 408, 402, 415, 0, 0, 416, 0, 415, 0, + 422, 0, 421, 427, 418, 0, 435, 0, 426, 415, + 429, 413, 416, 422, 434, 433, 447, 439, 428, 0, + 441, 0, 0, 438, 426, 426, 0, 0, 468, 439, + 424, 457, 0, 446, 448, 451, 441, 455, 0, 454, + 458, 451, 447, 486, 449, 453, 448, 450, 469, 477, + 0, 0, 454, 464, 471, 474, 0, 458, 458, 465, + + 494, 491, 486, 463, 478, 479, 472, 481, 484, 464, + 502, 487, 472, 487, 481, 489, 477, 486, 492, 484, + 479, 481, 490, 499, 483, 487, 502, 495, 499, 532, + 0, 508, 497, 500, 491, 508, 509, 0, 497, 509, + 503, 513, 510, 507, 508, 506, 0, 521, 0, 516, + 507, 526, 514, 0, 505, 525, 526, 515, 523, 516, + 524, 517, 525, 520, 535, 523, 551, 535, 536, 537, + 530, 535, 544, 537, 574, 0, 538, 536, 0, 549, + 548, 545, 0, 538, 544, 544, 551, 0, 548, 550, + 546, 545, 550, 0, 562, 0, 554, 549, 560, 0, + + 580, 581, 594, 549, 570, 558, 569, 0, 557, 0, + 602, 560, 0, 0, 599, 0, 576, 0, 0, 565, + 580, 567, 0, 566, 573, 578, 0, 0, 583, 585, + 576, 572, 587, 588, 589, 577, 608, 578, 593, 582, + 583, 582, 595, 591, 0, 599, 582, 597, 604, 619, + 0, 598, 599, 602, 603, 604, 600, 614, 607, 612, + 640, 614, 619, 0, 631, 616, 622, 605, 622, 617, + 613, 616, 620, 0, 606, 626, 627, 620, 620, 618, + 618, 635, 629, 634, 639, 0, 0, 623, 621, 650, + 651, 662, 0, 652, 0, 650, 629, 654, 0, 641, + + 667, 643, 634, 645, 646, 0, 653, 640, 654, 670, + 655, 0, 0, 0, 653, 657, 676, 660, 641, 0, + 657, 0, 686, 0, 0, 647, 664, 669, 0, 0, + 669, 668, 659, 657, 671, 657, 0, 663, 0, 659, + 664, 674, 674, 677, 665, 671, 663, 0, 669, 0, + 0, 670, 671, 679, 686, 673, 688, 681, 691, 693, + 0, 692, 698, 699, 700, 682, 701, 702, 720, 694, + 693, 688, 0, 695, 695, 0, 705, 714, 707, 696, + 0, 696, 714, 0, 0, 702, 708, 713, 0, 707, + 700, 0, 708, 698, 728, 719, 712, 718, 708, 723, + + 717, 713, 722, 719, 0, 714, 0, 0, 720, 733, + 736, 721, 732, 0, 735, 750, 745, 746, 747, 728, + 735, 746, 759, 745, 0, 743, 745, 740, 0, 749, + 733, 755, 749, 734, 746, 749, 0, 756, 743, 745, + 0, 747, 0, 747, 0, 757, 750, 763, 751, 756, + 0, 762, 765, 754, 761, 0, 0, 0, 774, 796, + 797, 798, 0, 759, 769, 792, 0, 770, 0, 0, + 766, 787, 774, 0, 781, 0, 782, 0, 783, 0, + 780, 771, 777, 787, 780, 789, 782, 793, 773, 784, + 780, 781, 808, 809, 810, 799, 800, 806, 0, 788, + + 804, 792, 794, 0, 794, 0, 812, 801, 802, 797, + 814, 0, 0, 829, 802, 0, 812, 827, 828, 829, + 0, 835, 831, 808, 810, 0, 0, 0, 815, 811, + 827, 813, 813, 819, 810, 0, 851, 852, 853, 837, + 861, 0, 821, 822, 0, 837, 0, 834, 861, 0, + 855, 856, 857, 836, 866, 832, 0, 0, 837, 838, + 864, 865, 866, 851, 877, 0, 845, 848, 0, 0, + 0, 0, 872, 0, 856, 882, 845, 0, 0, 1411, + 909 } ; -static yyconst flex_int16_t yy_def[1281] = +static yyconst flex_int16_t yy_def[1282] = { 0, - 1279, 1, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1279, 1279, 1279, 1279, 1279, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1279, 1279, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 0, 1279 + 1280, 1, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1280, 1280, 1280, 1280, 1280, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1280, 1280, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 0, + 1280 } ; -static yyconst flex_int16_t yy_nxt[1484] = +static yyconst flex_int16_t yy_nxt[1485] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 17, 18, 19, @@ -875,63 +877,63 @@ static yyconst flex_int16_t yy_nxt[1484] = 31, 31, 31, 31, 31, 31, 31, 31, 31, 45, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 46, 50, 54, 52, 55, 55, 55, 55, - 55, 63, 64, 56, 816, 51, 53, 57, 59, 186, + 55, 63, 64, 56, 817, 51, 53, 57, 59, 186, 60, 60, 60, 60, 60, 187, 58, 66, 67, 69, 70, 71, 78, 72, 61, 127, 91, 165, 73, 128, 92, 166, 74, 79, 75, 76, 77, 82, 93, 80, - 817, 83, 81, 175, 84, 85, 94, 176, 95, 61, + 818, 83, 81, 175, 84, 85, 94, 176, 95, 61, 86, 87, 96, 88, 99, 97, 89, 105, 98, 123, - 90, 108, 100, 111, 101, 102, 109, 103, 119, 238, - 239, 115, 818, 104, 106, 116, 110, 189, 120, 117, - 112, 107, 121, 190, 118, 153, 154, 113, 216, 137, - 129, 122, 124, 138, 130, 217, 125, 131, 132, 234, - 133, 155, 139, 134, 235, 161, 135, 162, 140, 191, - 163, 126, 141, 245, 208, 209, 819, 192, 156, 210, - - 249, 246, 157, 277, 278, 158, 55, 55, 55, 55, - 55, 159, 743, 253, 160, 250, 744, 173, 173, 254, - 170, 174, 174, 174, 174, 174, 247, 142, 221, 143, - 338, 248, 144, 145, 222, 146, 147, 339, 223, 148, - 149, 376, 283, 150, 151, 170, 265, 377, 152, 171, - 171, 171, 171, 171, 59, 284, 60, 60, 60, 60, - 60, 225, 820, 172, 196, 266, 821, 226, 197, 227, - 61, 198, 199, 200, 201, 202, 211, 212, 203, 228, - 294, 295, 213, 214, 267, 345, 268, 288, 172, 272, - 289, 300, 273, 298, 346, 61, 290, 274, 299, 301, - - 302, 306, 326, 371, 372, 275, 307, 276, 174, 174, - 174, 174, 174, 303, 822, 304, 314, 314, 327, 328, - 315, 315, 315, 315, 315, 171, 171, 171, 171, 171, - 317, 317, 404, 348, 318, 318, 318, 318, 318, 316, - 174, 174, 174, 174, 174, 341, 349, 401, 367, 427, - 342, 368, 385, 386, 428, 429, 825, 438, 402, 405, - 439, 387, 452, 582, 316, 453, 388, 756, 440, 389, - 441, 454, 757, 442, 826, 455, 480, 456, 457, 481, - 562, 563, 568, 569, 482, 583, 604, 582, 483, 827, - 484, 485, 605, 458, 486, 315, 315, 315, 315, 315, - - 671, 672, 828, 829, 459, 315, 315, 315, 315, 315, - 487, 487, 830, 833, 488, 488, 488, 488, 488, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 607, - 488, 488, 488, 488, 488, 682, 608, 785, 683, 800, - 609, 488, 488, 488, 488, 488, 791, 801, 786, 823, - 792, 831, 834, 787, 835, 793, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 824, 846, 847, 848, - 849, 850, 851, 832, 852, 831, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 863, 864, 865, 866, 867, - 868, 874, 869, 875, 870, 876, 877, 871, 878, 879, - - 880, 862, 881, 882, 883, 884, 885, 872, 861, 873, - 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, + 90, 108, 100, 111, 101, 102, 109, 103, 119, 192, + 268, 115, 269, 104, 106, 116, 110, 193, 120, 117, + 112, 107, 121, 819, 118, 153, 154, 113, 217, 137, + 129, 122, 124, 138, 130, 218, 125, 131, 132, 235, + 133, 155, 139, 134, 236, 161, 135, 162, 140, 222, + 163, 126, 141, 820, 189, 223, 209, 210, 156, 224, + + 190, 211, 157, 191, 250, 158, 55, 55, 55, 55, + 55, 159, 239, 240, 160, 278, 279, 173, 173, 251, + 170, 174, 174, 174, 174, 174, 246, 142, 821, 143, + 295, 296, 144, 145, 247, 146, 147, 248, 822, 148, + 149, 254, 249, 150, 151, 170, 266, 255, 152, 171, + 171, 171, 171, 171, 59, 339, 60, 60, 60, 60, + 60, 226, 340, 172, 197, 267, 823, 227, 198, 228, + 61, 199, 200, 201, 202, 203, 212, 213, 204, 229, + 284, 273, 214, 215, 274, 327, 299, 289, 172, 275, + 290, 300, 301, 285, 303, 61, 291, 276, 307, 277, + + 302, 328, 329, 308, 372, 373, 377, 304, 342, 305, + 315, 315, 378, 343, 316, 316, 316, 316, 316, 171, + 171, 171, 171, 171, 318, 318, 826, 405, 319, 319, + 319, 319, 319, 317, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 346, 368, 349, 827, 369, 828, + 402, 386, 387, 347, 406, 563, 564, 428, 317, 350, + 388, 403, 429, 430, 439, 389, 583, 440, 390, 453, + 569, 570, 454, 605, 829, 441, 757, 442, 455, 606, + 443, 758, 456, 481, 457, 458, 482, 830, 584, 831, + 583, 483, 672, 673, 834, 484, 683, 485, 486, 684, + + 459, 487, 316, 316, 316, 316, 316, 835, 836, 837, + 838, 460, 316, 316, 316, 316, 316, 488, 488, 839, + 840, 489, 489, 489, 489, 489, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 608, 489, 489, 489, + 489, 489, 744, 609, 786, 832, 745, 610, 489, 489, + 489, 489, 489, 792, 824, 787, 801, 793, 841, 842, + 788, 843, 794, 844, 802, 845, 846, 833, 847, 832, + 848, 825, 849, 850, 851, 852, 853, 854, 855, 856, + 857, 858, 859, 860, 861, 862, 864, 865, 866, 867, + 868, 869, 875, 870, 876, 871, 877, 878, 872, 879, + + 880, 881, 863, 882, 883, 884, 885, 886, 873, 862, + 874, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, - 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 942, 930, 943, 944, 945, - 946, 947, 948, 949, 950, 951, 952, 953, 929, 954, + 926, 927, 928, 929, 930, 932, 933, 934, 935, 936, + 937, 938, 939, 940, 941, 942, 943, 931, 944, 945, + 946, 947, 948, 949, 950, 951, 952, 953, 954, 930, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, - 930, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 965, 931, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, @@ -946,93 +948,93 @@ static yyconst flex_int16_t yy_nxt[1484] = 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, - 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1078, 1102, + 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1079, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, - 1129, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, - 1162, 1163, 1141, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + 1153, 1130, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, + 1162, 1163, 1164, 1142, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, - 1221, 1222, 1223, 1200, 1224, 1225, 1226, 1227, 1228, 1229, + 1221, 1222, 1223, 1224, 1201, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, - 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 68, - 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, - 805, 804, 803, 802, 799, 798, 797, 796, 795, 794, - 790, 789, 788, 784, 783, 782, 781, 780, 779, 778, - 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, - 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, - 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, - 745, 742, 741, 740, 739, 738, 737, 736, 735, 734, - 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, - 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, - - 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, - 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, - 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, - 681, 680, 679, 678, 677, 676, 675, 674, 673, 670, - 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, - 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, - 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, - 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, - 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, - 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, - - 606, 603, 602, 601, 600, 599, 598, 597, 596, 595, - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 581, 580, 579, 578, 577, 576, 575, 574, 573, - 572, 571, 570, 567, 566, 565, 564, 561, 560, 559, - 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, - 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, - 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, - 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, - 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, - 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, - - 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, - 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, - 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, - 451, 450, 449, 448, 447, 446, 445, 444, 443, 437, - 436, 435, 434, 433, 432, 431, 430, 426, 425, 424, - 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, - 413, 412, 411, 410, 409, 408, 407, 406, 403, 400, - 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, - 384, 383, 382, 381, 380, 379, 378, 375, 374, 373, - 370, 369, 366, 365, 364, 363, 362, 361, 360, 359, - - 358, 357, 356, 355, 354, 353, 352, 351, 350, 347, - 344, 343, 340, 337, 336, 335, 334, 333, 332, 331, - 330, 329, 325, 324, 323, 322, 321, 320, 319, 313, - 312, 311, 310, 309, 308, 305, 297, 296, 293, 292, - 291, 287, 286, 285, 282, 281, 280, 279, 271, 270, - 269, 264, 263, 262, 261, 260, 259, 258, 257, 256, - 255, 252, 251, 244, 243, 242, 241, 240, 237, 236, - 233, 232, 231, 230, 229, 224, 220, 219, 218, 215, - 207, 206, 205, 204, 195, 194, 193, 188, 185, 184, - 183, 182, 181, 180, 179, 178, 177, 169, 168, 167, - - 164, 136, 114, 65, 62, 49, 48, 47, 1279, 3, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279 + 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, + 68, 816, 815, 814, 813, 812, 811, 810, 809, 808, + 807, 806, 805, 804, 803, 800, 799, 798, 797, 796, + 795, 791, 790, 789, 785, 784, 783, 782, 781, 780, + 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, + 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, + 759, 756, 755, 754, 753, 752, 751, 750, 749, 748, + 747, 746, 743, 742, 741, 740, 739, 738, 737, 736, + 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, + 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, + + 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, + 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, + 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, + 685, 682, 681, 680, 679, 678, 677, 676, 675, 674, + 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, + 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, + 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, + 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, + 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, + + 611, 607, 604, 603, 602, 601, 600, 599, 598, 597, + 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, + 586, 585, 582, 581, 580, 579, 578, 577, 576, 575, + 574, 573, 572, 571, 568, 567, 566, 565, 562, 561, + 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, + 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, + 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, + 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, + 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, + 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, + + 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, + 490, 480, 479, 478, 477, 476, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, + 461, 452, 451, 450, 449, 448, 447, 446, 445, 444, + 438, 437, 436, 435, 434, 433, 432, 431, 427, 426, + 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, + 415, 414, 413, 412, 411, 410, 409, 408, 407, 404, + 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, + 391, 385, 384, 383, 382, 381, 380, 379, 376, 375, + 374, 371, 370, 367, 366, 365, 364, 363, 362, 361, + + 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, + 348, 345, 344, 341, 338, 337, 336, 335, 334, 333, + 332, 331, 330, 326, 325, 324, 323, 322, 321, 320, + 314, 313, 312, 311, 310, 309, 306, 298, 297, 294, + 293, 292, 288, 287, 286, 283, 282, 281, 280, 272, + 271, 270, 265, 264, 263, 262, 261, 260, 259, 258, + 257, 256, 253, 252, 245, 244, 243, 242, 241, 238, + 237, 234, 233, 232, 231, 230, 225, 221, 220, 219, + 216, 208, 207, 206, 205, 196, 195, 194, 188, 185, + 184, 183, 182, 181, 180, 179, 178, 177, 169, 168, + + 167, 164, 136, 114, 65, 62, 49, 48, 47, 1280, + 3, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280 } ; -static yyconst flex_int16_t yy_chk[1484] = +static yyconst flex_int16_t yy_chk[1485] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1042,161 +1044,161 @@ static yyconst flex_int16_t yy_chk[1484] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 14, 13, 14, 14, 14, 14, - 14, 19, 19, 15, 700, 12, 13, 15, 16, 79, + 14, 19, 19, 15, 701, 12, 13, 15, 16, 79, 16, 16, 16, 16, 16, 79, 15, 21, 21, 22, 22, 22, 23, 22, 16, 36, 25, 44, 22, 36, 25, 44, 22, 23, 22, 22, 22, 24, 25, 23, - 701, 24, 23, 69, 24, 24, 26, 69, 26, 16, + 702, 24, 23, 69, 24, 24, 26, 69, 26, 16, 24, 24, 26, 24, 27, 26, 24, 28, 26, 35, - 24, 29, 27, 30, 27, 27, 29, 27, 34, 109, - 109, 33, 702, 27, 28, 33, 29, 81, 34, 33, - 30, 28, 34, 81, 33, 41, 41, 30, 94, 39, + 24, 29, 27, 30, 27, 27, 29, 27, 34, 82, + 134, 33, 134, 27, 28, 33, 29, 82, 34, 33, + 30, 28, 34, 703, 33, 41, 41, 30, 94, 39, 37, 34, 35, 39, 37, 94, 35, 37, 37, 106, - 37, 41, 39, 37, 106, 42, 37, 42, 39, 82, - 42, 35, 40, 116, 91, 91, 704, 82, 41, 91, - - 118, 116, 41, 139, 139, 41, 55, 55, 55, 55, - 55, 41, 613, 121, 41, 118, 613, 61, 61, 121, - 55, 61, 61, 61, 61, 61, 117, 40, 98, 40, - 192, 117, 40, 40, 98, 40, 40, 192, 98, 40, - 40, 226, 144, 40, 40, 55, 133, 226, 40, 59, - 59, 59, 59, 59, 60, 144, 60, 60, 60, 60, - 60, 100, 706, 59, 86, 133, 707, 100, 86, 100, + 37, 41, 39, 37, 106, 42, 37, 42, 39, 98, + 42, 35, 40, 705, 81, 98, 91, 91, 41, 98, + + 81, 91, 41, 81, 118, 41, 55, 55, 55, 55, + 55, 41, 109, 109, 41, 139, 139, 61, 61, 118, + 55, 61, 61, 61, 61, 61, 116, 40, 707, 40, + 152, 152, 40, 40, 116, 40, 40, 117, 708, 40, + 40, 121, 117, 40, 40, 55, 133, 121, 40, 59, + 59, 59, 59, 59, 60, 193, 60, 60, 60, 60, + 60, 100, 193, 59, 86, 133, 709, 100, 86, 100, 60, 86, 86, 86, 86, 86, 92, 92, 86, 100, - 152, 152, 92, 92, 134, 197, 134, 148, 59, 138, - 148, 158, 138, 157, 197, 60, 148, 138, 157, 158, - - 159, 161, 182, 221, 221, 138, 161, 138, 173, 173, - 173, 173, 173, 159, 708, 159, 170, 170, 182, 182, - 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, - 172, 172, 249, 199, 172, 172, 172, 172, 172, 171, - 174, 174, 174, 174, 174, 194, 199, 247, 218, 272, - 194, 218, 235, 235, 272, 272, 710, 282, 247, 249, - 282, 235, 292, 425, 171, 292, 235, 627, 282, 235, - 282, 292, 627, 282, 711, 292, 313, 292, 292, 313, - 407, 407, 412, 412, 313, 425, 449, 425, 313, 712, - 313, 313, 449, 292, 313, 314, 314, 314, 314, 314, - - 527, 527, 714, 716, 292, 315, 315, 315, 315, 315, - 316, 316, 717, 719, 316, 316, 316, 316, 316, 317, - 317, 317, 317, 317, 318, 318, 318, 318, 318, 452, - 487, 487, 487, 487, 487, 541, 452, 665, 541, 682, - 452, 488, 488, 488, 488, 488, 671, 682, 665, 709, - 671, 718, 720, 665, 721, 671, 722, 724, 726, 727, - 728, 729, 730, 731, 732, 733, 709, 736, 738, 740, - 742, 743, 744, 718, 746, 718, 748, 749, 750, 751, - 752, 753, 754, 755, 756, 757, 758, 760, 763, 764, - 765, 769, 768, 770, 768, 771, 773, 768, 774, 775, - - 776, 756, 777, 779, 780, 781, 782, 768, 756, 768, - 783, 784, 785, 786, 787, 788, 789, 792, 793, 794, - 795, 797, 798, 799, 800, 801, 802, 803, 804, 805, + 144, 138, 92, 92, 138, 182, 157, 148, 59, 138, + 148, 157, 158, 144, 159, 60, 148, 138, 161, 138, + + 158, 182, 182, 161, 222, 222, 227, 159, 195, 159, + 170, 170, 227, 195, 170, 170, 170, 170, 170, 171, + 171, 171, 171, 171, 172, 172, 711, 250, 172, 172, + 172, 172, 172, 171, 173, 173, 173, 173, 173, 174, + 174, 174, 174, 174, 198, 219, 200, 712, 219, 713, + 248, 236, 236, 198, 250, 408, 408, 273, 171, 200, + 236, 248, 273, 273, 283, 236, 426, 283, 236, 293, + 413, 413, 293, 450, 715, 283, 628, 283, 293, 450, + 283, 628, 293, 314, 293, 293, 314, 717, 426, 718, + 426, 314, 528, 528, 720, 314, 542, 314, 314, 542, + + 293, 314, 315, 315, 315, 315, 315, 721, 722, 723, + 725, 293, 316, 316, 316, 316, 316, 317, 317, 727, + 728, 317, 317, 317, 317, 317, 318, 318, 318, 318, + 318, 319, 319, 319, 319, 319, 453, 488, 488, 488, + 488, 488, 614, 453, 666, 719, 614, 453, 489, 489, + 489, 489, 489, 672, 710, 666, 683, 672, 729, 730, + 666, 731, 672, 732, 683, 733, 734, 719, 737, 719, + 739, 710, 741, 743, 744, 745, 747, 749, 750, 751, + 752, 753, 754, 755, 756, 757, 758, 759, 761, 764, + 765, 766, 770, 769, 771, 769, 772, 774, 769, 775, + + 776, 777, 757, 778, 780, 781, 782, 783, 769, 757, + 769, 784, 785, 786, 787, 788, 789, 790, 793, 794, + 795, 796, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 828, 829, 831, 832, 833, 834, 835, 836, - 838, 839, 840, 841, 842, 843, 829, 844, 845, 847, - 849, 850, 851, 852, 854, 855, 856, 857, 829, 858, + 826, 827, 828, 829, 830, 832, 833, 834, 835, 836, + 837, 839, 840, 841, 842, 843, 844, 830, 845, 846, + 848, 850, 851, 852, 853, 855, 856, 857, 858, 830, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, - 829, 869, 870, 871, 872, 873, 874, 876, 877, 879, - - 880, 881, 883, 884, 885, 886, 888, 889, 890, 891, - 892, 894, 896, 897, 898, 900, 901, 902, 903, 904, - 905, 906, 908, 910, 911, 914, 916, 919, 920, 921, - 923, 924, 925, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 941, 942, 943, 945, - 946, 947, 948, 949, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 964, 965, 966, 967, - 968, 969, 970, 971, 972, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 987, 988, 989, 990, - 991, 993, 995, 996, 997, 999, 1000, 1001, 1002, 1003, - - 1004, 1006, 1007, 1008, 1009, 1010, 1014, 1015, 1016, 1017, - 1018, 1020, 1022, 1025, 1026, 1027, 1030, 1031, 1032, 1033, - 1034, 1035, 1037, 1039, 1040, 1041, 1042, 1043, 1009, 1044, - 1045, 1046, 1048, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, - 1069, 1070, 1071, 1073, 1074, 1076, 1077, 1078, 1079, 1081, - 1082, 1085, 1086, 1087, 1089, 1090, 1092, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1105, 1108, - 1077, 1109, 1110, 1111, 1112, 1114, 1115, 1116, 1117, 1118, - 1119, 1120, 1094, 1121, 1122, 1123, 1125, 1126, 1127, 1129, - - 1130, 1131, 1132, 1133, 1134, 1135, 1137, 1138, 1139, 1141, - 1143, 1145, 1146, 1147, 1148, 1149, 1151, 1152, 1153, 1154, - 1158, 1159, 1160, 1161, 1163, 1164, 1165, 1167, 1170, 1171, - 1172, 1174, 1176, 1178, 1180, 1181, 1182, 1183, 1184, 1185, + 869, 830, 870, 871, 872, 873, 874, 875, 877, 878, + + 880, 881, 882, 884, 885, 886, 887, 889, 890, 891, + 892, 893, 895, 897, 898, 899, 901, 902, 903, 904, + 905, 906, 907, 909, 911, 912, 915, 917, 920, 921, + 922, 924, 925, 926, 929, 930, 931, 932, 933, 934, + 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 946, 947, 948, 949, 950, 952, 953, 954, 955, 956, + 957, 958, 959, 960, 961, 962, 963, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 975, 976, 977, 978, + 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, + 991, 992, 994, 996, 997, 998, 1000, 1001, 1002, 1003, + + 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1015, 1016, 1017, + 1018, 1019, 1021, 1023, 1026, 1027, 1028, 1031, 1032, 1033, + 1034, 1035, 1036, 1038, 1040, 1041, 1042, 1043, 1044, 1010, + 1045, 1046, 1047, 1049, 1052, 1053, 1054, 1055, 1056, 1057, + 1058, 1059, 1060, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1074, 1075, 1077, 1078, 1079, 1080, + 1082, 1083, 1086, 1087, 1088, 1090, 1091, 1093, 1094, 1095, + 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1106, + 1109, 1078, 1110, 1111, 1112, 1113, 1115, 1116, 1117, 1118, + 1119, 1120, 1121, 1095, 1122, 1123, 1124, 1126, 1127, 1128, + + 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139, 1140, + 1142, 1144, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, + 1155, 1159, 1160, 1161, 1162, 1164, 1165, 1166, 1168, 1171, + 1172, 1173, 1175, 1177, 1179, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1199, 1171, 1200, 1201, 1202, 1204, 1206, 1207, - 1208, 1209, 1210, 1213, 1214, 1216, 1217, 1218, 1219, 1221, - 1222, 1223, 1224, 1228, 1229, 1230, 1231, 1232, 1233, 1234, - 1236, 1237, 1238, 1239, 1240, 1242, 1243, 1245, 1247, 1248, - 1250, 1251, 1252, 1253, 1254, 1255, 1258, 1259, 1260, 1261, - - 1262, 1263, 1264, 1266, 1267, 1272, 1274, 1275, 1276, 1280, - 699, 698, 697, 696, 693, 692, 691, 690, 689, 688, - 687, 686, 684, 683, 681, 680, 678, 677, 675, 672, - 670, 669, 666, 664, 663, 662, 661, 660, 659, 658, - 657, 656, 655, 654, 652, 651, 650, 649, 648, 647, - 645, 644, 640, 638, 637, 635, 632, 630, 629, 628, - 626, 623, 622, 621, 620, 619, 618, 617, 616, 615, - 614, 612, 611, 610, 609, 608, 607, 606, 604, 603, - 602, 600, 599, 598, 597, 596, 595, 594, 591, 590, - 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, - - 578, 576, 575, 574, 572, 570, 569, 568, 567, 566, - 565, 563, 562, 561, 560, 558, 557, 556, 555, 554, - 552, 551, 549, 548, 547, 546, 545, 544, 543, 542, - 540, 538, 537, 536, 534, 533, 532, 529, 528, 526, - 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, - 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, - 505, 504, 503, 501, 499, 497, 496, 495, 494, 493, - 492, 491, 490, 485, 484, 482, 478, 477, 476, 475, - 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, - 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, - - 450, 448, 447, 446, 443, 442, 441, 440, 439, 438, - 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, - 427, 424, 423, 422, 421, 420, 419, 418, 417, 416, - 415, 414, 413, 411, 410, 409, 408, 406, 405, 404, - 403, 401, 400, 399, 398, 397, 396, 395, 394, 393, - 390, 389, 388, 387, 386, 385, 384, 383, 382, 380, - 379, 377, 376, 375, 373, 371, 370, 369, 368, 367, - 366, 365, 362, 361, 360, 359, 358, 357, 356, 355, - 354, 352, 351, 349, 348, 347, 346, 345, 344, 343, - 342, 341, 339, 338, 336, 335, 334, 333, 332, 331, - - 330, 328, 327, 326, 325, 324, 323, 322, 320, 319, - 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, - 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, - 291, 290, 289, 288, 287, 286, 285, 284, 283, 281, - 279, 278, 277, 276, 275, 274, 273, 271, 270, 269, - 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, - 258, 257, 255, 254, 253, 252, 251, 250, 248, 246, - 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, - 234, 233, 232, 230, 229, 228, 227, 225, 224, 223, - 220, 219, 217, 216, 215, 214, 213, 212, 211, 210, - - 209, 208, 207, 206, 205, 203, 202, 201, 200, 198, - 196, 195, 193, 191, 190, 189, 188, 187, 186, 185, - 184, 183, 181, 180, 179, 178, 177, 176, 175, 167, - 166, 165, 164, 163, 162, 160, 156, 155, 151, 150, - 149, 147, 146, 145, 143, 142, 141, 140, 137, 136, - 135, 131, 130, 129, 128, 127, 126, 125, 124, 123, - 122, 120, 119, 115, 114, 113, 111, 110, 108, 107, - 105, 104, 103, 102, 101, 99, 97, 96, 95, 93, - 90, 89, 88, 87, 85, 84, 83, 80, 78, 77, - 76, 75, 74, 73, 72, 71, 70, 54, 46, 45, - - 43, 38, 32, 20, 17, 11, 9, 7, 3, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279 + 1196, 1197, 1198, 1200, 1172, 1201, 1202, 1203, 1205, 1207, + 1208, 1209, 1210, 1211, 1214, 1215, 1217, 1218, 1219, 1220, + 1222, 1223, 1224, 1225, 1229, 1230, 1231, 1232, 1233, 1234, + 1235, 1237, 1238, 1239, 1240, 1241, 1243, 1244, 1246, 1248, + 1249, 1251, 1252, 1253, 1254, 1255, 1256, 1259, 1260, 1261, + + 1262, 1263, 1264, 1265, 1267, 1268, 1273, 1275, 1276, 1277, + 1281, 700, 699, 698, 697, 694, 693, 692, 691, 690, + 689, 688, 687, 685, 684, 682, 681, 679, 678, 676, + 673, 671, 670, 667, 665, 664, 663, 662, 661, 660, + 659, 658, 657, 656, 655, 653, 652, 651, 650, 649, + 648, 646, 645, 641, 639, 638, 636, 633, 631, 630, + 629, 627, 624, 623, 622, 621, 620, 619, 618, 617, + 616, 615, 613, 612, 611, 610, 609, 608, 607, 605, + 604, 603, 601, 600, 599, 598, 597, 596, 595, 592, + 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, + + 581, 579, 577, 576, 575, 573, 571, 570, 569, 568, + 567, 566, 564, 563, 562, 561, 559, 558, 557, 556, + 555, 553, 552, 550, 549, 548, 547, 546, 545, 544, + 543, 541, 539, 538, 537, 535, 534, 533, 530, 529, + 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, + 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, + 507, 506, 505, 504, 502, 500, 498, 497, 496, 495, + 494, 493, 492, 491, 486, 485, 483, 479, 478, 477, + 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, + 466, 463, 462, 461, 460, 459, 458, 457, 456, 455, + + 454, 451, 449, 448, 447, 444, 443, 442, 441, 440, + 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, + 429, 428, 425, 424, 423, 422, 421, 420, 419, 418, + 417, 416, 415, 414, 412, 411, 410, 409, 407, 406, + 405, 404, 402, 401, 400, 399, 398, 397, 396, 395, + 394, 391, 390, 389, 388, 387, 386, 385, 384, 383, + 381, 380, 378, 377, 376, 374, 372, 371, 370, 369, + 368, 367, 366, 363, 362, 361, 360, 359, 358, 357, + 356, 355, 353, 352, 350, 349, 348, 347, 346, 345, + 344, 343, 342, 340, 339, 337, 336, 335, 334, 333, + + 332, 331, 329, 328, 327, 326, 325, 324, 323, 321, + 320, 313, 312, 311, 310, 309, 308, 307, 306, 305, + 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, + 294, 292, 291, 290, 289, 288, 287, 286, 285, 284, + 282, 280, 279, 278, 277, 276, 275, 274, 272, 271, + 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, + 260, 259, 258, 256, 255, 254, 253, 252, 251, 249, + 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, + 237, 235, 234, 233, 231, 230, 229, 228, 226, 225, + 224, 221, 220, 218, 217, 216, 215, 214, 213, 212, + + 211, 210, 209, 208, 207, 206, 204, 203, 202, 201, + 199, 197, 196, 194, 192, 190, 189, 188, 187, 186, + 185, 184, 183, 181, 180, 179, 178, 177, 176, 175, + 167, 166, 165, 164, 163, 162, 160, 156, 155, 151, + 150, 149, 147, 146, 145, 143, 142, 141, 140, 137, + 136, 135, 131, 130, 129, 128, 127, 126, 125, 124, + 123, 122, 120, 119, 115, 114, 113, 111, 110, 108, + 107, 105, 104, 103, 102, 101, 99, 97, 96, 95, + 93, 90, 89, 88, 87, 85, 84, 83, 80, 78, + 77, 76, 75, 74, 73, 72, 71, 70, 54, 46, + + 45, 43, 38, 32, 20, 17, 11, 9, 7, 3, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1280, 1280, 1280, 1280 } ; static yy_state_type yy_last_accepting_state; @@ -1283,7 +1285,7 @@ void skipline(void); // versions of flex/bison #define register -#line 1287 "Gmsh.yy.cpp" +#line 1289 "Gmsh.yy.cpp" #define INITIAL 0 @@ -1468,7 +1470,7 @@ YY_DECL #line 79 "Gmsh.l" -#line 1472 "Gmsh.yy.cpp" +#line 1474 "Gmsh.yy.cpp" if ( !(yy_init) ) { @@ -1521,13 +1523,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1280 ) + if ( yy_current_state >= 1281 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1410 ); + while ( yy_base[yy_current_state] != 1411 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1815,152 +1817,152 @@ return tBezier; case 53: YY_RULE_SETUP #line 135 "Gmsh.l" -return tBlock; +return tBox; YY_BREAK case 54: YY_RULE_SETUP #line 136 "Gmsh.l" -return tBooleanDifference; +return tBox; YY_BREAK case 55: YY_RULE_SETUP #line 137 "Gmsh.l" -return tBooleanFragments; +return tBooleanDifference; YY_BREAK case 56: YY_RULE_SETUP #line 138 "Gmsh.l" -return tBooleanIntersection; +return tBooleanFragments; YY_BREAK case 57: YY_RULE_SETUP #line 139 "Gmsh.l" -return tBooleanSection; +return tBooleanIntersection; YY_BREAK case 58: YY_RULE_SETUP #line 140 "Gmsh.l" -return tBooleanUnion; +return tBooleanSection; YY_BREAK case 59: YY_RULE_SETUP #line 141 "Gmsh.l" -return tBoundingBox; +return tBooleanUnion; YY_BREAK case 60: YY_RULE_SETUP -#line 143 "Gmsh.l" -return tCall; +#line 142 "Gmsh.l" +return tBoundingBox; YY_BREAK case 61: YY_RULE_SETUP #line 144 "Gmsh.l" -return tCatenary; +return tCall; YY_BREAK case 62: YY_RULE_SETUP #line 145 "Gmsh.l" -return tSpline; +return tCatenary; YY_BREAK case 63: YY_RULE_SETUP #line 146 "Gmsh.l" -return tCeil; +return tSpline; YY_BREAK case 64: YY_RULE_SETUP #line 147 "Gmsh.l" -return tChamfer; +return tCeil; YY_BREAK case 65: YY_RULE_SETUP #line 148 "Gmsh.l" -return tCharacteristic; +return tChamfer; YY_BREAK case 66: YY_RULE_SETUP #line 149 "Gmsh.l" -return tCircle; +return tCharacteristic; YY_BREAK case 67: YY_RULE_SETUP #line 150 "Gmsh.l" -return tCodeName; +return tCircle; YY_BREAK case 68: YY_RULE_SETUP #line 151 "Gmsh.l" -return tCoherence; +return tCodeName; YY_BREAK case 69: YY_RULE_SETUP #line 152 "Gmsh.l" -return tCohomology; +return tCoherence; YY_BREAK case 70: YY_RULE_SETUP #line 153 "Gmsh.l" -return tColor; +return tCohomology; YY_BREAK case 71: YY_RULE_SETUP #line 154 "Gmsh.l" -return tColorTable; +return tColor; YY_BREAK case 72: YY_RULE_SETUP #line 155 "Gmsh.l" -return tCombine; +return tColorTable; YY_BREAK case 73: YY_RULE_SETUP #line 156 "Gmsh.l" -return tCompound; +return tCombine; YY_BREAK case 74: YY_RULE_SETUP #line 157 "Gmsh.l" -return tCone; +return tCompound; YY_BREAK case 75: YY_RULE_SETUP #line 158 "Gmsh.l" -return tCoordinates; +return tCone; YY_BREAK case 76: YY_RULE_SETUP #line 159 "Gmsh.l" -return tCopyOptions; +return tCoordinates; YY_BREAK case 77: YY_RULE_SETUP #line 160 "Gmsh.l" -return tCos; +return tCopyOptions; YY_BREAK case 78: YY_RULE_SETUP #line 161 "Gmsh.l" -return tCosh; +return tCos; YY_BREAK case 79: YY_RULE_SETUP #line 162 "Gmsh.l" -return tCpu; +return tCosh; YY_BREAK case 80: YY_RULE_SETUP #line 163 "Gmsh.l" -return tCreateTopology; +return tCpu; YY_BREAK case 81: YY_RULE_SETUP #line 164 "Gmsh.l" -return tCreateTopologyNoHoles; +return tCreateTopology; YY_BREAK case 82: YY_RULE_SETUP #line 165 "Gmsh.l" -return tCurrentDirectory; +return tCreateTopologyNoHoles; YY_BREAK case 83: YY_RULE_SETUP @@ -1970,62 +1972,62 @@ return tCurrentDirectory; case 84: YY_RULE_SETUP #line 167 "Gmsh.l" -return tCylinder; +return tCurrentDirectory; YY_BREAK case 85: YY_RULE_SETUP -#line 169 "Gmsh.l" -return tDefineConstant; +#line 168 "Gmsh.l" +return tCylinder; YY_BREAK case 86: YY_RULE_SETUP #line 170 "Gmsh.l" -return tDefineNumber; +return tDefineConstant; YY_BREAK case 87: YY_RULE_SETUP #line 171 "Gmsh.l" -return tDefineString; +return tDefineNumber; YY_BREAK case 88: YY_RULE_SETUP #line 172 "Gmsh.l" -return tDegenerated; +return tDefineString; YY_BREAK case 89: YY_RULE_SETUP #line 173 "Gmsh.l" -return tDelete; +return tDegenerated; YY_BREAK case 90: YY_RULE_SETUP #line 174 "Gmsh.l" -return tDilate; +return tDelete; YY_BREAK case 91: YY_RULE_SETUP #line 175 "Gmsh.l" -return tDimNameSpace; +return tDilate; YY_BREAK case 92: YY_RULE_SETUP #line 176 "Gmsh.l" -return tDirName; +return tDimNameSpace; YY_BREAK case 93: YY_RULE_SETUP #line 177 "Gmsh.l" -return tDisk; +return tDirName; YY_BREAK case 94: YY_RULE_SETUP #line 178 "Gmsh.l" -return tDraw; +return tDisk; YY_BREAK case 95: YY_RULE_SETUP -#line 180 "Gmsh.l" -return tEllipse; +#line 179 "Gmsh.l" +return tDraw; YY_BREAK case 96: YY_RULE_SETUP @@ -2035,770 +2037,775 @@ return tEllipse; case 97: YY_RULE_SETUP #line 182 "Gmsh.l" -return tEllipsoid; +return tEllipse; YY_BREAK case 98: YY_RULE_SETUP #line 183 "Gmsh.l" -return tElliptic; +return tEllipsoid; YY_BREAK case 99: YY_RULE_SETUP #line 184 "Gmsh.l" -return tElse; +return tElliptic; YY_BREAK case 100: YY_RULE_SETUP #line 185 "Gmsh.l" -return tElseIf; +return tElse; YY_BREAK case 101: YY_RULE_SETUP #line 186 "Gmsh.l" -return tEndFor; +return tElseIf; YY_BREAK case 102: YY_RULE_SETUP #line 187 "Gmsh.l" -return tEndIf; +return tEndFor; YY_BREAK case 103: YY_RULE_SETUP #line 188 "Gmsh.l" -return tError; +return tEndIf; YY_BREAK case 104: YY_RULE_SETUP #line 189 "Gmsh.l" -return tEuclidian; +return tError; YY_BREAK case 105: YY_RULE_SETUP #line 190 "Gmsh.l" -return tExists; +return tEuclidian; YY_BREAK case 106: YY_RULE_SETUP #line 191 "Gmsh.l" -return tExit; +return tExists; YY_BREAK case 107: YY_RULE_SETUP #line 192 "Gmsh.l" -return tExp; +return tExit; YY_BREAK case 108: YY_RULE_SETUP #line 193 "Gmsh.l" -return tExtrude; +return tExp; YY_BREAK case 109: YY_RULE_SETUP -#line 195 "Gmsh.l" -return tFabs; +#line 194 "Gmsh.l" +return tExtrude; YY_BREAK case 110: YY_RULE_SETUP #line 196 "Gmsh.l" -return tField; +return tFabs; YY_BREAK case 111: YY_RULE_SETUP #line 197 "Gmsh.l" -return tFileExists; +return tField; YY_BREAK case 112: YY_RULE_SETUP #line 198 "Gmsh.l" -return tFillet; +return tFileExists; YY_BREAK case 113: YY_RULE_SETUP #line 199 "Gmsh.l" -return tFind; +return tFillet; YY_BREAK case 114: YY_RULE_SETUP #line 200 "Gmsh.l" -return tFixRelativePath; +return tFind; YY_BREAK case 115: YY_RULE_SETUP #line 201 "Gmsh.l" -return tFloor; +return tFixRelativePath; YY_BREAK case 116: YY_RULE_SETUP #line 202 "Gmsh.l" -return tFmod; +return tFloor; YY_BREAK case 117: YY_RULE_SETUP #line 203 "Gmsh.l" -return tFor; +return tFmod; YY_BREAK case 118: YY_RULE_SETUP #line 204 "Gmsh.l" -return tMacro; +return tFor; YY_BREAK case 119: YY_RULE_SETUP -#line 206 "Gmsh.l" -return tGMSH_MAJOR_VERSION; +#line 205 "Gmsh.l" +return tMacro; YY_BREAK case 120: YY_RULE_SETUP #line 207 "Gmsh.l" -return tGMSH_MINOR_VERSION; +return tGMSH_MAJOR_VERSION; YY_BREAK case 121: YY_RULE_SETUP #line 208 "Gmsh.l" -return tGMSH_PATCH_VERSION; +return tGMSH_MINOR_VERSION; YY_BREAK case 122: YY_RULE_SETUP #line 209 "Gmsh.l" -return tGeoEntity; +return tGMSH_PATCH_VERSION; YY_BREAK case 123: YY_RULE_SETUP #line 210 "Gmsh.l" -return tGetEnv; +return tGeoEntity; YY_BREAK case 124: YY_RULE_SETUP #line 211 "Gmsh.l" -return tGetForced; +return tGetEnv; YY_BREAK case 125: YY_RULE_SETUP #line 212 "Gmsh.l" -return tGetForcedStr; +return tGetForced; YY_BREAK case 126: YY_RULE_SETUP #line 213 "Gmsh.l" -return tGetNumber; +return tGetForcedStr; YY_BREAK case 127: YY_RULE_SETUP #line 214 "Gmsh.l" -return tGetString; +return tGetNumber; YY_BREAK case 128: YY_RULE_SETUP #line 215 "Gmsh.l" -return tGetStringValue; +return tGetString; YY_BREAK case 129: YY_RULE_SETUP #line 216 "Gmsh.l" -return tGetValue; +return tGetStringValue; YY_BREAK case 130: YY_RULE_SETUP #line 217 "Gmsh.l" -return tGmshExecutableName; +return tGetValue; YY_BREAK case 131: YY_RULE_SETUP -#line 219 "Gmsh.l" -return tHide; +#line 218 "Gmsh.l" +return tGmshExecutableName; YY_BREAK case 132: YY_RULE_SETUP #line 220 "Gmsh.l" -return tHole; +return tHide; YY_BREAK case 133: YY_RULE_SETUP #line 221 "Gmsh.l" -return tHomology; +return tHole; YY_BREAK case 134: YY_RULE_SETUP #line 222 "Gmsh.l" -return tHypot; +return tHomology; YY_BREAK case 135: YY_RULE_SETUP -#line 224 "Gmsh.l" -return tInterpolationScheme; +#line 223 "Gmsh.l" +return tHypot; YY_BREAK case 136: YY_RULE_SETUP #line 225 "Gmsh.l" -return tIf; +return tInterpolationScheme; YY_BREAK case 137: YY_RULE_SETUP #line 226 "Gmsh.l" -return tIn; +return tIf; YY_BREAK case 138: YY_RULE_SETUP #line 227 "Gmsh.l" -return tIntersect; +return tIn; YY_BREAK case 139: YY_RULE_SETUP -#line 229 "Gmsh.l" -return tNurbsKnots; +#line 228 "Gmsh.l" +return tIntersect; YY_BREAK case 140: YY_RULE_SETUP -#line 231 "Gmsh.l" -return tLayers; +#line 230 "Gmsh.l" +return tNurbsKnots; YY_BREAK case 141: YY_RULE_SETUP #line 232 "Gmsh.l" -return tLength; +return tLayers; YY_BREAK case 142: YY_RULE_SETUP #line 233 "Gmsh.l" -return tLevelset; +return tLength; YY_BREAK case 143: YY_RULE_SETUP #line 234 "Gmsh.l" -return tLinSpace; +return tLevelset; YY_BREAK case 144: YY_RULE_SETUP #line 235 "Gmsh.l" -return tLine; +return tLinSpace; YY_BREAK case 145: YY_RULE_SETUP #line 236 "Gmsh.l" -return tList; +return tLine; YY_BREAK case 146: YY_RULE_SETUP #line 237 "Gmsh.l" -return tListFromFile; +return tList; YY_BREAK case 147: YY_RULE_SETUP #line 238 "Gmsh.l" -return tLog; +return tListFromFile; YY_BREAK case 148: YY_RULE_SETUP #line 239 "Gmsh.l" -return tLog10; +return tLog; YY_BREAK case 149: YY_RULE_SETUP #line 240 "Gmsh.l" -return tLogSpace; +return tLog10; YY_BREAK case 150: YY_RULE_SETUP #line 241 "Gmsh.l" -return tLowerCase; +return tLogSpace; YY_BREAK case 151: YY_RULE_SETUP #line 242 "Gmsh.l" -return tLowerCaseIn; +return tLowerCase; YY_BREAK case 152: YY_RULE_SETUP -#line 244 "Gmsh.l" -return tMPI_Rank; +#line 243 "Gmsh.l" +return tLowerCaseIn; YY_BREAK case 153: YY_RULE_SETUP #line 245 "Gmsh.l" -return tMPI_Size; +return tMPI_Rank; YY_BREAK case 154: YY_RULE_SETUP #line 246 "Gmsh.l" -return tMacro; +return tMPI_Size; YY_BREAK case 155: YY_RULE_SETUP #line 247 "Gmsh.l" -return tMemory; +return tMacro; YY_BREAK case 156: YY_RULE_SETUP #line 248 "Gmsh.l" -return tMeshAlgorithm; +return tMemory; YY_BREAK case 157: YY_RULE_SETUP #line 249 "Gmsh.l" -return tModulo; +return tMeshAlgorithm; YY_BREAK case 158: YY_RULE_SETUP -#line 251 "Gmsh.l" -return tNameToString; +#line 250 "Gmsh.l" +return tModulo; YY_BREAK case 159: YY_RULE_SETUP #line 252 "Gmsh.l" -return tNameStruct; +return tNameToString; YY_BREAK case 160: YY_RULE_SETUP #line 253 "Gmsh.l" -return tNameToString; +return tNameStruct; YY_BREAK case 161: YY_RULE_SETUP #line 254 "Gmsh.l" -return tNewModel; +return tNameToString; YY_BREAK case 162: YY_RULE_SETUP #line 255 "Gmsh.l" -return tNurbs; +return tNewModel; YY_BREAK case 163: YY_RULE_SETUP -#line 257 "Gmsh.l" -return tOnelabAction; +#line 256 "Gmsh.l" +return tNurbs; YY_BREAK case 164: YY_RULE_SETUP #line 258 "Gmsh.l" -return tOnelabRun; +return tOnelabAction; YY_BREAK case 165: YY_RULE_SETUP #line 259 "Gmsh.l" -return tNurbsOrder; +return tOnelabRun; YY_BREAK case 166: YY_RULE_SETUP -#line 261 "Gmsh.l" -return tParametric; +#line 260 "Gmsh.l" +return tNurbsOrder; YY_BREAK case 167: YY_RULE_SETUP #line 262 "Gmsh.l" -return tPeriodic; +return tParametric; YY_BREAK case 168: YY_RULE_SETUP #line 263 "Gmsh.l" -return tPhysical; +return tPeriodic; YY_BREAK case 169: YY_RULE_SETUP #line 264 "Gmsh.l" -return tPi; +return tPhysical; YY_BREAK case 170: YY_RULE_SETUP #line 265 "Gmsh.l" -return tPlane; +return tPi; YY_BREAK case 171: YY_RULE_SETUP #line 266 "Gmsh.l" -return tPlugin; +return tPlane; YY_BREAK case 172: YY_RULE_SETUP #line 267 "Gmsh.l" -return tPoint; +return tPlugin; YY_BREAK case 173: YY_RULE_SETUP #line 268 "Gmsh.l" -return tPolarSphere; +return tPoint; YY_BREAK case 174: YY_RULE_SETUP #line 269 "Gmsh.l" -return tPrintf; +return tPolarSphere; YY_BREAK case 175: YY_RULE_SETUP -#line 271 "Gmsh.l" -return tQuadric; +#line 270 "Gmsh.l" +return tPrintf; YY_BREAK case 176: YY_RULE_SETUP #line 272 "Gmsh.l" -return tQuadTriAddVerts; +return tQuadric; YY_BREAK case 177: YY_RULE_SETUP #line 273 "Gmsh.l" -return tQuadTriNoNewVerts; +return tQuadTriAddVerts; YY_BREAK case 178: YY_RULE_SETUP -#line 275 "Gmsh.l" -return tRand; +#line 274 "Gmsh.l" +return tQuadTriNoNewVerts; YY_BREAK case 179: YY_RULE_SETUP #line 276 "Gmsh.l" -return tRecombLaterals; +return tRand; YY_BREAK case 180: YY_RULE_SETUP #line 277 "Gmsh.l" -return tRecombine; +return tRecombLaterals; YY_BREAK case 181: YY_RULE_SETUP #line 278 "Gmsh.l" -return tRectangle; +return tRecombine; YY_BREAK case 182: YY_RULE_SETUP #line 279 "Gmsh.l" -return tRecursive; +return tRectangle; YY_BREAK case 183: YY_RULE_SETUP #line 280 "Gmsh.l" -return tRefineMesh; +return tRecursive; YY_BREAK case 184: YY_RULE_SETUP #line 281 "Gmsh.l" -return tRelocateMesh; +return tRefineMesh; YY_BREAK case 185: YY_RULE_SETUP #line 282 "Gmsh.l" -return tReturn; +return tRelocateMesh; YY_BREAK case 186: YY_RULE_SETUP #line 283 "Gmsh.l" -return tReverse; +return tReturn; YY_BREAK case 187: YY_RULE_SETUP #line 284 "Gmsh.l" -return tRotate; +return tReverse; YY_BREAK case 188: YY_RULE_SETUP #line 285 "Gmsh.l" -return tRound; +return tRotate; YY_BREAK case 189: YY_RULE_SETUP #line 286 "Gmsh.l" -return tRuled; +return tRound; YY_BREAK case 190: YY_RULE_SETUP -#line 288 "Gmsh.l" -return tStringToName; +#line 287 "Gmsh.l" +return tRuled; YY_BREAK case 191: YY_RULE_SETUP #line 289 "Gmsh.l" -return tScaleLast; +return tStringToName; YY_BREAK case 192: YY_RULE_SETUP #line 290 "Gmsh.l" -return tSetChanged; +return tScaleLast; YY_BREAK case 193: YY_RULE_SETUP #line 291 "Gmsh.l" -return tSetFactory; +return tSetChanged; YY_BREAK case 194: YY_RULE_SETUP #line 292 "Gmsh.l" -return tSetNumber; +return tSetFactory; YY_BREAK case 195: YY_RULE_SETUP #line 293 "Gmsh.l" -return tSetPartition; +return tSetNumber; YY_BREAK case 196: YY_RULE_SETUP #line 294 "Gmsh.l" -return tSetString; +return tSetPartition; YY_BREAK case 197: YY_RULE_SETUP #line 295 "Gmsh.l" -return tShapeFromFile; +return tSetString; YY_BREAK case 198: YY_RULE_SETUP #line 296 "Gmsh.l" -return tShow; +return tShapeFromFile; YY_BREAK case 199: YY_RULE_SETUP #line 297 "Gmsh.l" -return tSin; +return tShow; YY_BREAK case 200: YY_RULE_SETUP #line 298 "Gmsh.l" -return tSinh; +return tSin; YY_BREAK case 201: YY_RULE_SETUP #line 299 "Gmsh.l" -return tSlide; +return tSinh; YY_BREAK case 202: YY_RULE_SETUP #line 300 "Gmsh.l" -return tSmoother; +return tSlide; YY_BREAK case 203: YY_RULE_SETUP #line 301 "Gmsh.l" -return tSphere; +return tSmoother; YY_BREAK case 204: YY_RULE_SETUP #line 302 "Gmsh.l" -return tSpline; +return tSphere; YY_BREAK case 205: YY_RULE_SETUP #line 303 "Gmsh.l" -return tSplit; +return tSpline; YY_BREAK case 206: YY_RULE_SETUP #line 304 "Gmsh.l" -return tSprintf; +return tSplit; YY_BREAK case 207: YY_RULE_SETUP #line 305 "Gmsh.l" -return tSqrt; +return tSprintf; YY_BREAK case 208: YY_RULE_SETUP #line 306 "Gmsh.l" -return tStr; +return tSqrt; YY_BREAK case 209: YY_RULE_SETUP #line 307 "Gmsh.l" -return tStrCat; +return tStr; YY_BREAK case 210: YY_RULE_SETUP #line 308 "Gmsh.l" -return tStrChoice; +return tStrCat; YY_BREAK case 211: YY_RULE_SETUP #line 309 "Gmsh.l" -return tStrCmp; +return tStrChoice; YY_BREAK case 212: YY_RULE_SETUP #line 310 "Gmsh.l" -return tStrFind; +return tStrCmp; YY_BREAK case 213: YY_RULE_SETUP #line 311 "Gmsh.l" -return tStrLen; +return tStrFind; YY_BREAK case 214: YY_RULE_SETUP #line 312 "Gmsh.l" -return tStrPrefix; +return tStrLen; YY_BREAK case 215: YY_RULE_SETUP #line 313 "Gmsh.l" -return tStrRelative; +return tStrPrefix; YY_BREAK case 216: YY_RULE_SETUP #line 314 "Gmsh.l" -return tStrReplace; +return tStrRelative; YY_BREAK case 217: YY_RULE_SETUP #line 315 "Gmsh.l" -return tStrSub; +return tStrReplace; YY_BREAK case 218: YY_RULE_SETUP #line 316 "Gmsh.l" -return tStringToName; +return tStrSub; YY_BREAK case 219: YY_RULE_SETUP #line 317 "Gmsh.l" -return tDefineStruct; +return tStringToName; YY_BREAK case 220: YY_RULE_SETUP #line 318 "Gmsh.l" -return tSurface; +return tDefineStruct; YY_BREAK case 221: YY_RULE_SETUP #line 319 "Gmsh.l" -return tSymmetry; +return tSurface; YY_BREAK case 222: YY_RULE_SETUP #line 320 "Gmsh.l" -return tSyncModel; +return tSymmetry; YY_BREAK case 223: YY_RULE_SETUP -#line 322 "Gmsh.l" -return tText2D; +#line 321 "Gmsh.l" +return tSyncModel; YY_BREAK case 224: YY_RULE_SETUP #line 323 "Gmsh.l" -return tText3D; +return tText2D; YY_BREAK case 225: YY_RULE_SETUP #line 324 "Gmsh.l" -return tTime; +return tText3D; YY_BREAK case 226: YY_RULE_SETUP #line 325 "Gmsh.l" -return tTan; +return tTime; YY_BREAK case 227: YY_RULE_SETUP #line 326 "Gmsh.l" -return tTanh; +return tTan; YY_BREAK case 228: YY_RULE_SETUP #line 327 "Gmsh.l" -return tTestLevel; +return tTanh; YY_BREAK case 229: YY_RULE_SETUP #line 328 "Gmsh.l" -return tTextAttributes; +return tTestLevel; YY_BREAK case 230: YY_RULE_SETUP #line 329 "Gmsh.l" -return tThickSolid; +return tTextAttributes; YY_BREAK case 231: YY_RULE_SETUP #line 330 "Gmsh.l" -return tThruSections; +return tThickSolid; YY_BREAK case 232: YY_RULE_SETUP #line 331 "Gmsh.l" -return tToday; +return tThruSections; YY_BREAK case 233: YY_RULE_SETUP #line 332 "Gmsh.l" -return tTorus; +return tToday; YY_BREAK case 234: YY_RULE_SETUP #line 333 "Gmsh.l" -return tTotalMemory; +return tTorus; YY_BREAK case 235: YY_RULE_SETUP #line 334 "Gmsh.l" -return tTransfQuadTri; +return tTotalMemory; YY_BREAK case 236: YY_RULE_SETUP #line 335 "Gmsh.l" -return tTransfinite; +return tTransfQuadTri; YY_BREAK case 237: YY_RULE_SETUP #line 336 "Gmsh.l" -return tTranslate; +return tTransfinite; YY_BREAK case 238: YY_RULE_SETUP -#line 338 "Gmsh.l" -return tUndefineConstant; +#line 337 "Gmsh.l" +return tTranslate; YY_BREAK case 239: YY_RULE_SETUP #line 339 "Gmsh.l" -return tUnique; +return tUndefineConstant; YY_BREAK case 240: YY_RULE_SETUP #line 340 "Gmsh.l" -return tUpperCase; +return tUnique; YY_BREAK case 241: YY_RULE_SETUP #line 341 "Gmsh.l" -return tUsing; +return tUpperCase; YY_BREAK case 242: YY_RULE_SETUP -#line 343 "Gmsh.l" -return tVolume; +#line 342 "Gmsh.l" +return tUsing; YY_BREAK case 243: YY_RULE_SETUP -#line 345 "Gmsh.l" -return tWedge; +#line 344 "Gmsh.l" +return tVolume; YY_BREAK case 244: YY_RULE_SETUP #line 346 "Gmsh.l" -return tWire; +return tWedge; YY_BREAK case 245: -#line 349 "Gmsh.l" +YY_RULE_SETUP +#line 347 "Gmsh.l" +return tWire; + YY_BREAK case 246: #line 350 "Gmsh.l" case 247: #line 351 "Gmsh.l" case 248: +#line 352 "Gmsh.l" +case 249: YY_RULE_SETUP -#line 351 "Gmsh.l" +#line 352 "Gmsh.l" { gmsh_yylval.d = atof((char *)gmsh_yytext); return tDOUBLE; } YY_BREAK -case 249: +case 250: YY_RULE_SETUP -#line 353 "Gmsh.l" +#line 354 "Gmsh.l" { gmsh_yylval.c = strsave((char*)gmsh_yytext); return tSTRING; } YY_BREAK -case 250: +case 251: YY_RULE_SETUP -#line 355 "Gmsh.l" +#line 356 "Gmsh.l" return gmsh_yytext[0]; YY_BREAK -case 251: +case 252: YY_RULE_SETUP -#line 357 "Gmsh.l" +#line 358 "Gmsh.l" ECHO; YY_BREAK -#line 2802 "Gmsh.yy.cpp" +#line 2809 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -3090,7 +3097,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1280 ) + if ( yy_current_state >= 1281 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3118,11 +3125,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1280 ) + if ( yy_current_state >= 1281 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1279); + yy_is_jam = (yy_current_state == 1280); return yy_is_jam ? 0 : yy_current_state; } @@ -3795,7 +3802,7 @@ void gmsh_yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 357 "Gmsh.l" +#line 358 "Gmsh.l" diff --git a/Post/PViewVertexArrays.cpp b/Post/PViewVertexArrays.cpp index e6a9b56609d011f4dcc7b22c57f493220480e562..bcd22f7a74ed61dcf2a2101a9aa623a5a551c050 100644 --- a/Post/PViewVertexArrays.cpp +++ b/Post/PViewVertexArrays.cpp @@ -806,8 +806,7 @@ static void addScalarPrism(PView *p, double **xyz, double **val, bool pre) PViewOptions *opt = p->getOptions(); const int iq[3][4] = {{0, 1, 4, 3}, {0, 3, 5, 2}, {1, 2, 5, 4}}; const int it[2][3] = {{0, 2, 1}, {3, 4, 5}}; - // const int is[3][4] = {{0, 1, 2, 3}, {3, 4, 5, 2}, {1, 2, 4, 3}}; - const int is[3][4] = {{0,1,2,4}, {0,2,4,5}, {0,3,4,5}}; + const int is[3][4] = {{0, 1, 2, 4}, {0, 4, 2, 5}, {0, 3, 4, 5}}; if(opt->boundary > 0){ opt->boundary--; @@ -839,8 +838,7 @@ static void addScalarPyramid(PView *p, double **xyz, PViewOptions *opt = p->getOptions(); const int it[4][3] = {{0, 1, 4}, {3, 0, 4}, {1, 2, 4}, {2, 3, 4}}; - //const int is[2][4] = {{0, 1, 2, 4}, {2, 3, 0, 4}}; - const int is[2][4] = {{0,1,3,4}, {1,2,3,4}}; + const int is[2][4] = {{0, 1, 3, 4}, {1, 2, 3, 4}}; if(opt->boundary > 0){ opt->boundary--; diff --git a/benchmarks/3d/Cube-05.geo b/benchmarks/3d/Cube-05.geo index 12e4015f450909bc919860a9191fd9346cc00ce0..720725b92804e7648635f4a553a7bb5f6237e472 100644 --- a/benchmarks/3d/Cube-05.geo +++ b/benchmarks/3d/Cube-05.geo @@ -1,5 +1,5 @@ -lv = .1; -lc = .1; +lv = .15; +lc = .12; Point(1) = {0.0,0.0,0.0,lv}; Point(2) = {1,0.0,0.0,lv}; Point(3) = {1,1,0.0,lv}; diff --git a/benchmarks/step/Block.geo b/benchmarks/step/Block.geo new file mode 100644 index 0000000000000000000000000000000000000000..f1d7e0479f8811e0dfa546b7fbde63d23c2def22 --- /dev/null +++ b/benchmarks/step/Block.geo @@ -0,0 +1,11 @@ +Merge "Block.stp"; +SetFactory("OpenCASCADE"); +Wedge(2) = {-32, -2.1, -15.5, 40, 40, 60, 0}; +//+ +BooleanIntersection{ Volume{2}; Delete; }{ Volume{1}; Delete; } +//+ +Physical Surface(1) = {57, 74, 1}; +//+ +Physical Surface(2) = {2}; +//+ +Physical Volume(3) = {1}; diff --git a/contrib/mobile/Android/AndroidManifest.xml b/contrib/mobile/Android/AndroidManifest.xml index fea783d2f9ee47cf508e15d6f1075a39498afbcd..677784454a3a562baaa1470d0b4fe00c30ff4719 100644 --- a/contrib/mobile/Android/AndroidManifest.xml +++ b/contrib/mobile/Android/AndroidManifest.xml @@ -1,7 +1,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.geuz.onelab" - android:versionName="1.7.0" - android:versionCode="30" + android:versionName="2.0.0" + android:versionCode="31" android:installLocation="auto" > <uses-sdk android:minSdkVersion="14" diff --git a/contrib/mobile/CMakeLists.txt b/contrib/mobile/CMakeLists.txt index ad4202cfe5f4d310df931d6661094d53da425127..8cc8a24b72c884b87c496b0b4cb52429d5b45473 100644 --- a/contrib/mobile/CMakeLists.txt +++ b/contrib/mobile/CMakeLists.txt @@ -174,6 +174,7 @@ if(ENABLE_BUILD_ANDROID) include_directories(${EXTERNAL_INCLUDES}) set(CMAKE_BUILD_TYPE Release) add_definitions(-DBUILD_ANDROID) + add_definitions(-DPICOJSON_USE_LOCALE=0) set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/) add_library(androidOnelab SHARED ${ONELAB_SRC}) diff --git a/contrib/mobile/androidUtils.cpp b/contrib/mobile/androidUtils.cpp index b9d0748a664e07336b8e31a887245057639a2835..6620401bd53168c927de4a9f39ed26f91899947c 100644 --- a/contrib/mobile/androidUtils.cpp +++ b/contrib/mobile/androidUtils.cpp @@ -121,8 +121,11 @@ void getBitmapFromString(const char *text, int textsize, unsigned char **map, mid = env->GetStaticMethodID(jClass, "getBytesFromString", "(Ljava/lang/String;I)[B"); jobject jbuffer = env->CallStaticObjectMethod(jClass, mid, jtext, textsize); jbyteArray *jarray = reinterpret_cast<jbyteArray*>(&jbuffer); - *map = (unsigned char *) malloc((*height)*(*width)); - env->GetByteArrayRegion(*jarray, 0, (*height)*(*width), (jbyte*)*map); + int ms = (*height) * (*width); + if(ms){ + *map = (unsigned char *)malloc(ms); + env->GetByteArrayRegion(*jarray, 0, ms, (jbyte*)*map); + } env->DeleteLocalRef(jClass); env->DeleteLocalRef(jtext); } diff --git a/contrib/mobile/drawString.cpp b/contrib/mobile/drawString.cpp index 82169715ebb5e74e977734be96cb4ba401327139..d98bd51eaa109e7ee1741c58fa451f61b9996bfa 100644 --- a/contrib/mobile/drawString.cpp +++ b/contrib/mobile/drawString.cpp @@ -12,6 +12,9 @@ drawString::drawString(std::string text, int size, float color[4]) { _map = 0; _size = size; + _height = 0; + _width = 0; + _realWidth = 0; if(color == NULL) setColor(0.0f, 0.0f, 0.0f, 1.0f); else @@ -44,6 +47,7 @@ void drawString::setColor(float r, float g, float b, float a) void drawString::draw(float x, float y, float z, float w, float h, bool center) { + if(!_map || !_width || !_height) return; GLuint textureId; glGenTextures(1, &textureId); glBindTexture(GL_TEXTURE_2D, textureId); @@ -52,7 +56,7 @@ void drawString::draw(float x, float y, float z, float w, float h, bool center) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glColor4f(_color[0], _color[1], _color[2], _color[3]); if(center) - x-=(float)_realWidth/w/2; + x -= (float)_realWidth/w/2; GLfloat vertex[] = { x, y-_height/h+_size/h, z, // bottom left x, y+(float)_height/h-_height/h+_size/h, z, // top left diff --git a/contrib/mobile/drawString.h b/contrib/mobile/drawString.h index 7be9d87db616d7954145fe5db544996de4ccd5b7..0cf8fb70e43c27590ed41c60ee0ee761e6e7f5b9 100644 --- a/contrib/mobile/drawString.h +++ b/contrib/mobile/drawString.h @@ -17,7 +17,7 @@ private: public: drawString(std::string text, int size=12, float *color=NULL); - ~drawString(){if(_map)free(_map);} + ~drawString(){ if(_map) free(_map); } void setText(std::string text); void setColor(float *color); diff --git a/contrib/mobile/utils/android_build.sh b/contrib/mobile/utils/android_build.sh index 076f27712160afab59b35cb3e7d8cc7066a669c3..67d1600d92f6f3508506cbc34ba77dca96a439c0 100755 --- a/contrib/mobile/utils/android_build.sh +++ b/contrib/mobile/utils/android_build.sh @@ -1,9 +1,11 @@ #!/usr/bin/env bash appname=Onelab +enable_occt=1 if [ $# -eq 1 ] ; then appname=${1} echo "Rebranding Onelab app as ${appname}" + enable_occt=0 fi gmsh_git="${HOME}/src/gmsh" @@ -19,6 +21,8 @@ fi petsc_lib="$frameworks_dir/petsc" slepc_lib="$frameworks_dir/slepc" +occ_lib="$frameworks_dir/occt/lib" +occ_inc="$frameworks_dir/occt/inc" android_ndk="${HOME}/Library/Android/sdk/ndk-bundle/" android_sdk="${HOME}/Library/Android/sdk/" @@ -40,7 +44,7 @@ if [ ! -d "$gmsh_git/build_android" ] || [ ! -f "$gmsh_git/build_android/CMakeCa mkdir $gmsh_git/build_android fi cd $gmsh_git/build_android -cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_SHARED=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DBLAS_LAPACK_LIBRARIES="$petsc_lib/libf2cblas.so;$petsc_lib/libf2clapack.so" .. +cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_SHARED=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DBLAS_LAPACK_LIBRARIES="$petsc_lib/libf2cblas.so;$petsc_lib/libf2clapack.so" -DENABLE_OCC=$enable_occt -DOCC_LIBS="${occ_lib}/libTKSTEP.a;${occ_lib}/libTKSTEP209.a;${occ_lib}/libTKSTEPAttr.a;${occ_lib}/libTKSTEPBase.a;${occ_lib}/libTKIGES.a;${occ_lib}/libTKXSBase.a;${occ_lib}/libTKOffset.a;${occ_lib}/libTKFeat.a;${occ_lib}/libTKFillet.a;${occ_lib}/libTKBool.a;${occ_lib}/libTKShHealing.a;${occ_lib}/libTKMesh.a;${occ_lib}/libTKHLR.a;${occ_lib}/libTKBO.a;${occ_lib}/libTKPrim.a;${occ_lib}/libTKTopAlgo.a;${occ_lib}/libTKGeomAlgo.a;${occ_lib}/libTKBRep.a;${occ_lib}/libTKGeomBase.a;${occ_lib}/libTKG3d.a;${occ_lib}/libTKG2d.a;${occ_lib}/libTKMath.a;${occ_lib}/libTKernel.a" -DOCC_INC=${occ_inc} .. check make androidGmsh -j$cmake_thread check diff --git a/contrib/mobile/utils/ios_build.sh b/contrib/mobile/utils/ios_build.sh index ace8a24acf1c51a7c4703f53ebf811026e9f48bf..512117f682cf13ffc786403acb928e2e5f360906 100755 --- a/contrib/mobile/utils/ios_build.sh +++ b/contrib/mobile/utils/ios_build.sh @@ -1,9 +1,11 @@ #/usr/bin/env bash appname=Onelab +enable_occt=1 if [ $# -eq 1 ] ; then appname=${1} echo "Rebranding Onelab app as ${appname}" + enable_occt=0 fi gmsh_git="${HOME}/src/gmsh/" @@ -40,7 +42,7 @@ function check { cd $gmsh_git && git pull mkdir -p $gmsh_git/build_ios cd $gmsh_git/build_ios -cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DENABLE_OCC=1 -DOCC_LIBS="$occt_framework/OCCT" -DOCC_INC="$occt_framework/Headers/" .. +cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DENABLE_OCC=$enable_occt -DOCC_LIBS="$occt_framework/OCCT" -DOCC_INC="$occt_framework/Headers/" .. check $build_cmd OTHER_CFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode" OTHER_CPLUSPLUSFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode -std=c++11" check diff --git a/contrib/mobile/utils/iossimulator_build.sh b/contrib/mobile/utils/iossimulator_build.sh index 10c218b51d6188e48c59801bf0ee5efff2187b62..0da9e128ef9a6ef45ec5f34177b4382108edca45 100755 --- a/contrib/mobile/utils/iossimulator_build.sh +++ b/contrib/mobile/utils/iossimulator_build.sh @@ -1,9 +1,11 @@ #/usr/bin/env bash appname=Onelab +enable_occt=1 if [ $# -eq 1 ] ; then appname=${1} echo "Rebranding Onelab app as ${appname}" + enable_occt=0 fi gmsh_git="${HOME}/src/gmsh/" @@ -40,7 +42,7 @@ function check { cd $gmsh_git && git pull mkdir -p $gmsh_git/build_iossimulator cd $gmsh_git/build_iossimulator -cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DENABLE_OCC=1 -DOCC_LIBS="$occt_framework/OCCT" -DOCC_INC="$occt_framework/Headers/" .. +cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_TETGEN=1 -DENABLE_KBIPACK=1 -DENABLE_GMP=0 -DENABLE_ZIPPER=1 -DENABLE_OCC=$enable_occt -DOCC_LIBS="$occt_framework/OCCT" -DOCC_INC="$occt_framework/Headers/" .. check $build_cmd OTHER_CFLAGS="-mios-simulator-version-min=8.0" OTHER_CPLUSPLUSFLAGS="-mios-simulator-version-min=8.0 -std=c++11" check diff --git a/contrib/mobile/utils/make_mobile_zip_from_geo_files.sh b/contrib/mobile/utils/make_mobile_zip_from_geo_files.sh new file mode 100755 index 0000000000000000000000000000000000000000..99586c6c3de30f4166e5bc7a027f4b58a574de68 --- /dev/null +++ b/contrib/mobile/utils/make_mobile_zip_from_geo_files.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +if [ $# -lt 1 ]; then + echo "Usage: $0 file1.geo file2.geo ..." 1>&2; + exit 1; +fi + +files=$* +rm -rf Archive +mkdir Archive + +cp *.step Archive/ +cat <<EOT >> Archive/infos.xml +<?xml version="1.0" encoding="utf-8"?> +<models> +EOT + +for file in $files ; do + cp $file Archive/ + echo "<model>" >> Archive/infos.xml + echo "<title>$file</title>" >> Archive/infos.xml + echo "<summary>$file</summary>" >> Archive/infos.xml + echo "<file type=\"geo\">$file</file>" >> Archive/infos.xml + echo "</model>" >> Archive/infos.xml + cat <<EOT > Archive/${file%.geo}.pro +DefineConstant[ + R_ = {"", Name "GetDP/1ResolutionChoices", Visible 0}, + C_ = {"", Name "GetDP/9ComputeCommand", Visible 0}, + P_ = {"", Name "GetDP/2PostOperationChoices", Visible 0} +]; +EOT +done + +cat <<EOT >> Archive/infos.xml +</models> +EOT + +zip -r Archive.zip Archive diff --git a/contrib/mobile/utils/occt_configuration.txt b/contrib/mobile/utils/occt_configuration.txt new file mode 100644 index 0000000000000000000000000000000000000000..151c375bd94cbaeda06fe83ac50babcf900f2ce1 --- /dev/null +++ b/contrib/mobile/utils/occt_configuration.txt @@ -0,0 +1,21 @@ +####### configuration for OCCT 7.1 ####### + +################# iOS: #### +cmake -DCMAKE_TOOLCHAIN_FILE=~/src/gmsh/contrib/mobile/utils/iOS.cmake -DAppkit_LIB="" -DOpenGlLibs_LIB="" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="armv7;armv7s;arm64" -DCMAKE_SIZEOF_VOID_P=8 -GXcode -DBUILD_MODULE_Draw=0 -DBUILD_MODULE_Visualization=0 -DBUILD_LIBRARY_TYPE=Static .. + +xcodebuild -configuration Release OTHER_CFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode" OTHER_CPLUSPLUSFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode -std=c++11" + +# Then combine all static libs using merge_static_libs.sh and put it in OCCT.framework + +################## iOS Simulator: #### +cmake -DCMAKE_TOOLCHAIN_FILE=~/src/gmsh/contrib/mobile/utils/iOS.cmake -DAppkit_LIB="" -DOpenGlLibs_LIB="" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" -DIOS_PLATFORM=SIMULATOR -DCMAKE_SIZEOF_VOID_P=8 -GXcode -DBUILD_MODULE_Draw=0 -DBUILD_MODULE_Visualization=0 -DBUILD_LIBRARY_TYPE=Static .. + +xcodebuild -configuration Release OTHER_CFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode" OTHER_CPLUSPLUSFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode -std=c++11" + +# Then combine all static libs using merge_static_libs.sh and put it in OCCT.framework + +################## Android #### +cmake -DCMAKE_TOOLCHAIN_FILE=~/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MODULE_Draw=0 -DBUILD_MODULE_Visualization=0 -DBUILD_MODULE_ApplicationFramework=0 -DBUILD_LIBRARY_TYPE=Static -DCMAKE_PREFIX_PATH=/opt/local .. + +make -j 8 -k ### -k so that compilation will continue even when linking to freetype fails + diff --git a/demos/boolean/baffles.geo b/demos/boolean/baffles.geo new file mode 100644 index 0000000000000000000000000000000000000000..6a820911d62a41fbb2605ff155c001faa9fb480a --- /dev/null +++ b/demos/boolean/baffles.geo @@ -0,0 +1,16 @@ +SetFactory("OpenCASCADE"); + +Box(1) = {-0, 0, 0, 1, 1, 1}; + +p() = PointsOf{ Volume{1}; }; +Characteristic Length{p()} = 0.2; + +Rectangle(7) = {0.4, 0.7, 0.2, 0.3, 0.3, 0}; +Rectangle(8) = {-0.2, 0.3, 0.5, 0.3, 0.3, 0}; +Rectangle(9) = {0.8, -0.2, 0.5, 0.3, 0.3, 0}; +Rectangle(10) = {0.3, 0.3, 0.5, 0.3, 0.3, 0}; + +b() = BooleanFragments{ Volume{1}; Delete; }{ Surface{7:10}; Delete; }; + +p() = PointsOf{ Surface{b({1:6})}; }; +Characteristic Length{p()} = 0.04; diff --git a/demos/boolean/boolean.geo b/demos/boolean/boolean.geo index fd4b46295306e44f1270e05ababaf4e814734b95..12f20ccebab0424e659abd5dbb99e6d9bf9faf6f 100644 --- a/demos/boolean/boolean.geo +++ b/demos/boolean/boolean.geo @@ -7,13 +7,13 @@ Mesh.Algorithm = 6; //Mesh.CharacteristicLengthMax = 0.4; R = DefineNumber[ 1.4 , Min 0.1, Max 2, Step 0.01, - Name "Parameters/Block dimension" ]; + Name "Parameters/Box dimension" ]; Rs = DefineNumber[ R*.7 , Min 0.1, Max 2, Step 0.01, Name "Parameters/Cylinder radius" ]; Rt = DefineNumber[ R*1.25, Min 0.1, Max 2, Step 0.01, Name "Parameters/Sphere radius" ]; -Block(1) = {-R,-R,-R, 2*R,2*R,2*R}; +Box(1) = {-R,-R,-R, 2*R,2*R,2*R}; Sphere(2) = {0,0,0,Rt}; diff --git a/demos/boolean/compsolid.geo b/demos/boolean/compsolid.geo index 1fcb6c02ec87266e22bf89964ac2091913cdf4fe..9e8d5e50d387aa5c8a8357e75c4e51a80998b2b7 100644 --- a/demos/boolean/compsolid.geo +++ b/demos/boolean/compsolid.geo @@ -19,8 +19,8 @@ DefineConstant[ dz2 = {3, Min 0.1, Max 5, Step 0.1, Name "Bloc 2/dz"} ]; -Block(1) = {x,y,z, dx,dy,dz}; -Block(2) = {x2,y2,z2, dx2,dy2,dz2}; +Box(1) = {x,y,z, dx,dy,dz}; +Box(2) = {x2,y2,z2, dx2,dy2,dz2}; f() = BooleanFragments { Volume{1}; Delete; }{ Volume{2}; Delete; }; diff --git a/demos/boolean/compsolid2.geo b/demos/boolean/compsolid2.geo index 88ef4c23ffbecc865d483c687e823dba375d2ab0..842e9c1d61c2d0eb8eaf86ad2fedbba2abd5f6c6 100644 --- a/demos/boolean/compsolid2.geo +++ b/demos/boolean/compsolid2.geo @@ -11,9 +11,9 @@ DefineConstant[ ]; -Block(1) = {0,0,0, 2,2,2}; +Box(1) = {0,0,0, 2,2,2}; Sphere(2) = {xx, 1, 1, rr}; -Block(3) = {2,0,0, 2,2,2}; +Box(3) = {2,0,0, 2,2,2}; f() = BooleanFragments { Volume{1}; Delete; }{ Volume{2,3}; Delete; }; Printf("f()", f()); diff --git a/demos/boolean/fillet.geo b/demos/boolean/fillet.geo index c2eed50f229ad4ae021a9c25f47c9f8040bf0032..5b82f12d8739f107447c968c5003eb0562dff21b 100644 --- a/demos/boolean/fillet.geo +++ b/demos/boolean/fillet.geo @@ -3,7 +3,7 @@ SetFactory("OpenCASCADE"); Mesh.CharacteristicLengthMin = 0.1; Mesh.CharacteristicLengthMax = 0.1; -Block(1) = {0,0,0,1,1,1}; +Box(1) = {0,0,0,1,1,1}; f() = Abs(Boundary{ Volume{1}; }); e() = Unique(Abs(Boundary{ Surface{f()}; })); diff --git a/demos/boolean/fillet3.geo b/demos/boolean/fillet3.geo index 46d7fadecf2eaeb774463b0e99b4aa3592750b6d..8f41b036f0832d0895751d93c9f73db58c7e241c 100644 --- a/demos/boolean/fillet3.geo +++ b/demos/boolean/fillet3.geo @@ -6,7 +6,7 @@ dx_in = dx_out-2*w; dy_in = dy_out; dz_in = dz_out-2*w; r_in = 0.1; r_out = r_in+w; v_out = newv; -Block(v_out) = { +Box(v_out) = { -dx_out/2,-dy_out/2,-dz_out/2, dx_out, dy_out, dz_out }; @@ -16,7 +16,7 @@ e_[] = Unique( Abs(Boundary{ Surface{f_[]}; }) ); v_out = Fillet{v_}{e_[2-1], e_[4-1], e_[6-1], e_[8-1]}{r_out}; v_in = newv; -Block(v_in) = { +Box(v_in) = { -dx_in/2,-dy_in/2,-dz_in/2, dx_in, dy_in, dz_in }; diff --git a/demos/boolean/fragment_numbering.geo b/demos/boolean/fragment_numbering.geo index 40c6f09ac990aa74f1b8f8c291899254c8d5539a..e627c69ea6d4af220c61c09c2b61a478e6d50dad 100644 --- a/demos/boolean/fragment_numbering.geo +++ b/demos/boolean/fragment_numbering.geo @@ -1,5 +1,6 @@ SetFactory("OpenCASCADE"); +//Geometry.LineNumbers = 1; Geometry.SurfaceNumbers = 1; DefineConstant[ @@ -17,6 +18,10 @@ Translate {2*w, 0, 0} { Duplicata { Surface{4}; } } Rectangle(6) = {-6*w, 0, 0, 12*w, 5*w, 0}; +b() = Boundary{ Surface{6}; }; +t = b(2); +Printf("top line tag: ", t); + b() = {}; For i In {1:N} s = news; b() += s; Disk(s) = {-w-R-spacing, (2*R+spacing)*i, 0, R}; @@ -24,6 +29,6 @@ EndFor Printf("disk tags: ", b()); -c() = BooleanFragments{ Surface{1:6}; Delete; }{ Surface{b()}; Delete; }; +c() = BooleanFragments{ Line{t}; Surface{1:6}; Delete; }{ Surface{b()}; Delete; }; -Printf("all tags (disk tags should be unchanged!): ", c()); +Printf("all tags (disk and top line tags should be unchanged!): ", c()); diff --git a/demos/boolean/import.geo b/demos/boolean/import.geo index 86d8a121b696a99a266cd7a6f835bcd31ffcb4a3..c05666e27ac6370581a93f967b486486c2e67f9d 100644 --- a/demos/boolean/import.geo +++ b/demos/boolean/import.geo @@ -11,7 +11,7 @@ DefineConstant[ a() = ShapeFromFile("component8.step"); b() = 2; -Block(b(0)) = {0,156,z, 10,14,10}; +Box(b(0)) = {0,156,z, 10,14,10}; If(sph) b() += 3; diff --git a/demos/boolean/intersect_line_volume.geo b/demos/boolean/intersect_line_volume.geo index 9e6bbcfb8de7588ce1e26dbf7516f9c3c02e0739..0939f0590e23421132987dd7582698f781b7ee32 100644 --- a/demos/boolean/intersect_line_volume.geo +++ b/demos/boolean/intersect_line_volume.geo @@ -25,7 +25,7 @@ ddy = flag_Symmetry_Y ? dy / 2 : dy; ddz = flag_Symmetry_Z ? dz / 2 : dz; v_box=newv; -Block(newv) = {x_min_, y_min_, z_min_, ddx, ddy, ddz}; +Box(newv) = {x_min_, y_min_, z_min_, ddx, ddy, ddz}; l_wire[] = BooleanIntersection { Line{l_wire[]}; Delete; }{ Volume{v_box}; }; diff --git a/demos/boolean/periodic.geo b/demos/boolean/periodic.geo index 435bc83101b18ac40ea9cd16535ae54994e6d8fb..35fdd1b055a1fc90fdc9761ab08776224c00e78c 100644 --- a/demos/boolean/periodic.geo +++ b/demos/boolean/periodic.geo @@ -3,7 +3,7 @@ SetFactory("OpenCASCADE"); Mesh.CharacteristicLengthMax = 0.4; R = 2; -Block(1) = {0,0,0, R,R,R}; +Box(1) = {0,0,0, R,R,R}; pts() = PointsOf{Volume{1};}; Characteristic Length{pts(0)} = 0.01; diff --git a/demos/boolean/primitives.geo b/demos/boolean/primitives.geo index 5224d2d43886d8a96ef74d892dd7f16c85d29fa6..13c43d5203f15849ba02b85a16e44d04ce17a682 100644 --- a/demos/boolean/primitives.geo +++ b/demos/boolean/primitives.geo @@ -13,7 +13,7 @@ Sphere(newv) = {x++,y,0, 0.3, -Pi/4, Pi/4, Pi/2}; Sphere(newv) = {x++,y,0, 0.3, -Pi/2, Pi/2, Pi/4}; Cylinder(newv) = {x++,y,0, 0.5,0,0, 0.5}; Cylinder(newv) = {x++,y,0, 0.5,0,0, 0.5, Pi/3}; -Block(newv) = {x++,y,0, 0.5,0.5,0.5}; +Box(newv) = {x++,y,0, 0.5,0.5,0.5}; Torus(newv) = {x++,y,0, 0.3, 0.1}; Torus(newv) = {x++,y,0, 0.3, 0.1, Pi/3}; Cone(newv) = {x++,y,0, 0.5,0,0, 0.5,0}; diff --git a/demos/boolean/thicksolid.geo b/demos/boolean/thicksolid.geo index ccd3ef59f927bcc360c121e9d09adebb84d5520b..48842e486114c69056d8b36acb1c8c33919c4fa9 100644 --- a/demos/boolean/thicksolid.geo +++ b/demos/boolean/thicksolid.geo @@ -3,7 +3,7 @@ SetFactory("OpenCASCADE"); Mesh.CharacteristicLengthMin = 0.1; Mesh.CharacteristicLengthMax = 0.1; -Block(1) = {0,0,0,1,1,1}; +Box(1) = {0,0,0,1,1,1}; Boundary{ Volume{1}; } ThickSolid(100) = {1, 0.05, 6}; diff --git a/demos/boolean/transfinite.geo b/demos/boolean/transfinite.geo index 5e4025fad945514e1c856f2c3a4e9c8fdd9b47ea..ab369c02ee1abd9a7423ea60ad7d94b7cca89f88 100644 --- a/demos/boolean/transfinite.geo +++ b/demos/boolean/transfinite.geo @@ -4,7 +4,7 @@ Mesh.Algorithm = 6; Mesh.CharacteristicLengthMin = 1; Mesh.CharacteristicLengthMax = 1; -Block(1) = {0,0,0, 1,1,1}; +Box(1) = {0,0,0, 1,1,1}; Cylinder(2) = {0.5,0,0, 0,1,0, 0.7}; BooleanDifference(3) = { Volume{1}; Delete; }{ Volume{2}; Delete; }; diff --git a/demos/boolean/transform.geo b/demos/boolean/transform.geo index 7a654f290c85f8a880f9084c12eb75b1d9dc74a8..d91c59227273c4a151dddb4325f1a66ee49fc066 100644 --- a/demos/boolean/transform.geo +++ b/demos/boolean/transform.geo @@ -19,8 +19,8 @@ DefineConstant[ dz2 = {3, Min 0.1, Max 5, Step 0.1, Name "Bloc 2/dz"} ]; -Block(1) = {x,y,z, dx,dy,dz}; -Block(2) = {x2,y2,z2, dx2,dy2,dz2}; +Box(1) = {x,y,z, dx,dy,dz}; +Box(2) = {x2,y2,z2, dx2,dy2,dz2}; Translate{0.2,0.2,0.2}{ Volume{1}; } Rotate { {1,0,0}, {0,0,0}, Pi/3 } { Volume{1}; } diff --git a/doc/gmsh.html b/doc/gmsh.html index 4a20454de8c0e9f49d697dc1258e0d6fb1e729cb..7183c6475a7159e0f94a5bc5cd14be8b7d58f136 100644 --- a/doc/gmsh.html +++ b/doc/gmsh.html @@ -6,7 +6,7 @@ <title>Gmsh: a three-dimensional finite element mesh generator with built-in pre- and post-processing facilities</title> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="keywords" content="free, finite elements, mesh generator, fem, unstructured grids, delaunay, discontinuous galerkin, triangulation, automatic, maillages, mailleur 3D, mesh adaptation, postprocessing, @@ -51,7 +51,7 @@ CAO, OpenGL, GL2PS, Gmesh"> <h1>A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities</h1> -<h4>Christophe Geuzaine and Jean-Fran�ois Remacle</h4> +<h4>Christophe Geuzaine and Jean-François Remacle</h4> <div id="toc"> <a href="#Download">Download</a> @@ -99,7 +99,7 @@ Public License (GPL)</a>: <ul> <li> <p class="highlight"> - Current stable release (version 3.0.1, April 14 2017): + Current stable release (version 3.0.2, May 13 2017): <a href="bin/Windows/gmsh-3.0.2-Windows64.zip">Windows</a> (<a href="bin/Windows/gmsh-3.0.2-Windows32.zip">32 bit</a>), <a href="bin/Linux/gmsh-3.0.2-Linux64.tgz">Linux</a>, @@ -279,7 +279,7 @@ directly</a> for more information. </ul> Cross-patch and STL meshing (Compounds) <ul class="small"> - <li>J.-F. Remacle, C. Geuzaine, G. Comp�re and + <li>J.-F. Remacle, C. Geuzaine, G. Compère and E. Marchandise. <em><a href="doc/preprints/gmsh_stl_preprint.pdf">High-quality surface remeshing using harmonic maps</a></em>. International Journal for Numerical Methods in Engineering 83(4), pp. 403-425, 2010. @@ -301,7 +301,7 @@ directly</a> for more information. a non-uniform quadrilateral mesh generator using a minimum cost perfect matching algorithm</a></em>. International Journal for Numerical Methods in Engineering 89, pp. 1102-1119, 2012. - <li>J.-F. Remacle, F. Henrotte, T. Carrier-Baudouin, E. B�chet, + <li>J.-F. Remacle, F. Henrotte, T. Carrier-Baudouin, E. Béchet, E. Marchandise, C. Geuzaine and T. Mouton. <em><a href="doc/preprints/gmsh_quad2_preprint.pdf">A frontal Delaunay quad mesh generator using the L∞ norm</a></em>. @@ -347,7 +347,7 @@ directly</a> for more information. </ul> Biomedical meshing <ul class="small"> - <li>E. Marchandise, G. Comp�re, M. Willemet, G. Bricteux, C. Geuzaine and + <li>E. Marchandise, G. Compère, M. Willemet, G. Bricteux, C. Geuzaine and J-F Remacle. <em><a href="doc/preprints/gmsh_bio_preprint.pdf">Quality meshing based on STL triangulations for biomedical simulations</a></em>. International Journal for Numerical Methods in Biomedical Engineering diff --git a/doc/texinfo/commandline.texi b/doc/texinfo/commandline.texi index 7c23905418157d3f30e0b7a8c97359006a5d0023..a9ec3cd3e33cf708ceb9e121a61ac2bab1b4b820 100644 --- a/doc/texinfo/commandline.texi +++ b/doc/texinfo/commandline.texi @@ -30,10 +30,12 @@ Perform uniform mesh refinement, then exit Partition after batch mesh generation @item -partWeight tri|quad|tet|prism|hex int Weight of a triangle/quad/etc. during partitioning -@item -saveall +@item -save_all Save all elements (discard physical group definitions) -@item -parametric +@item -save_parametric Save vertices with their parametric coordinates +@item -save_topology +Save model topology @item -algo string Select mesh algorithm (meshadapt, del2d, front2d, delquad, del3d, front3d, mmg3d, pack) @item -smooth int diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index c9518a47c765d3e60be7895d4855c177f79c30ad..d9902b9dee73dbc5ed2f9eb32b47e3cf5ea1acbb 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -2086,9 +2086,9 @@ Creates a sphere, defined by the 3 coordinates of its center and a radius. Additional expressions define 3 angle limits. Sphere is only available with the OpenCASCADE kernel. -@item Block ( @var{expression} ) = @{ @var{expression-list} @}; -Creates a block, defined by the 3 coordinates of a point and the 3 -extents. Block is only available with the OpenCASCADE kernel. +@item Box ( @var{expression} ) = @{ @var{expression-list} @}; +Creates a box, defined by the 3 coordinates of a point and the 3 +extents. Box is only available with the OpenCASCADE kernel. @item Cylinder ( @var{expression} ) = @{ @var{expression-list} @}; Creates a cylinder, defined by the 3 coordinates of the center of the diff --git a/doc/texinfo/opt_fields.texi b/doc/texinfo/opt_fields.texi index ad388855f644a1872f4b4a6adac4610cf4ed18d8..6fc5ba35f336fedb0282f7bdda6c10f75f4d28fc 100644 --- a/doc/texinfo/opt_fields.texi +++ b/doc/texinfo/opt_fields.texi @@ -578,7 +578,7 @@ Options:@* @item InField Id of the field to use as x coordinate.@* type: integer@* -default value: @code{0} +default value: @code{1752631850} @end table @item Param diff --git a/doc/texinfo/opt_geometry.texi b/doc/texinfo/opt_geometry.texi index 9e3bdbc5ef516c1ef0ce75804c0c8b5fc6a6f950..4b9c983a425d66a68c0cd650d9e959d3daa1e807 100644 --- a/doc/texinfo/opt_geometry.texi +++ b/doc/texinfo/opt_geometry.texi @@ -149,6 +149,11 @@ Use multi-threaded OCC boolean operators@* Default value: @code{0}@* Saved in: @code{General.OptionsFileName} +@item Geometry.OCCBooleanPreserveNumbering +Try to preserve numbering of entities through OCC boolean operations@* +Default value: @code{1}@* +Saved in: @code{General.OptionsFileName} + @item Geometry.OCCScaling Scale STEP, IGES and BRep model by given factor@* Default value: @code{1}@* diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi index fee3bb323fc8486ef48a3b578da7a1610aec9773..6e43a4da4b5659bac09688708090ea2c02af2838 100644 --- a/doc/texinfo/opt_mesh.texi +++ b/doc/texinfo/opt_mesh.texi @@ -599,6 +599,11 @@ Type of the element tag saved in mesh formats that don't support saving physical Default value: @code{1}@* Saved in: @code{General.OptionsFileName} +@item Mesh.SaveTopology +Save model topology in MSH2 output files (this is always saved in MSH3)@* +Default value: @code{0}@* +Saved in: @code{General.OptionsFileName} + @item Mesh.SaveParametric Save parametric coordinates of nodes@* Default value: @code{0}@* diff --git a/doc/texinfo/shortcuts.texi b/doc/texinfo/shortcuts.texi index 151e945e4ebb13a393d12ea2bebbd4baaef1c163..f016ecc8b924dca56db01cedc0661eea1f62da07 100644 --- a/doc/texinfo/shortcuts.texi +++ b/doc/texinfo/shortcuts.texi @@ -37,11 +37,11 @@ Abort selection in geometry creation mode @item s Go to solver module @item x -Freeze x coordinate in geometry creation mode +Toogle x coordinate freeze in geometry creation mode @item y -Freeze y coordinate in geometry creation mode +Toogle y coordinate freeze in geometry creation mode @item z -Freeze z coordinate in geometry creation mode +Toogle z coordinate freeze in geometry creation mode @item Shift+a Bring all windows to front @item Shift+g @@ -58,6 +58,12 @@ Show solver options Show post-processing view plugins @item Shift+w Show post-processing view options +@item Shift+x +Move only along x coordinate in geometry creation mode +@item Shift+y +Move only along y coordinate in geometry creation mode +@item Shift+z +Move only along z coordinate in geometry creation mode @item Shift+Escape Enable full mouse selection @item Ctrl+d