diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-03-24 20:01:45 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-03-24 20:40:09 +0100 |
| commit | 8763ea7f01bd349df29c5c4ce3b4edd6252eff37 (patch) | |
| tree | a105baa2bb96e9474d618af3e4dba54f05338f7d | |
| parent | 3e37b354194b4d42acd247c32ca97e45ac40af1e (diff) | |
| download | PROJ-8763ea7f01bd349df29c5c4ce3b4edd6252eff37.tar.gz PROJ-8763ea7f01bd349df29c5c4ce3b4edd6252eff37.zip | |
WKT2 parser: update to OGC 18-010r6
- Allow ID[] in base CRS of Derived CRS
- Allow VERSION[] in non-conversion coordinate operations
- Use VERSION[] to set operationVersion member of CoordinateOperation
- Export operationVersion in WKT2:2018
| -rw-r--r-- | include/proj/coordinateoperation.hpp | 6 | ||||
| -rw-r--r-- | include/proj/internal/io_internal.hpp | 1 | ||||
| -rw-r--r-- | src/iso19111/coordinateoperation.cpp | 37 | ||||
| -rw-r--r-- | src/iso19111/io.cpp | 11 | ||||
| -rw-r--r-- | src/iso19111/static.cpp | 12 | ||||
| -rw-r--r-- | src/wkt2_generated_parser.c | 2582 | ||||
| -rw-r--r-- | src/wkt2_generated_parser.h | 141 | ||||
| -rw-r--r-- | src/wkt2_grammar.y | 92 | ||||
| -rw-r--r-- | src/wkt2_parser.cpp | 2 | ||||
| -rw-r--r-- | test/unit/test_io.cpp | 119 |
10 files changed, 1635 insertions, 1368 deletions
diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index af1c293f..4397ed60 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -150,6 +150,8 @@ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, PROJ_DLL bool hasBallparkTransformation() const; + PROJ_DLL static const std::string OPERATION_VERSION_KEY; + protected: PROJ_INTERNAL CoordinateOperation(); PROJ_INTERNAL CoordinateOperation(const CoordinateOperation &other); @@ -171,6 +173,10 @@ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); PROJ_INTERNAL void setHasBallparkTransformation(bool b); + PROJ_INTERNAL void + setProperties(const util::PropertyMap + &properties); // throw(InvalidValueTypeException) + private: PROJ_OPAQUE_PRIVATE_DATA CoordinateOperation &operator=(const CoordinateOperation &other) = delete; diff --git a/include/proj/internal/io_internal.hpp b/include/proj/internal/io_internal.hpp index 403698db..f614fc67 100644 --- a/include/proj/internal/io_internal.hpp +++ b/include/proj/internal/io_internal.hpp @@ -133,6 +133,7 @@ class WKTConstants { static const std::string BASEENGCRS; static const std::string BASEPARAMCRS; static const std::string BASETIMECRS; + static const std::string VERSION; // WKT2 alternate (longer or shorter) static const std::string GEODETICCRS; diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 57cf9832..80c1a572 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -756,6 +756,15 @@ void CoordinateOperation::setHasBallparkTransformation(bool b) { // --------------------------------------------------------------------------- +void CoordinateOperation::setProperties( + const util::PropertyMap &properties) // throw(InvalidValueTypeException) +{ + ObjectUsage::setProperties(properties); + properties.getStringValue(OPERATION_VERSION_KEY, d->operationVersion_); +} + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress struct OperationMethod::Private { util::optional<std::string> formula_{}; @@ -6175,17 +6184,17 @@ TransformationNNPtr Transformation::create( throw InvalidOperation( "Inconsistent number of parameters and parameter values"); } - auto conv = Transformation::nn_make_shared<Transformation>( + auto transf = Transformation::nn_make_shared<Transformation>( sourceCRSIn, targetCRSIn, interpolationCRSIn, methodIn, values, accuracies); - conv->assignSelf(conv); - conv->setProperties(properties); + transf->assignSelf(transf); + transf->setProperties(properties); std::string name; if (properties.getStringValue(common::IdentifiedObject::NAME_KEY, name) && ci_find(name, "ballpark") != std::string::npos) { - conv->setHasBallparkTransformation(true); + transf->setHasBallparkTransformation(true); } - return conv; + return transf; } // --------------------------------------------------------------------------- @@ -7653,6 +7662,15 @@ void SingleOperation::exportTransformationToWKT( formatter->addQuotedString(nameStr()); + if (isWKT2 && formatter->use2018Keywords()) { + const auto &version = operationVersion(); + if (version.has_value()) { + formatter->startNode(io::WKTConstants::VERSION, false); + formatter->addQuotedString(*version); + formatter->endNode(); + } + } + if (!formatter->abridgedTransformation()) { formatter->startNode(io::WKTConstants::SOURCECRS, false); l_sourceCRS->_exportToWKT(formatter); @@ -9310,6 +9328,15 @@ void ConcatenatedOperation::_exportToWKT(io::WKTFormatter *formatter) const { !identifiers().empty()); formatter->addQuotedString(nameStr()); + if (isWKT2 && formatter->use2018Keywords()) { + const auto &version = operationVersion(); + if (version.has_value()) { + formatter->startNode(io::WKTConstants::VERSION, false); + formatter->addQuotedString(*version); + formatter->endNode(); + } + } + formatter->startNode(io::WKTConstants::SOURCECRS, false); sourceCRS()->_exportToWKT(formatter); formatter->endNode(); diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp index a160a4e3..220ee967 100644 --- a/src/iso19111/io.cpp +++ b/src/iso19111/io.cpp @@ -1581,6 +1581,17 @@ PropertyMap &WKTParser::Private::buildProperties(const WKTNodeNNPtr &node, } } + auto &versionNode = nodeP->lookForChild(WKTConstants::VERSION); + if (!isNull(versionNode)) { + const auto &versionChildren = versionNode->GP()->children(); + if (versionChildren.size() == 1) { + properties->set(CoordinateOperation::OPERATION_VERSION_KEY, + stripQuotes(versionChildren[0])); + } else { + ThrowNotRequiredNumberOfChildren(versionNode->GP()->value()); + } + } + return *properties; } diff --git a/src/iso19111/static.cpp b/src/iso19111/static.cpp index ef2635b5..824047f0 100644 --- a/src/iso19111/static.cpp +++ b/src/iso19111/static.cpp @@ -31,6 +31,7 @@ #endif #include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" #include "proj/coordinatesystem.hpp" #include "proj/crs.hpp" #include "proj/datum.hpp" @@ -57,6 +58,7 @@ using namespace NS_PROJ::crs; using namespace NS_PROJ::datum; using namespace NS_PROJ::io; using namespace NS_PROJ::metadata; +using namespace NS_PROJ::operation; using namespace NS_PROJ::util; NS_PROJ_START @@ -271,6 +273,7 @@ DEFINE_WKT_CONSTANT(BASEVERTCRS); DEFINE_WKT_CONSTANT(BASEENGCRS); DEFINE_WKT_CONSTANT(BASEPARAMCRS); DEFINE_WKT_CONSTANT(BASETIMECRS); +DEFINE_WKT_CONSTANT(VERSION); DEFINE_WKT_CONSTANT(GEODETICCRS); DEFINE_WKT_CONSTANT(GEODETICDATUM); @@ -641,4 +644,13 @@ const GeographicCRSNNPtr // --------------------------------------------------------------------------- +/** \brief Key to set the operation version of a operation::CoordinateOperation + * + * The value is to be provided as a string. + */ +const std::string + operation::CoordinateOperation::OPERATION_VERSION_KEY("operationVersion"); + +// --------------------------------------------------------------------------- + NS_PROJ_END diff --git a/src/wkt2_generated_parser.c b/src/wkt2_generated_parser.c index f6b1f6b1..b3a9eb24 100644 --- a/src/wkt2_generated_parser.c +++ b/src/wkt2_generated_parser.c @@ -211,76 +211,77 @@ extern int pj_wkt2_debug; T_COORDEPOCH = 330, T_COORDINATEMETADATA = 331, T_POINTMOTIONOPERATION = 332, - T_GEODETICCRS = 333, - T_GEODETICDATUM = 334, - T_PROJECTEDCRS = 335, - T_PRIMEMERIDIAN = 336, - T_GEOGRAPHICCRS = 337, - T_TRF = 338, - T_VERTICALCRS = 339, - T_VERTICALDATUM = 340, - T_VRF = 341, - T_TIMEDATUM = 342, - T_TEMPORALQUANTITY = 343, - T_ENGINEERINGDATUM = 344, - T_ENGINEERINGCRS = 345, - T_PARAMETRICDATUM = 346, - T_AFFINE = 347, - T_CARTESIAN = 348, - T_CYLINDRICAL = 349, - T_ELLIPSOIDAL = 350, - T_LINEAR = 351, - T_PARAMETRIC = 352, - T_POLAR = 353, - T_SPHERICAL = 354, - T_VERTICAL = 355, - T_TEMPORAL = 356, - T_TEMPORALCOUNT = 357, - T_TEMPORALMEASURE = 358, - T_ORDINAL = 359, - T_TEMPORALDATETIME = 360, - T_NORTH = 361, - T_NORTHNORTHEAST = 362, - T_NORTHEAST = 363, - T_EASTNORTHEAST = 364, - T_EAST = 365, - T_EASTSOUTHEAST = 366, - T_SOUTHEAST = 367, - T_SOUTHSOUTHEAST = 368, - T_SOUTH = 369, - T_SOUTHSOUTHWEST = 370, - T_SOUTHWEST = 371, - T_WESTSOUTHWEST = 372, - T_WEST = 373, - T_WESTNORTHWEST = 374, - T_NORTHWEST = 375, - T_NORTHNORTHWEST = 376, - T_UP = 377, - T_DOWN = 378, - T_GEOCENTRICX = 379, - T_GEOCENTRICY = 380, - T_GEOCENTRICZ = 381, - T_COLUMNPOSITIVE = 382, - T_COLUMNNEGATIVE = 383, - T_ROWPOSITIVE = 384, - T_ROWNEGATIVE = 385, - T_DISPLAYRIGHT = 386, - T_DISPLAYLEFT = 387, - T_DISPLAYUP = 388, - T_DISPLAYDOWN = 389, - T_FORWARD = 390, - T_AFT = 391, - T_PORT = 392, - T_STARBOARD = 393, - T_CLOCKWISE = 394, - T_COUNTERCLOCKWISE = 395, - T_TOWARDS = 396, - T_AWAYFROM = 397, - T_FUTURE = 398, - T_PAST = 399, - T_UNSPECIFIED = 400, - T_STRING = 401, - T_UNSIGNED_INTEGER_DIFFERENT_ONE_TWO_THREE = 402 + T_VERSION = 333, + T_GEODETICCRS = 334, + T_GEODETICDATUM = 335, + T_PROJECTEDCRS = 336, + T_PRIMEMERIDIAN = 337, + T_GEOGRAPHICCRS = 338, + T_TRF = 339, + T_VERTICALCRS = 340, + T_VERTICALDATUM = 341, + T_VRF = 342, + T_TIMEDATUM = 343, + T_TEMPORALQUANTITY = 344, + T_ENGINEERINGDATUM = 345, + T_ENGINEERINGCRS = 346, + T_PARAMETRICDATUM = 347, + T_AFFINE = 348, + T_CARTESIAN = 349, + T_CYLINDRICAL = 350, + T_ELLIPSOIDAL = 351, + T_LINEAR = 352, + T_PARAMETRIC = 353, + T_POLAR = 354, + T_SPHERICAL = 355, + T_VERTICAL = 356, + T_TEMPORAL = 357, + T_TEMPORALCOUNT = 358, + T_TEMPORALMEASURE = 359, + T_ORDINAL = 360, + T_TEMPORALDATETIME = 361, + T_NORTH = 362, + T_NORTHNORTHEAST = 363, + T_NORTHEAST = 364, + T_EASTNORTHEAST = 365, + T_EAST = 366, + T_EASTSOUTHEAST = 367, + T_SOUTHEAST = 368, + T_SOUTHSOUTHEAST = 369, + T_SOUTH = 370, + T_SOUTHSOUTHWEST = 371, + T_SOUTHWEST = 372, + T_WESTSOUTHWEST = 373, + T_WEST = 374, + T_WESTNORTHWEST = 375, + T_NORTHWEST = 376, + T_NORTHNORTHWEST = 377, + T_UP = 378, + T_DOWN = 379, + T_GEOCENTRICX = 380, + T_GEOCENTRICY = 381, + T_GEOCENTRICZ = 382, + T_COLUMNPOSITIVE = 383, + T_COLUMNNEGATIVE = 384, + T_ROWPOSITIVE = 385, + T_ROWNEGATIVE = 386, + T_DISPLAYRIGHT = 387, + T_DISPLAYLEFT = 388, + T_DISPLAYUP = 389, + T_DISPLAYDOWN = 390, + T_FORWARD = 391, + T_AFT = 392, + T_PORT = 393, + T_STARBOARD = 394, + T_CLOCKWISE = 395, + T_COUNTERCLOCKWISE = 396, + T_TOWARDS = 397, + T_AWAYFROM = 398, + T_FUTURE = 399, + T_PAST = 400, + T_UNSPECIFIED = 401, + T_STRING = 402, + T_UNSIGNED_INTEGER_DIFFERENT_ONE_TWO_THREE = 403 }; #endif @@ -541,21 +542,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 105 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3221 +#define YYLAST 3309 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 163 +#define YYNTOKENS 164 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 339 +#define YYNNTS 350 /* YYNRULES -- Number of rules. */ -#define YYNRULES 670 +#define YYNRULES 687 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1371 +#define YYNSTATES 1411 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 402 +#define YYMAXUTOK 403 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -568,12 +569,12 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 159, 161, 2, 153, 162, 154, 148, 2, 2, 150, - 151, 152, 2, 2, 2, 2, 2, 2, 155, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 149, + 160, 162, 2, 154, 163, 155, 149, 2, 2, 151, + 152, 153, 2, 2, 2, 2, 2, 2, 156, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 156, 2, 2, 2, 2, 2, - 157, 158, 2, 160, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 157, 2, 2, 2, 2, 2, + 158, 159, 2, 161, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -604,81 +605,82 @@ static const yytype_uint8 yytranslate[] = 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147 + 145, 146, 147, 148 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 206, 206, 206, 206, 206, 206, 206, 207, 207, - 207, 208, 211, 211, 212, 212, 212, 213, 215, 215, - 219, 223, 223, 225, 227, 229, 229, 231, 231, 233, - 235, 237, 239, 241, 241, 243, 243, 245, 245, 245, - 245, 247, 247, 251, 253, 257, 258, 259, 261, 261, - 263, 265, 267, 269, 273, 274, 277, 278, 280, 282, - 284, 287, 288, 289, 291, 293, 295, 295, 297, 300, - 301, 303, 303, 308, 308, 310, 310, 312, 314, 316, - 320, 321, 324, 325, 326, 328, 328, 329, 332, 333, - 337, 338, 339, 343, 344, 345, 346, 348, 352, 354, - 357, 359, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 397, 399, 401, 405, 410, 412, 414, 416, - 418, 422, 427, 428, 430, 432, 434, 438, 442, 444, - 444, 446, 446, 451, 456, 457, 458, 459, 460, 461, - 462, 464, 466, 468, 468, 470, 470, 472, 474, 476, - 478, 480, 482, 486, 488, 492, 492, 495, 498, 503, - 503, 503, 503, 503, 506, 511, 511, 511, 511, 514, - 518, 519, 521, 537, 541, 542, 544, 544, 546, 546, - 552, 552, 554, 556, 563, 563, 563, 565, 572, 573, - 574, 575, 577, 584, 591, 592, 593, 595, 597, 597, - 597, 597, 597, 597, 597, 597, 597, 600, 600, 600, - 602, 602, 604, 604, 604, 606, 611, 617, 622, 625, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 639, - 640, 641, 642, 643, 644, 645, 646, 649, 650, 651, - 652, 653, 654, 655, 656, 659, 660, 663, 664, 665, - 666, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 682, 683, 684, 685, 688, 689, 690, 691, 694, 695, - 698, 699, 704, 705, 708, 709, 710, 711, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 748, 749, 751, 754, 756, 758, 760, 762, - 764, 780, 780, 782, 790, 791, 793, 794, 796, 804, - 805, 807, 809, 811, 816, 817, 819, 821, 823, 825, - 827, 829, 831, 836, 840, 842, 845, 848, 849, 850, - 852, 853, 855, 860, 861, 863, 863, 865, 869, 869, - 869, 871, 871, 873, 881, 890, 898, 908, 909, 911, - 913, 913, 915, 915, 918, 919, 923, 929, 930, 931, - 933, 933, 935, 937, 939, 943, 948, 948, 950, 953, - 954, 958, 963, 963, 963, 965, 967, 968, 969, 970, - 972, 975, 977, 981, 987, 987, 991, 991, 992, 992, - 994, 999, 1000, 1001, 1002, 1004, 1010, 1015, 1021, 1023, - 1025, 1027, 1031, 1037, 1038, 1039, 1041, 1043, 1045, 1049, - 1049, 1051, 1053, 1058, 1059, 1061, 1063, 1065, 1067, 1071, - 1071, 1073, 1079, 1086, 1086, 1089, 1096, 1097, 1098, 1099, - 1100, 1102, 1106, 1108, 1110, 1110, 1114, 1119, 1119, 1119, - 1123, 1128, 1128, 1130, 1134, 1134, 1138, 1143, 1145, 1149, - 1149, 1153, 1158, 1160, 1164, 1165, 1166, 1167, 1168, 1170, - 1170, 1172, 1175, 1177, 1177, 1179, 1181, 1183, 1187, 1193, - 1194, 1195, 1196, 1198, 1200, 1204, 1209, 1211, 1214, 1219, - 1223, 1229, 1229, 1229, 1229, 1229, 1229, 1233, 1238, 1240, - 1245, 1245, 1246, 1248, 1248, 1250, 1257, 1257, 1259, 1266, - 1266, 1268, 1275, 1282, 1287, 1288, 1290, 1296, 1301, 1309, - 1315, 1317, 1319, 1324, 1326, 1326, 1327, 1327, 1331, 1337, - 1337, 1339, 1342, 1346, 1351, 1357, 1360, 1365, 1371, 1374, - 1379, 1385, 1388, 1393, 1399, 1399, 1400, 1400, 1401, 1401, - 1402, 1402, 1403, 1403, 1404, 1404, 1407, 1407, 1409, 1410, - 1411, 1413, 1415, 1419, 1422, 1422, 1425, 1426, 1427, 1429, - 1433, 1434, 1436, 1438, 1438, 1439, 1439, 1440, 1440, 1440, - 1441, 1442, 1442, 1443, 1443, 1444, 1444, 1446, 1446, 1447, - 1447, 1448, 1449, 1449, 1453, 1459, 1460, 1461, 1462, 1463, - 1464, 1465, 1467, 1469, 1471, 1473, 1475, 1477, 1479, 1481, - 1483, 1485, 1490, 1496, 1497, 1498, 1499, 1500, 1502, 1507, - 1515, 1515, 1515, 1515, 1517, 1518, 1519, 1520, 1522, 1524, - 1529, 1535, 1537, 1544, 1544, 1546, 1547, 1548, 1549, 1551, - 1553 + 0, 207, 207, 207, 207, 207, 207, 207, 208, 208, + 208, 209, 212, 212, 213, 213, 213, 214, 216, 216, + 220, 224, 224, 226, 228, 230, 230, 232, 232, 234, + 236, 238, 240, 242, 242, 244, 244, 246, 246, 246, + 246, 248, 248, 252, 254, 258, 259, 260, 262, 262, + 264, 266, 268, 270, 274, 275, 278, 279, 281, 283, + 285, 288, 289, 290, 292, 294, 296, 296, 298, 301, + 302, 304, 304, 309, 309, 311, 311, 313, 315, 317, + 321, 322, 325, 326, 327, 329, 329, 330, 333, 334, + 338, 339, 340, 344, 345, 346, 347, 349, 353, 355, + 358, 360, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 398, 400, 402, 406, 411, 413, 415, 417, + 419, 423, 428, 429, 431, 433, 435, 439, 443, 445, + 445, 447, 447, 452, 457, 458, 459, 460, 461, 462, + 463, 465, 467, 469, 469, 471, 471, 473, 475, 477, + 479, 481, 483, 487, 489, 493, 493, 496, 499, 504, + 504, 504, 504, 504, 507, 512, 512, 512, 512, 515, + 519, 520, 522, 538, 542, 543, 545, 545, 547, 547, + 553, 553, 555, 557, 564, 564, 564, 566, 573, 574, + 575, 576, 578, 585, 592, 593, 594, 596, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 601, 601, 601, + 603, 603, 605, 605, 605, 607, 612, 618, 623, 626, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, + 641, 642, 643, 644, 645, 646, 647, 650, 651, 652, + 653, 654, 655, 656, 657, 660, 661, 664, 665, 666, + 667, 672, 673, 674, 675, 676, 677, 678, 679, 680, + 683, 684, 685, 686, 689, 690, 691, 692, 695, 696, + 699, 700, 705, 706, 709, 710, 711, 712, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 752, 755, 757, 759, 761, 763, + 765, 781, 781, 783, 791, 792, 794, 795, 797, 805, + 806, 808, 810, 812, 817, 818, 820, 822, 824, 826, + 828, 830, 832, 837, 841, 843, 846, 849, 850, 851, + 853, 854, 856, 861, 862, 864, 864, 866, 870, 870, + 870, 872, 872, 874, 882, 891, 899, 909, 910, 912, + 914, 914, 916, 916, 919, 920, 924, 930, 931, 932, + 934, 934, 936, 938, 940, 944, 949, 949, 951, 954, + 955, 959, 964, 964, 964, 966, 968, 969, 970, 971, + 973, 976, 978, 982, 988, 988, 992, 992, 993, 993, + 995, 1000, 1001, 1002, 1003, 1004, 1006, 1012, 1017, 1023, + 1025, 1027, 1029, 1033, 1039, 1040, 1041, 1043, 1045, 1047, + 1051, 1051, 1053, 1055, 1060, 1061, 1063, 1065, 1067, 1069, + 1073, 1073, 1075, 1081, 1088, 1088, 1091, 1098, 1099, 1100, + 1101, 1102, 1104, 1108, 1110, 1112, 1112, 1116, 1121, 1121, + 1121, 1125, 1130, 1130, 1132, 1136, 1136, 1140, 1145, 1147, + 1151, 1151, 1155, 1160, 1162, 1166, 1167, 1168, 1169, 1170, + 1172, 1172, 1174, 1177, 1179, 1179, 1181, 1183, 1185, 1189, + 1195, 1196, 1197, 1198, 1200, 1202, 1206, 1211, 1213, 1216, + 1221, 1225, 1231, 1231, 1231, 1231, 1231, 1231, 1235, 1240, + 1242, 1247, 1247, 1248, 1250, 1250, 1252, 1259, 1259, 1261, + 1268, 1268, 1270, 1277, 1284, 1289, 1290, 1291, 1293, 1299, + 1304, 1312, 1318, 1320, 1322, 1328, 1330, 1330, 1331, 1331, + 1335, 1341, 1341, 1343, 1348, 1354, 1359, 1365, 1370, 1375, + 1381, 1386, 1391, 1397, 1402, 1407, 1413, 1413, 1414, 1414, + 1415, 1415, 1416, 1416, 1417, 1417, 1418, 1418, 1421, 1421, + 1423, 1424, 1425, 1427, 1429, 1433, 1436, 1436, 1439, 1440, + 1441, 1443, 1447, 1448, 1450, 1452, 1452, 1453, 1453, 1454, + 1454, 1454, 1455, 1456, 1456, 1457, 1457, 1458, 1458, 1460, + 1460, 1461, 1461, 1462, 1463, 1463, 1467, 1471, 1472, 1475, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1488, 1490, 1492, + 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511, 1513, + 1518, 1522, 1523, 1526, 1531, 1532, 1533, 1534, 1535, 1537, + 1542, 1547, 1548, 1551, 1557, 1557, 1557, 1557, 1559, 1560, + 1561, 1562, 1564, 1566, 1571, 1577, 1579, 1584, 1585, 1588, + 1594, 1594, 1596, 1597, 1598, 1599, 1601, 1603 }; #endif @@ -707,13 +709,13 @@ static const char *const yytname[] = "\"PARAMETRICCRS\"", "\"PARAMETRICUNIT\"", "\"BASEVERTCRS\"", "\"BASEENGCRS\"", "\"BASEPARAMCRS\"", "\"BASETIMECRS\"", "\"EPOCH\"", "\"COORDEPOCH\"", "\"COORDINATEMETADATA\"", "\"POINTMOTIONOPERATION\"", - "\"GEODETICCRS\"", "\"GEODETICDATUM\"", "\"PROJECTEDCRS\"", - "\"PRIMEMERIDIAN\"", "\"GEOGRAPHICCRS\"", "\"TRF\"", "\"VERTICALCRS\"", - "\"VERTICALDATUM\"", "\"VRF\"", "\"TIMEDATUM\"", "\"TEMPORALQUANTITY\"", - "\"ENGINEERINGDATUM\"", "\"ENGINEERINGCRS\"", "\"PARAMETRICDATUM\"", - "\"affine\"", "\"Cartesian\"", "\"cylindrical\"", "\"ellipsoidal\"", - "\"linear\"", "\"parametric\"", "\"polar\"", "\"spherical\"", - "\"vertical\"", "\"temporal\"", "\"temporalCount\"", + "\"VERSION\"", "\"GEODETICCRS\"", "\"GEODETICDATUM\"", + "\"PROJECTEDCRS\"", "\"PRIMEMERIDIAN\"", "\"GEOGRAPHICCRS\"", "\"TRF\"", + "\"VERTICALCRS\"", "\"VERTICALDATUM\"", "\"VRF\"", "\"TIMEDATUM\"", + "\"TEMPORALQUANTITY\"", "\"ENGINEERINGDATUM\"", "\"ENGINEERINGCRS\"", + "\"PARAMETRICDATUM\"", "\"affine\"", "\"Cartesian\"", "\"cylindrical\"", + "\"ellipsoidal\"", "\"linear\"", "\"parametric\"", "\"polar\"", + "\"spherical\"", "\"vertical\"", "\"temporal\"", "\"temporalCount\"", "\"temporalMeasure\"", "\"ordinal\"", "\"temporalDateTime\"", "\"north\"", "\"northNorthEast\"", "\"northEast\"", "\"eastNorthEast\"", "\"east\"", "\"eastSouthEast\"", "\"southEast\"", "\"southSouthEast\"", @@ -819,12 +821,12 @@ static const char *const yytname[] = "opt_separator_datum_anchor_identifier_list", "datum_anchor", "datum_anchor_keyword", "datum_anchor_description", "projected_crs", "projected_crs_keyword", "base_geodetic_crs", "base_static_geodetic_crs", - "opt_separator_pm_ellipsoidal_cs_unit", "base_dynamic_geodetic_crs", - "base_static_geographic_crs", "base_dynamic_geographic_crs", - "base_geodetic_crs_keyword", "base_geographic_crs_keyword", - "base_crs_name", "ellipsoidal_cs_unit", "map_projection", - "opt_separator_parameter_list_identifier_list", "map_projection_keyword", - "map_projection_name", "map_projection_method", + "opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list", + "base_dynamic_geodetic_crs", "base_static_geographic_crs", + "base_dynamic_geographic_crs", "base_geodetic_crs_keyword", + "base_geographic_crs_keyword", "base_crs_name", "ellipsoidal_cs_unit", + "map_projection", "opt_separator_parameter_list_identifier_list", + "map_projection_keyword", "map_projection_name", "map_projection_method", "map_projection_method_keyword", "map_projection_method_name", "map_projection_parameter", "opt_separator_param_unit_identifier_list", "parameter_keyword", "parameter_name", "parameter_value", @@ -857,10 +859,10 @@ static const char *const yytname[] = "derived_dynamic_geod_crs", "base_dynamic_geod_crs_or_base_dynamic_geog_crs", "derived_static_geog_crs", "derived_dynamic_geog_crs", - "base_static_geod_crs", "opt_separator_pm", "base_dynamic_geod_crs", - "base_static_geog_crs", "base_dynamic_geog_crs", "derived_projected_crs", - "derived_projected_crs_keyword", "derived_crs_name", - "base_projected_crs", "base_projected_crs_keyword", + "base_static_geod_crs", "opt_separator_pm_opt_separator_identifier_list", + "base_dynamic_geod_crs", "base_static_geog_crs", "base_dynamic_geog_crs", + "derived_projected_crs", "derived_projected_crs_keyword", + "derived_crs_name", "base_projected_crs", "base_projected_crs_keyword", "base_geodetic_geographic_crs", "derived_vertical_crs", "base_vertical_crs", "base_static_vertical_crs", "base_dynamic_vertical_crs", "base_vertical_crs_keyword", @@ -874,17 +876,23 @@ static const char *const yytname[] = "coordinate_epoch_keyword", "coordinate_epoch", "coordinate_metadata", "coordinate_metadata_crs", "coordinate_metadata_keyword", "static_crs_coordinate_metadata", "dynamic_crs_coordinate_metadata", - "coordinate_operation", + "coordinate_operation", "coordinate_operation_next", + "coordinate_operation_end", "opt_parameter_or_parameter_file_list_opt_interpolation_crs_opt_operation_accuracy_opt_separator_scope_extent_identifier_remark", - "operation_keyword", "operation_name", "source_crs", + "operation_keyword", "operation_name", "operation_version", + "operation_version_keyword", "operation_version_text", "source_crs", "source_crs_keyword", "target_crs", "target_crs_keyword", "interpolation_crs", "interpolation_crs_keyword", "operation_accuracy", "operation_accuracy_keyword", "point_motion_operation", + "point_motion_operation_next", "point_motion_operation_end", "opt_parameter_or_parameter_file_list_opt_operation_accuracy_opt_separator_scope_extent_identifier_remark", - "point_motion_keyword", "concatenated_operation", "step", + "point_motion_keyword", "concatenated_operation", + "concatenated_operation_next", "concatenated_operation_end", "step", "opt_concatenated_operation_end", "concatenated_operation_keyword", "step_keyword", "bound_crs", "bound_crs_keyword", "abridged_coordinate_transformation", + "abridged_coordinate_transformation_next", + "abridged_coordinate_transformation_end", "abridged_parameter_or_parameter_file", "opt_end_abridged_coordinate_transformation", "abridged_transformation_keyword", "abridged_transformation_parameter", YY_NULLPTR @@ -910,18 +918,18 @@ static const yytype_uint16 yytoknum[] = 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 46, 69, - 49, 50, 51, 43, 45, 58, 84, 90, 91, 40, - 93, 41, 44 + 395, 396, 397, 398, 399, 400, 401, 402, 403, 46, + 69, 49, 50, 51, 43, 45, 58, 84, 90, 91, + 40, 93, 41, 44 }; # endif -#define YYPACT_NINF -1145 +#define YYPACT_NINF -1187 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-1145))) + (!!((Yystate) == (-1187))) -#define YYTABLE_NINF -624 +#define YYTABLE_NINF -626 #define yytable_value_is_error(Yytable_value) \ 0 @@ -930,144 +938,148 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 799, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, 132, -1145, -1145, - -1145, 304, -1145, -1145, -1145, 304, -1145, -1145, -1145, -1145, - -1145, -1145, 304, 304, -1145, 304, -1145, 304, -1145, 304, - -1145, 304, -1145, -1145, -1145, 304, -1145, 304, -1145, 304, - -1145, 304, -1145, 304, -1145, 304, -1145, 304, -1145, 304, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, 304, -1145, -1145, - -1145, -1145, -1145, -1145, 304, -1145, 304, -1145, 304, -1145, - 304, -1145, 304, -1145, 304, -1145, -1145, -1145, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 1044, 30, 30, 30, - 170, -1145, -1145, 61, -1145, 61, -1145, 61, 61, -1145, - 61, -1145, 61, 61, -1145, 61, 61, 61, 61, 61, - 61, 61, 61, 61, -1145, 61, -1145, 61, -1145, -1145, - -1145, -1145, 78, -1145, -1145, -1145, -1145, -1145, 148, 229, - 241, -1145, -1145, -1145, -1145, 315, -1145, 61, -1145, 61, - 61, 61, -1145, 61, 304, -1145, 922, 284, 445, 445, - 577, 345, 279, 321, 412, 342, 315, 250, 315, 393, - 315, 67, 280, 315, 351, 1285, -1145, -1145, -1145, 446, - 170, 170, 170, 381, 1044, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, 624, -1145, -1145, -1145, -1145, 299, 302, 307, - 577, -1145, 61, -1145, 61, 304, -1145, -1145, -1145, -1145, - 304, 61, 304, 61, -1145, 304, 304, 61, 61, -1145, - -1145, -1145, -1145, 61, 61, 61, 61, -1145, 61, 61, - 61, -1145, -1145, -1145, -1145, 304, 304, -1145, -1145, 61, - 304, -1145, -1145, 304, 61, 61, -1145, 61, -1145, -1145, - 304, -1145, 61, 61, 304, -1145, -1145, 61, 61, 304, - -1145, -1145, 61, 61, 304, -1145, -1145, 61, 61, 304, - -1145, -1145, 61, 61, 304, 61, 304, -1145, -1145, 61, - 304, -1145, 61, -1145, -1145, -1145, -1145, 304, 61, 61, - 61, -1145, 61, 304, 315, -1145, 400, 624, -1145, -1145, - 365, 315, 122, 315, 315, 30, 30, 115, 402, 127, - 30, 30, 419, 419, 115, 127, 419, 419, 577, 315, - 456, 30, 30, 423, 315, 30, 30, 189, 480, 419, - 30, 490, -1145, 490, 30, 480, 419, 30, 480, 419, - 30, 480, 419, 30, -1145, -1145, 506, 146, -1145, 30, - 419, 30, 1285, 624, 381, 485, 381, 487, 1044, -1145, - 624, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, 61, - 61, 304, -1145, 304, -1145, -1145, 61, 61, 304, 61, - -1145, -1145, -1145, 61, 61, 61, -1145, 61, 304, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, 304, 315, 61, 304, - -1145, 61, 61, -1145, 61, 304, 61, 61, 315, 61, - 61, -1145, 61, -1145, 61, 61, 61, -1145, 61, 61, - 304, -1145, -1145, 61, 61, 61, 304, 315, 61, 61, - 61, 61, -1145, 315, 315, 61, 61, 315, 61, 61, - 315, 61, 61, -1145, -1145, 376, -1145, 315, 61, -1145, - 315, 61, 61, 61, 307, 315, 61, -1145, 61, 304, - 61, -1145, 61, 304, 315, -1145, 510, 505, 30, 30, - -1145, -1145, 490, -1145, 752, 515, 490, 315, 284, 127, - 532, 315, 624, 1049, -1145, 480, 30, 272, 272, 480, - 30, 480, 127, -1145, 480, 480, 470, 315, 480, 272, - 272, -1145, -1145, 30, 315, 284, 480, 1313, -1145, 480, - 106, -1145, -1145, -1145, -1145, 480, 100, -1145, 480, 152, - -1145, 480, 74, -1145, -1145, 624, -1145, -1145, 624, -1145, - -1145, -1145, 480, 279, 953, 315, 624, -1145, 485, 1361, - 315, 30, 502, 843, 315, 30, -1145, 61, -1145, -1145, - 315, -1145, 315, -1145, 61, -1145, 315, 61, -1145, 61, - -1145, 61, 315, -1145, -1145, -1145, 304, -1145, 307, 315, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, 61, 61, 61, -1145, -1145, 61, - 61, 61, 61, 61, 315, -1145, 61, 315, 315, 315, - 315, -1145, -1145, 61, 61, 304, -1145, 315, 61, 61, - 61, 61, -1145, 61, -1145, 61, 315, 61, 315, 61, - 315, 315, 315, 315, 315, 315, 315, 428, 418, -1145, - 534, 315, -1145, -1145, -1145, -1145, 61, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, 61, 304, - 61, 304, -1145, 61, 304, 61, 304, 61, 304, 61, - 304, 61, -1145, 304, 61, -1145, -1145, 61, -1145, -1145, - -1145, 304, 61, 61, 304, 61, 304, -1145, -1145, 61, - -1145, 304, -1145, -1145, 61, 505, -1145, -1145, -1145, -1145, - -1145, -1145, 110, -1145, 30, 624, -1145, 409, 409, 409, - 400, 115, 89, 315, 115, 315, -1145, 485, -1145, -1145, - -1145, -1145, -1145, -1145, 30, -1145, 115, 105, 315, 115, - 315, 400, 569, -1145, 409, -1145, 189, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, 624, -1145, -1145, 624, 624, - -1145, 431, -1145, -1145, -1145, -1145, 456, 130, 566, 469, - -1145, 30, 340, -1145, 30, 183, -1145, 752, 282, -1145, - 752, 335, -1145, 506, -1145, 453, -1145, 1330, 315, 30, - -1145, -1145, 30, -1145, 752, 490, 315, 90, 485, -1145, - 61, -1145, 61, -1145, -1145, -1145, -1145, 61, 61, 61, - 61, 577, 315, 61, -1145, -1145, 61, -1145, 61, -1145, - 61, 61, -1145, -1145, -1145, 304, 61, -1145, -1145, 61, - -1145, -1145, 61, 61, 61, 315, -1145, 449, 431, -1145, - 534, 624, -1145, 315, -1145, 61, -1145, 61, -1145, 61, - -1145, -1145, 315, 61, 61, 61, -1145, 315, 61, 61, - -1145, 61, 61, -1145, 61, -1145, -1145, 61, -1145, 315, - -1145, -1145, 61, 61, 61, 304, 61, -1145, 61, 61, - 315, -1145, -1145, -1145, -1145, -1145, -1145, 315, 61, 315, - 315, 315, 315, 497, -1145, -1145, -1145, 315, 315, 339, - 315, 577, 315, 30, 157, 315, 616, 315, 315, -1145, - -1145, -1145, 624, -1145, -1145, -1145, -1145, -1145, 273, -1145, - -1145, 183, -1145, 282, -1145, -1145, -1145, 282, -1145, -1145, - 752, -1145, 752, 506, -1145, -1145, -1145, 801, -1145, 1044, - -1145, 400, 30, -1145, 61, 221, -1145, 61, 61, 61, - 61, -1145, -1145, 61, 61, 61, -1145, -1145, 61, -1145, - 61, -1145, -1145, -1145, -1145, -1145, -1145, -1145, 304, 61, - -1145, 61, -1145, -1145, 802, 315, 61, 61, 61, -1145, - 61, 61, 61, 61, -1145, 61, -1145, 61, -1145, -1145, - 315, 61, 315, 61, -1145, 61, 502, 304, -1145, 61, - -1145, 599, 599, 599, -1145, -1145, -1145, -1145, 315, 577, - 30, -1145, 599, 761, -1145, -1145, 347, 583, 559, 282, - -1145, -1145, -1145, -1145, 752, 395, 315, -1145, -1145, -1145, - 305, 315, 304, 30, 1085, 315, -1145, 61, 304, 61, - 304, 61, 304, -1145, 61, 61, 61, 328, 761, -1145, - 61, 61, -1145, 61, -1145, -1145, 61, -1145, 61, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, 61, -1145, 304, - -1145, 90, 61, -1145, 61, 61, -1145, 666, -1145, 30, - -1145, 30, 715, -1145, 30, 315, 577, 912, -1145, -1145, - 583, 559, 559, -1145, 752, 315, 30, 315, 400, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, 304, -1145, 304, 61, 61, -1145, 61, 61, - -1145, 61, 61, -1145, 61, -1145, -1145, 61, 61, 304, - 61, -1145, -1145, -1145, -1145, 315, -1145, 61, 61, 61, - 30, 30, -1145, -1145, 1410, 1663, -1145, 1450, 315, 1160, - -1145, -1145, 30, 559, -1145, 577, 315, 943, 315, 315, - 61, 61, 61, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - 61, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, 61, 61, -1145, -1145, -1145, - -1145, -1145, 315, -1145, 61, 61, 61, 61, 61, 61, - 315, -1145, 61, -1145, 61, -1145, 61, -1145, 61, -1145, - -1145, 61, 304, -1145, -1145, 577, 315, 524, 524, 696, - 696, -1145, 597, 117, 315, 523, 524, 545, 545, -1145, - 358, -1145, 315, -1145, -1145, 90, 61, -1145, -1145, -1145, - 61, 61, -1145, 61, 304, 61, 304, -1145, -1145, 61, - 61, -1145, 61, 304, 61, -1145, 61, 61, -1145, 61, - 61, 61, -1145, 61, -1145, 61, -1145, 61, 61, -1145, - 61, -1145, 61, 61, -1145, 61, -1145, 61, -1145, 315, - 315, -1145, -1145, 597, -1145, 752, 397, -1145, 624, -1145, - -1145, 597, -1145, 752, 397, -1145, -1145, -1145, 397, -1145, - -1145, -1145, 134, -1145, -1145, 358, -1145, -1145, -1145, 358, - -1145, -1145, -1145, -1145, 61, -1145, 61, 61, 61, 61, - 315, 61, 61, 315, 61, 61, 61, 61, 61, -1145, - -1145, 397, -1145, 157, -1145, -1145, -1145, 397, -1145, -1145, - -1145, -1145, -1145, -1145, -1145, 61, 315, 61, -1145, -1145, - -1145 + 820, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, 147, -1187, -1187, + -1187, 213, -1187, -1187, -1187, 213, -1187, -1187, -1187, -1187, + -1187, -1187, 213, 213, -1187, 213, -1187, 213, -1187, 213, + -1187, 213, -1187, -1187, -1187, 213, -1187, 213, -1187, 213, + -1187, 213, -1187, 213, -1187, 213, -1187, 213, -1187, 213, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, 213, -1187, -1187, + -1187, -1187, -1187, -1187, 213, -1187, 213, -1187, 213, -1187, + 213, -1187, 213, -1187, 213, -1187, -1187, -1187, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 928, 19, 19, 19, + 164, -1187, -1187, 17, -1187, 17, -1187, 17, 17, -1187, + 17, -1187, 17, 17, -1187, 17, 17, 17, 17, 17, + 17, 17, 17, 17, -1187, 17, -1187, 17, -1187, -1187, + -1187, -1187, 78, -1187, -1187, -1187, -1187, -1187, 94, 167, + 185, -1187, -1187, -1187, -1187, 345, -1187, 17, -1187, 17, + 17, 17, -1187, 17, 213, -1187, 1290, 154, 97, 97, + 680, 330, 412, 301, 499, 113, 345, 304, 345, 312, + 345, 160, 255, 345, 231, 1501, -1187, -1187, -1187, 487, + 100, -1187, -1187, 100, -1187, -1187, 100, -1187, -1187, 382, + 928, -1187, -1187, -1187, -1187, -1187, -1187, -1187, 385, -1187, + -1187, -1187, -1187, 292, 299, 317, 680, -1187, 17, -1187, + 17, 213, -1187, -1187, -1187, -1187, 213, 17, 213, 17, + -1187, 213, 213, 17, 17, -1187, -1187, -1187, -1187, 17, + 17, 17, 17, -1187, 17, 17, 17, -1187, -1187, -1187, + -1187, 213, 213, -1187, -1187, 17, 213, -1187, -1187, 213, + 17, 17, -1187, 17, -1187, -1187, 213, -1187, 17, 17, + 213, -1187, -1187, 17, 17, 213, -1187, -1187, 17, 17, + 213, -1187, -1187, 17, 17, 213, -1187, -1187, 17, 17, + 213, 17, 213, -1187, -1187, 17, 213, -1187, 17, -1187, + -1187, -1187, -1187, 213, -1187, 17, 213, 17, 17, 17, + 17, 17, -1187, 17, 213, 345, -1187, 459, 385, -1187, + -1187, 329, 345, 157, 345, 345, 19, 19, 102, 422, + 112, 19, 19, 442, 442, 102, 112, 442, 442, 680, + 345, 470, 19, 19, 243, 345, 19, 19, 242, 496, + 442, 19, 486, -1187, 486, 19, 496, 442, 19, 496, + 442, 19, 496, 442, 19, -1187, -1187, 669, 107, -1187, + 19, 442, 19, 1501, 385, 164, -1187, 19, 382, 164, + -1187, 505, 164, -1187, 382, 493, 928, -1187, 385, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, 17, 17, 213, + -1187, 213, -1187, -1187, 17, 17, 213, 17, -1187, -1187, + -1187, 17, 17, 17, -1187, 17, 213, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, 213, 345, 17, 213, -1187, 17, + 17, -1187, 17, 213, 17, 17, 345, 17, 17, -1187, + 17, -1187, 17, 17, 17, -1187, 17, 17, 213, -1187, + -1187, 17, 17, 17, 213, 345, 17, 17, 17, 17, + -1187, 345, 345, 17, 17, 345, 17, 17, 345, 17, + 17, -1187, -1187, 363, -1187, 345, 17, -1187, 345, 17, + 17, 17, 317, 345, -1187, 345, 17, -1187, 17, 213, + 17, -1187, 17, 213, 345, -1187, 489, 514, 19, 19, + -1187, -1187, 486, -1187, 1298, 506, 486, 345, 154, 112, + 565, 345, 385, 1217, -1187, 496, 19, 90, 90, 496, + 19, 496, 112, -1187, 496, 496, 327, 345, 496, 90, + 90, -1187, -1187, 19, 345, 154, 496, 1258, -1187, 496, + 364, -1187, -1187, -1187, -1187, 496, 108, -1187, 496, 245, + -1187, 496, 72, -1187, -1187, 385, -1187, -1187, 385, -1187, + -1187, -1187, 496, 412, 1402, 345, 385, -1187, -1187, 505, + 694, 345, 19, 534, 1206, 345, 19, -1187, 17, -1187, + -1187, 345, -1187, 345, -1187, 17, -1187, 345, 17, -1187, + 17, -1187, 17, 345, -1187, -1187, -1187, 213, -1187, 317, + 345, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, 17, 17, 17, -1187, -1187, + 17, 17, 17, 17, 17, 345, -1187, 17, 345, 345, + 345, 345, -1187, -1187, 17, 17, 213, -1187, 345, 17, + 17, 17, 17, -1187, 17, -1187, 17, 345, 17, 345, + 17, 17, 345, 17, 345, 17, 345, 17, 386, 427, + -1187, 635, 345, -1187, -1187, -1187, -1187, 17, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, 17, + 213, 17, 213, -1187, 17, 213, 17, 213, 17, 213, + 17, 213, 17, -1187, 213, 17, -1187, -1187, 17, -1187, + -1187, -1187, 213, 17, 17, 213, 17, 213, -1187, -1187, + 17, -1187, 213, -1187, -1187, 17, 514, -1187, -1187, -1187, + -1187, -1187, -1187, 140, -1187, 19, 385, -1187, 398, 398, + 398, 459, 102, 131, 345, 102, 345, -1187, 505, -1187, + -1187, -1187, -1187, -1187, -1187, 19, -1187, 102, 132, 345, + 102, 345, 459, 568, -1187, 398, -1187, 242, 345, -1187, + 345, -1187, 345, -1187, 345, -1187, 385, -1187, -1187, 385, + 385, -1187, 437, -1187, -1187, -1187, -1187, 470, 315, 572, + 754, -1187, 19, 527, -1187, 19, 323, -1187, 1298, 115, + -1187, 1298, 474, -1187, 669, -1187, 462, -1187, 688, 345, + 19, -1187, -1187, 19, -1187, 1298, 486, 345, 151, 101, + -1187, -1187, -1187, 17, -1187, 17, -1187, -1187, -1187, -1187, + 17, 17, 17, 17, 680, 345, 17, 17, 17, -1187, + 17, -1187, 17, -1187, 17, 17, -1187, -1187, 17, -1187, + 213, 17, 17, -1187, 17, -1187, -1187, 17, 17, 17, + 17, -1187, -1187, -1187, -1187, -1187, 449, 437, -1187, 635, + 385, -1187, 17, -1187, 17, -1187, 17, -1187, 17, -1187, + -1187, 345, 17, 17, 17, -1187, 345, 17, 17, -1187, + 17, 17, -1187, 17, -1187, -1187, 17, -1187, 345, -1187, + -1187, 17, 17, 17, 213, 17, -1187, 17, 17, 345, + -1187, -1187, -1187, -1187, -1187, -1187, 345, 17, 17, 345, + 345, 345, 345, 390, -1187, -1187, -1187, 345, -1187, -1187, + 345, 179, 345, 680, 345, -1187, 19, 390, -1187, -1187, + 345, 733, 345, 345, 345, -1187, -1187, 385, -1187, -1187, + -1187, 345, -1187, 457, -1187, -1187, 323, -1187, 115, -1187, + -1187, -1187, 115, -1187, -1187, 1298, -1187, 1298, 669, -1187, + -1187, -1187, 991, -1187, 928, -1187, 459, 19, -1187, 17, + 114, 505, -1187, -1187, 17, 17, 17, 17, -1187, -1187, + 17, 17, 17, -1187, -1187, 17, -1187, 17, 17, -1187, + -1187, -1187, -1187, -1187, -1187, 213, 17, -1187, 17, -1187, + -1187, -1187, 1034, -1187, 345, 17, 17, 17, -1187, 17, + 17, 17, 17, -1187, 17, -1187, 17, -1187, -1187, 345, + 17, 345, 17, -1187, 17, 534, 213, -1187, 17, -1187, + 596, 596, 596, -1187, -1187, -1187, -1187, 345, 680, -1187, + 19, -1187, 596, 1148, -1187, -1187, 190, 591, 557, 115, + -1187, -1187, -1187, -1187, 1298, 376, 345, -1187, -1187, -1187, + 287, 345, 213, 19, 972, 345, -1187, 17, 213, 17, + 213, 17, 213, -1187, 17, 17, 17, 204, 1148, -1187, + 17, 17, -1187, 17, -1187, -1187, 17, -1187, 17, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, 17, -1187, 213, + -1187, 151, 17, -1187, 17, 17, -1187, 906, -1187, 19, + -1187, 19, 566, -1187, 19, 345, 680, 1240, -1187, -1187, + 591, 557, 557, -1187, 1298, 345, 19, 345, 459, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, 213, -1187, 213, 17, 17, -1187, 17, 17, + -1187, 17, 17, -1187, 17, -1187, -1187, 17, 17, 213, + 17, -1187, -1187, -1187, -1187, 345, -1187, 17, 17, 17, + 19, 19, -1187, -1187, 1544, 1736, -1187, 1584, 345, 1080, + -1187, -1187, 19, 557, -1187, 680, 345, 899, 345, 345, + 17, 17, 17, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + 17, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, 17, 17, -1187, -1187, -1187, + -1187, -1187, 345, -1187, 17, 17, 17, 17, 17, 17, + 345, -1187, 17, -1187, 17, -1187, 17, -1187, 17, -1187, + -1187, 17, 213, -1187, -1187, 680, 345, 417, 417, 625, + 625, -1187, 605, 137, 345, 447, 417, 404, 404, -1187, + 476, -1187, 345, -1187, -1187, 151, 17, -1187, -1187, -1187, + 17, 17, -1187, 17, 213, 17, 213, -1187, -1187, 17, + 17, -1187, 17, 213, 17, -1187, 17, 17, -1187, 17, + 17, 17, -1187, 17, -1187, 17, -1187, 17, 17, -1187, + 17, -1187, 17, 17, -1187, 17, -1187, 17, -1187, 345, + 345, -1187, -1187, 605, -1187, 1298, 379, -1187, 385, -1187, + -1187, 605, -1187, 1298, 379, -1187, -1187, -1187, 379, -1187, + -1187, -1187, 103, -1187, -1187, 476, -1187, -1187, -1187, 476, + -1187, -1187, -1187, -1187, 17, -1187, 17, 17, 17, 17, + 345, 17, 17, 345, 17, 17, 17, 17, 17, -1187, + -1187, 379, -1187, 490, -1187, -1187, -1187, 379, -1187, -1187, + -1187, -1187, -1187, -1187, -1187, 17, 345, 17, -1187, -1187, + -1187 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1075,141 +1087,145 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 412, 401, 390, 400, 161, 424, 446, 392, 474, - 477, 591, 632, 658, 661, 499, 492, 351, 550, 484, - 481, 489, 487, 602, 648, 391, 414, 425, 393, 413, - 475, 479, 478, 500, 485, 482, 490, 0, 4, 5, - 2, 0, 13, 341, 342, 0, 574, 380, 378, 379, - 381, 382, 0, 0, 3, 0, 12, 0, 576, 0, - 11, 0, 578, 459, 460, 0, 14, 0, 580, 0, - 15, 0, 582, 0, 16, 0, 584, 0, 17, 0, - 575, 532, 530, 531, 533, 534, 577, 0, 579, 581, - 583, 585, 19, 18, 0, 7, 0, 8, 0, 9, + 0, 412, 401, 390, 400, 161, 424, 447, 392, 475, + 478, 593, 637, 672, 675, 500, 493, 351, 552, 485, + 482, 490, 488, 604, 659, 391, 414, 425, 393, 413, + 476, 480, 479, 501, 486, 483, 491, 0, 4, 5, + 2, 0, 13, 341, 342, 0, 576, 380, 378, 379, + 381, 382, 0, 0, 3, 0, 12, 0, 578, 0, + 11, 0, 580, 460, 461, 0, 14, 0, 582, 0, + 15, 0, 584, 0, 16, 0, 586, 0, 17, 0, + 577, 533, 531, 532, 534, 535, 579, 0, 581, 583, + 585, 587, 19, 18, 0, 7, 0, 8, 0, 9, 0, 10, 0, 6, 0, 1, 73, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 162, 0, 352, 0, 389, 0, 0, 402, - 0, 415, 0, 0, 447, 0, 0, 416, 0, 416, - 0, 416, 0, 494, 551, 0, 592, 0, 603, 617, - 604, 618, 605, 606, 620, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 0, 600, 0, 633, 0, - 0, 0, 635, 0, 0, 77, 0, 0, 0, 0, + 0, 415, 0, 0, 448, 0, 0, 416, 0, 416, + 0, 416, 0, 495, 553, 0, 594, 0, 605, 619, + 606, 620, 607, 608, 622, 609, 610, 611, 612, 613, + 614, 615, 616, 617, 618, 0, 602, 0, 638, 0, + 0, 0, 643, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 75, 76, 599, 0, - 0, 0, 0, 0, 0, 40, 20, 37, 38, 39, - 41, 42, 0, 163, 21, 22, 26, 0, 25, 35, - 0, 164, 154, 356, 0, 0, 438, 439, 364, 395, - 0, 0, 0, 0, 394, 0, 0, 0, 0, 536, - 539, 537, 540, 0, 0, 0, 0, 403, 0, 416, - 0, 426, 427, 428, 429, 0, 0, 450, 449, 443, - 0, 563, 464, 0, 0, 0, 463, 0, 559, 560, - 0, 421, 190, 417, 0, 476, 566, 0, 0, 0, - 483, 569, 0, 0, 0, 488, 572, 0, 0, 0, - 506, 502, 190, 190, 0, 190, 0, 493, 553, 0, - 0, 586, 0, 587, 594, 595, 601, 0, 0, 0, - 0, 637, 0, 0, 0, 34, 27, 0, 33, 23, + 0, 0, 0, 0, 0, 0, 75, 76, 601, 0, + 0, 626, 628, 0, 650, 652, 0, 660, 662, 0, + 0, 40, 20, 37, 38, 39, 41, 42, 0, 163, + 21, 22, 26, 0, 25, 35, 0, 164, 154, 356, + 0, 0, 439, 440, 364, 395, 0, 0, 0, 0, + 394, 0, 0, 0, 0, 537, 540, 538, 541, 0, + 0, 0, 0, 403, 0, 416, 0, 426, 427, 428, + 429, 0, 0, 451, 450, 444, 0, 565, 465, 0, + 0, 0, 464, 0, 561, 562, 0, 421, 190, 417, + 0, 477, 568, 0, 0, 0, 484, 571, 0, 0, + 0, 489, 574, 0, 0, 0, 507, 503, 190, 190, + 0, 190, 0, 494, 555, 0, 0, 588, 0, 589, + 596, 597, 603, 0, 640, 0, 0, 0, 0, 0, + 0, 0, 645, 0, 0, 0, 34, 27, 0, 33, + 23, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 418, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 497, 0, 0, 495, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, - 0, 29, 31, 28, 36, 168, 171, 165, 166, 155, - 158, 0, 160, 0, 153, 360, 0, 346, 0, 0, - 343, 348, 357, 354, 0, 0, 366, 370, 0, 406, - 217, 407, 388, 204, 205, 206, 0, 0, 0, 0, - 440, 0, 0, 513, 0, 0, 0, 0, 0, 0, - 0, 404, 397, 411, 0, 0, 0, 455, 190, 443, - 0, 442, 451, 190, 0, 0, 0, 0, 0, 0, - 190, 190, 422, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 503, 48, 504, 0, 190, 507, - 0, 0, 0, 588, 596, 0, 0, 516, 643, 0, - 0, 669, 80, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 418, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 499, 498, 0, 0, 496, + 0, 0, 0, 0, 0, 0, 627, 0, 0, 0, + 651, 0, 0, 661, 0, 0, 0, 642, 0, 29, + 31, 28, 36, 168, 171, 165, 166, 155, 158, 0, + 160, 0, 153, 360, 0, 346, 0, 0, 343, 348, + 357, 354, 0, 0, 366, 370, 0, 406, 217, 407, + 388, 204, 205, 206, 0, 0, 0, 0, 441, 0, + 0, 514, 0, 0, 0, 0, 0, 0, 0, 404, + 397, 411, 0, 0, 0, 456, 190, 444, 0, 443, + 452, 190, 0, 0, 0, 0, 0, 0, 190, 190, + 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 504, 48, 505, 0, 190, 508, 0, 0, + 0, 590, 598, 0, 641, 0, 0, 517, 654, 0, + 0, 686, 80, 0, 0, 32, 0, 0, 0, 0, 345, 350, 0, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 385, 0, 0, 0, 0, 0, 0, - 0, 444, 445, 0, 0, 0, 0, 0, 461, 0, - 0, 191, 419, 420, 480, 0, 0, 486, 0, 0, - 491, 0, 0, 44, 58, 0, 45, 49, 0, 501, - 496, 505, 0, 0, 0, 0, 597, 593, 0, 0, - 0, 0, 0, 0, 0, 0, 636, 156, 159, 169, - 0, 172, 0, 362, 346, 361, 0, 346, 358, 354, - 353, 0, 0, 375, 376, 371, 0, 363, 367, 0, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 0, 0, 387, 408, 0, - 0, 544, 0, 544, 0, 514, 0, 0, 0, 0, - 0, 199, 198, 190, 190, 0, 396, 0, 0, 431, - 0, 431, 456, 0, 448, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 0, 59, - 0, 0, 554, 555, 556, 557, 0, 174, 100, 133, - 136, 144, 148, 98, 590, 82, 88, 89, 93, 0, - 85, 0, 92, 85, 0, 85, 0, 85, 0, 85, - 0, 85, 84, 0, 588, 573, 598, 625, 528, 641, - 647, 0, 643, 643, 0, 80, 0, 642, 517, 373, - 659, 0, 81, 660, 0, 0, 167, 170, 347, 359, - 344, 355, 0, 384, 0, 368, 365, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 535, 0, 538, 386, - 541, 542, 399, 398, 0, 423, 0, 0, 0, 0, - 0, 27, 0, 462, 0, 558, 0, 561, 564, 565, - 567, 568, 570, 571, 46, 0, 43, 68, 0, 0, - 53, 71, 55, 66, 67, 549, 0, 0, 0, 0, - 91, 0, 0, 117, 0, 0, 118, 0, 0, 119, - 0, 0, 120, 0, 83, 0, 589, 0, 0, 0, - 644, 645, 0, 646, 0, 0, 0, 0, 0, 157, - 0, 377, 373, 369, 232, 233, 234, 190, 190, 190, - 190, 0, 0, 544, 545, 543, 544, 547, 509, 202, - 0, 431, 197, 196, 441, 0, 432, 434, 430, 431, - 436, 457, 453, 0, 190, 0, 52, 48, 71, 60, - 0, 0, 70, 0, 96, 85, 94, 0, 90, 85, - 87, 101, 0, 85, 85, 85, 134, 0, 85, 85, - 137, 0, 85, 145, 0, 149, 150, 0, 79, 0, - 639, 631, 625, 625, 80, 0, 80, 624, 0, 0, - 0, 374, 515, 652, 653, 650, 651, 0, 0, 0, - 0, 0, 0, 0, 410, 24, 405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 47, 69, 0, 54, 57, 72, 552, 95, 0, 86, - 99, 0, 121, 0, 122, 123, 132, 0, 124, 125, - 0, 126, 0, 0, 173, 626, 627, 0, 628, 0, - 630, 27, 0, 640, 0, 0, 372, 0, 0, 0, - 190, 546, 548, 190, 509, 509, 508, 203, 190, 435, - 0, 433, 437, 188, 186, 185, 187, 458, 0, 190, - 452, 0, 64, 56, 0, 0, 102, 103, 104, 105, - 85, 85, 85, 85, 138, 0, 146, 142, 151, 152, - 0, 80, 0, 0, 529, 373, 0, 0, 664, 665, - 663, 0, 0, 0, 409, 512, 510, 511, 0, 0, - 0, 454, 0, 0, 63, 97, 0, 0, 0, 0, - 127, 128, 129, 130, 0, 0, 0, 147, 629, 638, + 0, 445, 446, 0, 0, 0, 0, 0, 462, 0, + 0, 191, 419, 420, 481, 0, 0, 487, 0, 0, + 492, 0, 0, 44, 58, 0, 45, 49, 0, 502, + 497, 506, 0, 0, 0, 0, 599, 595, 639, 0, + 0, 0, 0, 0, 0, 0, 0, 644, 156, 159, + 169, 0, 172, 0, 362, 346, 361, 0, 346, 358, + 354, 353, 0, 0, 375, 376, 371, 0, 363, 367, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 0, 0, 0, 387, 408, + 0, 0, 545, 0, 545, 0, 515, 0, 0, 0, + 0, 0, 199, 198, 190, 190, 0, 396, 0, 0, + 431, 0, 431, 457, 0, 449, 0, 0, 0, 0, + 0, 190, 0, 190, 0, 190, 0, 190, 48, 0, + 59, 0, 0, 556, 557, 558, 559, 0, 174, 100, + 133, 136, 144, 148, 98, 592, 82, 88, 89, 93, + 0, 85, 0, 92, 85, 0, 85, 0, 85, 0, + 85, 0, 85, 84, 0, 590, 575, 600, 630, 529, + 649, 658, 0, 654, 654, 0, 80, 0, 653, 518, + 373, 673, 0, 81, 674, 0, 0, 167, 170, 347, + 359, 344, 355, 0, 384, 0, 368, 365, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 536, 0, 539, + 386, 542, 543, 399, 398, 0, 423, 0, 0, 0, + 0, 0, 27, 0, 463, 0, 560, 0, 0, 566, + 0, 569, 0, 572, 0, 46, 0, 43, 68, 0, + 0, 53, 71, 55, 66, 67, 551, 0, 0, 0, + 0, 91, 0, 0, 117, 0, 0, 118, 0, 0, + 119, 0, 0, 120, 0, 83, 0, 591, 0, 0, + 0, 655, 656, 0, 657, 0, 0, 0, 0, 0, + 676, 678, 157, 0, 377, 373, 369, 232, 233, 234, + 190, 190, 190, 190, 0, 0, 545, 190, 190, 544, + 545, 549, 510, 202, 0, 431, 197, 196, 190, 442, + 0, 190, 190, 430, 431, 437, 458, 454, 0, 190, + 190, 563, 567, 570, 573, 52, 48, 71, 60, 0, + 0, 70, 190, 96, 85, 94, 0, 90, 85, 87, + 101, 0, 85, 85, 85, 134, 0, 85, 85, 137, + 0, 85, 145, 0, 149, 150, 0, 79, 0, 647, + 636, 630, 630, 80, 0, 80, 629, 0, 0, 0, + 374, 516, 666, 667, 664, 665, 0, 0, 0, 0, + 0, 0, 0, 0, 410, 24, 405, 0, 547, 546, + 0, 0, 0, 0, 0, 435, 0, 0, 432, 434, + 0, 0, 0, 0, 0, 47, 69, 0, 54, 57, + 72, 0, 95, 0, 86, 99, 0, 121, 0, 122, + 123, 132, 0, 124, 125, 0, 126, 0, 0, 173, + 631, 632, 0, 633, 0, 635, 27, 0, 648, 0, + 0, 0, 677, 372, 0, 0, 0, 190, 548, 550, + 190, 510, 510, 509, 203, 190, 436, 0, 190, 438, + 188, 186, 185, 187, 459, 0, 190, 453, 0, 564, + 64, 56, 0, 554, 0, 102, 103, 104, 105, 85, + 85, 85, 85, 138, 0, 146, 142, 151, 152, 0, + 80, 0, 0, 530, 373, 0, 0, 681, 682, 680, + 0, 0, 0, 409, 513, 511, 512, 0, 0, 433, + 0, 455, 0, 0, 63, 97, 0, 0, 0, 0, + 127, 128, 129, 130, 0, 0, 0, 147, 634, 646, 0, 0, 0, 0, 0, 0, 238, 208, 0, 80, - 0, 214, 0, 192, 190, 0, 466, 65, 0, 61, + 0, 214, 0, 192, 190, 0, 467, 65, 0, 61, 106, 107, 108, 109, 110, 111, 85, 139, 0, 143, - 141, 526, 521, 522, 523, 524, 525, 373, 519, 0, - 527, 0, 0, 668, 665, 665, 662, 0, 207, 0, - 212, 0, 0, 213, 0, 0, 0, 0, 465, 62, - 0, 0, 0, 131, 0, 0, 0, 0, 27, 667, - 666, 183, 180, 179, 182, 200, 181, 201, 211, 340, + 141, 527, 522, 523, 524, 525, 526, 373, 520, 0, + 528, 0, 0, 685, 682, 682, 679, 0, 207, 0, + 212, 0, 0, 213, 0, 0, 0, 0, 466, 62, + 0, 0, 0, 131, 0, 0, 0, 0, 27, 684, + 683, 183, 180, 179, 182, 200, 181, 201, 211, 340, 175, 177, 0, 176, 0, 208, 80, 239, 0, 0, - 216, 214, 0, 189, 190, 472, 470, 80, 80, 0, - 112, 113, 114, 115, 140, 0, 518, 194, 654, 190, + 216, 214, 0, 189, 190, 473, 471, 80, 80, 0, + 112, 113, 114, 115, 140, 0, 519, 194, 668, 190, 0, 0, 210, 209, 0, 0, 215, 0, 0, 0, - 467, 469, 0, 0, 135, 0, 0, 0, 0, 0, + 468, 470, 0, 0, 135, 0, 0, 0, 0, 0, 0, 194, 241, 298, 299, 300, 301, 302, 303, 304, 243, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 245, 247, 329, 330, 331, 332, 333, 0, 240, 265, 292, 272, 274, 276, 278, - 0, 271, 288, 184, 80, 473, 373, 116, 190, 520, - 657, 80, 0, 649, 670, 0, 0, 0, 0, 0, + 0, 271, 288, 184, 80, 474, 373, 116, 190, 521, + 671, 80, 0, 663, 687, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 237, - 0, 468, 0, 195, 656, 0, 190, 193, 335, 339, + 0, 469, 0, 195, 670, 0, 190, 193, 335, 339, 190, 190, 242, 190, 0, 190, 0, 244, 337, 190, 190, 246, 190, 0, 190, 248, 190, 190, 266, 190, 190, 190, 293, 190, 236, 190, 273, 190, 190, 275, - 190, 277, 190, 190, 279, 190, 289, 190, 471, 0, + 190, 277, 190, 190, 279, 190, 289, 190, 472, 0, 0, 249, 256, 0, 253, 0, 0, 255, 0, 257, 264, 0, 261, 0, 0, 263, 267, 270, 0, 268, 294, 297, 0, 295, 280, 0, 282, 283, 284, 0, - 286, 287, 290, 291, 654, 178, 190, 190, 0, 190, - 0, 190, 190, 0, 190, 190, 190, 190, 190, 655, + 286, 287, 290, 291, 668, 178, 190, 190, 0, 190, + 0, 190, 190, 0, 190, 190, 190, 190, 190, 669, 252, 0, 250, 0, 254, 338, 260, 0, 258, 336, 262, 269, 296, 281, 285, 190, 0, 190, 251, 334, 259 @@ -1218,79 +1234,81 @@ static const yytype_uint16 yydefact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1145, -1145, -1145, -206, -222, -184, -1145, -98, -180, 320, - -1145, -1145, -1145, -1145, -1145, -1145, -217, -325, -571, -33, - -675, -564, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -507, - -203, -1145, -1145, -1145, -794, -1145, -1145, -193, -39, 1855, - 1023, -42, -1145, -668, -517, -563, -1145, -1145, -107, -1145, - -1145, -103, -1145, -1145, -1145, -108, -252, -1145, -1145, -741, - -1145, -1145, -1145, -1145, -1145, -684, -1145, -1145, -1145, -1145, - -608, -1145, -1145, -1145, 0, -1145, -1145, -1145, -1145, -1145, - 194, -1145, -1145, -452, -1145, -1145, -685, -1145, -1145, -872, - -1145, -1145, -1145, -1145, -892, 1299, -342, -1144, -477, -1145, - -1145, -1145, -878, -966, 73, -1145, -426, -1145, -1145, -430, - -270, 167, -1145, -1145, -496, -915, -1145, -386, -904, -702, - -1145, -793, -529, -1145, -1145, -1145, -1145, -533, -1145, -1145, - -1145, -1145, -555, -523, -1145, -609, -1145, -1090, -1145, -367, - -1145, 736, -387, -151, 544, -391, 62, -45, -315, 151, - -1145, -1145, -1145, 242, -1145, -56, -1145, -145, -1145, -1145, - -1145, -1145, -1145, -1145, -791, -1145, -1145, -1145, -1145, 627, - 629, 633, 635, -232, 467, -1145, -1145, -105, 58, -1145, - -1145, -1145, -1145, -1145, -611, -1145, -1145, -1145, 3, -1145, - 593, -47, -1145, -1145, -1145, 637, -1145, -1145, -1145, -550, - -1145, -1145, -1145, 558, 572, 198, -148, 4, 323, -1145, - -1145, -1145, -1145, -1145, -1145, -1145, -344, -756, -855, -1145, - -1145, 647, 652, -1145, 245, -1145, -375, -1145, -1145, -1145, - -182, -1145, 660, -1145, -158, -1145, 661, -1145, -166, -1145, - 663, -1145, -170, -1145, -1145, 413, -1145, -1145, -1145, -1145, - -1145, 852, -321, -1145, -1145, -526, -1145, -1145, -692, -1145, - -1145, -1145, -774, -1145, -1145, 667, -1145, -1145, 603, -1145, - 605, -1145, -1145, 232, -569, 235, 237, 238, 673, -1145, - -1145, -1145, -1145, -1145, 676, -1145, -1145, -1145, -1145, 681, - -1145, -1145, 682, -1145, -1145, 684, -1145, -1145, 685, -178, - -322, 118, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, - -1145, -1145, 813, -219, -1145, -104, 405, -1145, 236, -1145, - -1145, -1145, -768, -1145, -1145, -34, 815, -1145, -1017, -515, - -1145, -916, 820, -1145, -1145, -1145, -424, -1145, -223 + -1187, -1187, -1187, -219, -226, -180, -1187, -126, -132, 296, + -1187, -1187, -1187, -1187, -1187, -1187, -223, -334, -589, -38, + -715, -585, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -528, + -245, -1187, -1187, -1187, -831, -1187, -1187, -238, -41, 1769, + 915, -44, -1187, -707, -567, -577, -1187, -1187, -147, -1187, + -1187, -144, -1187, -1187, -1187, -142, -298, -1187, -1187, -741, + -1187, -1187, -1187, -1187, -1187, -708, -1187, -1187, -1187, -1187, + -553, -1187, -1187, -1187, 0, -1187, -1187, -1187, -1187, -1187, + 144, -1187, -1187, -470, -1187, -1187, -698, -1187, -1187, -819, + -1187, -1187, -1187, -1187, -908, 1902, -408, -1186, -531, -1187, + -1187, -1187, -904, -1002, -40, -1187, -483, -1187, -1187, -484, + -278, 133, -1187, -1187, -513, -943, -1187, -440, -939, -726, + -1187, -959, -581, -1187, -1187, -1187, -1187, -593, -1187, -1187, + -1187, -1187, -641, -572, -1187, -639, -1187, -680, -1187, -427, + -1187, 715, -397, -162, 522, -395, 52, -184, -308, 117, + -1187, -1187, -1187, 197, -1187, -92, -1187, -149, -1187, -1187, + -1187, -1187, -1187, -1187, -804, -1187, -1187, -1187, -1187, 609, + 610, 612, 613, -246, 582, -1187, -1187, -93, 88, -1187, + -1187, -1187, -1187, -1187, -529, -1187, -1187, -1187, 2, -1187, + 454, -42, -1187, -1187, -1187, 624, -1187, -1187, -1187, -575, + -1187, -1187, -1187, 559, 560, 291, -191, 7, 293, -1187, + -1187, -1187, -1187, -1187, -1187, -1187, -356, -769, -883, -1187, + -1187, 633, 636, -1187, 207, -1187, -433, -1187, -1187, -1187, + -179, -1187, 641, -1187, -148, -1187, 647, -1187, -160, -1187, + 648, -1187, -158, -1187, -1187, 387, -1187, -1187, -1187, -1187, + -1187, 488, -325, -1187, -1187, -360, -1187, -1187, -729, -1187, + -1187, -1187, -774, -1187, -1187, 651, -1187, -1187, 589, -1187, + 592, -1187, -1187, 199, -558, 209, 211, 218, 676, -1187, + -1187, -1187, -1187, -1187, 679, -1187, -1187, -1187, -1187, 684, + -1187, -1187, 687, -1187, -1187, 689, -1187, -1187, 697, -168, + -303, 119, -1187, -1187, -1187, -1187, -1187, -1187, -1187, -1187, + -1187, -1187, 827, -1187, 511, -233, -1187, -107, -203, -1187, + -1187, -48, -1187, 43, -1187, -1187, -1187, -785, -1187, -1187, + -1187, 515, -17, 839, -1187, -1187, 518, -1061, -525, -1187, + -923, 850, -1187, -1187, -1187, -77, -1187, -416, -1187, -232 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 37, 38, 39, 222, 585, 224, 841, 225, 821, - 226, 227, 391, 392, 228, 328, 229, 230, 851, 555, - 474, 556, 475, 658, 847, 557, 770, 923, 558, 771, - 850, 983, 984, 1058, 772, 773, 774, 852, 108, 208, - 361, 430, 879, 574, 712, 780, 675, 676, 677, 678, - 679, 680, 681, 862, 985, 682, 683, 684, 867, 685, - 686, 871, 995, 1068, 1145, 687, 1036, 688, 874, 997, - 689, 690, 877, 1000, 460, 331, 41, 133, 232, 399, - 400, 401, 580, 402, 403, 582, 692, 693, 1119, 1261, - 1121, 1122, 977, 978, 834, 362, 634, 1123, 1166, 835, - 635, 1124, 830, 968, 422, 423, 1088, 424, 425, 1093, - 426, 614, 615, 616, 817, 1047, 1049, 1051, 1048, 1128, - 1212, 1262, 1271, 1213, 1278, 1220, 1286, 1291, 1221, 1296, - 1244, 1282, 1214, 1263, 1264, 1272, 1273, 1265, 1266, 1126, - 42, 239, 333, 503, 44, 334, 240, 135, 234, 507, - 235, 413, 589, 407, 408, 586, 584, 241, 242, 417, - 418, 599, 511, 595, 806, 596, 812, 46, 47, 48, - 49, 50, 51, 427, 137, 52, 53, 243, 409, 527, - 55, 140, 258, 442, 428, 429, 619, 822, 244, 57, - 142, 196, 283, 284, 463, 58, 59, 260, 261, 748, - 262, 263, 264, 245, 246, 431, 837, 893, 354, 61, - 145, 269, 270, 453, 449, 917, 701, 643, 842, 979, - 62, 63, 64, 275, 457, 1098, 1138, 1139, 1226, 65, + -1, 37, 38, 39, 228, 606, 230, 866, 231, 844, + 232, 233, 409, 410, 234, 339, 235, 236, 880, 575, + 492, 576, 493, 679, 876, 577, 791, 958, 578, 792, + 879, 1021, 1022, 1098, 793, 794, 795, 881, 108, 208, + 372, 448, 908, 595, 733, 801, 696, 697, 698, 699, + 700, 701, 702, 891, 1024, 703, 704, 705, 896, 706, + 707, 900, 1034, 1108, 1185, 708, 1076, 709, 903, 1036, + 710, 711, 906, 1039, 478, 342, 41, 133, 238, 417, + 418, 419, 601, 420, 421, 603, 713, 714, 1159, 1301, + 1161, 1162, 1014, 1015, 859, 373, 655, 1163, 1206, 860, + 656, 1164, 854, 1005, 440, 441, 1128, 442, 443, 1133, + 444, 635, 636, 637, 840, 1087, 1089, 1091, 1088, 1168, + 1252, 1302, 1311, 1253, 1318, 1260, 1326, 1331, 1261, 1336, + 1284, 1322, 1254, 1303, 1304, 1312, 1313, 1305, 1306, 1166, + 42, 245, 344, 523, 44, 345, 246, 135, 240, 527, + 241, 431, 610, 425, 426, 607, 605, 247, 248, 435, + 436, 620, 531, 616, 827, 617, 835, 46, 47, 48, + 49, 50, 51, 445, 137, 52, 53, 249, 427, 547, + 55, 140, 264, 460, 446, 447, 640, 845, 250, 57, + 142, 196, 289, 290, 481, 58, 59, 266, 267, 769, + 268, 269, 270, 251, 252, 449, 862, 922, 365, 61, + 145, 275, 276, 471, 467, 952, 722, 664, 867, 1016, + 62, 63, 64, 281, 475, 1138, 1178, 1179, 1266, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 203, 79, 303, 304, 477, 305, 306, - 480, 894, 910, 435, 626, 488, 489, 709, 702, 1077, - 1078, 1079, 703, 704, 1005, 80, 81, 82, 247, 83, - 248, 84, 85, 249, 733, 250, 251, 252, 86, 87, - 155, 309, 310, 666, 88, 277, 278, 279, 280, 89, - 288, 289, 90, 293, 294, 91, 298, 299, 92, 93, - 312, 565, 94, 157, 316, 317, 485, 95, 175, 96, - 176, 177, 895, 798, 98, 179, 183, 184, 322, 323, - 884, 885, 705, 706, 99, 570, 896, 101, 897, 1168, - 102, 711, 313, 104, 492, 1009, 1045, 493, 1010 + 76, 77, 78, 203, 79, 309, 310, 495, 311, 312, + 498, 923, 942, 453, 647, 927, 509, 730, 723, 1117, + 1118, 1119, 724, 725, 1044, 80, 81, 82, 253, 83, + 254, 84, 85, 255, 754, 256, 257, 258, 86, 87, + 155, 315, 316, 687, 88, 283, 284, 285, 286, 89, + 294, 295, 90, 299, 300, 91, 304, 305, 92, 93, + 318, 585, 94, 157, 322, 323, 503, 95, 175, 96, + 176, 177, 924, 211, 212, 819, 98, 179, 325, 326, + 505, 327, 184, 333, 334, 913, 914, 726, 727, 99, + 214, 215, 591, 925, 101, 217, 218, 926, 1208, 102, + 732, 319, 104, 512, 830, 831, 1048, 1085, 513, 1049 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1298,656 +1316,672 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 40, 393, 223, 56, 60, 325, 109, 327, 324, 450, - 257, 960, 276, 110, 111, 501, 112, 406, 113, 500, - 114, 899, 115, 883, 180, 181, 116, 311, 117, 886, - 118, 297, 119, 292, 120, 970, 121, 803, 122, 287, - 123, 863, 697, 888, 253, 578, 889, 674, 124, 274, - 329, 660, 700, 1054, 735, 125, 924, 126, 54, 127, - 483, 128, 45, 129, 1107, 130, 132, 134, 136, 136, - 139, 141, 136, 144, 136, 141, 136, 141, 136, 141, - 136, 141, 154, 156, 254, 178, 178, 178, 456, 769, - 1042, 750, 856, 764, 860, 419, 1003, 860, 864, 1281, - 860, 868, 198, 860, 200, 882, 860, 1056, 1050, 1052, - 394, 419, 832, 438, 7, 2, 15, 833, 875, 1, - 783, 824, 786, 15, 789, 4, 792, 2, 794, 12, - 1134, 1115, 105, 419, 5, 965, 836, 4, 433, 1259, - 296, 10, 1055, 420, 231, 214, 397, 5, 1115, 1274, - 1274, 5, 1279, 1283, 33, 1288, 667, 1293, 1293, 473, - 1297, 33, 238, 5, 832, 19, 484, 24, 441, 833, - 421, 233, 1125, 495, 865, 455, 131, 869, 1346, 1001, - 872, 1008, 494, 233, 405, 673, 421, 987, 1052, 34, - 1024, 31, 32, 591, 26, 282, 335, 301, 29, 1228, - 5, 336, 302, 338, 311, 1117, 340, 341, 421, 667, - 182, 828, 349, 1337, 1041, 1120, 948, 964, 950, 21, - 645, 1342, 1117, 185, 10, 1120, 351, 352, 1147, 1059, - 447, 355, 818, 819, 356, 1347, 671, 672, 1299, 1348, - -619, 360, 694, 36, 988, 364, 860, 990, 860, 259, - 367, 1232, 860, 1149, 907, 370, 273, 908, 844, 698, - 373, 848, 566, 809, 1099, 376, 456, 379, 998, 1256, - 1084, 381, 1170, 1171, 31, 32, 1, 592, 383, 922, - 881, 912, 898, 920, 388, 1060, 1105, 1082, 398, 915, - 628, 414, 927, 412, 134, 598, 929, 5, 236, 5, - 932, 934, 935, 669, 670, 938, 939, 237, 667, 941, - -621, 454, 1071, 452, 134, 19, 1072, 1073, 1074, 1075, - 989, 286, 462, 991, 267, 992, 671, 672, 238, 993, - 300, 301, 17, 1038, 476, 768, 672, 479, 657, 34, - 415, 659, 1061, 1063, 860, 233, 268, 437, 447, 696, - 2, 26, 5, 448, 444, 29, 5, 5, 650, 5, - 4, 667, 498, 461, 499, 281, 667, 1270, 1270, 504, - 1277, 670, 620, 622, 1076, 5, 725, 698, 670, 512, - 1259, 1090, 656, 654, 638, 640, 311, 513, 652, 1129, - 516, -622, 1132, 671, 672, 649, 520, 395, 396, 1231, - 671, 672, 631, -623, 1111, 393, 632, 810, 1112, 1113, - 1114, 533, 621, 623, 5, 308, 1140, 537, 1062, 1064, - 1065, 1066, 321, 500, 639, 641, 393, 1030, 1031, 1032, - 1033, 1336, 447, 718, 1339, 1252, 720, 843, 464, 1341, - 5, 467, 1344, 659, 470, 1267, 1345, 10, 326, 1, - 571, -30, 501, 1289, 575, 216, 579, 581, 1153, 416, - 21, 1366, 106, 107, 236, 291, 1116, 433, 238, 1160, - 1161, 714, 17, 237, 618, 206, 207, 631, 625, 1365, - 7, 632, 271, -59, 36, 1367, 5, 5, -59, -59, - -59, 642, 1141, 1142, 1143, 667, 420, 31, 32, 669, - 670, 238, 583, 1103, 832, 17, 588, 5, 813, 833, - 487, 131, 215, 216, 5, 217, 218, 219, 220, 221, - 314, 315, 671, 672, 26, 768, 633, 1083, 29, 708, - 553, 1111, 554, 178, 491, 1112, 1113, 1114, 396, 432, - 5, 5, 395, 1258, 1258, 1259, 1259, 710, 846, 445, - 446, 659, 849, 220, 221, 1227, 1251, 724, 459, 814, - 815, 816, 5, 1254, 691, 466, 1268, 1259, 469, 691, - 1118, 472, 553, 691, 845, 1130, 473, 405, 138, 482, - 1136, 143, -51, 146, 554, 148, 766, 150, 617, 152, - 593, 594, 624, 1116, 627, 668, 744, 629, 630, 878, - 1215, 637, 1222, 870, 1111, 554, 873, 1046, 1112, 1113, - 1114, 1007, 648, 672, 5, 318, 319, 320, 651, 1259, - 486, 653, 490, 973, 655, 765, 393, 974, 975, 976, - 233, 405, 820, 659, 849, 661, 671, 672, 1292, 1292, - 778, 905, 781, 1016, 1017, 784, 390, 787, 925, 790, - 1230, 793, 131, 215, 795, 921, 217, 218, 219, 768, - 1109, 1110, 799, 945, 946, 802, 1116, 804, 800, 801, - 854, 858, 807, 1111, 1046, 857, 986, 1112, 1113, 1114, - 1115, 215, 811, 5, 217, 218, 219, 220, 221, 766, - 577, 767, 667, 1069, 1236, 668, 669, 670, 768, 1152, - 1007, 1156, 829, 1111, 647, 982, 1131, 1112, 1113, 1114, - 147, 1275, 149, 5, 151, 1294, 153, 1268, 1259, 671, - 672, 673, 1287, 1046, 215, 216, 473, 217, 218, 219, - 1137, 967, 5, 768, 823, 1116, 43, 826, 272, 861, - 721, 667, 866, 1002, 668, 669, 670, 587, 890, 831, - 265, 876, 839, 158, 1117, 159, 994, 642, 996, 160, - 642, 161, 1023, 162, 266, 1116, 971, 659, 671, 672, - 673, 215, 532, 163, 217, 218, 219, 855, 164, 859, - 853, 646, 859, 393, 1224, 859, 165, 166, 859, 167, - 478, 859, 255, 168, 256, 662, 913, 691, 663, 169, - 664, 665, 170, 1, 2, 891, 1057, 171, 172, 3, - 173, 174, 796, 97, 4, 100, 5, 6, 5, 1349, - 103, 1085, 0, 7, 0, 0, 8, 667, 0, 0, - 668, 669, 670, 9, 10, 0, 11, 0, 12, 967, - 0, 659, 0, 13, 699, 14, 949, 0, 15, 0, - 1067, 16, 0, 0, 671, 672, 673, 0, 0, 17, - 5, 0, 18, 0, 19, 20, 21, 22, 0, 667, - 0, 829, 668, 669, 670, 23, 24, 25, 26, 27, - 0, 28, 29, 30, 31, 32, 33, 0, 34, 35, - 36, 0, 0, 0, 0, 0, 671, 672, 673, 215, - 216, 999, 217, 218, 219, 220, 221, 0, 215, 963, - 1004, 217, 218, 219, 220, 221, 967, 0, 767, 1111, - 1144, 0, 0, 1112, 1113, 1114, 1115, 0, 0, 5, - 0, 859, 0, 859, 0, 0, 0, 859, 667, 1020, - 0, 668, 669, 670, 0, 0, 0, 691, 1135, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 0, 767, - 5, 0, 0, 3, 0, 671, 672, 673, 1043, 667, - 5, 6, 668, 669, 670, 0, 0, 0, 829, 667, - 8, 1116, 668, 669, 670, 967, 699, 9, 710, 0, - 0, 0, 0, 0, 0, 0, 671, 672, 673, 14, - 1117, 642, 0, 1081, 0, 16, 671, 672, 673, 1089, - 0, 1091, 0, 1094, 0, 0, 18, 0, 0, 20, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 859, + 40, 335, 56, 411, 109, 336, 229, 60, 468, 338, + 328, 110, 111, 330, 112, 282, 113, 695, 114, 824, + 115, 180, 181, 721, 116, 997, 117, 520, 118, 521, + 119, 929, 120, 915, 121, 424, 122, 317, 123, 298, + 259, 508, 1007, 303, 912, 280, 124, 599, 959, 293, + 681, 917, 45, 125, 918, 126, 1094, 127, 263, 128, + 1147, 129, 892, 130, 132, 134, 136, 136, 139, 141, + 136, 144, 136, 141, 136, 141, 136, 141, 136, 141, + 154, 156, 183, 178, 178, 178, 756, 771, 54, 911, + 501, 474, 790, 785, 1, 893, 260, 1321, 897, 904, + 885, 1, 889, 1042, 340, 889, 1, 198, 889, 200, + 456, 889, 1090, 1092, 889, 412, 242, 1155, 437, 1096, + 5, 15, 1082, 465, 5, 243, 507, 804, 438, 807, + 5, 810, 5, 813, 1174, 815, 287, 437, 437, 856, + 182, 688, 237, 220, 857, 2, 244, 105, 5, 5, + 17, 1155, 719, 244, 5, 4, 1095, 17, 307, 1299, + 33, 415, 2, 432, 491, 329, 131, 1002, 331, 693, + 26, 502, 4, 19, 29, 7, 1386, 26, 324, 324, + 185, 29, 26, 472, 1165, 515, 29, 514, 465, 473, + 12, 1064, 1157, 1092, 439, 288, 5, 1040, 34, 451, + 346, 239, 308, 1268, 182, 347, 983, 349, 985, 15, + 351, 352, 1001, 439, 439, 239, 1047, 719, 239, 423, + 612, 691, 1026, 360, 848, 317, 1157, 459, 24, 718, + 362, 363, 1099, 302, 1339, 366, 841, 842, 367, 861, + 1081, -621, 1187, 692, 693, 371, 279, 666, 33, 375, + 894, 910, 465, 898, 378, 1027, 901, -623, 1029, 381, + 5, 877, 869, 1037, 384, 1189, 832, 1139, 889, 387, + 889, 390, 5, 1296, 889, 392, 586, 10, 474, 265, + 944, 715, 394, 613, 1272, 397, 1210, 1211, 937, 950, + 957, 955, 940, 406, 1111, 314, 649, 416, 1112, 1113, + 1114, 1115, 430, 134, 273, 306, 307, 962, 1160, 619, + 1124, 964, 21, 1145, 1122, 967, 969, 970, 1160, 1307, + 973, 974, 470, 134, 976, 1100, 274, 1329, 31, 32, + -624, 480, 5, 1078, 652, 2, 482, 36, 653, 485, + 5, 688, 488, 494, 5, 4, 497, 789, -625, 688, + 433, 329, 678, 504, 331, 680, 1116, 455, 1101, 1103, + -59, 413, 414, 717, 466, -59, -59, -59, 462, 19, + 694, 889, 106, 107, 479, 292, 692, 693, 518, 21, + 519, 671, 1130, 652, 297, 524, 1151, 653, 641, 643, + 1152, 1153, 1154, 746, 34, 532, 5, 856, 852, 10, + 659, 661, 857, 533, 36, 1169, 536, 5, 1172, 675, + 1028, 670, 540, 1030, 677, 1031, 317, 411, 673, 1032, + 244, 5, 1271, 332, 1151, 1308, 1299, 553, 1152, 1153, + 1154, 242, 1180, 557, 5, 833, 520, 1298, 411, 1299, + 243, 506, 337, 739, 642, 644, 741, 510, 1156, -30, + 31, 32, 1070, 1071, 1072, 1073, 660, 662, 680, 1193, + 1310, 1310, 1292, 1317, 5, 868, 222, 1298, 592, 1299, + 1200, 1201, 596, 521, 600, 602, 131, 221, 222, 434, + 223, 224, 225, 226, 227, 1406, 1156, 690, 691, 735, + 451, 5, 639, 5, 7, 638, 646, 856, 1299, 645, + 688, 648, 857, 5, 650, 651, 206, 207, 658, 663, + 692, 693, 438, 1102, 1104, 1105, 1106, 1123, 573, 669, + 574, 413, 604, 836, 1376, 672, 609, 1379, 674, 1143, + 507, 676, 1381, 221, 10, 1384, 223, 224, 225, 1385, + 511, -51, 682, 574, 5, 789, 654, 414, 729, 837, + 838, 839, 178, 688, 1255, 244, 1262, 1291, 691, 17, + 1158, 320, 321, 875, 1294, 1170, 680, 878, 423, 277, + 1176, 147, 1405, 149, 1086, 151, 745, 153, 1407, 731, + 692, 693, 573, 5, 712, 31, 32, 1181, 1182, 1183, + 712, 491, 688, 787, 712, 689, 690, 691, 870, 1314, + 1314, 689, 1319, 1323, 1086, 1328, 574, 1333, 1333, 907, + 1337, 693, 1151, 226, 227, 765, 1152, 1153, 1154, 692, + 693, 694, 5, 614, 615, 843, 928, 1299, 899, 239, + 423, 902, 1151, 408, 1046, 960, 1152, 1153, 1154, 956, + 1270, 786, 5, 450, 692, 693, 1308, 1299, 1332, 1332, + 1267, 883, 411, 463, 464, 886, 680, 878, 887, 799, + 598, 802, 477, 1377, 805, 1025, 808, 1109, 811, 484, + 814, 1382, 487, 816, 1156, 490, 1055, 1056, 980, 981, + 1276, 820, 1192, 500, 823, 1387, 825, 1196, 789, 1388, + 668, 828, 1171, 138, 1156, 1334, 143, 465, 146, 1315, + 148, 834, 150, 465, 152, 5, 821, 822, 1149, 1150, + 1177, 5, 935, 1327, 688, 43, 278, 689, 690, 691, + 688, 853, 608, 689, 690, 691, 719, 742, 1046, 789, + 909, 720, 719, 919, 1020, 158, 159, 720, 160, 161, + 1010, 692, 693, 694, 1011, 1012, 1013, 692, 693, 694, + 162, 271, 272, 847, 846, 491, 1008, 850, 890, 163, + 552, 895, 164, 667, 789, 1041, 1264, 165, 858, 855, + 905, 5, 864, 166, 167, 496, 663, 168, 261, 663, + 688, 262, 683, 221, 690, 691, 223, 224, 225, 226, + 227, 787, 684, 788, 685, 1033, 1063, 1035, 884, 680, + 888, 686, 169, 888, 882, 170, 888, 692, 693, 888, + 171, 1004, 888, 172, 411, 173, 131, 221, 712, 946, + 223, 224, 225, 174, 1, 2, 920, 97, 221, 222, + 3, 223, 224, 225, 817, 4, 396, 5, 6, 100, + 1097, 452, 454, 400, 7, 457, 458, 8, 403, 1389, + 103, 992, 1125, 0, 9, 10, 0, 11, 476, 12, + 0, 0, 0, 0, 13, 483, 14, 0, 486, 15, + 0, 489, 16, 984, 0, 680, 0, 0, 0, 499, + 17, 0, 0, 18, 0, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 1107, 0, 23, 24, 0, 25, + 26, 27, 853, 28, 29, 30, 31, 32, 33, 0, + 34, 35, 36, 1151, 1086, 0, 5, 1152, 1153, 1154, + 1155, 0, 0, 5, 0, 688, 1004, 0, 689, 690, + 691, 0, 688, 0, 1038, 689, 690, 691, 3, 0, + 0, 1000, 720, 1043, 731, 0, 6, 0, 0, 0, + 0, 0, 692, 693, 694, 8, 0, 0, 0, 692, + 693, 694, 9, 0, 1184, 11, 888, 0, 888, 0, + 0, 0, 888, 0, 1060, 1156, 0, 0, 0, 0, + 16, 465, 712, 0, 0, 0, 0, 0, 0, 5, + 0, 18, 0, 0, 20, 1157, 22, 0, 688, 0, + 0, 689, 690, 691, 1004, 1083, 0, 25, 5, 27, + 719, 28, 0, 30, 0, 0, 853, 688, 0, 35, + 689, 690, 691, 0, 0, 692, 693, 694, 0, 0, + 0, 0, 0, 0, 720, 0, 0, 0, 0, 663, + 0, 1121, 0, 0, 692, 693, 694, 1129, 186, 1131, + 187, 1134, 188, 189, 0, 190, 0, 191, 192, 0, + 193, 194, 195, 197, 195, 199, 195, 201, 202, 888, + 204, 0, 205, 1004, 0, 0, 0, 0, 1146, 0, + 0, 0, 0, 0, 712, 1167, 0, 1167, 0, 0, + 1167, 0, 209, 0, 210, 213, 216, 5, 219, 0, + 0, 0, 853, 0, 0, 0, 688, 0, 0, 689, + 690, 691, 0, 0, 0, 0, 1175, 0, 0, 0, + 0, 1190, 0, 1191, 0, 1380, 0, 712, 0, 0, + 0, 0, 712, 692, 693, 694, 0, 712, 1202, 0, + 0, 0, 0, 1004, 0, 0, 853, 853, 0, 0, + 0, 0, 0, 341, 0, 343, 0, 0, 1265, 0, + 0, 0, 348, 0, 350, 1378, 0, 0, 353, 354, + 0, 0, 0, 1383, 355, 356, 357, 358, 0, 359, + 195, 361, 221, 222, 0, 223, 224, 225, 226, 227, + 364, 0, 788, 0, 0, 368, 369, 0, 370, 712, + 0, 0, 0, 0, 374, 0, 0, 712, 376, 377, + 0, 0, 0, 379, 380, 0, 0, 0, 382, 383, + 0, 0, 0, 5, 0, 0, 388, 0, 0, 0, + 391, 1295, 688, 393, 0, 689, 690, 691, 0, 0, + 395, 0, 398, 399, 401, 402, 404, 1151, 405, 0, + 0, 1152, 1153, 1154, 1155, 0, 0, 5, 0, 692, + 693, 694, 0, 1345, 0, 1348, 688, 0, 0, 689, + 690, 691, 1353, 0, 0, 0, 1175, 1300, 1300, 1309, + 1309, 0, 1316, 1320, 0, 1325, 1300, 1330, 1330, 0, + 1335, 0, 0, 692, 693, 694, 221, 0, 0, 223, + 224, 225, 226, 227, 0, 0, 788, 0, 0, 1156, + 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 0, 0, 0, 0, 0, 1157, + 0, 0, 516, 517, 0, 0, 0, 0, 0, 343, + 522, 0, 525, 0, 0, 0, 526, 528, 529, 0, + 530, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 0, 535, 0, 0, 537, 538, 0, 539, 0, 541, + 542, 0, 544, 545, 0, 546, 0, 548, 549, 550, + 0, 0, 364, 0, 0, 0, 0, 555, 556, 0, + 0, 559, 560, 0, 0, 0, 0, 0, 565, 566, + 0, 568, 569, 0, 571, 572, 0, 0, 0, 0, + 0, 0, 3, 0, 582, 583, 584, 0, 0, 5, + 6, 589, 0, 590, 0, 593, 0, 594, 688, 8, + 0, 689, 690, 691, 0, 0, 9, 131, 221, 222, + 0, 223, 224, 225, 226, 227, 221, 222, 14, 223, + 224, 225, 226, 227, 16, 692, 693, 694, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 20, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27, 0, 28, 0, 30, 0, 0, - 1106, 0, 0, 35, 691, 0, 0, 1127, 0, 1127, - 0, 0, 1127, 0, 3, 967, 0, 0, 0, 0, - 0, 0, 6, 0, 829, 0, 0, 0, 131, 215, - 216, 8, 217, 218, 219, 220, 221, 0, 9, 0, - 0, 11, 0, 1150, 0, 1151, 0, 691, 0, 0, - 0, 1340, 691, 0, 447, 0, 16, 691, 0, 0, - 1162, 0, 5, 0, 0, 0, 0, 18, 829, 829, - 20, 667, 22, 0, 668, 669, 670, 0, 0, 0, - 1225, 1338, 25, 698, 27, 0, 28, 0, 30, 1343, - 0, 0, 0, 0, 35, 0, 0, 0, 671, 672, - 673, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 0, 186, 0, 187, 691, - 188, 189, 0, 190, 0, 191, 192, 691, 193, 194, - 195, 197, 195, 199, 195, 201, 202, 5, 204, 0, - 205, 0, 0, 0, 0, 0, 667, 0, 0, 668, - 669, 670, 0, 1255, 434, 436, 1135, 0, 439, 440, - 209, 0, 210, 211, 212, 0, 213, 0, 0, 0, - 0, 458, 0, 671, 672, 673, 0, 0, 465, 0, - 0, 468, 0, 0, 471, 1305, 0, 1308, 0, 0, - 0, 0, 481, 0, 1313, 0, 0, 1260, 1260, 1269, - 1269, 0, 1276, 1280, 0, 1285, 1260, 1290, 1290, 0, - 1295, 0, 0, 0, 0, 330, 0, 332, 0, 0, - 0, 0, 0, 0, 337, 0, 339, 0, 0, 0, - 342, 343, 0, 0, 0, 0, 344, 345, 346, 347, - 0, 348, 195, 350, 0, 0, 0, 0, 0, 0, - 0, 0, 353, 0, 0, 3, 0, 357, 358, 0, - 359, 0, 0, 6, 0, 0, 363, 0, 0, 0, - 365, 366, 8, 0, 0, 368, 369, 0, 0, 9, - 371, 372, 0, 0, 0, 0, 0, 0, 377, 0, - 0, 14, 380, 0, 0, 382, 0, 16, 0, 447, - 0, 384, 385, 386, 0, 387, 0, 5, 18, 0, - 0, 20, 0, 22, 0, 0, 667, 0, 0, 668, - 669, 670, 0, 25, 0, 27, 0, 28, 698, 30, - 447, 0, 880, 699, 0, 35, 0, 0, 5, 0, - 0, 0, 0, 671, 672, 673, 0, 667, 0, 0, - 668, 669, 670, 0, 0, 0, 0, 0, 0, 698, - 0, 0, 0, 0, 699, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 671, 672, 673, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 0, 0, 0, 332, - 502, 0, 505, 0, 0, 0, 506, 508, 509, 0, - 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 515, 0, 0, 517, 518, 0, 519, 0, 521, - 522, 0, 524, 525, 0, 526, 0, 528, 529, 530, - 0, 0, 353, 0, 0, 0, 0, 535, 536, 0, - 0, 539, 540, 0, 0, 0, 0, 0, 545, 546, - 0, 548, 549, 0, 551, 552, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 564, 0, 0, 568, - 0, 569, 0, 572, 0, 573, 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, 1216, 1173, 1174, 1175, - 1176, 1177, 1178, 1179, 1217, 1181, 1182, 1183, 1184, 1185, - 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1218, - 1219, 1207, 1208, 1209, 1210, 1211, 0, 0, 0, 0, - 715, 374, 375, 0, 378, 0, 0, 502, 0, 0, - 502, 0, 506, 0, 722, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 727, 728, 729, - 0, 0, 730, 731, 732, 734, 732, 0, 0, 737, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 746, 747, 749, 747, 0, 751, 0, 752, 0, - 754, 0, 756, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 777, 0, 779, 0, 0, 782, 0, 785, 0, - 788, 0, 791, 0, 791, 0, 0, 564, 0, 0, - 797, 0, 0, 0, 0, 569, 569, 0, 573, 0, - 0, 0, 805, 0, 0, 0, 0, 808, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 531, 0, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 541, - 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1173, 1174, 1175, 1176, 1177, 1178, 1179, 560, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 0, 0, 1207, 1208, 1209, 1210, 1211, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 722, 0, 805, 0, 0, 0, 0, - 0, 0, 0, 903, 0, 0, 732, 0, 0, 732, - 0, 909, 0, 911, 747, 0, 0, 0, 0, 914, - 0, 0, 747, 0, 0, 916, 752, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, - 928, 0, 791, 0, 0, 0, 931, 933, 791, 0, - 0, 937, 791, 0, 940, 791, 0, 942, 0, 0, - 943, 0, 0, 0, 0, 797, 797, 947, 0, 573, - 0, 951, 952, 0, 0, 0, 0, 0, 0, 0, - 0, 955, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 742, 743, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 736, 0, 0, 0, 0, 0, 6, + 522, 0, 0, 522, 0, 526, 0, 743, 8, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 748, 749, 750, 16, 0, 751, 752, 753, 755, 753, + 0, 0, 758, 0, 18, 0, 0, 20, 0, 22, + 0, 0, 0, 0, 767, 768, 770, 768, 0, 772, + 25, 773, 27, 775, 28, 777, 30, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 797, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 798, 0, 800, 0, 0, 803, + 0, 806, 0, 809, 0, 812, 0, 812, 0, 0, + 584, 0, 0, 818, 0, 0, 0, 0, 590, 590, + 0, 594, 0, 0, 0, 826, 0, 0, 0, 0, + 829, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 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, 1256, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1257, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, + 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 1258, 1259, 1247, 1248, 1249, 1250, + 1251, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, + 826, 0, 0, 0, 0, 0, 0, 0, 933, 0, + 0, 753, 0, 0, 0, 753, 0, 941, 0, 943, + 768, 0, 0, 0, 0, 0, 947, 0, 0, 768, + 0, 0, 951, 773, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 812, + 0, 963, 0, 812, 0, 0, 0, 966, 968, 812, + 0, 0, 972, 812, 0, 975, 812, 0, 977, 0, + 0, 978, 0, 0, 0, 0, 818, 818, 982, 0, + 594, 0, 986, 987, 0, 0, 0, 0, 0, 0, + 0, 0, 990, 991, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 0, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 0, 0, 1247, 1248, + 1249, 1250, 1251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1006, 0, 0, - 1011, 1012, 1013, 0, 0, 0, 0, 909, 909, 0, - 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1022, 0, 0, 0, 0, 1026, - 1027, 1028, 0, 1029, 791, 791, 791, 0, 1034, 0, - 1035, 0, 0, 0, 573, 0, 1040, 0, 805, 0, - 0, 0, 1044, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1045, 0, 0, 0, 0, 1050, + 1051, 1052, 0, 0, 0, 0, 941, 941, 0, 0, + 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, + 1066, 1067, 1068, 0, 1069, 812, 812, 812, 0, 1074, + 0, 1075, 0, 0, 0, 594, 0, 1080, 0, 826, + 0, 0, 0, 1084, 0, 291, 0, 296, 0, 301, + 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 285, 0, 290, 0, 295, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1087, 0, 573, 0, 1092, 0, 0, 0, 1096, 1097, - 0, 0, 0, 1100, 1101, 0, 1102, 0, 0, 791, - 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, - 805, 0, 0, 0, 0, 1108, 0, 1044, 1044, 0, - 0, 0, 0, 0, 0, 0, 900, 901, 902, 904, + 0, 0, 1127, 0, 594, 0, 1132, 0, 0, 0, + 1136, 1137, 0, 0, 0, 1140, 1141, 0, 1142, 0, + 0, 812, 0, 1144, 0, 0, 0, 0, 0, 0, + 0, 0, 826, 0, 0, 0, 0, 1148, 0, 1084, + 1084, 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, 918, 0, 0, 0, 0, 1087, 573, - 0, 1154, 1155, 0, 1092, 1157, 0, 0, 0, 0, - 1159, 573, 0, 1163, 0, 0, 0, 0, 0, 0, - 1165, 1167, 0, 0, 0, 0, 0, 0, 0, 389, - 0, 0, 0, 0, 0, 0, 404, 0, 410, 411, - 0, 0, 0, 1235, 1165, 1237, 0, 0, 0, 0, - 0, 0, 0, 1238, 443, 0, 0, 0, 0, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1239, 1240, - 0, 0, 0, 0, 0, 0, 0, 1242, 1243, 1245, - 1246, 1247, 1248, 0, 0, 1250, 0, 573, 0, 805, - 0, 0, 0, 0, 573, 0, 0, 0, 0, 1014, - 0, 0, 1015, 0, 0, 0, 0, 1018, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1021, 0, - 0, 0, 514, 0, 0, 0, 1303, 0, 1306, 0, - 0, 0, 0, 523, 0, 1311, 0, 1314, 0, 0, - 0, 0, 1318, 0, 0, 0, 1322, 0, 0, 0, - 1325, 0, 538, 0, 0, 1329, 0, 0, 543, 544, - 0, 0, 547, 0, 0, 550, 0, 0, 0, 0, - 0, 0, 559, 0, 0, 561, 0, 0, 0, 0, - 567, 0, 0, 0, 0, 0, 0, 0, 0, 576, - 0, 0, 0, 1095, 0, 0, 0, 1167, 0, 0, - 1351, 1353, 590, 0, 0, 1357, 597, 0, 0, 0, + 1127, 594, 0, 1194, 1195, 0, 1132, 1197, 0, 0, + 0, 0, 1199, 594, 0, 1203, 0, 0, 0, 0, + 0, 0, 1205, 1207, 407, 0, 0, 0, 0, 0, + 0, 422, 0, 428, 429, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1275, 1205, 1277, 0, 461, + 0, 0, 0, 0, 469, 1278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1279, 1280, 0, 0, 0, 0, 0, 0, 0, 1282, + 1283, 1285, 1286, 1287, 1288, 0, 0, 1290, 0, 594, + 0, 826, 0, 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 695, 0, 0, 0, 0, 707, 0, 0, 0, 713, - 0, 0, 0, 1158, 0, 716, 0, 717, 0, 0, - 0, 719, 0, 0, 0, 0, 0, 723, 1169, 0, - 0, 0, 0, 0, 726, 0, 0, 0, 0, 0, + 385, 386, 0, 389, 534, 0, 0, 0, 1343, 0, + 1346, 0, 0, 0, 0, 543, 0, 1351, 0, 1354, + 0, 0, 0, 0, 1358, 0, 0, 0, 1362, 0, + 0, 0, 1365, 0, 558, 0, 0, 1369, 0, 0, + 563, 564, 0, 0, 567, 0, 0, 570, 0, 0, + 0, 0, 0, 0, 579, 0, 0, 581, 0, 0, + 0, 0, 587, 0, 588, 0, 0, 0, 0, 0, + 0, 0, 0, 597, 0, 0, 0, 0, 0, 1207, + 0, 0, 1391, 1393, 0, 0, 611, 1397, 0, 0, + 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, + 0, 0, 0, 665, 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, 736, - 0, 0, 738, 739, 740, 741, 0, 0, 0, 0, - 0, 0, 745, 0, 0, 0, 0, 0, 0, 0, - 0, 753, 0, 755, 0, 757, 758, 759, 760, 761, - 762, 763, 0, 0, 0, 0, 775, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 716, 0, 0, 0, 0, 0, + 728, 0, 0, 0, 734, 0, 0, 0, 551, 0, + 737, 0, 738, 554, 0, 0, 740, 0, 0, 0, + 561, 562, 744, 0, 0, 0, 0, 0, 0, 747, + 0, 0, 0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1300, 0, 0, 0, 1301, - 1302, 0, 1304, 0, 1307, 0, 0, 0, 1309, 1310, - 0, 1312, 0, 1315, 0, 1316, 1317, 0, 1319, 1320, - 1321, 0, 1323, 0, 1324, 0, 1326, 1327, 825, 1328, - 827, 1330, 1331, 0, 1332, 0, 1333, 0, 0, 0, - 0, 0, 0, 838, 0, 840, 0, 0, 0, 0, + 0, 0, 0, 0, 757, 0, 0, 759, 760, 761, + 762, 0, 0, 0, 0, 0, 0, 766, 0, 0, + 0, 0, 0, 0, 0, 0, 774, 0, 776, 0, + 0, 779, 0, 781, 0, 783, 0, 0, 0, 0, + 0, 796, 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, 1350, 1352, 0, 1354, 0, - 1356, 1358, 0, 1360, 1361, 1362, 1363, 1364, 0, 0, - 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, - 0, 892, 0, 0, 1368, 0, 1370, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 0, 0, 0, 0, 926, 0, - 0, 0, 0, 0, 0, 0, 0, 930, 0, 0, - 0, 0, 936, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 944, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, - 0, 0, 954, 0, 956, 957, 958, 959, 0, 0, - 0, 0, 961, 962, 0, 966, 0, 969, 0, 0, - 972, 0, 980, 981, 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, 849, 0, 851, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 863, 0, + 865, 0, 0, 0, 0, 0, 0, 871, 0, 872, + 0, 873, 0, 874, 0, 0, 763, 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 778, 0, 780, 0, 782, 0, 784, + 0, 0, 0, 0, 0, 0, 0, 0, 916, 0, + 0, 0, 0, 0, 0, 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 936, 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, - 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1037, 0, 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1070, 0, 0, 0, 0, 1080, 0, 0, 0, - 1086, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 965, 0, 0, 0, 0, 971, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 979, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 988, 0, + 0, 0, 0, 0, 0, 989, 0, 0, 993, 994, + 995, 996, 0, 0, 0, 0, 998, 0, 0, 999, + 0, 1003, 0, 1006, 0, 0, 0, 0, 0, 1009, + 0, 1017, 1018, 1019, 0, 0, 0, 0, 0, 0, + 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 930, 931, 932, 934, 0, 0, 0, 938, + 939, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 945, 0, 0, 948, 949, 0, 0, 0, 0, 0, + 0, 953, 954, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 961, 0, 0, 0, 0, 0, + 0, 0, 0, 1065, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1077, 0, + 1079, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1110, 0, 0, 0, 0, + 1120, 0, 0, 0, 1126, 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, 0, 0, - 1133, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1146, 0, 1148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1053, + 0, 0, 1054, 0, 1173, 0, 0, 1057, 0, 0, + 1059, 0, 0, 0, 1186, 0, 1188, 0, 1061, 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, - 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1223, 0, 0, 0, 0, 0, 0, - 0, 1229, 0, 1233, 1234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1204, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1263, 0, 0, + 0, 0, 0, 0, 0, 1269, 0, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1135, 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, 1241, 0, 0, - 0, 0, 0, 0, 0, 1249, 0, 0, 0, 0, + 0, 1281, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1257, 0, 0, 0, 0, 0, 0, 0, 1284, - 0, 0, 0, 0, 0, 0, 0, 1298, 0, 0, + 0, 0, 0, 0, 0, 1297, 0, 0, 0, 0, + 0, 0, 0, 1324, 0, 0, 0, 0, 0, 0, + 0, 1338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1209, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1374, 1375, 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, 0, 1334, 1335, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1395, + 0, 0, 1399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1293, 0, 0, 0, 0, 1409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1340, 0, + 0, 0, 1341, 1342, 0, 1344, 0, 1347, 0, 0, + 0, 1349, 1350, 0, 1352, 0, 1355, 0, 1356, 1357, + 0, 1359, 1360, 1361, 0, 1363, 0, 1364, 0, 1366, + 1367, 0, 1368, 0, 1370, 1371, 0, 1372, 0, 1373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1355, 0, 0, 1359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1369 + 0, 0, 0, 0, 0, 0, 0, 0, 1390, 1392, + 0, 1394, 0, 1396, 1398, 0, 1400, 1401, 1402, 1403, + 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1408, 0, 1410 }; static const yytype_int16 yycheck[] = { - 0, 326, 186, 0, 0, 222, 45, 229, 214, 353, - 190, 903, 194, 52, 53, 406, 55, 332, 57, 406, - 59, 812, 61, 797, 128, 129, 65, 205, 67, 797, - 69, 201, 71, 199, 73, 913, 75, 705, 77, 197, - 79, 782, 568, 799, 189, 497, 802, 564, 87, 194, - 230, 558, 569, 1019, 623, 94, 850, 96, 0, 98, - 382, 100, 0, 102, 1081, 104, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 189, 127, 128, 129, 358, 660, - 1006, 641, 777, 657, 779, 6, 951, 782, 782, 1243, - 785, 785, 149, 788, 151, 797, 791, 1022, 1012, 1013, - 327, 6, 7, 345, 24, 5, 49, 12, 793, 4, - 683, 732, 685, 49, 687, 15, 689, 5, 691, 39, - 1096, 14, 0, 6, 17, 909, 747, 15, 48, 22, - 73, 35, 1020, 16, 186, 184, 330, 17, 14, 1239, - 1240, 17, 1242, 1243, 87, 1245, 26, 1247, 1248, 376, - 1250, 87, 56, 17, 7, 65, 383, 77, 348, 12, - 81, 61, 1087, 390, 782, 357, 146, 785, 1322, 947, - 788, 955, 388, 61, 62, 55, 81, 928, 1092, 89, - 984, 85, 86, 508, 79, 195, 235, 51, 83, 1165, - 17, 240, 202, 242, 382, 88, 245, 246, 81, 26, - 40, 737, 259, 1303, 1005, 1087, 884, 909, 886, 67, - 535, 1311, 88, 162, 35, 1097, 265, 266, 1106, 1023, - 9, 270, 728, 729, 273, 1325, 53, 54, 1255, 1329, - 162, 280, 564, 91, 928, 284, 931, 931, 933, 191, - 289, 1167, 937, 1108, 823, 294, 194, 826, 754, 38, - 299, 768, 484, 715, 1058, 304, 536, 306, 943, 1235, - 1044, 310, 1150, 1151, 85, 86, 4, 509, 317, 850, - 797, 831, 808, 847, 323, 1026, 1077, 1043, 330, 839, - 522, 336, 855, 335, 336, 512, 859, 17, 19, 17, - 863, 864, 865, 30, 31, 868, 869, 28, 26, 872, - 162, 356, 7, 355, 356, 65, 11, 12, 13, 14, - 928, 71, 364, 931, 3, 933, 53, 54, 56, 937, - 50, 51, 60, 1001, 376, 660, 54, 379, 555, 89, - 337, 558, 1026, 1027, 1029, 61, 25, 344, 9, 566, - 5, 79, 17, 353, 350, 83, 17, 17, 540, 17, - 15, 26, 401, 363, 403, 23, 26, 1239, 1240, 408, - 1242, 31, 517, 518, 69, 17, 598, 38, 31, 418, - 22, 1049, 552, 549, 529, 530, 564, 426, 546, 1091, - 429, 162, 1094, 53, 54, 540, 435, 32, 33, 1167, - 53, 54, 7, 162, 7, 730, 11, 722, 11, 12, - 13, 450, 517, 518, 17, 64, 1100, 456, 1026, 1027, - 1028, 1029, 41, 810, 529, 530, 751, 990, 991, 992, - 993, 1303, 9, 584, 1306, 1226, 587, 752, 365, 1311, - 17, 368, 1314, 660, 371, 1238, 1318, 35, 149, 4, - 489, 149, 843, 1246, 493, 148, 498, 499, 1126, 57, - 67, 1353, 158, 159, 19, 72, 69, 48, 56, 1137, - 1138, 575, 60, 28, 516, 160, 161, 7, 520, 1351, - 24, 11, 70, 155, 91, 1357, 17, 17, 160, 161, - 162, 533, 1100, 1101, 1102, 26, 16, 85, 86, 30, - 31, 56, 502, 1066, 7, 60, 506, 17, 725, 12, - 25, 146, 147, 148, 17, 150, 151, 152, 153, 154, - 74, 75, 53, 54, 79, 850, 526, 1044, 83, 571, - 154, 7, 156, 575, 47, 11, 12, 13, 33, 341, - 17, 17, 32, 20, 20, 22, 22, 45, 765, 351, - 352, 768, 769, 153, 154, 1163, 1224, 596, 360, 150, - 151, 152, 17, 1231, 564, 367, 21, 22, 370, 569, - 1087, 373, 154, 573, 756, 1092, 793, 62, 111, 381, - 1097, 114, 154, 116, 156, 118, 155, 120, 515, 122, - 58, 59, 519, 69, 521, 29, 635, 524, 525, 146, - 1155, 528, 1157, 787, 7, 156, 790, 8, 11, 12, - 13, 955, 539, 54, 17, 210, 211, 212, 545, 22, - 384, 548, 386, 7, 551, 658, 951, 11, 12, 13, - 61, 62, 730, 850, 851, 562, 53, 54, 1247, 1248, - 679, 821, 681, 964, 965, 684, 326, 686, 851, 688, - 1167, 690, 146, 147, 693, 848, 150, 151, 152, 984, - 1084, 1085, 701, 882, 883, 704, 69, 706, 702, 703, - 777, 779, 711, 7, 8, 778, 928, 11, 12, 13, - 14, 147, 724, 17, 150, 151, 152, 153, 154, 155, - 496, 157, 26, 1035, 1171, 29, 30, 31, 1023, 1125, - 1044, 1131, 744, 7, 537, 922, 1092, 11, 12, 13, - 117, 1240, 119, 17, 121, 1248, 123, 21, 22, 53, - 54, 55, 1245, 8, 147, 148, 943, 150, 151, 152, - 1097, 911, 17, 1058, 731, 69, 0, 734, 194, 781, - 589, 26, 784, 949, 29, 30, 31, 505, 804, 746, - 192, 793, 749, 126, 88, 126, 940, 799, 942, 126, - 802, 126, 984, 126, 192, 69, 914, 984, 53, 54, - 55, 147, 449, 126, 150, 151, 152, 777, 126, 779, - 776, 536, 782, 1108, 1159, 785, 126, 126, 788, 126, - 377, 791, 189, 126, 189, 563, 835, 797, 563, 126, - 563, 563, 126, 4, 5, 805, 1023, 126, 126, 10, - 126, 126, 694, 0, 15, 0, 17, 18, 17, 1334, - 0, 1044, -1, 24, -1, -1, 27, 26, -1, -1, - 29, 30, 31, 34, 35, -1, 37, -1, 39, 1019, - -1, 1058, -1, 44, 43, 46, 885, -1, 49, -1, - 1034, 52, -1, -1, 53, 54, 55, -1, -1, 60, - 17, -1, 63, -1, 65, 66, 67, 68, -1, 26, - -1, 913, 29, 30, 31, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, -1, -1, -1, -1, -1, 53, 54, 55, 147, - 148, 943, 150, 151, 152, 153, 154, -1, 147, 909, - 952, 150, 151, 152, 153, 154, 1096, -1, 157, 7, - 1104, -1, -1, 11, 12, 13, 14, -1, -1, 17, - -1, 931, -1, 933, -1, -1, -1, 937, 26, 978, - -1, 29, 30, 31, -1, -1, -1, 947, 36, 147, - 148, -1, 150, 151, 152, 153, 154, -1, -1, 157, - 17, -1, -1, 10, -1, 53, 54, 55, 1007, 26, - 17, 18, 29, 30, 31, -1, -1, -1, 1020, 26, - 27, 69, 29, 30, 31, 1165, 43, 34, 45, -1, - -1, -1, -1, -1, -1, -1, 53, 54, 55, 46, - 88, 1043, -1, 1042, -1, 52, 53, 54, 55, 1048, - -1, 1050, -1, 1052, -1, -1, 63, -1, -1, 66, - -1, 68, -1, -1, -1, -1, -1, -1, -1, 1029, - -1, 78, -1, 80, -1, 82, -1, 84, -1, -1, - 1079, -1, -1, 90, 1044, -1, -1, 1089, -1, 1091, - -1, -1, 1094, -1, 10, 1235, -1, -1, -1, -1, - -1, -1, 18, -1, 1106, -1, -1, -1, 146, 147, - 148, 27, 150, 151, 152, 153, 154, -1, 34, -1, - -1, 37, -1, 1122, -1, 1124, -1, 1087, -1, -1, - -1, 1308, 1092, -1, 9, -1, 52, 1097, -1, -1, - 1139, -1, 17, -1, -1, -1, -1, 63, 1150, 1151, - 66, 26, 68, -1, 29, 30, 31, -1, -1, -1, - 1162, 1305, 78, 38, 80, -1, 82, -1, 84, 1313, - -1, -1, -1, -1, 90, -1, -1, -1, 53, 54, - 55, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, -1, 133, -1, 135, 1159, - 137, 138, -1, 140, -1, 142, 143, 1167, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 17, 155, -1, - 157, -1, -1, -1, -1, -1, 26, -1, -1, 29, - 30, 31, -1, 1232, 342, 343, 36, -1, 346, 347, - 177, -1, 179, 180, 181, -1, 183, -1, -1, -1, - -1, 359, -1, 53, 54, 55, -1, -1, 366, -1, - -1, 369, -1, -1, 372, 1264, -1, 1266, -1, -1, - -1, -1, 380, -1, 1273, -1, -1, 1237, 1238, 1239, - 1240, -1, 1242, 1243, -1, 1245, 1246, 1247, 1248, -1, - 1250, -1, -1, -1, -1, 232, -1, 234, -1, -1, - -1, -1, -1, -1, 241, -1, 243, -1, -1, -1, - 247, 248, -1, -1, -1, -1, 253, 254, 255, 256, - -1, 258, 259, 260, -1, -1, -1, -1, -1, -1, - -1, -1, 269, -1, -1, 10, -1, 274, 275, -1, - 277, -1, -1, 18, -1, -1, 283, -1, -1, -1, - 287, 288, 27, -1, -1, 292, 293, -1, -1, 34, - 297, 298, -1, -1, -1, -1, -1, -1, 305, -1, - -1, 46, 309, -1, -1, 312, -1, 52, -1, 9, - -1, 318, 319, 320, -1, 322, -1, 17, 63, -1, - -1, 66, -1, 68, -1, -1, 26, -1, -1, 29, - 30, 31, -1, 78, -1, 80, -1, 82, 38, 84, - 9, -1, 42, 43, -1, 90, -1, -1, 17, -1, - -1, -1, -1, 53, 54, 55, -1, 26, -1, -1, - 29, 30, 31, -1, -1, -1, -1, -1, -1, 38, - -1, -1, -1, -1, 43, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 53, 54, 55, -1, -1, -1, - -1, -1, 399, 400, -1, -1, -1, -1, -1, 406, - 407, -1, 409, -1, -1, -1, 413, 414, 415, -1, - 417, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 428, -1, -1, 431, 432, -1, 434, -1, 436, - 437, -1, 439, 440, -1, 442, -1, 444, 445, 446, - -1, -1, 449, -1, -1, -1, -1, 454, 455, -1, - -1, 458, 459, -1, -1, -1, -1, -1, 465, 466, - -1, 468, 469, -1, 471, 472, -1, -1, -1, -1, - -1, -1, -1, -1, 481, 482, 483, -1, -1, 486, - -1, 488, -1, 490, -1, 492, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, -1, -1, -1, -1, - 577, 302, 303, -1, 305, -1, -1, 584, -1, -1, - 587, -1, 589, -1, 591, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 614, 615, 616, - -1, -1, 619, 620, 621, 622, 623, -1, -1, 626, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 638, 639, 640, 641, -1, 643, -1, 645, -1, - 647, -1, 649, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 666, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 678, -1, 680, -1, -1, 683, -1, 685, -1, - 687, -1, 689, -1, 691, -1, -1, 694, -1, -1, - 697, -1, -1, -1, -1, 702, 703, -1, 705, -1, - -1, -1, 709, -1, -1, -1, -1, 714, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 448, -1, -1, - -1, -1, 453, -1, -1, -1, -1, -1, -1, 460, - 461, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 107, 108, 109, 110, 111, 112, 113, 478, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, -1, -1, 141, 142, 143, 144, 145, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 810, -1, 812, -1, -1, -1, -1, - -1, -1, -1, 820, -1, -1, 823, -1, -1, 826, - -1, 828, -1, 830, 831, -1, -1, -1, -1, 836, - -1, -1, 839, -1, -1, 842, 843, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 855, -1, - 857, -1, 859, -1, -1, -1, 863, 864, 865, -1, - -1, 868, 869, -1, 871, 872, -1, 874, -1, -1, - 877, -1, -1, -1, -1, 882, 883, 884, -1, 886, - -1, 888, 889, -1, -1, -1, -1, -1, -1, -1, - -1, 898, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 633, 634, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 220, 0, 337, 45, 228, 186, 0, 364, 235, + 213, 52, 53, 216, 55, 194, 57, 584, 59, 726, + 61, 128, 129, 590, 65, 933, 67, 424, 69, 424, + 71, 835, 73, 818, 75, 343, 77, 205, 79, 199, + 189, 401, 946, 201, 818, 194, 87, 517, 879, 197, + 578, 820, 0, 94, 823, 96, 1058, 98, 190, 100, + 1121, 102, 803, 104, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 130, 127, 128, 129, 644, 662, 0, 818, + 393, 369, 681, 678, 4, 803, 189, 1283, 806, 814, + 798, 4, 800, 986, 236, 803, 4, 149, 806, 151, + 356, 809, 1051, 1052, 812, 338, 19, 14, 6, 1062, + 17, 49, 1045, 9, 17, 28, 25, 704, 16, 706, + 17, 708, 17, 710, 1136, 712, 23, 6, 6, 7, + 40, 26, 186, 184, 12, 5, 56, 0, 17, 17, + 60, 14, 38, 56, 17, 15, 1060, 60, 51, 22, + 88, 341, 5, 347, 387, 213, 147, 941, 216, 54, + 80, 394, 15, 65, 84, 24, 1362, 80, 78, 78, + 163, 84, 80, 367, 1127, 408, 84, 406, 9, 368, + 39, 1022, 89, 1132, 82, 195, 17, 982, 90, 48, + 241, 61, 202, 1205, 40, 246, 913, 248, 915, 49, + 251, 252, 941, 82, 82, 61, 990, 38, 61, 62, + 528, 31, 963, 265, 753, 393, 89, 359, 77, 589, + 271, 272, 1063, 73, 1295, 276, 749, 750, 279, 768, + 1044, 163, 1146, 53, 54, 286, 194, 555, 88, 290, + 803, 818, 9, 806, 295, 963, 809, 163, 966, 300, + 17, 789, 775, 978, 305, 1148, 736, 1098, 966, 310, + 968, 312, 17, 1275, 972, 316, 502, 35, 556, 191, + 855, 584, 323, 529, 1207, 326, 1190, 1191, 846, 864, + 879, 876, 850, 334, 7, 64, 542, 341, 11, 12, + 13, 14, 346, 347, 3, 50, 51, 884, 1127, 532, + 1084, 888, 67, 1117, 1083, 892, 893, 894, 1137, 1278, + 897, 898, 366, 367, 901, 1066, 25, 1286, 86, 87, + 163, 375, 17, 1040, 7, 5, 376, 92, 11, 379, + 17, 26, 382, 387, 17, 15, 390, 681, 163, 26, + 348, 399, 575, 397, 402, 578, 69, 355, 1066, 1067, + 156, 32, 33, 586, 364, 161, 162, 163, 361, 65, + 55, 1069, 159, 160, 374, 71, 53, 54, 419, 67, + 421, 560, 1089, 7, 72, 426, 7, 11, 537, 538, + 11, 12, 13, 619, 90, 436, 17, 7, 758, 35, + 549, 550, 12, 444, 92, 1131, 447, 17, 1134, 569, + 963, 560, 453, 966, 572, 968, 584, 751, 566, 972, + 56, 17, 1207, 41, 7, 21, 22, 468, 11, 12, + 13, 19, 1140, 474, 17, 743, 833, 20, 772, 22, + 28, 398, 150, 605, 537, 538, 608, 404, 69, 150, + 86, 87, 1029, 1030, 1031, 1032, 549, 550, 681, 1166, + 1279, 1280, 1266, 1282, 17, 773, 149, 20, 509, 22, + 1177, 1178, 513, 868, 518, 519, 147, 148, 149, 57, + 151, 152, 153, 154, 155, 1393, 69, 30, 31, 596, + 48, 17, 536, 17, 24, 535, 540, 7, 22, 539, + 26, 541, 12, 17, 544, 545, 161, 162, 548, 553, + 53, 54, 16, 1066, 1067, 1068, 1069, 1084, 155, 559, + 157, 32, 522, 746, 1343, 565, 526, 1346, 568, 1106, + 25, 571, 1351, 148, 35, 1354, 151, 152, 153, 1358, + 47, 155, 582, 157, 17, 879, 546, 33, 592, 151, + 152, 153, 596, 26, 1195, 56, 1197, 1264, 31, 60, + 1127, 74, 75, 786, 1271, 1132, 789, 790, 62, 70, + 1137, 117, 1391, 119, 8, 121, 617, 123, 1397, 45, + 53, 54, 155, 17, 584, 86, 87, 1140, 1141, 1142, + 590, 814, 26, 156, 594, 29, 30, 31, 777, 1279, + 1280, 29, 1282, 1283, 8, 1285, 157, 1287, 1288, 147, + 1290, 54, 7, 154, 155, 656, 11, 12, 13, 53, + 54, 55, 17, 58, 59, 751, 829, 22, 808, 61, + 62, 811, 7, 337, 990, 880, 11, 12, 13, 877, + 1207, 679, 17, 352, 53, 54, 21, 22, 1287, 1288, + 1203, 798, 986, 362, 363, 799, 879, 880, 800, 700, + 516, 702, 371, 1343, 705, 963, 707, 1075, 709, 378, + 711, 1351, 381, 714, 69, 384, 1001, 1002, 911, 912, + 1211, 722, 1165, 392, 725, 1365, 727, 1171, 1022, 1369, + 557, 732, 1132, 111, 69, 1288, 114, 9, 116, 1280, + 118, 745, 120, 9, 122, 17, 723, 724, 1124, 1125, + 1137, 17, 844, 1285, 26, 0, 194, 29, 30, 31, + 26, 765, 525, 29, 30, 31, 38, 610, 1084, 1063, + 42, 43, 38, 825, 957, 126, 126, 43, 126, 126, + 7, 53, 54, 55, 11, 12, 13, 53, 54, 55, + 126, 192, 192, 753, 752, 978, 947, 755, 802, 126, + 467, 805, 126, 556, 1098, 984, 1199, 126, 768, 767, + 814, 17, 770, 126, 126, 388, 820, 126, 189, 823, + 26, 189, 583, 148, 30, 31, 151, 152, 153, 154, + 155, 156, 583, 158, 583, 975, 1022, 977, 798, 1022, + 800, 583, 126, 803, 797, 126, 806, 53, 54, 809, + 126, 943, 812, 126, 1148, 126, 147, 148, 818, 860, + 151, 152, 153, 126, 4, 5, 826, 0, 148, 149, + 10, 151, 152, 153, 715, 15, 325, 17, 18, 0, + 1063, 353, 354, 328, 24, 357, 358, 27, 330, 1374, + 0, 928, 1084, -1, 34, 35, -1, 37, 370, 39, + -1, -1, -1, -1, 44, 377, 46, -1, 380, 49, + -1, 383, 52, 914, -1, 1098, -1, -1, -1, 391, + 60, -1, -1, 63, -1, 65, 66, 67, 68, -1, + -1, -1, -1, -1, 1074, -1, 76, 77, -1, 79, + 80, 81, 946, 83, 84, 85, 86, 87, 88, -1, + 90, 91, 92, 7, 8, -1, 17, 11, 12, 13, + 14, -1, -1, 17, -1, 26, 1058, -1, 29, 30, + 31, -1, 26, -1, 978, 29, 30, 31, 10, -1, + -1, 941, 43, 987, 45, -1, 18, -1, -1, -1, + -1, -1, 53, 54, 55, 27, -1, -1, -1, 53, + 54, 55, 34, -1, 1144, 37, 966, -1, 968, -1, + -1, -1, 972, -1, 1015, 69, -1, -1, -1, -1, + 52, 9, 982, -1, -1, -1, -1, -1, -1, 17, + -1, 63, -1, -1, 66, 89, 68, -1, 26, -1, + -1, 29, 30, 31, 1136, 1046, -1, 79, 17, 81, + 38, 83, -1, 85, -1, -1, 1060, 26, -1, 91, + 29, 30, 31, -1, -1, 53, 54, 55, -1, -1, + -1, -1, -1, -1, 43, -1, -1, -1, -1, 1083, + -1, 1082, -1, -1, 53, 54, 55, 1088, 133, 1090, + 135, 1092, 137, 138, -1, 140, -1, 142, 143, -1, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 1069, + 155, -1, 157, 1205, -1, -1, -1, -1, 1119, -1, + -1, -1, -1, -1, 1084, 1129, -1, 1131, -1, -1, + 1134, -1, 177, -1, 179, 180, 181, 17, 183, -1, + -1, -1, 1146, -1, -1, -1, 26, -1, -1, 29, + 30, 31, -1, -1, -1, -1, 36, -1, -1, -1, + -1, 1162, -1, 1164, -1, 1348, -1, 1127, -1, -1, + -1, -1, 1132, 53, 54, 55, -1, 1137, 1179, -1, + -1, -1, -1, 1275, -1, -1, 1190, 1191, -1, -1, + -1, -1, -1, 238, -1, 240, -1, -1, 1202, -1, + -1, -1, 247, -1, 249, 1345, -1, -1, 253, 254, + -1, -1, -1, 1353, 259, 260, 261, 262, -1, 264, + 265, 266, 148, 149, -1, 151, 152, 153, 154, 155, + 275, -1, 158, -1, -1, 280, 281, -1, 283, 1199, + -1, -1, -1, -1, 289, -1, -1, 1207, 293, 294, + -1, -1, -1, 298, 299, -1, -1, -1, 303, 304, + -1, -1, -1, 17, -1, -1, 311, -1, -1, -1, + 315, 1272, 26, 318, -1, 29, 30, 31, -1, -1, + 325, -1, 327, 328, 329, 330, 331, 7, 333, -1, + -1, 11, 12, 13, 14, -1, -1, 17, -1, 53, + 54, 55, -1, 1304, -1, 1306, 26, -1, -1, 29, + 30, 31, 1313, -1, -1, -1, 36, 1277, 1278, 1279, + 1280, -1, 1282, 1283, -1, 1285, 1286, 1287, 1288, -1, + 1290, -1, -1, 53, 54, 55, 148, -1, -1, 151, + 152, 153, 154, 155, -1, -1, 158, -1, -1, 69, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, -1, -1, -1, -1, -1, 89, + -1, -1, 417, 418, -1, -1, -1, -1, -1, 424, + 425, -1, 427, -1, -1, -1, 431, 432, 433, -1, + 435, 93, 94, 95, 96, 97, 98, 99, 100, 101, + -1, 446, -1, -1, 449, 450, -1, 452, -1, 454, + 455, -1, 457, 458, -1, 460, -1, 462, 463, 464, + -1, -1, 467, -1, -1, -1, -1, 472, 473, -1, + -1, 476, 477, -1, -1, -1, -1, -1, 483, 484, + -1, 486, 487, -1, 489, 490, -1, -1, -1, -1, + -1, -1, 10, -1, 499, 500, 501, -1, -1, 17, + 18, 506, -1, 508, -1, 510, -1, 512, 26, 27, + -1, 29, 30, 31, -1, -1, 34, 147, 148, 149, + -1, 151, 152, 153, 154, 155, 148, 149, 46, 151, + 152, 153, 154, 155, 52, 53, 54, 55, -1, -1, + -1, -1, -1, -1, -1, 63, -1, -1, 66, -1, + 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 79, -1, 81, -1, 83, -1, 85, -1, -1, + -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, -1, 598, -1, -1, -1, -1, -1, 18, + 605, -1, -1, 608, -1, 610, -1, 612, 27, -1, + -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, + 635, 636, 637, 52, -1, 640, 641, 642, 643, 644, + -1, -1, 647, -1, 63, -1, -1, 66, -1, 68, + -1, -1, -1, -1, 659, 660, 661, 662, -1, 664, + 79, 666, 81, 668, 83, 670, 85, -1, -1, -1, + -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 687, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 699, -1, 701, -1, -1, 704, + -1, 706, -1, 708, -1, 710, -1, 712, -1, -1, + 715, -1, -1, 718, -1, -1, -1, -1, 723, 724, + -1, 726, -1, -1, -1, 730, -1, -1, -1, -1, + 735, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, + 835, -1, -1, -1, -1, -1, -1, -1, 843, -1, + -1, 846, -1, -1, -1, 850, -1, 852, -1, 854, + 855, -1, -1, -1, -1, -1, 861, -1, -1, 864, + -1, -1, 867, 868, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 884, + -1, 886, -1, 888, -1, -1, -1, 892, 893, 894, + -1, -1, 897, 898, -1, 900, 901, -1, 903, -1, + -1, 906, -1, -1, -1, -1, 911, 912, 913, -1, + 915, -1, 917, 918, -1, -1, -1, -1, -1, -1, + -1, -1, 927, 928, 108, 109, 110, 111, 112, 113, + 114, -1, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, -1, -1, 142, 143, + 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 954, -1, -1, - 957, 958, 959, -1, -1, -1, -1, 964, 965, -1, - -1, -1, -1, 970, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 981, -1, -1, -1, -1, 986, - 987, 988, -1, 990, 991, 992, 993, -1, 995, -1, - 997, -1, -1, -1, 1001, -1, 1003, -1, 1005, -1, - -1, -1, 1009, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 989, -1, -1, -1, -1, 994, + 995, 996, -1, -1, -1, -1, 1001, 1002, -1, -1, + -1, -1, 1007, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1018, -1, -1, -1, -1, -1, -1, + 1025, 1026, 1027, -1, 1029, 1030, 1031, 1032, -1, 1034, + -1, 1036, -1, -1, -1, 1040, -1, 1042, -1, 1044, + -1, -1, -1, 1048, -1, 196, -1, 198, -1, 200, + -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 196, -1, 198, -1, 200, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1047, -1, 1049, -1, 1051, -1, -1, -1, 1055, 1056, - -1, -1, -1, 1060, 1061, -1, 1063, -1, -1, 1066, - -1, 1068, -1, -1, -1, -1, -1, -1, -1, -1, - 1077, -1, -1, -1, -1, 1082, -1, 1084, 1085, -1, - -1, -1, -1, -1, -1, -1, 817, 818, 819, 820, + -1, -1, 1087, -1, 1089, -1, 1091, -1, -1, -1, + 1095, 1096, -1, -1, -1, 1100, 1101, -1, 1103, -1, + -1, 1106, -1, 1108, -1, -1, -1, -1, -1, -1, + -1, -1, 1117, -1, -1, -1, -1, 1122, -1, 1124, + 1125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 844, -1, -1, -1, -1, 1125, 1126, - -1, 1128, 1129, -1, 1131, 1132, -1, -1, -1, -1, - 1137, 1138, -1, 1140, -1, -1, -1, -1, -1, -1, - 1147, 1148, -1, -1, -1, -1, -1, -1, -1, 324, - -1, -1, -1, -1, -1, -1, 331, -1, 333, 334, - -1, -1, -1, 1170, 1171, 1172, -1, -1, -1, -1, - -1, -1, -1, 1180, 349, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1205, 1206, - -1, -1, -1, -1, -1, -1, -1, 1214, 1215, 1216, - 1217, 1218, 1219, -1, -1, 1222, -1, 1224, -1, 1226, - -1, -1, -1, -1, 1231, -1, -1, -1, -1, 960, - -1, -1, 963, -1, -1, -1, -1, 968, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 979, -1, - -1, -1, 427, -1, -1, -1, 1263, -1, 1265, -1, - -1, -1, -1, 438, -1, 1272, -1, 1274, -1, -1, - -1, -1, 1279, -1, -1, -1, 1283, -1, -1, -1, - 1287, -1, 457, -1, -1, 1292, -1, -1, 463, 464, - -1, -1, 467, -1, -1, 470, -1, -1, -1, -1, - -1, -1, 477, -1, -1, 480, -1, -1, -1, -1, - 485, -1, -1, -1, -1, -1, -1, -1, -1, 494, - -1, -1, -1, 1054, -1, -1, -1, 1334, -1, -1, - 1337, 1338, 507, -1, -1, 1342, 511, -1, -1, -1, + 1165, 1166, -1, 1168, 1169, -1, 1171, 1172, -1, -1, + -1, -1, 1177, 1178, -1, 1180, -1, -1, -1, -1, + -1, -1, 1187, 1188, 335, -1, -1, -1, -1, -1, + -1, 342, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1210, 1211, 1212, -1, 360, + -1, -1, -1, -1, 365, 1220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 527, -1, -1, -1, -1, -1, -1, 534, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1245, 1246, -1, -1, -1, -1, -1, -1, -1, 1254, + 1255, 1256, 1257, 1258, 1259, -1, -1, 1262, -1, 1264, + -1, 1266, -1, -1, -1, -1, 1271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 565, -1, -1, -1, -1, 570, -1, -1, -1, 574, - -1, -1, -1, 1134, -1, 580, -1, 582, -1, -1, - -1, 586, -1, -1, -1, -1, -1, 592, 1149, -1, - -1, -1, -1, -1, 599, -1, -1, -1, -1, -1, + 308, 309, -1, 311, 445, -1, -1, -1, 1303, -1, + 1305, -1, -1, -1, -1, 456, -1, 1312, -1, 1314, + -1, -1, -1, -1, 1319, -1, -1, -1, 1323, -1, + -1, -1, 1327, -1, 475, -1, -1, 1332, -1, -1, + 481, 482, -1, -1, 485, -1, -1, 488, -1, -1, + -1, -1, -1, -1, 495, -1, -1, 498, -1, -1, + -1, -1, 503, -1, 505, -1, -1, -1, -1, -1, + -1, -1, -1, 514, -1, -1, -1, -1, -1, 1374, + -1, -1, 1377, 1378, -1, -1, 527, 1382, -1, -1, + 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 547, -1, -1, -1, + -1, -1, -1, 554, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 624, - -1, -1, 627, 628, 629, 630, -1, -1, -1, -1, - -1, -1, 637, -1, -1, -1, -1, -1, -1, -1, - -1, 646, -1, 648, -1, 650, 651, 652, 653, 654, - 655, 656, -1, -1, -1, -1, 661, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 585, -1, -1, -1, -1, -1, + 591, -1, -1, -1, 595, -1, -1, -1, 466, -1, + 601, -1, 603, 471, -1, -1, 607, -1, -1, -1, + 478, 479, 613, -1, -1, -1, -1, -1, -1, 620, + -1, -1, -1, -1, -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1256, -1, -1, -1, 1260, - 1261, -1, 1263, -1, 1265, -1, -1, -1, 1269, 1270, - -1, 1272, -1, 1274, -1, 1276, 1277, -1, 1279, 1280, - 1281, -1, 1283, -1, 1285, -1, 1287, 1288, 733, 1290, - 735, 1292, 1293, -1, 1295, -1, 1297, -1, -1, -1, - -1, -1, -1, 748, -1, 750, -1, -1, -1, -1, + -1, -1, -1, -1, 645, -1, -1, 648, 649, 650, + 651, -1, -1, -1, -1, -1, -1, 658, -1, -1, + -1, -1, -1, -1, -1, -1, 667, -1, 669, -1, + -1, 672, -1, 674, -1, 676, -1, -1, -1, -1, + -1, 682, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1336, 1337, -1, 1339, -1, - 1341, 1342, -1, 1344, 1345, 1346, 1347, 1348, -1, -1, - -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, - -1, 806, -1, -1, 1365, -1, 1367, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 822, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 845, -1, -1, -1, -1, -1, -1, -1, 853, -1, - -1, -1, -1, -1, -1, -1, -1, 862, -1, -1, - -1, -1, 867, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 879, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 890, -1, -1, -1, -1, - -1, -1, 897, -1, 899, 900, 901, 902, -1, -1, - -1, -1, 907, 908, -1, 910, -1, 912, -1, -1, - 915, -1, 917, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 754, -1, 756, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 769, -1, + 771, -1, -1, -1, -1, -1, -1, 778, -1, 780, + -1, 782, -1, 784, -1, -1, 654, 655, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 671, -1, 673, -1, 675, -1, 677, + -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, + -1, -1, -1, -1, -1, -1, 827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 985, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1000, -1, 1002, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1036, -1, -1, -1, -1, 1041, -1, -1, -1, - 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 891, -1, -1, -1, -1, 896, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 908, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 919, -1, + -1, -1, -1, -1, -1, 926, -1, -1, 929, 930, + 931, 932, -1, -1, -1, -1, 937, -1, -1, 940, + -1, 942, -1, 944, -1, -1, -1, -1, -1, 950, + -1, 952, 953, 954, -1, -1, -1, -1, -1, -1, + 961, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 840, 841, 842, 843, -1, -1, -1, 847, + 848, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 858, -1, -1, 861, 862, -1, -1, -1, -1, -1, + -1, 869, 870, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 882, -1, -1, -1, -1, -1, + -1, -1, -1, 1024, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1039, -1, + 1041, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1057, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1076, -1, -1, -1, -1, + 1081, -1, -1, -1, 1085, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1095, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1105, -1, 1107, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 997, + -1, -1, 1000, -1, 1135, -1, -1, 1005, -1, -1, + 1008, -1, -1, -1, 1145, -1, 1147, -1, 1016, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1145, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1158, -1, -1, -1, -1, -1, -1, - -1, 1166, -1, 1168, 1169, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1185, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1198, -1, -1, + -1, -1, -1, -1, -1, 1206, -1, 1208, 1209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1094, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1212, -1, -1, - -1, -1, -1, -1, -1, 1220, -1, -1, -1, -1, + -1, 1252, -1, -1, -1, -1, -1, -1, -1, 1260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1236, -1, -1, -1, -1, -1, -1, -1, 1244, - -1, -1, -1, -1, -1, -1, -1, 1252, -1, -1, + -1, -1, -1, -1, -1, 1276, -1, -1, -1, -1, + -1, -1, -1, 1284, -1, -1, -1, -1, -1, -1, + -1, 1292, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1189, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1339, 1340, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1299, 1300, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1380, + -1, -1, 1383, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1268, -1, -1, -1, -1, 1406, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1296, -1, + -1, -1, 1300, 1301, -1, 1303, -1, 1305, -1, -1, + -1, 1309, 1310, -1, 1312, -1, 1314, -1, 1316, 1317, + -1, 1319, 1320, 1321, -1, 1323, -1, 1325, -1, 1327, + 1328, -1, 1330, -1, 1332, 1333, -1, 1335, -1, 1337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1340, -1, -1, 1343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1366 + -1, -1, -1, -1, -1, -1, -1, -1, 1376, 1377, + -1, 1379, -1, 1381, 1382, -1, 1384, 1385, 1386, 1387, + 1388, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1405, -1, 1407 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1956,215 +1990,220 @@ static const yytype_uint16 yystos[] = { 0, 4, 5, 10, 15, 17, 18, 24, 27, 34, 35, 37, 39, 44, 46, 49, 52, 60, 63, 65, - 66, 67, 68, 76, 77, 78, 79, 80, 82, 83, - 84, 85, 86, 87, 89, 90, 91, 164, 165, 166, - 237, 239, 303, 304, 307, 309, 330, 331, 332, 333, - 334, 335, 338, 339, 341, 343, 351, 352, 358, 359, - 370, 372, 383, 384, 385, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 407, - 428, 429, 430, 432, 434, 435, 441, 442, 447, 452, - 455, 458, 461, 462, 465, 470, 472, 475, 477, 487, - 489, 490, 493, 495, 496, 0, 158, 159, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 146, 204, 240, 204, 310, 204, 337, 337, 204, - 344, 204, 353, 337, 204, 373, 337, 353, 337, 353, - 337, 353, 337, 353, 204, 443, 204, 466, 332, 333, - 334, 335, 358, 384, 385, 395, 399, 403, 428, 441, - 447, 452, 455, 458, 461, 471, 473, 474, 204, 478, - 478, 478, 40, 479, 480, 162, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 354, 203, 354, 203, - 354, 203, 203, 406, 203, 203, 160, 161, 202, 203, - 203, 203, 203, 203, 201, 147, 148, 150, 151, 152, - 153, 154, 167, 168, 169, 171, 173, 174, 177, 179, - 180, 204, 241, 61, 311, 313, 19, 28, 56, 304, - 309, 320, 321, 340, 351, 366, 367, 431, 433, 436, - 438, 439, 440, 320, 340, 431, 433, 171, 345, 341, - 360, 361, 363, 364, 365, 366, 367, 3, 25, 374, - 375, 70, 307, 309, 320, 386, 393, 448, 449, 450, - 451, 23, 237, 355, 356, 202, 71, 397, 453, 454, - 202, 72, 401, 456, 457, 202, 73, 405, 459, 460, - 50, 51, 237, 408, 409, 411, 412, 202, 64, 444, - 445, 462, 463, 495, 74, 75, 467, 468, 479, 479, - 479, 41, 481, 482, 166, 179, 149, 167, 178, 171, - 203, 238, 203, 305, 308, 201, 201, 203, 201, 203, - 201, 201, 203, 203, 203, 203, 203, 203, 203, 354, - 203, 201, 201, 203, 371, 201, 201, 203, 203, 203, - 201, 203, 258, 203, 201, 203, 203, 201, 203, 203, - 201, 203, 203, 201, 258, 258, 201, 203, 258, 201, - 203, 201, 203, 201, 203, 203, 203, 203, 201, 202, - 172, 175, 176, 180, 179, 32, 33, 168, 204, 242, - 243, 244, 246, 247, 202, 62, 311, 316, 317, 341, - 202, 202, 204, 314, 310, 351, 57, 322, 323, 6, - 16, 81, 267, 268, 270, 271, 273, 336, 347, 348, - 204, 368, 368, 48, 414, 416, 414, 351, 336, 414, - 414, 171, 346, 202, 370, 368, 368, 9, 237, 377, - 379, 202, 204, 376, 310, 393, 273, 387, 414, 368, - 237, 237, 204, 357, 267, 414, 368, 267, 414, 368, - 267, 414, 368, 179, 183, 185, 204, 410, 408, 204, - 413, 414, 368, 463, 179, 469, 481, 25, 418, 419, - 481, 47, 497, 500, 166, 179, 203, 203, 201, 201, - 305, 308, 203, 306, 201, 203, 203, 312, 203, 203, - 203, 325, 201, 201, 202, 203, 201, 203, 203, 203, - 201, 203, 203, 202, 203, 203, 203, 342, 203, 203, - 203, 258, 371, 201, 258, 203, 203, 201, 202, 203, - 203, 258, 258, 202, 202, 203, 203, 202, 203, 203, - 202, 203, 203, 154, 156, 182, 184, 188, 191, 202, - 258, 202, 203, 203, 203, 464, 167, 202, 203, 203, - 488, 201, 203, 203, 206, 201, 202, 243, 246, 204, - 245, 204, 248, 237, 319, 168, 318, 316, 237, 315, - 202, 311, 336, 58, 59, 326, 328, 202, 179, 324, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 274, 275, 276, 267, 204, 349, - 320, 340, 320, 340, 267, 204, 417, 267, 336, 267, - 267, 7, 11, 237, 259, 263, 202, 267, 320, 340, - 320, 340, 204, 380, 202, 311, 387, 274, 267, 320, - 393, 267, 397, 267, 401, 267, 405, 179, 186, 179, - 192, 267, 436, 438, 439, 440, 446, 26, 29, 30, - 31, 53, 54, 55, 207, 209, 210, 211, 212, 213, - 214, 215, 218, 219, 220, 222, 223, 228, 230, 233, - 234, 237, 249, 250, 463, 202, 179, 418, 38, 43, - 207, 379, 421, 425, 426, 485, 486, 202, 204, 420, - 45, 494, 207, 202, 478, 203, 202, 202, 306, 202, - 306, 312, 203, 202, 201, 167, 202, 203, 203, 203, - 203, 203, 203, 437, 203, 437, 202, 203, 202, 202, - 202, 202, 258, 258, 201, 202, 203, 203, 362, 203, - 362, 203, 203, 202, 203, 202, 203, 202, 202, 202, - 202, 202, 202, 202, 184, 182, 155, 157, 180, 181, - 189, 192, 197, 198, 199, 202, 203, 203, 201, 203, - 208, 201, 203, 208, 201, 203, 208, 201, 203, 208, - 201, 203, 208, 201, 208, 201, 464, 203, 476, 201, - 488, 488, 201, 206, 201, 203, 327, 201, 203, 246, - 311, 204, 329, 179, 150, 151, 152, 277, 277, 277, - 170, 172, 350, 351, 347, 202, 351, 202, 418, 204, - 265, 351, 7, 12, 257, 262, 347, 369, 202, 351, - 202, 170, 381, 311, 277, 393, 179, 187, 192, 179, - 193, 181, 200, 370, 211, 237, 249, 214, 218, 237, - 249, 204, 216, 222, 228, 233, 204, 221, 228, 233, - 168, 224, 233, 168, 231, 183, 204, 235, 146, 205, - 42, 207, 421, 425, 483, 484, 485, 202, 380, 380, - 318, 237, 202, 370, 414, 475, 489, 491, 418, 327, - 258, 258, 258, 203, 258, 171, 202, 437, 437, 203, - 415, 203, 362, 201, 203, 362, 203, 378, 258, 202, - 184, 200, 181, 190, 197, 193, 202, 208, 203, 208, - 202, 203, 208, 203, 208, 208, 202, 203, 208, 208, - 203, 208, 203, 203, 202, 476, 476, 203, 206, 201, - 206, 203, 203, 202, 202, 203, 202, 202, 202, 202, - 257, 202, 202, 237, 421, 425, 202, 171, 266, 202, - 265, 369, 202, 7, 11, 12, 13, 255, 256, 382, - 202, 202, 179, 194, 195, 217, 219, 222, 228, 233, - 228, 233, 233, 233, 168, 225, 168, 232, 183, 204, - 236, 485, 166, 381, 204, 427, 203, 379, 425, 498, - 501, 203, 203, 203, 258, 258, 415, 415, 258, 203, - 201, 258, 203, 167, 197, 202, 203, 203, 203, 203, - 208, 208, 208, 208, 203, 203, 229, 202, 206, 202, - 203, 327, 494, 201, 203, 499, 8, 278, 281, 279, - 281, 280, 281, 202, 266, 265, 278, 179, 196, 197, - 222, 228, 233, 228, 233, 233, 233, 168, 226, 259, - 202, 7, 11, 12, 13, 14, 69, 422, 423, 424, - 202, 201, 380, 207, 425, 501, 202, 203, 269, 201, - 206, 201, 203, 272, 201, 258, 203, 203, 388, 197, - 203, 203, 203, 208, 203, 327, 201, 491, 203, 499, - 499, 7, 11, 12, 13, 14, 69, 88, 207, 251, - 252, 253, 254, 260, 264, 278, 302, 204, 282, 282, - 207, 280, 282, 202, 266, 36, 207, 302, 389, 390, - 228, 233, 233, 233, 168, 227, 202, 265, 202, 381, - 201, 201, 269, 206, 203, 203, 272, 203, 258, 203, - 206, 206, 201, 203, 202, 203, 261, 203, 492, 258, - 265, 265, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 283, 286, 295, 295, 106, 114, 139, 140, - 288, 291, 295, 202, 389, 204, 391, 233, 266, 202, - 207, 485, 494, 202, 202, 203, 261, 203, 203, 203, - 203, 202, 203, 203, 293, 203, 203, 203, 203, 202, - 203, 206, 327, 258, 206, 201, 266, 202, 20, 22, - 237, 252, 284, 296, 297, 300, 301, 284, 21, 237, - 252, 285, 298, 299, 300, 285, 237, 252, 287, 300, - 237, 260, 294, 300, 202, 237, 289, 296, 300, 284, - 237, 290, 298, 300, 290, 237, 292, 300, 202, 491, - 258, 258, 258, 203, 258, 201, 203, 258, 201, 258, - 258, 203, 258, 201, 203, 258, 258, 258, 203, 258, - 258, 258, 203, 258, 258, 203, 258, 258, 258, 203, - 258, 258, 258, 258, 202, 202, 252, 300, 168, 252, - 179, 252, 300, 168, 252, 252, 260, 300, 300, 492, - 258, 203, 258, 203, 258, 202, 258, 203, 258, 202, - 258, 258, 258, 258, 258, 252, 257, 252, 258, 202, - 258 + 66, 67, 68, 76, 77, 79, 80, 81, 83, 84, + 85, 86, 87, 88, 90, 91, 92, 165, 166, 167, + 238, 240, 304, 305, 308, 310, 331, 332, 333, 334, + 335, 336, 339, 340, 342, 344, 352, 353, 359, 360, + 371, 373, 384, 385, 386, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, + 429, 430, 431, 433, 435, 436, 442, 443, 448, 453, + 456, 459, 462, 463, 466, 471, 473, 476, 480, 493, + 497, 498, 503, 505, 506, 0, 159, 160, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 147, 205, 241, 205, 311, 205, 338, 338, 205, + 345, 205, 354, 338, 205, 374, 338, 354, 338, 354, + 338, 354, 338, 354, 205, 444, 205, 467, 333, 334, + 335, 336, 359, 385, 386, 396, 400, 404, 429, 442, + 448, 453, 456, 459, 462, 472, 474, 475, 205, 481, + 481, 481, 40, 485, 486, 163, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 355, 204, 355, 204, + 355, 204, 204, 407, 204, 204, 161, 162, 203, 204, + 204, 477, 478, 204, 494, 495, 204, 499, 500, 204, + 202, 148, 149, 151, 152, 153, 154, 155, 168, 169, + 170, 172, 174, 175, 178, 180, 181, 205, 242, 61, + 312, 314, 19, 28, 56, 305, 310, 321, 322, 341, + 352, 367, 368, 432, 434, 437, 439, 440, 441, 321, + 341, 432, 434, 172, 346, 342, 361, 362, 364, 365, + 366, 367, 368, 3, 25, 375, 376, 70, 308, 310, + 321, 387, 394, 449, 450, 451, 452, 23, 238, 356, + 357, 203, 71, 398, 454, 455, 203, 72, 402, 457, + 458, 203, 73, 406, 460, 461, 50, 51, 238, 409, + 410, 412, 413, 203, 64, 445, 446, 463, 464, 505, + 74, 75, 468, 469, 78, 482, 483, 485, 482, 485, + 482, 485, 41, 487, 488, 167, 180, 150, 168, 179, + 172, 204, 239, 204, 306, 309, 202, 202, 204, 202, + 204, 202, 202, 204, 204, 204, 204, 204, 204, 204, + 355, 204, 202, 202, 204, 372, 202, 202, 204, 204, + 204, 202, 204, 259, 204, 202, 204, 204, 202, 204, + 204, 202, 204, 204, 202, 259, 259, 202, 204, 259, + 202, 204, 202, 204, 202, 204, 478, 202, 204, 204, + 495, 204, 204, 500, 204, 204, 202, 203, 173, 176, + 177, 181, 180, 32, 33, 169, 205, 243, 244, 245, + 247, 248, 203, 62, 312, 317, 318, 342, 203, 203, + 205, 315, 311, 352, 57, 323, 324, 6, 16, 82, + 268, 269, 271, 272, 274, 337, 348, 349, 205, 369, + 369, 48, 415, 417, 415, 352, 337, 415, 415, 172, + 347, 203, 371, 369, 369, 9, 238, 378, 380, 203, + 205, 377, 311, 394, 274, 388, 415, 369, 238, 238, + 205, 358, 268, 415, 369, 268, 415, 369, 268, 415, + 369, 180, 184, 186, 205, 411, 409, 205, 414, 415, + 369, 464, 180, 470, 205, 484, 487, 25, 419, 420, + 487, 47, 507, 512, 167, 180, 204, 204, 202, 202, + 306, 309, 204, 307, 202, 204, 204, 313, 204, 204, + 204, 326, 202, 202, 203, 204, 202, 204, 204, 204, + 202, 204, 204, 203, 204, 204, 204, 343, 204, 204, + 204, 259, 372, 202, 259, 204, 204, 202, 203, 204, + 204, 259, 259, 203, 203, 204, 204, 203, 204, 204, + 203, 204, 204, 155, 157, 183, 185, 189, 192, 203, + 259, 203, 204, 204, 204, 465, 168, 203, 203, 204, + 204, 496, 202, 204, 204, 207, 202, 203, 244, 247, + 205, 246, 205, 249, 238, 320, 169, 319, 317, 238, + 316, 203, 312, 337, 58, 59, 327, 329, 203, 180, + 325, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 275, 276, 277, 268, 205, + 350, 321, 341, 321, 341, 268, 205, 418, 268, 337, + 268, 268, 7, 11, 238, 260, 264, 203, 268, 321, + 341, 321, 341, 205, 381, 203, 312, 388, 275, 268, + 321, 394, 268, 398, 268, 402, 268, 406, 180, 187, + 180, 193, 268, 437, 439, 440, 441, 447, 26, 29, + 30, 31, 53, 54, 55, 208, 210, 211, 212, 213, + 214, 215, 216, 219, 220, 221, 223, 224, 229, 231, + 234, 235, 238, 250, 251, 464, 203, 180, 419, 38, + 43, 208, 380, 422, 426, 427, 491, 492, 203, 205, + 421, 45, 504, 208, 203, 481, 204, 203, 203, 307, + 203, 307, 313, 204, 203, 202, 168, 203, 204, 204, + 204, 204, 204, 204, 438, 204, 438, 203, 204, 203, + 203, 203, 203, 259, 259, 202, 203, 204, 204, 363, + 204, 363, 204, 204, 203, 204, 203, 204, 259, 203, + 259, 203, 259, 203, 259, 185, 183, 156, 158, 181, + 182, 190, 193, 198, 199, 200, 203, 204, 204, 202, + 204, 209, 202, 204, 209, 202, 204, 209, 202, 204, + 209, 202, 204, 209, 202, 209, 202, 465, 204, 479, + 202, 496, 496, 202, 207, 202, 204, 328, 202, 204, + 508, 509, 247, 312, 205, 330, 180, 151, 152, 153, + 278, 278, 278, 171, 173, 351, 352, 238, 348, 203, + 352, 203, 419, 205, 266, 352, 7, 12, 238, 258, + 263, 348, 370, 203, 352, 203, 171, 382, 312, 278, + 394, 203, 203, 203, 203, 180, 188, 193, 180, 194, + 182, 201, 371, 212, 238, 250, 215, 219, 238, 250, + 205, 217, 223, 229, 234, 205, 222, 229, 234, 169, + 225, 234, 169, 232, 184, 205, 236, 147, 206, 42, + 208, 422, 426, 489, 490, 491, 203, 381, 381, 319, + 238, 203, 371, 415, 476, 497, 501, 419, 482, 328, + 259, 259, 259, 204, 259, 172, 203, 438, 259, 259, + 438, 204, 416, 204, 363, 259, 202, 204, 259, 259, + 363, 204, 379, 259, 259, 185, 201, 182, 191, 198, + 194, 259, 209, 204, 209, 203, 204, 209, 204, 209, + 209, 203, 204, 209, 209, 204, 209, 204, 204, 203, + 479, 479, 204, 207, 202, 207, 204, 204, 203, 203, + 204, 204, 509, 203, 203, 203, 203, 258, 203, 203, + 238, 422, 426, 203, 172, 267, 203, 266, 370, 203, + 7, 11, 12, 13, 256, 257, 383, 203, 203, 203, + 180, 195, 196, 203, 218, 220, 223, 229, 234, 229, + 234, 234, 234, 169, 226, 169, 233, 184, 205, 237, + 491, 167, 382, 205, 428, 204, 380, 426, 510, 513, + 204, 204, 204, 259, 259, 416, 416, 259, 204, 259, + 202, 259, 204, 168, 198, 203, 204, 204, 204, 204, + 209, 209, 209, 209, 204, 204, 230, 203, 207, 203, + 204, 328, 504, 202, 204, 511, 8, 279, 282, 280, + 282, 281, 282, 203, 267, 266, 279, 180, 197, 198, + 223, 229, 234, 229, 234, 234, 234, 169, 227, 260, + 203, 7, 11, 12, 13, 14, 69, 423, 424, 425, + 203, 202, 381, 208, 426, 513, 203, 204, 270, 202, + 207, 202, 204, 273, 202, 259, 204, 204, 389, 198, + 204, 204, 204, 209, 204, 328, 202, 501, 204, 511, + 511, 7, 11, 12, 13, 14, 69, 89, 208, 252, + 253, 254, 255, 261, 265, 279, 303, 205, 283, 283, + 208, 281, 283, 203, 267, 36, 208, 303, 390, 391, + 229, 234, 234, 234, 169, 228, 203, 266, 203, 382, + 202, 202, 270, 207, 204, 204, 273, 204, 259, 204, + 207, 207, 202, 204, 203, 204, 262, 204, 502, 259, + 266, 266, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 284, 287, 296, 296, 107, 115, 140, 141, + 289, 292, 296, 203, 390, 205, 392, 234, 267, 203, + 208, 491, 504, 203, 203, 204, 262, 204, 204, 204, + 204, 203, 204, 204, 294, 204, 204, 204, 204, 203, + 204, 207, 328, 259, 207, 202, 267, 203, 20, 22, + 238, 253, 285, 297, 298, 301, 302, 285, 21, 238, + 253, 286, 299, 300, 301, 286, 238, 253, 288, 301, + 238, 261, 295, 301, 203, 238, 290, 297, 301, 285, + 238, 291, 299, 301, 291, 238, 293, 301, 203, 501, + 259, 259, 259, 204, 259, 202, 204, 259, 202, 259, + 259, 204, 259, 202, 204, 259, 259, 259, 204, 259, + 259, 259, 204, 259, 259, 204, 259, 259, 259, 204, + 259, 259, 259, 259, 203, 203, 253, 301, 169, 253, + 180, 253, 301, 169, 253, 253, 261, 301, 301, 502, + 259, 204, 259, 204, 259, 203, 259, 204, 259, 203, + 259, 259, 259, 259, 259, 253, 258, 253, 259, 203, + 259 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 163, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 165, 165, 165, 165, 165, 165, 166, 166, - 167, 168, 168, 169, 170, 171, 171, 172, 172, 173, - 174, 175, 176, 177, 177, 178, 178, 179, 179, 179, - 179, 180, 180, 181, 182, 183, 183, 183, 184, 184, - 185, 186, 187, 188, 189, 189, 190, 190, 191, 192, - 193, 194, 194, 194, 195, 196, 197, 197, 198, 199, - 199, 200, 200, 201, 201, 202, 202, 203, 204, 205, - 206, 206, 207, 207, 207, 208, 208, 208, 209, 209, - 210, 210, 210, 211, 211, 211, 211, 212, 213, 214, - 215, 216, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 229, 230, 231, 232, 233, 234, 235, - 235, 236, 236, 237, 238, 238, 238, 238, 238, 238, - 238, 239, 240, 241, 241, 242, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 251, 252, 253, 254, - 254, 254, 254, 254, 255, 256, 256, 256, 256, 257, - 258, 258, 259, 260, 261, 261, 262, 262, 263, 263, - 264, 264, 265, 266, 267, 267, 267, 268, 269, 269, - 269, 269, 270, 271, 272, 272, 272, 273, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, - 276, 276, 277, 277, 277, 278, 279, 280, 281, 282, - 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, - 284, 284, 284, 284, 284, 284, 284, 285, 285, 285, - 285, 285, 285, 285, 285, 286, 286, 287, 287, 287, - 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 289, 289, 289, 289, 290, 290, 290, 290, 291, 291, - 292, 292, 293, 293, 294, 294, 294, 294, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 303, 304, 305, 305, 306, 306, 307, 308, - 308, 309, 310, 311, 312, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 324, 324, - 325, 325, 326, 327, 327, 328, 328, 329, 330, 330, - 330, 331, 331, 332, 333, 334, 335, 336, 336, 337, - 338, 338, 339, 339, 340, 340, 341, 342, 342, 342, - 343, 343, 344, 345, 346, 347, 348, 348, 349, 350, - 350, 351, 352, 352, 352, 353, 354, 354, 354, 354, - 355, 356, 357, 358, 359, 359, 360, 360, 360, 360, - 361, 362, 362, 362, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 371, 371, 372, 373, 374, 375, - 375, 376, 377, 378, 378, 379, 380, 381, 382, 383, - 383, 384, 385, 386, 386, 387, 388, 388, 388, 388, - 388, 389, 390, 391, 392, 392, 393, 394, 394, 394, - 395, 396, 396, 397, 398, 398, 399, 400, 401, 402, - 402, 403, 404, 405, 406, 406, 406, 406, 406, 407, - 407, 408, 409, 410, 410, 411, 412, 413, 414, 415, - 415, 415, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 424, 424, 424, 424, 424, 425, 426, 427, - 428, 428, 428, 429, 429, 430, 431, 431, 432, 433, - 433, 434, 435, 436, 437, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 446, 446, 446, 447, 448, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 463, 463, 464, 464, - 464, 465, 466, 467, 468, 468, 469, 469, 469, 470, - 471, 471, 472, 473, 473, 473, 473, 473, 473, 473, - 473, 473, 473, 473, 473, 473, 473, 474, 474, 474, - 474, 474, 474, 474, 475, 476, 476, 476, 476, 476, - 476, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 488, 488, 488, 488, 489, 490, - 491, 491, 491, 491, 492, 492, 492, 492, 493, 494, - 495, 496, 497, 498, 498, 499, 499, 499, 499, 500, - 501 + 0, 164, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 166, 166, 166, 166, 166, 166, 167, 167, + 168, 169, 169, 170, 171, 172, 172, 173, 173, 174, + 175, 176, 177, 178, 178, 179, 179, 180, 180, 180, + 180, 181, 181, 182, 183, 184, 184, 184, 185, 185, + 186, 187, 188, 189, 190, 190, 191, 191, 192, 193, + 194, 195, 195, 195, 196, 197, 198, 198, 199, 200, + 200, 201, 201, 202, 202, 203, 203, 204, 205, 206, + 207, 207, 208, 208, 208, 209, 209, 209, 210, 210, + 211, 211, 211, 212, 212, 212, 212, 213, 214, 215, + 216, 217, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 230, 231, 232, 233, 234, 235, 236, + 236, 237, 237, 238, 239, 239, 239, 239, 239, 239, + 239, 240, 241, 242, 242, 243, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 252, 253, 254, 255, + 255, 255, 255, 255, 256, 257, 257, 257, 257, 258, + 259, 259, 260, 261, 262, 262, 263, 263, 264, 264, + 265, 265, 266, 267, 268, 268, 268, 269, 270, 270, + 270, 270, 271, 272, 273, 273, 273, 274, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, + 277, 277, 278, 278, 278, 279, 280, 281, 282, 283, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, + 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, + 286, 286, 286, 286, 286, 287, 287, 288, 288, 288, + 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 291, 291, 291, 291, 292, 292, + 293, 293, 294, 294, 295, 295, 295, 295, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 304, 305, 306, 306, 307, 307, 308, 309, + 309, 310, 311, 312, 313, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 325, 325, + 326, 326, 327, 328, 328, 329, 329, 330, 331, 331, + 331, 332, 332, 333, 334, 335, 336, 337, 337, 338, + 339, 339, 340, 340, 341, 341, 342, 343, 343, 343, + 344, 344, 345, 346, 347, 348, 349, 349, 350, 351, + 351, 352, 353, 353, 353, 354, 355, 355, 355, 355, + 356, 357, 358, 359, 360, 360, 361, 361, 361, 361, + 362, 363, 363, 363, 363, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 372, 372, 373, 374, 375, + 376, 376, 377, 378, 379, 379, 380, 381, 382, 383, + 384, 384, 385, 386, 387, 387, 388, 389, 389, 389, + 389, 389, 390, 391, 392, 393, 393, 394, 395, 395, + 395, 396, 397, 397, 398, 399, 399, 400, 401, 402, + 403, 403, 404, 405, 406, 407, 407, 407, 407, 407, + 408, 408, 409, 410, 411, 411, 412, 413, 414, 415, + 416, 416, 416, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 425, 425, 425, 425, 425, 426, 427, + 428, 429, 429, 429, 430, 430, 431, 432, 432, 433, + 434, 434, 435, 436, 437, 438, 438, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 447, 447, 447, + 448, 449, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 463, 463, 463, + 463, 463, 463, 463, 463, 463, 463, 463, 464, 464, + 465, 465, 465, 466, 467, 468, 469, 469, 470, 470, + 470, 471, 472, 472, 473, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 474, 474, 474, 475, + 475, 475, 475, 475, 475, 475, 476, 477, 477, 478, + 479, 479, 479, 479, 479, 479, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 494, 495, 496, 496, 496, 496, 496, 497, + 498, 499, 499, 500, 501, 501, 501, 501, 502, 502, + 502, 502, 503, 504, 505, 506, 507, 508, 508, 509, + 510, 510, 511, 511, 511, 511, 512, 513 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2213,31 +2252,32 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 6, 1, 1, 1, 4, 2, 7, 1, 1, 1, 1, 0, 2, 3, 5, 4, 1, 1, 10, 1, 1, 1, 1, 1, 1, - 7, 0, 2, 4, 2, 9, 7, 9, 1, 1, - 1, 1, 7, 0, 3, 3, 1, 1, 5, 1, - 1, 1, 7, 0, 3, 1, 1, 1, 1, 1, - 1, 8, 10, 1, 1, 10, 0, 3, 5, 3, - 2, 5, 1, 1, 1, 1, 5, 1, 1, 1, - 8, 1, 1, 5, 1, 1, 8, 1, 5, 1, - 1, 8, 1, 5, 0, 3, 5, 3, 3, 1, - 1, 4, 1, 1, 1, 4, 1, 1, 7, 0, - 3, 3, 3, 1, 1, 5, 1, 1, 9, 1, - 5, 1, 1, 1, 1, 1, 1, 7, 1, 1, - 1, 1, 1, 1, 1, 10, 1, 1, 10, 1, - 1, 10, 10, 7, 0, 2, 9, 7, 9, 10, - 1, 1, 8, 1, 1, 1, 1, 1, 10, 1, - 1, 6, 8, 1, 10, 6, 1, 10, 6, 1, - 10, 6, 1, 9, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, - 2, 1, 1, 4, 1, 1, 1, 2, 3, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 7, 0, 3, 5, 3, 3, 9, 7, 9, 1, + 1, 1, 1, 7, 0, 3, 3, 1, 1, 5, + 1, 1, 1, 7, 0, 3, 1, 1, 1, 1, + 1, 1, 8, 10, 1, 1, 10, 0, 3, 5, + 3, 2, 5, 1, 1, 1, 1, 5, 1, 1, + 1, 8, 1, 1, 5, 1, 1, 8, 1, 5, + 1, 1, 8, 1, 5, 0, 3, 5, 3, 3, + 1, 1, 4, 1, 1, 1, 4, 1, 1, 7, + 0, 3, 3, 3, 1, 1, 5, 1, 1, 9, + 1, 5, 1, 1, 1, 1, 1, 1, 7, 1, + 1, 1, 1, 1, 1, 1, 10, 1, 1, 10, + 1, 1, 10, 10, 7, 0, 3, 3, 9, 7, + 9, 10, 1, 1, 9, 1, 1, 1, 1, 1, + 10, 1, 1, 7, 9, 1, 10, 7, 1, 10, + 7, 1, 10, 7, 1, 9, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 3, 2, 1, 1, 4, 1, 1, 1, 2, + 3, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 11, 0, 3, 3, 3, 5, - 3, 2, 1, 1, 4, 1, 4, 1, 4, 1, - 4, 1, 9, 0, 3, 3, 3, 2, 1, 19, - 1, 1, 1, 1, 0, 6, 3, 2, 1, 1, - 9, 1, 9, 1, 1, 0, 3, 3, 2, 1, - 7 + 1, 1, 1, 1, 1, 1, 4, 3, 1, 8, + 0, 3, 3, 3, 5, 3, 2, 1, 1, 4, + 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, + 4, 3, 1, 6, 0, 3, 3, 3, 2, 1, + 4, 3, 1, 16, 1, 1, 1, 1, 0, 6, + 3, 2, 1, 1, 9, 1, 4, 3, 1, 6, + 1, 1, 0, 3, 3, 2, 1, 7 }; diff --git a/src/wkt2_generated_parser.h b/src/wkt2_generated_parser.h index baeb0b4f..80b0c34b 100644 --- a/src/wkt2_generated_parser.h +++ b/src/wkt2_generated_parser.h @@ -121,76 +121,77 @@ extern int pj_wkt2_debug; T_COORDEPOCH = 330, T_COORDINATEMETADATA = 331, T_POINTMOTIONOPERATION = 332, - T_GEODETICCRS = 333, - T_GEODETICDATUM = 334, - T_PROJECTEDCRS = 335, - T_PRIMEMERIDIAN = 336, - T_GEOGRAPHICCRS = 337, - T_TRF = 338, - T_VERTICALCRS = 339, - T_VERTICALDATUM = 340, - T_VRF = 341, - T_TIMEDATUM = 342, - T_TEMPORALQUANTITY = 343, - T_ENGINEERINGDATUM = 344, - T_ENGINEERINGCRS = 345, - T_PARAMETRICDATUM = 346, - T_AFFINE = 347, - T_CARTESIAN = 348, - T_CYLINDRICAL = 349, - T_ELLIPSOIDAL = 350, - T_LINEAR = 351, - T_PARAMETRIC = 352, - T_POLAR = 353, - T_SPHERICAL = 354, - T_VERTICAL = 355, - T_TEMPORAL = 356, - T_TEMPORALCOUNT = 357, - T_TEMPORALMEASURE = 358, - T_ORDINAL = 359, - T_TEMPORALDATETIME = 360, - T_NORTH = 361, - T_NORTHNORTHEAST = 362, - T_NORTHEAST = 363, - T_EASTNORTHEAST = 364, - T_EAST = 365, - T_EASTSOUTHEAST = 366, - T_SOUTHEAST = 367, - T_SOUTHSOUTHEAST = 368, - T_SOUTH = 369, - T_SOUTHSOUTHWEST = 370, - T_SOUTHWEST = 371, - T_WESTSOUTHWEST = 372, - T_WEST = 373, - T_WESTNORTHWEST = 374, - T_NORTHWEST = 375, - T_NORTHNORTHWEST = 376, - T_UP = 377, - T_DOWN = 378, - T_GEOCENTRICX = 379, - T_GEOCENTRICY = 380, - T_GEOCENTRICZ = 381, - T_COLUMNPOSITIVE = 382, - T_COLUMNNEGATIVE = 383, - T_ROWPOSITIVE = 384, - T_ROWNEGATIVE = 385, - T_DISPLAYRIGHT = 386, - T_DISPLAYLEFT = 387, - T_DISPLAYUP = 388, - T_DISPLAYDOWN = 389, - T_FORWARD = 390, - T_AFT = 391, - T_PORT = 392, - T_STARBOARD = 393, - T_CLOCKWISE = 394, - T_COUNTERCLOCKWISE = 395, - T_TOWARDS = 396, - T_AWAYFROM = 397, - T_FUTURE = 398, - T_PAST = 399, - T_UNSPECIFIED = 400, - T_STRING = 401, - T_UNSIGNED_INTEGER_DIFFERENT_ONE_TWO_THREE = 402 + T_VERSION = 333, + T_GEODETICCRS = 334, + T_GEODETICDATUM = 335, + T_PROJECTEDCRS = 336, + T_PRIMEMERIDIAN = 337, + T_GEOGRAPHICCRS = 338, + T_TRF = 339, + T_VERTICALCRS = 340, + T_VERTICALDATUM = 341, + T_VRF = 342, + T_TIMEDATUM = 343, + T_TEMPORALQUANTITY = 344, + T_ENGINEERINGDATUM = 345, + T_ENGINEERINGCRS = 346, + T_PARAMETRICDATUM = 347, + T_AFFINE = 348, + T_CARTESIAN = 349, + T_CYLINDRICAL = 350, + T_ELLIPSOIDAL = 351, + T_LINEAR = 352, + T_PARAMETRIC = 353, + T_POLAR = 354, + T_SPHERICAL = 355, + T_VERTICAL = 356, + T_TEMPORAL = 357, + T_TEMPORALCOUNT = 358, + T_TEMPORALMEASURE = 359, + T_ORDINAL = 360, + T_TEMPORALDATETIME = 361, + T_NORTH = 362, + T_NORTHNORTHEAST = 363, + T_NORTHEAST = 364, + T_EASTNORTHEAST = 365, + T_EAST = 366, + T_EASTSOUTHEAST = 367, + T_SOUTHEAST = 368, + T_SOUTHSOUTHEAST = 369, + T_SOUTH = 370, + T_SOUTHSOUTHWEST = 371, + T_SOUTHWEST = 372, + T_WESTSOUTHWEST = 373, + T_WEST = 374, + T_WESTNORTHWEST = 375, + T_NORTHWEST = 376, + T_NORTHNORTHWEST = 377, + T_UP = 378, + T_DOWN = 379, + T_GEOCENTRICX = 380, + T_GEOCENTRICY = 381, + T_GEOCENTRICZ = 382, + T_COLUMNPOSITIVE = 383, + T_COLUMNNEGATIVE = 384, + T_ROWPOSITIVE = 385, + T_ROWNEGATIVE = 386, + T_DISPLAYRIGHT = 387, + T_DISPLAYLEFT = 388, + T_DISPLAYUP = 389, + T_DISPLAYDOWN = 390, + T_FORWARD = 391, + T_AFT = 392, + T_PORT = 393, + T_STARBOARD = 394, + T_CLOCKWISE = 395, + T_COUNTERCLOCKWISE = 396, + T_TOWARDS = 397, + T_AWAYFROM = 398, + T_FUTURE = 399, + T_PAST = 400, + T_UNSPECIFIED = 401, + T_STRING = 402, + T_UNSIGNED_INTEGER_DIFFERENT_ONE_TWO_THREE = 403 }; #endif diff --git a/src/wkt2_grammar.y b/src/wkt2_grammar.y index dddb0b30..6773d1e1 100644 --- a/src/wkt2_grammar.y +++ b/src/wkt2_grammar.y @@ -115,6 +115,7 @@ %token T_COORDEPOCH "COORDEPOCH" %token T_COORDINATEMETADATA "COORDINATEMETADATA" %token T_POINTMOTIONOPERATION "POINTMOTIONOPERATION" +%token T_VERSION "VERSION" /* WKT2 alternate (longer or shorter) */ %token T_GEODETICCRS "GEODETICCRS"; @@ -993,29 +994,30 @@ base_geodetic_crs: base_static_geodetic_crs | base_dynamic_geodetic_crs | base_static_geodetic_crs: base_geodetic_crs_keyword left_delimiter base_crs_name wkt_separator geodetic_reference_frame_or_geodetic_datum_ensemble_without_pm - opt_separator_pm_ellipsoidal_cs_unit + opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list right_delimiter -opt_separator_pm_ellipsoidal_cs_unit: - | wkt_separator prime_meridian - | wkt_separator prime_meridian wkt_separator ellipsoidal_cs_unit - | wkt_separator ellipsoidal_cs_unit +opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list: + | wkt_separator prime_meridian opt_separator_identifier_list + | wkt_separator prime_meridian wkt_separator ellipsoidal_cs_unit opt_separator_identifier_list + | wkt_separator ellipsoidal_cs_unit opt_separator_identifier_list + | wkt_separator identifier opt_separator_identifier_list base_dynamic_geodetic_crs: base_geodetic_crs_keyword left_delimiter base_crs_name wkt_separator dynamic_crs wkt_separator geodetic_reference_frame_without_pm - opt_separator_pm_ellipsoidal_cs_unit + opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list right_delimiter base_static_geographic_crs: base_geographic_crs_keyword left_delimiter base_crs_name wkt_separator geodetic_reference_frame_or_geodetic_datum_ensemble_without_pm - opt_separator_pm_ellipsoidal_cs_unit + opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list right_delimiter base_dynamic_geographic_crs: base_geographic_crs_keyword left_delimiter base_crs_name wkt_separator dynamic_crs wkt_separator geodetic_reference_frame_without_pm - opt_separator_pm_ellipsoidal_cs_unit + opt_separator_pm_ellipsoidal_cs_unit_opt_separator_identifier_list right_delimiter base_geodetic_crs_keyword: T_BASEGEODCRS @@ -1281,27 +1283,28 @@ derived_dynamic_geog_crs: geographic_crs_keyword base_static_geod_crs: base_geodetic_crs_keyword left_delimiter base_crs_name wkt_separator geodetic_reference_frame_or_geodetic_datum_ensemble_without_pm - opt_separator_pm + opt_separator_pm_opt_separator_identifier_list right_delimiter -opt_separator_pm: - | wkt_separator prime_meridian +opt_separator_pm_opt_separator_identifier_list: + | wkt_separator prime_meridian opt_separator_identifier_list + | wkt_separator identifier opt_separator_identifier_list base_dynamic_geod_crs: base_geodetic_crs_keyword left_delimiter base_crs_name wkt_separator dynamic_crs wkt_separator geodetic_reference_frame_without_pm - opt_separator_pm + opt_separator_pm_opt_separator_identifier_list right_delimiter base_static_geog_crs: base_geographic_crs_keyword left_delimiter base_crs_name wkt_separator geodetic_reference_frame_or_geodetic_datum_ensemble_without_pm - opt_separator_pm + opt_separator_pm_opt_separator_identifier_list right_delimiter base_dynamic_geog_crs: base_geographic_crs_keyword left_delimiter base_crs_name wkt_separator dynamic_crs wkt_separator geodetic_reference_frame_without_pm - opt_separator_pm + opt_separator_pm_opt_separator_identifier_list right_delimiter // Derived projected CRS @@ -1319,6 +1322,7 @@ derived_crs_name: quoted_latin_text base_projected_crs: base_projected_crs_keyword left_delimiter base_crs_name wkt_separator base_geodetic_geographic_crs wkt_separator map_projection + opt_separator_identifier_list right_delimiter base_projected_crs_keyword: T_BASEPROJCRS @@ -1337,11 +1341,15 @@ derived_vertical_crs: vertical_crs_keyword left_delimiter crs_name base_vertical_crs: base_static_vertical_crs | base_dynamic_vertical_crs base_static_vertical_crs: base_vertical_crs_keyword left_delimiter base_crs_name - wkt_separator vertical_reference_frame right_delimiter + wkt_separator vertical_reference_frame + opt_separator_identifier_list + right_delimiter base_dynamic_vertical_crs: base_vertical_crs_keyword left_delimiter base_crs_name wkt_separator dynamic_crs - wkt_separator vertical_reference_frame right_delimiter + wkt_separator vertical_reference_frame + opt_separator_identifier_list + right_delimiter base_vertical_crs_keyword: T_BASEVERTCRS @@ -1355,7 +1363,9 @@ derived_engineering_crs: engineering_crs_keyword left_delimiter crs_name right_delimiter base_engineering_crs: base_engineering_crs_keyword left_delimiter base_crs_name - wkt_separator engineering_datum right_delimiter + wkt_separator engineering_datum + opt_separator_identifier_list + right_delimiter base_engineering_crs_keyword: T_BASEENGCRS @@ -1369,7 +1379,9 @@ derived_parametric_crs: parametric_crs_keyword left_delimiter crs_name right_delimiter base_parametric_crs: base_parametric_crs_keyword left_delimiter base_crs_name - wkt_separator parametric_datum right_delimiter + wkt_separator parametric_datum + opt_separator_identifier_list + right_delimiter base_parametric_crs_keyword: T_BASEPARAMCRS @@ -1383,7 +1395,9 @@ derived_temporal_crs: temporal_crs_keyword left_delimiter crs_name right_delimiter base_temporal_crs: base_temporal_crs_keyword left_delimiter base_crs_name - wkt_separator temporal_datum right_delimiter + wkt_separator temporal_datum + opt_separator_identifier_list + right_delimiter base_temporal_crs_keyword: T_BASETIMECRS @@ -1451,6 +1465,13 @@ dynamic_crs_coordinate_metadata: dynamic_geodetic_crs | dynamic_geographic_crs | // Coordinate operations coordinate_operation: operation_keyword left_delimiter operation_name + coordinate_operation_next + +coordinate_operation_next: + wkt_separator operation_version coordinate_operation_end + | coordinate_operation_end + +coordinate_operation_end: wkt_separator source_crs wkt_separator target_crs wkt_separator operation_method opt_parameter_or_parameter_file_list_opt_interpolation_crs_opt_operation_accuracy_opt_separator_scope_extent_identifier_remark @@ -1468,6 +1489,13 @@ operation_keyword: T_COORDINATEOPERATION operation_name: quoted_latin_text +operation_version: operation_version_keyword left_delimiter + operation_version_text right_delimiter + +operation_version_keyword: T_VERSION + +operation_version_text: quoted_latin_text + source_crs: source_crs_keyword left_delimiter crs right_delimiter source_crs_keyword: T_SOURCECRS @@ -1488,6 +1516,13 @@ operation_accuracy_keyword: T_OPERATIONACCURACY // Point motion operation point_motion_operation: point_motion_keyword left_delimiter operation_name + point_motion_operation_next + +point_motion_operation_next: + wkt_separator operation_version point_motion_operation_end + | point_motion_operation_end + +point_motion_operation_end: wkt_separator source_crs wkt_separator operation_method opt_parameter_or_parameter_file_list_opt_operation_accuracy_opt_separator_scope_extent_identifier_remark @@ -1506,6 +1541,13 @@ point_motion_keyword: T_POINTMOTIONOPERATION concatenated_operation: concatenated_operation_keyword left_delimiter operation_name + concatenated_operation_next + +concatenated_operation_next: + wkt_separator operation_version concatenated_operation_end + | concatenated_operation_end + +concatenated_operation_end: wkt_separator source_crs wkt_separator target_crs wkt_separator step_keyword left_delimiter step right_delimiter wkt_separator step_keyword left_delimiter step right_delimiter @@ -1535,8 +1577,16 @@ bound_crs: bound_crs_keyword left_delimiter bound_crs_keyword: T_BOUNDCRS abridged_coordinate_transformation: abridged_transformation_keyword left_delimiter - operation_name wkt_separator - operation_method wkt_separator + operation_name + abridged_coordinate_transformation_next + +abridged_coordinate_transformation_next: + wkt_separator operation_version abridged_coordinate_transformation_end + | abridged_coordinate_transformation_end + +abridged_coordinate_transformation_end: + wkt_separator operation_method + wkt_separator abridged_parameter_or_parameter_file opt_end_abridged_coordinate_transformation right_delimiter diff --git a/src/wkt2_parser.cpp b/src/wkt2_parser.cpp index f77c7ceb..921d6dd4 100644 --- a/src/wkt2_parser.cpp +++ b/src/wkt2_parser.cpp @@ -100,7 +100,7 @@ static const wkt2_tokens tokens[] = { PAIR(GEOGRAPHICCRS), PAIR(TRF), PAIR(VERTICALCRS), PAIR(VERTICALDATUM), PAIR(VRF), PAIR(TIMEDATUM), PAIR(TEMPORALQUANTITY), PAIR(ENGINEERINGDATUM), PAIR(ENGINEERINGCRS), PAIR(PARAMETRICDATUM), PAIR(EPOCH), PAIR(COORDEPOCH), - PAIR(COORDINATEMETADATA), PAIR(POINTMOTIONOPERATION), + PAIR(COORDINATEMETADATA), PAIR(POINTMOTIONOPERATION), PAIR(VERSION), // CS types PAIR(AFFINE), PAIR(CARTESIAN), PAIR(CYLINDRICAL), PAIR(ELLIPSOIDAL), diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 3d015e0c..1d097d9b 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -1640,6 +1640,33 @@ TEST(wkt_parse, wkt2_projected) { // --------------------------------------------------------------------------- +TEST(wkt_parse, wkt2_2018_projected_with_id_in_basegeodcrs) { + auto wkt = "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " ID[\"EPSG\",4326]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\"],\n" + " PARAMETER[\"Latitude of natural origin\",0],\n" + " PARAMETER[\"Longitude of natural origin\",3],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996],\n" + " PARAMETER[\"False easting\",500000],\n" + " PARAMETER[\"False northing\",0]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",32631]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + ASSERT_EQ(crs->baseCRS()->identifiers().size(), 1U); + EXPECT_EQ(crs->baseCRS()->identifiers().front()->code(), "4326"); +} + +// --------------------------------------------------------------------------- + TEST(wkt_parse, wkt2_2018_simplified_projected) { auto wkt = "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" " BASEGEOGCRS[\"WGS 84\",\n" @@ -2280,6 +2307,95 @@ TEST(wkt_parse, COORDINATEOPERATION) { GeographicCRS::EPSG_4979->nameStr()); EXPECT_EQ(transf->method()->nameStr(), "operationMethodName"); EXPECT_EQ(transf->parameterValues().size(), 1U); + + { + auto outWkt = transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_EQ(replaceAll(replaceAll(outWkt, "\n", ""), " ", ""), + replaceAll(replaceAll(wkt, "\n", ""), " ", "")); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, COORDINATEOPERATION_wkt2018) { + + std::string src_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + src_wkt = GeographicCRS::EPSG_4326->exportToWKT(formatter.get()); + } + + std::string dst_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + dst_wkt = GeographicCRS::EPSG_4807->exportToWKT(formatter.get()); + } + + std::string interpolation_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + interpolation_wkt = + GeographicCRS::EPSG_4979->exportToWKT(formatter.get()); + } + + auto wkt = + "COORDINATEOPERATION[\"transformationName\",\n" + " VERSION[\"my version\"],\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + + "],\n" + " METHOD[\"operationMethodName\",\n" + " ID[\"codeSpaceOperationMethod\",\"codeOperationMethod\"]],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"],\n" + " INTERPOLATIONCRS[" + + interpolation_wkt + + "],\n" + " OPERATIONACCURACY[0.1],\n" + " ID[\"codeSpaceTransformation\",\"codeTransformation\"],\n" + " REMARK[\"my remarks\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ(transf->nameStr(), "transformationName"); + EXPECT_EQ(*transf->operationVersion(), "my version"); + ASSERT_EQ(transf->identifiers().size(), 1U); + EXPECT_EQ(transf->identifiers()[0]->code(), "codeTransformation"); + EXPECT_EQ(*(transf->identifiers()[0]->codeSpace()), + "codeSpaceTransformation"); + ASSERT_EQ(transf->coordinateOperationAccuracies().size(), 1U); + EXPECT_EQ(transf->coordinateOperationAccuracies()[0]->value(), "0.1"); + EXPECT_EQ(transf->sourceCRS()->nameStr(), + GeographicCRS::EPSG_4326->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + GeographicCRS::EPSG_4807->nameStr()); + ASSERT_TRUE(transf->interpolationCRS() != nullptr); + EXPECT_EQ(transf->interpolationCRS()->nameStr(), + GeographicCRS::EPSG_4979->nameStr()); + EXPECT_EQ(transf->method()->nameStr(), "operationMethodName"); + EXPECT_EQ(transf->parameterValues().size(), 1U); + + { + auto outWkt = transf->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()); + EXPECT_EQ(replaceAll(replaceAll(outWkt, "\n", ""), " ", ""), + replaceAll(replaceAll(wkt, "\n", ""), " ", "")); + } + + { + auto outWkt = transf->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015).get()); + EXPECT_FALSE(outWkt.find("VERSION[\"my version\"],") != + std::string::npos); + } } // --------------------------------------------------------------------------- @@ -2339,6 +2455,7 @@ TEST(wkt_parse, CONCATENATEDOPERATION) { auto concat = nn_dynamic_pointer_cast<ConcatenatedOperation>(obj); ASSERT_TRUE(concat != nullptr); EXPECT_EQ(concat->nameStr(), "name"); + EXPECT_FALSE(concat->operationVersion().has_value()); ASSERT_EQ(concat->identifiers().size(), 1U); EXPECT_EQ(concat->identifiers()[0]->code(), "code"); EXPECT_EQ(*(concat->identifiers()[0]->codeSpace()), "codeSpace"); @@ -2487,6 +2604,7 @@ TEST(wkt_parse, auto wkt = "CONCATENATEDOPERATION[\"Inverse of UTM zone 11N + NAD27 to WGS 84 " "(79) + UTM zone 11N\",\n" + " VERSION[\"my version\"],\n" " SOURCECRS[\n" " PROJCRS[\"NAD27 / UTM zone 11N\",\n" " BASEGEOGCRS[\"NAD27\",\n" @@ -2639,6 +2757,7 @@ TEST(wkt_parse, auto obj = WKTParser().createFromWKT(wkt); auto concat = nn_dynamic_pointer_cast<ConcatenatedOperation>(obj); ASSERT_TRUE(concat != nullptr); + EXPECT_EQ(*concat->operationVersion(), "my version"); EXPECT_EQ(concat->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +inv +proj=utm +zone=11 +ellps=clrk66 " |
