From 9b3abe02c73cd59bf3f2a797c0d40c05380b473c Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 14 Oct 2013 09:01:18 +0200 Subject: [PATCH 01/13] - Support "new T()" inside annotations [XP Language grammar] # See issue #36 --- src/main/jay/grammars/xp.jay | 16 +- .../xp/compiler/syntax/xp/Parser.class.php | 2749 +++++++++-------- .../tests/syntax/xp/AnnotationTest.class.php | 30 + 3 files changed, 1422 insertions(+), 1373 deletions(-) diff --git a/src/main/jay/grammars/xp.jay b/src/main/jay/grammars/xp.jay index c64b66260..5e23445e6 100644 --- a/src/main/jay/grammars/xp.jay +++ b/src/main/jay/grammars/xp.jay @@ -442,7 +442,7 @@ annotation: '@' annotation_target { $$= $2; } - | '@' annotation_target '(' literal ')' { + | '@' annotation_target '(' annotationvalue ')' { $4 && $2->parameters= array('default' => $4); $$= $2; } @@ -475,8 +475,18 @@ annotationmembers: ; annotationmember: - T_WORD '=' literal { $$= array($1 => $3); } - | T_CLASS '=' literal { $$= array($1 => $3); } + T_WORD '=' annotationvalue { $$= array($1 => $3); } + | T_CLASS '=' annotationvalue { $$= array($1 => $3); } +; + +annotationvalue: + literal + | T_NEW typename '(' expressionlist_opt ')' { + $$= new InstanceCreationNode(); + $$->type= $2; + $$->parameters= $4; + $$->body= NULL; + } ; methodbody: diff --git a/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/src/main/php/xp/compiler/syntax/xp/Parser.class.php index f4caeea26..b39ade3b0 100644 --- a/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -160,30 +160,31 @@ class Parser extends \text\parser\generic\AbstractParser { 18, 27, 27, 29, 28, 30, 28, 24, 24, 24, 34, 34, 35, 35, 38, 38, 33, 33, 40, 25, 43, 25, 45, 25, 47, 25, 11, 11, 48, 48, - 50, 50, 50, 51, 51, 51, 52, 52, 53, 53, - 42, 42, 42, 39, 39, 39, 44, 44, 54, 54, - 37, 37, 37, 55, 55, 41, 41, 46, 46, 46, - 46, 46, 46, 26, 26, 56, 56, 59, 57, 60, - 57, 63, 57, 65, 57, 67, 57, 68, 57, 69, - 57, 71, 57, 72, 57, 73, 57, 74, 57, 57, - 57, 57, 76, 76, 78, 78, 77, 77, 79, 66, - 66, 70, 70, 80, 80, 82, 81, 83, 81, 61, - 61, 62, 84, 62, 75, 75, 85, 85, 89, 88, - 90, 90, 86, 86, 91, 87, 64, 64, 92, 92, - 58, 58, 93, 93, 93, 97, 97, 97, 97, 99, - 31, 31, 100, 31, 101, 31, 102, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 110, - 31, 31, 109, 109, 108, 108, 111, 111, 112, 112, - 36, 114, 36, 36, 36, 36, 36, 36, 113, 113, - 96, 96, 115, 115, 117, 117, 116, 116, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 106, 106, 106, 106, 106, 106, 107, 107, 98, 98, - 118, 118, 120, 119, 119, 122, 119, 123, 119, 121, - 121, 10, 10, 10, 32, 32, 32, 12, 12, 94, - 95, 124, 124, 125, 125, 21, 21, 49, 49, 126, - 126, 127, 127, 127, 127, 127, 127, 127, 127, + 50, 50, 50, 51, 51, 51, 53, 53, 54, 54, + 52, 52, 42, 42, 42, 39, 39, 39, 44, 44, + 56, 56, 37, 37, 37, 57, 57, 41, 41, 46, + 46, 46, 46, 46, 46, 26, 26, 58, 58, 61, + 59, 62, 59, 65, 59, 66, 59, 68, 59, 69, + 59, 70, 59, 72, 59, 73, 59, 74, 59, 75, + 59, 59, 59, 59, 77, 77, 79, 79, 78, 78, + 80, 67, 67, 71, 71, 81, 81, 83, 82, 84, + 82, 63, 63, 64, 85, 64, 76, 76, 86, 86, + 90, 89, 91, 91, 87, 87, 92, 88, 55, 55, + 93, 93, 60, 60, 94, 94, 94, 98, 98, 98, + 98, 100, 31, 31, 101, 31, 102, 31, 103, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 111, 31, 31, 110, 110, 109, 109, 112, 112, + 113, 113, 36, 115, 36, 36, 36, 36, 36, 36, + 114, 114, 97, 97, 116, 116, 118, 118, 117, 117, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 107, 107, 107, 107, 107, 107, 108, 108, + 99, 99, 119, 119, 121, 120, 120, 123, 120, 124, + 120, 122, 122, 10, 10, 10, 32, 32, 32, 12, + 12, 95, 96, 125, 125, 126, 126, 21, 21, 49, + 49, 127, 127, 128, 128, 128, 128, 128, 128, 128, + 128, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 5, 6, @@ -194,1280 +195,1280 @@ class Parser extends \text\parser\generic\AbstractParser { 1, 4, 1, 2, 2, 4, 0, 2, 0, 9, 0, 9, 0, 8, 0, 10, 4, 1, 1, 3, 2, 5, 5, 3, 3, 1, 1, 3, 3, 3, - 1, 3, 3, 0, 2, 1, 0, 1, 1, 3, - 3, 3, 4, 1, 2, 0, 2, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 2, 0, 4, 0, - 7, 0, 10, 0, 8, 0, 6, 0, 8, 0, - 8, 0, 3, 0, 3, 0, 4, 0, 6, 7, - 7, 2, 1, 3, 1, 3, 1, 3, 3, 1, - 3, 0, 1, 1, 2, 0, 5, 0, 4, 1, - 3, 0, 0, 3, 2, 1, 1, 2, 0, 9, - 1, 3, 0, 1, 0, 5, 0, 1, 1, 3, - 0, 1, 5, 4, 4, 1, 4, 1, 1, 0, - 3, 2, 0, 4, 0, 5, 0, 6, 2, 3, - 1, 1, 1, 1, 1, 5, 3, 3, 3, 0, - 8, 4, 1, 3, 0, 1, 1, 3, 1, 2, - 1, 0, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 0, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, - 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, - 1, 2, 0, 4, 2, 0, 6, 0, 5, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, - 4, 1, 3, 1, 3, 1, 3, 0, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 1, 3, 3, 0, 2, 1, 0, 1, + 1, 3, 3, 3, 4, 1, 2, 0, 2, 1, + 1, 1, 1, 1, 1, 0, 1, 1, 2, 0, + 4, 0, 7, 0, 10, 0, 8, 0, 6, 0, + 8, 0, 8, 0, 3, 0, 3, 0, 4, 0, + 6, 7, 7, 2, 1, 3, 1, 3, 1, 3, + 3, 1, 3, 0, 1, 1, 2, 0, 5, 0, + 4, 1, 3, 0, 0, 3, 2, 1, 1, 2, + 0, 9, 1, 3, 0, 1, 0, 5, 0, 1, + 1, 3, 0, 1, 5, 4, 4, 1, 4, 1, + 1, 0, 3, 2, 0, 4, 0, 5, 0, 6, + 2, 3, 1, 1, 1, 1, 1, 5, 3, 3, + 3, 0, 8, 4, 1, 3, 0, 1, 1, 3, + 1, 2, 1, 0, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 1, 2, 0, 4, 2, 0, 6, 0, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 3, 4, 1, 3, 1, 3, 1, 3, 0, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 282, 0, 0, 284, 283, 0, 15, 0, 302, - 304, 303, 306, 308, 307, 309, 305, 1, 0, 68, - 0, 300, 8, 0, 0, 4, 0, 0, 0, 0, - 0, 69, 20, 24, 22, 301, 18, 19, 0, 0, + 0, 284, 0, 0, 286, 285, 0, 15, 0, 304, + 306, 305, 308, 310, 309, 311, 307, 1, 0, 68, + 0, 302, 8, 0, 0, 4, 0, 0, 0, 0, + 0, 69, 20, 24, 22, 303, 18, 19, 0, 0, 0, 14, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 9, 0, 0, 0, 70, 67, 0, 0, 0, 0, 11, 12, 10, - 74, 75, 212, 0, 218, 214, 217, 215, 216, 0, - 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 0, 73, 0, 0, 285, 0, 286, - 287, 0, 292, 27, 0, 0, 0, 31, 35, 0, - 221, 0, 0, 0, 0, 0, 0, 183, 0, 0, - 0, 180, 0, 0, 0, 0, 0, 219, 0, 220, - 191, 192, 193, 194, 195, 0, 0, 223, 211, 79, - 80, 0, 78, 0, 0, 0, 0, 289, 29, 35, + 74, 75, 214, 0, 0, 220, 216, 219, 217, 218, + 0, 81, 0, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 72, 0, 73, 0, 0, + 287, 0, 288, 289, 0, 294, 27, 0, 0, 0, + 31, 35, 0, 223, 0, 0, 0, 0, 0, 0, + 185, 0, 0, 0, 182, 0, 0, 0, 0, 0, + 221, 0, 222, 193, 194, 195, 196, 197, 0, 0, + 225, 0, 213, 79, 80, 0, 78, 0, 0, 0, + 0, 291, 29, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 0, 189, 0, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 0, 187, 0, 0, 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 269, 270, 0, 275, 283, 282, 184, + 272, 0, 0, 0, 215, 0, 0, 297, 0, 292, + 295, 0, 299, 0, 0, 25, 0, 34, 36, 37, + 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, + 0, 0, 183, 0, 211, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, - 268, 0, 273, 281, 280, 182, 270, 0, 0, 0, - 213, 0, 295, 0, 290, 293, 0, 297, 0, 0, - 25, 0, 34, 36, 37, 0, 0, 0, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 181, 0, 209, - 0, 0, 0, 207, 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, 201, 0, 0, 192, 0, + 274, 280, 0, 172, 0, 0, 228, 226, 82, 293, + 21, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 35, 0, 186, 0, 0, 0, 204, 212, 0, 0, + 0, 181, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 97, 0, 0, 278, 110, 0, 128, 114, 118, + 120, 116, 124, 126, 112, 122, 0, 0, 0, 0, + 108, 0, 63, 0, 0, 0, 0, 0, 0, 35, + 45, 0, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 0, 188, 0, 276, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 199, 0, 0, 190, 0, 272, 278, 0, 170, 0, - 0, 226, 224, 291, 21, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 35, 0, 184, 0, 0, 0, - 202, 210, 0, 0, 0, 179, 176, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 276, 108, - 0, 126, 112, 116, 118, 114, 122, 124, 110, 120, - 0, 0, 0, 0, 106, 0, 63, 0, 0, 0, - 0, 0, 0, 35, 45, 0, 43, 0, 0, 0, - 0, 0, 0, 0, 0, 208, 0, 186, 0, 274, - 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 132, 107, 0, 0, - 61, 59, 98, 99, 100, 101, 102, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 175, 188, 0, - 200, 0, 279, 0, 0, 0, 0, 0, 133, 0, - 0, 0, 0, 150, 0, 0, 123, 125, 0, 0, - 0, 0, 137, 0, 0, 89, 0, 0, 0, 0, - 0, 65, 0, 0, 48, 0, 0, 53, 33, 0, - 173, 204, 0, 177, 277, 109, 0, 0, 0, 0, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 55, 0, 49, 54, 47, 201, - 0, 0, 134, 0, 0, 0, 151, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 0, 90, 92, - 91, 0, 0, 0, 0, 0, 159, 165, 129, 0, - 156, 157, 0, 0, 117, 0, 141, 0, 0, 0, - 0, 93, 97, 0, 81, 0, 64, 0, 0, 0, - 56, 0, 0, 155, 164, 158, 130, 0, 0, 0, - 153, 111, 146, 148, 0, 0, 144, 131, 0, 0, - 62, 60, 0, 0, 0, 0, 119, 115, 0, 0, - 0, 121, 145, 83, 82, 66, 161, 0, 0, 0, - 154, 0, 0, 0, 0, 166, 113, 0, 149, 162, - 0, 147, 0, 0, 160, + 0, 38, 134, 109, 0, 0, 61, 59, 100, 101, + 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, + 0, 0, 176, 177, 190, 0, 202, 0, 281, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 152, + 0, 0, 125, 127, 0, 0, 0, 0, 139, 0, + 0, 91, 0, 0, 0, 0, 0, 65, 0, 0, + 48, 0, 0, 53, 33, 0, 175, 206, 0, 179, + 279, 111, 0, 0, 0, 0, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 55, 0, 49, 54, 47, 203, 0, 0, 136, 0, + 0, 0, 153, 0, 0, 0, 0, 0, 0, 140, + 0, 0, 0, 0, 92, 94, 93, 0, 0, 0, + 0, 0, 161, 167, 131, 0, 158, 159, 0, 0, + 119, 0, 143, 0, 0, 0, 0, 95, 99, 0, + 83, 0, 64, 0, 0, 0, 56, 0, 0, 157, + 166, 160, 132, 0, 0, 0, 155, 113, 148, 150, + 0, 0, 146, 133, 0, 0, 62, 60, 0, 0, + 0, 0, 121, 117, 0, 0, 0, 123, 147, 85, + 84, 66, 163, 0, 0, 0, 156, 0, 0, 0, + 0, 168, 115, 0, 151, 164, 0, 149, 0, 0, + 162, ); protected static $yyDgoto= array(2, - 3, 6, 28, 135, 4, 7, 8, 17, 53, 18, - 232, 108, 61, 96, 116, 162, 63, 237, 62, 98, - 118, 365, 233, 234, 235, 352, 238, 239, 311, 312, - 353, 293, 412, 363, 457, 137, 446, 458, 490, 451, - 518, 547, 450, 447, 400, 409, 493, 41, 30, 42, - 58, 92, 93, 448, 449, 354, 355, 269, 383, 393, - 435, 562, 387, 138, 390, 477, 388, 389, 394, 565, - 391, 392, 386, 426, 529, 428, 442, 429, 443, 566, - 567, 580, 581, 579, 530, 554, 531, 532, 552, 588, - 553, 139, 242, 110, 111, 140, 328, 216, 176, 171, - 255, 246, 141, 142, 143, 144, 145, 252, 375, 463, - 253, 254, 146, 100, 147, 148, 303, 217, 218, 295, - 219, 382, 338, 112, 113, 31, 32, + 3, 6, 28, 138, 4, 7, 8, 17, 53, 18, + 237, 111, 61, 98, 119, 166, 63, 242, 62, 100, + 121, 371, 238, 239, 240, 358, 243, 244, 317, 318, + 359, 298, 418, 369, 463, 140, 452, 464, 496, 457, + 524, 553, 456, 453, 406, 415, 499, 41, 30, 42, + 58, 93, 94, 95, 141, 454, 455, 360, 361, 274, + 389, 399, 441, 568, 393, 396, 483, 394, 395, 400, + 571, 397, 398, 392, 432, 535, 434, 448, 435, 449, + 572, 573, 586, 587, 585, 536, 560, 537, 538, 558, + 594, 559, 142, 247, 113, 114, 143, 334, 220, 180, + 175, 260, 251, 144, 145, 146, 147, 148, 257, 381, + 469, 258, 259, 149, 102, 150, 151, 308, 221, 222, + 300, 223, 388, 344, 115, 116, 31, 32, ); - protected static $yySindex = array( -176, - 0, 0, -160, -152, -191, 1142, -160, 0, 119, 165, - 166, 0, -188, -188, 0, 0, 250, 0, 244, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 271, 0, - 604, 0, 0, -152, -152, 0, -33, 275, -36, -207, - 77, 0, 0, 0, 0, 0, 0, 0, -36, -36, - -36, 0, 289, 0, 145, 307, 0, 290, 244, 604, - -152, -152, -152, 314, 0, 338, 345, 0, -152, -152, - 685, 0, 0, 353, 99, 118, 99, 0, 0, 0, - 0, 0, 0, 371, 0, 0, 0, 0, 0, 387, - 412, 317, 0, 31, -152, 144, -152, 337, 144, 4568, - 708, 708, 0, -204, 0, 158, 415, 0, 395, 0, - 0, 87, 0, 0, -152, 392, 450, 0, 0, 402, - 0, 4736, 4736, 4736, 4736, 4736, 4736, 0, 4736, 152, - 474, 0, 4736, 418, 125, 3205, -42, 0, 500, 0, - 0, 0, 0, 0, 0, 462, 516, 0, 0, 0, - 0, 371, 0, -152, -65, 469, 31, 0, 0, 0, - -152, 1680, 315, 159, -49, -49, -116, -49, -49, -49, - -65, 0, 4736, 0, 4736, -42, 2276, -59, 0, 4736, - 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, 4736, - 4736, 4736, 4736, 4736, 4736, 4577, 4664, 4371, 4736, 4557, - 4736, 4736, 4736, 4736, 4736, 4736, 4736, -152, 4736, 0, - 0, -65, 0, 0, 0, 0, 0, -42, -25, 4736, - 0, 184, 0, 141, 0, 0, 2060, 0, 453, 323, - 0, -53, 0, 0, 0, 0, 459, 283, 0, 549, - 395, -42, 472, 480, 3205, 4736, 3205, 0, -42, 0, - -67, 340, 554, 0, -227, 3344, 3422, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3205, 555, 100, - 262, 738, 4736, 3411, 4736, 3411, 4736, 4736, 33, 33, - 4736, 4736, 33, 33, 13, 13, 38, 38, 38, -116, - 0, -49, 67, 0, 4736, 0, 0, 584, 0, 577, - 474, 0, 0, 0, 0, 559, 352, 300, 382, 129, - 521, 605, 0, 315, 0, 4736, 0, 4736, -47, 611, - 0, 0, 4675, -59, 606, 0, 0, -42, 4736, 3422, - 3422, 33, 33, 33, 33, 0, 567, 4736, 0, 0, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 621, 541, 2312, 559, 0, 608, 0, 627, 630, 506, - 580, 615, 556, 0, 0, 4736, 0, 783, 631, 552, - 557, -42, 559, 3205, 561, 0, 4736, 0, -20, 0, - 639, 4736, 4736, 0, 341, 4736, 644, 648, 431, 659, - 638, 641, 662, 663, 364, 0, 0, 0, 708, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 669, 7, - 4736, 651, 452, 2101, 2466, 521, 0, 0, 0, 588, - 0, 673, 0, 677, 660, 559, 668, 319, 0, 2493, - 4736, 4736, 559, 0, 362, 384, 0, 0, 4736, 4736, - 672, 349, 0, 681, 695, 0, 701, 699, -205, -63, - -63, 0, 652, 3205, 0, 65, -88, 0, 0, 521, - 0, 0, -42, 0, 0, 0, 622, 4736, 341, 623, - 0, 689, 2520, 624, 711, 709, 388, 2697, 2724, 4736, - 364, 632, 0, 494, 443, 7, 425, 615, 7, 725, - 699, 728, 7, 0, 0, 559, 0, 0, 0, 0, - 173, 3205, 0, 559, 4736, 431, 0, 4736, 430, 4736, - 431, 655, 3205, 0, 559, 615, -152, 9, 0, 0, - 0, 699, 443, 443, 743, 661, 0, 0, 0, 173, - 0, 0, 664, 729, 0, 2765, 0, 2905, 444, 155, - 692, 0, 0, 4736, 0, 559, 0, 9, 9, 443, - 0, 762, 702, 0, 0, 0, 0, 4736, 759, 431, - 0, 0, 0, 0, 712, 155, 0, 0, 2932, 713, - 0, 0, 9, -152, 559, 785, 0, 0, 431, 4736, - 782, 0, 0, 0, 0, 0, 0, -110, 716, 431, - 0, 2959, 559, -152, 801, 0, 0, 559, 0, 0, - 720, 0, 559, 719, 0, + protected static $yySindex = array( -294, + 0, 0, -264, 103, -215, 307, -264, 0, 10, 21, + 69, 0, -222, -222, 0, 0, 75, 0, 157, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 940, 0, 0, 103, 103, 0, -42, 121, -19, -161, + 52, 0, 0, 0, 0, 0, 0, 0, -19, -19, + -19, 0, 148, 0, 165, 182, 0, 240, 157, 940, + 103, 103, 103, 225, 0, 273, 281, 0, 103, 103, + 450, 0, 0, 258, 82, 115, 82, 0, 0, 0, + 0, 0, 0, 103, 299, 0, 0, 0, 0, 0, + 379, 0, 392, 259, 0, 114, 103, 131, 103, 323, + 131, 4508, 408, 572, 572, 0, -156, 0, 147, 407, + 0, 414, 0, 0, 155, 0, 0, 103, 390, 479, + 0, 0, 420, 0, 4710, 4710, 4710, 4710, 4710, 4710, + 0, 4710, 319, 468, 0, 4710, 423, 140, 3082, -44, + 0, 507, 0, 0, 0, 0, 0, 0, 460, 510, + 0, 4710, 0, 0, 0, 299, 0, 103, 256, 463, + 114, 0, 0, 0, 103, 898, 303, 341, -116, -116, + 104, -116, -116, -116, 256, 0, 4710, 0, 4710, -44, + 2063, 35, 0, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4517, + 4701, 4323, 4710, 4447, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 103, 4710, 0, 0, 256, 0, 0, 0, 0, + 0, -44, -22, 4710, 0, 160, 528, 0, 280, 0, + 0, 1551, 0, 451, 315, 0, 48, 0, 0, 0, + 0, 453, 29, 0, 543, 414, -44, 462, 470, 3082, + 4710, 3082, 0, -44, 0, -58, 329, 551, 0, -177, + 3301, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, + 3328, 3328, 3082, 557, 3199, 60, 296, 4710, 372, 4710, + 372, 4710, 4710, 87, 87, 4710, 4710, 87, 87, 99, + 99, -111, -111, -111, 104, 0, -116, 146, 0, 4710, + 0, 0, 569, 0, 561, 468, 0, 0, 0, 0, + 0, 650, 362, 397, 364, -31, 502, 586, 0, 303, + 0, 4710, 0, 4710, 90, 587, 0, 0, 4614, 35, + 589, 0, 0, -44, 4710, 3328, 3328, 87, 87, 87, + 87, 0, 545, 4710, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 600, 521, 2191, 650, + 0, 588, 0, 607, 608, 27, 560, 593, 539, 0, + 0, 4710, 0, 598, 623, 547, 556, -44, 650, 3082, + 563, 0, 4710, 0, -18, 0, 629, 4710, 4710, 0, + 346, 4710, 651, 652, 527, 654, 641, 645, 678, 681, + 382, 0, 0, 0, 337, 208, 0, 0, 0, 0, + 0, 0, 0, 0, 685, 208, 4710, 667, 472, 1781, + 2231, 502, 0, 0, 0, 615, 0, 702, 0, 710, + 693, 650, 692, 403, 0, 2448, 4710, 4710, 650, 0, + 394, 431, 0, 0, 4710, 4710, 699, 415, 0, 704, + 719, 0, 737, 739, -150, 239, 239, 0, 688, 3082, + 0, -6, -108, 0, 0, 502, 0, 0, -44, 0, + 0, 0, 659, 4710, 346, 662, 0, 735, 2487, 670, + 757, 762, 437, 2616, 2643, 4710, 382, 684, 0, 548, + 488, 208, 474, 593, 208, 774, 739, 780, 208, 0, + 0, 650, 0, 0, 0, 0, 135, 3082, 0, 650, + 4710, 527, 0, 4710, 482, 4710, 527, 701, 3082, 0, + 650, 593, 103, -33, 0, 0, 0, 739, 488, 488, + 784, 706, 0, 0, 0, 135, 0, 0, 714, 768, + 0, 2670, 0, 2783, 458, 112, 716, 0, 0, 4710, + 0, 650, 0, -33, -33, 488, 0, 802, 720, 0, + 0, 0, 0, 4710, 791, 527, 0, 0, 0, 0, + 726, 112, 0, 0, 2916, 728, 0, 0, -33, 103, + 650, 814, 0, 0, 527, 4710, 798, 0, 0, 0, + 0, 0, 0, -112, 732, 527, 0, 3055, 650, 103, + 817, 0, 0, 650, 0, 0, 736, 0, 650, 738, + 0, ); - protected static $yyRindex= array( 823, - 0, 0, 1476, 0, 0, 280, 1809, 0, 769, 0, + protected static $yyRindex= array( 756, + 0, 0, 781, 0, 0, 237, 840, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -43, 266, 0, 0, 82, 0, 277, + 0, 0, 0, -43, 129, 0, 0, 83, 0, 747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 897, -111, 723, -111, 0, 0, 0, - 0, 0, 0, 806, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 727, 0, 0, 727, 758, - 0, 0, 0, 0, 0, 0, 0, 0, 227, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1592, - 1628, 0, 0, 0, 0, 59, 1395, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, + 0, 0, 0, 906, -101, 741, -101, 0, 0, 0, + 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, + 742, 769, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -120, 731, 596, 1783, 1851, 3028, 1891, 2013, 2040, - 0, 0, 0, 0, 0, 1395, 0, 595, 0, 0, + 0, 0, 1375, 1606, 0, 0, 0, 0, 514, 1333, + 0, 22, 0, 0, 0, 0, 0, 0, 0, -79, + 0, 820, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 746, 686, 1546, 1763, + 2746, 1806, 1935, 1995, 0, 0, 0, 0, 0, 1333, + 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 795, 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, 1454, 0, 358, - 0, -10, 0, 0, 0, 0, -120, 0, 476, 0, - 0, 0, 0, 0, 0, 609, 0, 732, 0, 767, - 0, 1395, 768, 774, 84, 825, 97, 0, 1395, 0, - 0, 0, 610, 0, 0, 23, -39, 4, 43, 421, - 434, 440, 657, 746, 839, 934, 989, 1033, 0, 4328, - 1823, 4168, 0, 4258, 0, 4274, 0, 0, 1323, 3835, - 0, 0, 3872, 3942, 3633, 3677, 3450, 3539, 3607, 3152, - 0, 2081, 1154, 0, 775, 0, 0, 994, 0, 0, - 0, 0, 0, 0, 0, 744, 0, 210, 0, 0, - -15, 0, 0, 0, 0, 825, 0, 745, 0, 0, - 0, 0, 0, 0, 1197, 0, 0, 1395, 0, 1053, - 1226, 4059, 4075, 4099, 4144, 0, 0, 825, 0, 0, + 0, 1508, 0, 942, 0, 47, 0, 0, 0, 0, + 0, 164, 0, 1853, 0, 0, 0, 0, 0, 0, + 91, 0, 750, 0, 800, 0, 1333, 803, 804, 50, + 820, 244, 0, 1333, 0, 0, 0, 643, 0, 0, + -9, -7, 190, 320, 434, 562, 661, 759, 761, 1634, + 1636, 1845, 456, 0, 4313, 4284, 4198, 0, 4214, 0, + 4268, 0, 0, 3712, 3780, 0, 0, 3808, 3882, 3385, + 3630, 3172, 3481, 3586, 2873, 0, 2036, 1307, 0, 805, + 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, + 0, 777, 0, 144, 0, 0, 107, 0, 0, 0, + 0, 820, 0, 778, 0, 0, 0, 0, 0, 0, + 1109, 0, 0, 1333, 0, 2073, 2142, 4012, 4028, 4052, + 4110, 0, 0, 820, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, + 0, 0, 0, 0, 782, 0, 0, 845, 0, 0, + 0, 0, 0, -86, 0, 0, 0, 1333, 777, 783, + 0, 0, 820, 0, 261, 0, 0, 820, 847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -90, 0, 0, 0, 0, 750, 0, - 0, 816, 0, 0, 0, 0, 0, 237, 0, 0, - 0, 1395, 744, 751, 0, 0, 825, 0, 4344, 0, - 0, 825, 818, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 837, + 0, 0, 0, 0, 0, 868, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, + 0, 1210, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 777, 425, 0, 0, 0, 866, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -120, 0, 1294, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 744, 370, 0, 0, 0, - 820, 0, 744, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 840, 0, 841, - 841, 0, 0, 475, 0, 0, 0, 0, 0, -15, - 0, 0, 1395, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 526, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 0, 0, 291, 0, 0, - 855, 0, 837, 0, 0, 744, 0, 0, 0, 0, - 0, 379, 0, 744, 820, 0, 0, 0, 0, 0, - 0, 0, 380, 0, 744, 291, 0, 0, 0, 0, - 0, 862, 46, 46, 0, 0, 0, 0, 0, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 365, 779, - 0, 0, 0, 0, 0, 744, 0, 0, 0, 46, - 0, 0, 0, 0, 0, 0, 0, 825, 0, 0, - 0, 0, 0, 0, 0, 781, 0, 0, 0, 0, - 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, + 0, 0, 0, 886, 0, 887, 887, 0, 0, 723, + 0, 0, 0, 0, 0, 107, 0, 0, 1333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -79, 0, 0, 0, 0, -79, 0, 0, - 0, 0, 744, 0, 0, + 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 0, 0, 143, 0, 0, 892, 0, 868, 0, + 0, 777, 0, 0, 0, 0, 0, 429, 0, 777, + 866, 0, 0, 0, 0, 0, 0, 0, 433, 0, + 777, 143, 0, 0, 0, 0, 0, 894, 74, 74, + 0, 0, 0, 0, 0, 271, 0, 0, 0, 0, + 0, 0, 0, 0, 396, 827, 0, 0, 0, 0, + 0, 777, 0, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 820, 0, 0, 0, 0, 0, 0, + 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, + 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, + 0, 0, 0, -38, 0, 0, 0, 0, 777, 0, + 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 902, 525, 572, 167, - 904, -54, 0, 834, 813, -41, 0, 0, 0, 0, - -114, -148, 0, 0, 0, 947, 0, 599, 0, 0, - 56, 272, -190, 0, 0, -50, -325, 458, 465, 0, - -98, -230, 0, 424, 0, 0, 0, 0, 858, 864, - 0, 0, 822, -137, 718, 0, 41, -181, 0, 0, - -34, 0, 0, 886, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 464, 447, 0, - 377, 0, 0, 0, 0, 0, 406, 422, 0, 0, - 0, 0, 0, 780, 786, 634, 0, -56, 0, 0, + 0, 0, 0, -4, 0, 0, 938, 496, 515, 62, + 949, -56, 0, 881, 855, -151, 0, 0, 0, 0, + -117, -284, 0, 0, 0, 1816, 0, 639, 0, 0, + 66, 386, -165, 0, 0, -50, -327, 497, 504, 0, + -371, -128, 0, 467, 0, 0, 0, 0, 902, 912, + 0, 413, 0, 867, -141, -268, 763, 0, 311, -163, + 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 500, 491, + 0, 409, 0, 0, 0, 0, 0, 444, 446, 0, + 0, 0, 0, 0, 809, 810, 663, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 642, 0, 0, 0, 741, 0, 736, 0, 0, - 0, 0, 0, 0, 808, 0, 936, + 0, 0, 657, 0, 0, 0, 788, 0, 772, 0, + 0, 0, 0, 0, 0, 834, 0, 975, ); protected static $yyTable = array(11, - 159, 198, 16, 215, 198, 52, 75, 76, 77, 209, - 121, 26, 50, 594, 297, 13, 206, 195, 198, 198, - 91, 204, 202, 156, 203, 107, 205, 107, 32, 47, - 48, 107, 325, 225, 105, 57, 497, 107, 299, 198, - 114, 200, 117, 32, 229, 104, 228, 229, 213, 206, - 150, 151, 55, 198, 204, 152, 74, 74, 74, 205, - 117, 229, 229, 197, 81, 82, 197, 545, 12, 206, - 168, 12, 326, 194, 204, 202, 209, 203, 10, 205, - 197, 197, 225, 230, 453, 198, 230, 385, 168, 74, - 74, 13, 74, 106, 14, 90, 229, 107, 296, 169, - 230, 230, 169, 193, 96, 209, 117, 9, 15, 32, - 74, 15, 327, 337, 225, 197, 240, 169, 227, 248, - 59, 107, 168, 495, 487, 71, 1, 227, 229, 336, - 157, 546, 56, 10, 488, 230, 206, 195, 209, 298, - 228, 204, 202, 5, 203, 299, 205, 197, 158, 223, - 74, 169, 74, 291, 168, 136, 74, 156, 209, 198, - 519, 200, 296, 209, 34, 298, 74, 230, 96, 60, - 384, 456, 16, 74, 71, 16, 227, 165, 166, 167, - 168, 169, 170, 169, 172, 317, 222, 496, 177, 228, - 34, 174, 321, 194, 9, 208, 9, 34, 174, 26, - 9, 425, 69, 74, 34, 54, 308, 74, 227, 173, - 35, 298, 300, 301, 212, 65, 54, 54, 222, 156, - 10, 228, 10, 12, 36, 209, 10, 74, 245, 595, - 247, 156, 10, 304, 12, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 270, 271, - 272, 274, 276, 279, 280, 283, 284, 285, 286, 287, - 288, 289, 290, 15, 292, 544, 9, 461, 489, 17, - 294, 378, 322, 368, 15, 268, 445, 163, 309, 163, - 250, 212, 105, 105, 163, 210, 211, 163, 294, 163, - 9, 208, 10, 104, 104, 39, 296, 521, 206, 195, - 17, 136, 96, 204, 202, 17, 203, 40, 205, 17, - 212, 499, 491, 491, 299, 419, 10, 571, 572, 74, - 51, 198, 414, 200, 208, 542, 314, 16, 330, 71, - 331, 57, 332, 333, 57, 163, 334, 335, 16, 357, - 299, 315, 586, 212, 208, 34, 445, 68, 444, 208, - 268, 522, 210, 211, 299, 299, 299, 105, 17, 470, - 104, 39, 469, 212, 70, 109, 16, 298, 212, 163, - 163, 136, 78, 136, 198, 198, 49, 214, 374, 201, - 199, 210, 211, 57, 379, 298, 299, 209, 359, 482, - 196, 197, 481, 136, 398, 74, 79, 152, 171, 152, - 207, 171, 543, 80, 152, 74, 500, 152, 95, 152, - 135, 208, 94, 135, 210, 211, 171, 229, 229, 136, - 139, 415, 136, 139, 548, 549, 224, 97, 109, 434, - 212, 101, 136, 207, 210, 211, 197, 136, 268, 210, - 211, 430, 241, 300, 301, 74, 74, 102, 360, 251, - 171, 573, 103, 207, 115, 152, 230, 230, 207, 119, - 361, 231, 117, 124, 231, 134, 454, 154, 362, 17, - 133, 535, 155, 122, 232, 123, 539, 232, 231, 231, - 233, 74, 171, 233, 74, 156, 136, 473, 74, 152, - 152, 232, 232, 161, 478, 479, 298, 233, 233, 201, - 199, 210, 211, 310, 163, 163, 163, 163, 163, 163, - 196, 197, 74, 231, 160, 58, 527, 528, 58, 587, - 207, 83, 298, 502, 163, 578, 232, 563, 564, 17, - 163, 175, 233, 58, 179, 513, 298, 37, 38, 600, - 178, 17, 407, 220, 591, 231, 434, 405, 403, 17, - 404, 434, 406, 433, 221, 597, 125, 163, 232, 222, - 136, 225, 298, 536, 233, 538, 306, 58, 298, 74, - 43, 44, 45, 208, 236, 306, 298, 298, 298, 298, - 298, 298, 307, 313, 163, 163, 163, 163, 316, 74, - 163, 124, 212, 134, 318, 251, 323, 324, 133, 569, - 434, 122, 319, 123, 163, 163, 163, 163, 298, 163, - 163, 356, 329, 136, 163, 163, 163, 163, 163, 434, - 64, 66, 67, 339, 152, 152, 152, 152, 152, 152, - 434, 408, 211, 211, 173, 592, 211, 211, 211, 211, - 211, 358, 211, 364, 366, 377, 163, 163, 46, 83, - 152, 372, 44, 211, 211, 211, 211, 211, 211, 380, - 395, 201, 199, 210, 211, 396, 401, 44, 399, 402, - 410, 416, 196, 197, 163, 411, 417, 152, 413, 423, - 427, 418, 207, 431, 125, 421, 211, 432, 211, 211, - 164, 85, 86, 87, 88, 89, 437, 235, 436, 438, - 235, 439, 440, 441, 152, 152, 152, 152, 452, 455, - 152, 456, 462, 464, 235, 235, 10, 465, 466, 211, - 211, 211, 475, 476, 152, 152, 152, 152, 468, 152, - 152, 44, 480, 44, 152, 306, 152, 152, 152, 483, - 484, 485, 486, 129, 494, 504, 501, 505, 507, 235, - 508, 510, 509, 516, 515, 306, 306, 306, 306, 306, - 306, 306, 306, 517, 520, 523, 152, 152, 524, 537, - 132, 340, 341, 342, 206, 83, 128, 540, 306, 204, - 202, 235, 203, 550, 205, 551, 234, 558, 557, 234, - 343, 344, 345, 346, 152, 347, 348, 198, 83, 200, - 349, 574, 350, 234, 234, 17, 17, 306, 17, 17, - 17, 17, 17, 17, 561, 17, 568, 577, 164, 85, - 86, 87, 88, 89, 575, 590, 17, 17, 17, 17, - 17, 17, 126, 127, 231, 231, 582, 585, 234, 593, - 596, 601, 603, 605, 10, 30, 211, 232, 232, 28, - 167, 205, 171, 233, 233, 41, 40, 285, 286, 17, - 351, 17, 17, 209, 287, 167, 206, 171, 104, 167, - 234, 129, 51, 19, 57, 203, 171, 87, 167, 236, - 88, 84, 236, 20, 21, 22, 23, 24, 25, 140, - 26, 17, 17, 17, 17, 86, 236, 236, 132, 340, - 341, 342, 85, 142, 128, 143, 27, 211, 33, 29, - 99, 120, 367, 2, 498, 492, 525, 73, 343, 344, - 345, 346, 72, 347, 348, 153, 211, 514, 349, 294, - 350, 236, 503, 288, 288, 555, 288, 288, 288, 288, - 288, 288, 583, 288, 84, 85, 86, 87, 88, 89, - 243, 556, 371, 296, 288, 288, 244, 288, 288, 288, - 126, 127, 302, 236, 226, 376, 46, 149, 85, 86, - 87, 88, 89, 0, 237, 0, 0, 237, 0, 0, - 0, 0, 0, 0, 90, 0, 0, 288, 351, 288, - 288, 237, 237, 0, 0, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 0, 17, 211, 211, 0, 211, - 211, 211, 211, 211, 211, 211, 211, 0, 0, 288, - 288, 288, 288, 0, 0, 17, 237, 0, 17, 238, - 275, 275, 238, 0, 275, 275, 275, 275, 275, 275, - 275, 0, 0, 0, 0, 0, 238, 238, 0, 208, - 0, 275, 275, 275, 275, 275, 275, 0, 237, 0, - 0, 0, 20, 21, 22, 229, 24, 25, 212, 26, - 235, 235, 0, 172, 0, 0, 172, 0, 17, 17, - 17, 238, 0, 0, 275, 27, 275, 275, 17, 0, - 172, 172, 0, 247, 0, 0, 247, 0, 17, 17, - 17, 0, 2, 2, 2, 2, 2, 2, 17, 2, - 247, 247, 0, 238, 0, 0, 230, 275, 275, 275, - 0, 0, 2, 2, 2, 172, 2, 0, 0, 0, - 0, 320, 0, 0, 0, 0, 0, 201, 199, 210, - 211, 0, 0, 0, 0, 247, 0, 0, 196, 197, - 0, 0, 0, 288, 0, 0, 288, 172, 207, 234, - 234, 0, 0, 0, 0, 0, 0, 0, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 247, 17, 17, + 163, 219, 16, 50, 75, 76, 77, 253, 1, 213, + 227, 600, 232, 224, 213, 13, 503, 302, 210, 199, + 92, 26, 52, 208, 206, 551, 207, 103, 209, 47, + 48, 199, 160, 200, 199, 57, 200, 12, 39, 5, + 117, 202, 120, 204, 12, 224, 217, 233, 199, 199, + 200, 200, 501, 92, 92, 34, 74, 74, 74, 160, + 304, 120, 170, 413, 81, 82, 35, 13, 411, 409, + 14, 410, 320, 412, 323, 198, 391, 15, 107, 74, + 170, 327, 331, 199, 15, 200, 106, 321, 459, 552, + 227, 74, 74, 229, 74, 59, 210, 199, 55, 298, + 54, 208, 206, 156, 207, 197, 209, 213, 120, 326, + 65, 54, 54, 74, 170, 199, 502, 200, 245, 202, + 39, 204, 332, 210, 10, 110, 71, 36, 208, 206, + 46, 207, 98, 209, 44, 210, 343, 467, 110, 227, + 208, 16, 229, 91, 60, 209, 170, 124, 16, 44, + 32, 462, 414, 228, 74, 296, 74, 554, 555, 390, + 74, 384, 333, 298, 525, 32, 51, 139, 17, 374, + 74, 227, 17, 300, 229, 71, 109, 74, 56, 493, + 375, 505, 376, 57, 579, 213, 57, 497, 497, 494, + 169, 170, 171, 172, 173, 174, 98, 176, 161, 300, + 212, 181, 387, 17, 110, 425, 68, 74, 342, 26, + 34, 74, 213, 44, 216, 44, 162, 139, 420, 216, + 40, 17, 69, 550, 213, 431, 528, 601, 365, 213, + 231, 32, 74, 231, 17, 57, 160, 12, 541, 70, + 12, 428, 250, 545, 252, 300, 430, 231, 231, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 275, 276, 277, 279, 281, 284, 285, 288, + 289, 290, 291, 292, 293, 294, 295, 15, 297, 71, + 15, 328, 231, 78, 303, 214, 215, 230, 366, 273, + 214, 215, 584, 212, 9, 478, 506, 298, 110, 108, + 367, 198, 107, 165, 198, 165, 296, 314, 368, 211, + 165, 597, 216, 165, 231, 165, 139, 96, 198, 198, + 10, 198, 603, 198, 296, 74, 107, 107, 527, 110, + 98, 79, 210, 10, 106, 106, 230, 208, 206, 80, + 207, 16, 209, 336, 16, 337, 110, 338, 339, 305, + 306, 340, 341, 198, 450, 202, 548, 204, 178, 104, + 232, 165, 9, 232, 34, 273, 16, 49, 230, 540, + 160, 212, 310, 9, 255, 218, 177, 232, 232, 315, + 178, 205, 203, 214, 215, 198, 34, 139, 10, 139, + 216, 97, 200, 201, 380, 165, 165, 19, 212, 10, + 385, 74, 211, 17, 199, 549, 200, 200, 210, 139, + 212, 74, 232, 208, 206, 212, 207, 216, 209, 305, + 306, 213, 582, 300, 99, 577, 578, 83, 154, 216, + 154, 202, 106, 204, 216, 154, 363, 421, 154, 105, + 154, 118, 34, 476, 232, 122, 475, 152, 139, 300, + 592, 74, 74, 139, 273, 488, 158, 436, 487, 205, + 203, 214, 215, 17, 159, 137, 120, 9, 137, 138, + 200, 201, 138, 141, 233, 17, 141, 233, 533, 534, + 211, 112, 460, 17, 569, 570, 154, 74, 214, 215, + 74, 233, 233, 10, 74, 300, 174, 213, 9, 174, + 214, 215, 139, 479, 160, 214, 215, 211, 37, 38, + 484, 485, 164, 174, 174, 9, 154, 155, 74, 211, + 154, 154, 165, 593, 10, 179, 233, 43, 44, 45, + 165, 165, 165, 165, 165, 165, 300, 300, 300, 508, + 83, 10, 167, 606, 229, 182, 112, 451, 174, 183, + 224, 519, 225, 226, 171, 230, 165, 171, 233, 127, + 246, 137, 241, 64, 66, 67, 136, 256, 309, 125, + 495, 126, 171, 312, 313, 74, 139, 319, 451, 542, + 174, 544, 322, 165, 324, 329, 20, 21, 22, 23, + 24, 25, 325, 26, 330, 74, 153, 86, 87, 88, + 89, 90, 234, 231, 231, 234, 171, 212, 345, 27, + 165, 165, 165, 165, 335, 575, 165, 83, 177, 234, + 234, 362, 316, 364, 370, 372, 216, 378, 383, 139, + 165, 165, 165, 165, 301, 165, 165, 386, 171, 401, + 165, 165, 165, 165, 165, 402, 407, 408, 405, 439, + 416, 598, 128, 417, 234, 154, 154, 154, 154, 154, + 154, 419, 83, 422, 198, 198, 198, 198, 198, 429, + 404, 423, 165, 165, 198, 198, 198, 198, 198, 198, + 424, 154, 127, 212, 137, 433, 234, 427, 19, 136, + 437, 438, 125, 442, 126, 205, 203, 214, 215, 443, + 165, 235, 216, 444, 235, 440, 200, 201, 154, 85, + 86, 87, 88, 89, 90, 256, 211, 445, 235, 235, + 446, 447, 213, 213, 458, 461, 213, 213, 213, 213, + 213, 462, 213, 232, 232, 154, 154, 154, 154, 468, + 83, 154, 470, 213, 213, 213, 213, 213, 213, 91, + 471, 472, 474, 235, 481, 154, 154, 154, 154, 486, + 154, 154, 489, 58, 490, 154, 58, 154, 154, 154, + 482, 205, 203, 214, 215, 128, 213, 491, 213, 213, + 500, 58, 492, 507, 510, 235, 168, 86, 87, 88, + 89, 90, 211, 511, 513, 84, 514, 154, 154, 237, + 516, 236, 237, 301, 236, 515, 521, 522, 523, 213, + 213, 213, 10, 526, 529, 58, 237, 237, 236, 236, + 530, 543, 440, 546, 556, 154, 564, 440, 567, 301, + 557, 153, 86, 87, 88, 89, 90, 300, 563, 132, + 574, 580, 581, 301, 301, 301, 2, 233, 233, 583, + 588, 237, 591, 236, 596, 599, 602, 607, 609, 213, + 169, 169, 611, 30, 28, 207, 135, 346, 347, 348, + 41, 5, 131, 173, 40, 301, 440, 20, 21, 22, + 234, 24, 25, 237, 26, 236, 349, 350, 351, 352, + 287, 353, 354, 288, 289, 440, 355, 173, 356, 208, + 27, 106, 169, 57, 51, 173, 440, 205, 89, 168, + 86, 87, 88, 89, 90, 17, 17, 84, 17, 17, + 17, 17, 17, 17, 169, 17, 90, 86, 129, 130, + 6, 235, 88, 142, 87, 10, 17, 17, 17, 17, + 17, 17, 290, 290, 33, 290, 290, 290, 290, 290, + 290, 144, 290, 145, 29, 123, 357, 101, 373, 504, + 498, 73, 132, 290, 290, 531, 290, 290, 290, 17, + 72, 17, 17, 157, 509, 234, 234, 520, 299, 561, + 589, 562, 173, 248, 249, 173, 382, 377, 19, 135, + 346, 347, 348, 301, 231, 131, 290, 213, 290, 290, + 173, 17, 17, 17, 17, 46, 300, 0, 0, 349, + 350, 351, 352, 307, 353, 354, 213, 0, 0, 355, + 0, 356, 236, 0, 0, 0, 0, 0, 290, 290, + 290, 290, 300, 0, 173, 2, 2, 2, 2, 2, + 2, 0, 2, 0, 0, 0, 300, 300, 300, 0, + 0, 129, 130, 0, 0, 2, 2, 2, 0, 2, + 5, 5, 5, 5, 5, 5, 173, 5, 0, 0, + 0, 0, 0, 0, 235, 235, 0, 0, 300, 357, + 5, 5, 5, 5, 0, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 0, 17, 213, 213, 0, 213, + 213, 213, 213, 213, 213, 213, 213, 277, 277, 0, + 0, 277, 277, 277, 277, 277, 277, 277, 0, 6, + 6, 6, 6, 6, 6, 0, 6, 0, 277, 277, + 277, 277, 277, 277, 0, 17, 0, 0, 17, 6, + 6, 6, 6, 0, 0, 180, 180, 0, 0, 180, + 180, 180, 180, 180, 180, 180, 0, 0, 0, 0, + 0, 277, 290, 277, 277, 290, 180, 180, 180, 180, + 180, 180, 237, 237, 236, 236, 0, 20, 21, 22, + 234, 24, 25, 0, 26, 0, 0, 0, 17, 17, + 17, 0, 0, 0, 277, 277, 277, 0, 17, 180, + 27, 180, 180, 0, 0, 0, 0, 0, 17, 17, + 17, 0, 0, 0, 0, 290, 290, 290, 17, 20, + 21, 22, 23, 24, 25, 290, 26, 0, 0, 0, + 0, 235, 180, 180, 180, 290, 290, 290, 0, 0, + 0, 0, 27, 0, 0, 290, 32, 32, 0, 0, + 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, + 32, 32, 32, 0, 0, 0, 0, 0, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17, 0, 17, 17, 17, 17, 17, 17, 0, 17, - 94, 94, 0, 0, 94, 94, 94, 94, 94, 0, - 94, 369, 0, 370, 0, 0, 288, 288, 288, 0, - 0, 94, 94, 94, 94, 94, 288, 0, 0, 0, - 0, 0, 0, 381, 0, 0, 288, 288, 288, 0, - 0, 0, 19, 178, 178, 0, 288, 178, 178, 178, - 178, 178, 178, 178, 0, 0, 94, 94, 0, 0, - 0, 0, 236, 236, 178, 178, 178, 178, 178, 178, - 0, 0, 422, 0, 0, 0, 248, 424, 0, 248, - 0, 0, 0, 0, 0, 0, 0, 94, 94, 94, - 0, 0, 0, 248, 248, 0, 0, 178, 0, 178, - 178, 0, 0, 0, 0, 0, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 275, 0, 288, 288, 0, - 288, 288, 288, 288, 288, 288, 472, 288, 248, 420, - 178, 178, 178, 0, 275, 0, 0, 0, 0, 0, - 32, 32, 0, 0, 32, 32, 32, 32, 32, 32, - 32, 0, 0, 0, 0, 0, 0, 237, 237, 0, - 248, 32, 32, 32, 32, 32, 32, 0, 0, 0, - 241, 0, 0, 241, 0, 0, 241, 0, 0, 0, - 0, 0, 467, 0, 0, 0, 0, 0, 0, 474, - 241, 241, 0, 241, 32, 241, 32, 32, 0, 0, - 534, 0, 0, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 238, 238, 275, 275, 0, 275, 275, 275, - 275, 275, 275, 275, 275, 241, 241, 32, 32, 32, - 0, 20, 21, 22, 23, 24, 25, 0, 26, 0, - 0, 269, 269, 0, 0, 269, 269, 269, 269, 269, - 0, 269, 526, 576, 27, 0, 241, 241, 0, 0, - 533, 0, 269, 269, 269, 269, 269, 269, 0, 0, - 0, 541, 0, 0, 0, 94, 247, 247, 0, 0, + 32, 0, 32, 32, 0, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 0, 0, 290, 290, 0, 290, + 290, 290, 290, 290, 290, 0, 290, 0, 0, 0, + 0, 0, 0, 32, 32, 32, 0, 0, 0, 0, + 0, 0, 0, 96, 96, 0, 0, 96, 96, 96, + 96, 96, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 96, 96, 96, 96, 271, + 271, 0, 0, 271, 271, 271, 271, 271, 0, 271, + 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, + 271, 271, 271, 271, 271, 271, 0, 0, 0, 96, + 96, 277, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 213, 213, 0, 0, 0, 213, 213, 213, 213, + 180, 213, 0, 0, 0, 271, 271, 0, 0, 0, + 96, 96, 96, 0, 213, 213, 213, 213, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 94, 0, 0, 269, 269, 0, - 271, 271, 570, 94, 271, 271, 271, 271, 271, 0, - 271, 0, 0, 0, 0, 0, 0, 0, 178, 0, - 0, 271, 271, 271, 271, 271, 271, 0, 269, 269, - 269, 589, 0, 0, 0, 0, 0, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, - 0, 0, 0, 0, 602, 0, 271, 271, 0, 604, - 0, 0, 0, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 0, 0, 94, 94, 5, 94, 94, 94, - 94, 94, 94, 0, 94, 0, 0, 271, 271, 271, + 0, 0, 0, 0, 0, 0, 271, 271, 271, 0, + 0, 0, 0, 0, 0, 213, 0, 213, 213, 0, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 0, + 0, 277, 277, 0, 277, 277, 277, 277, 277, 277, + 277, 277, 0, 0, 0, 0, 0, 0, 213, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 0, 0, 180, + 180, 32, 180, 180, 180, 180, 180, 180, 180, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 32, 0, 178, 178, 0, - 178, 178, 178, 178, 178, 178, 178, 178, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 211, 211, - 0, 0, 0, 211, 211, 211, 211, 0, 211, 248, - 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 211, 211, 211, 211, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 218, 218, 0, 0, 0, 218, - 218, 218, 218, 218, 218, 0, 0, 0, 0, 0, - 0, 0, 211, 0, 211, 211, 0, 218, 218, 218, - 218, 0, 0, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 0, 0, 32, 32, 269, 32, 32, 32, - 32, 32, 32, 32, 32, 211, 0, 211, 218, 0, - 218, 218, 0, 0, 0, 269, 241, 241, 241, 241, - 241, 0, 0, 241, 241, 0, 241, 241, 241, 241, - 241, 241, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 0, 218, 0, 5, 5, 5, 5, 5, - 5, 0, 5, 0, 0, 271, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 5, 5, 5, 5, 0, - 0, 0, 0, 0, 271, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 0, 231, 269, 269, 0, 269, 269, - 269, 269, 269, 269, 0, 269, 0, 0, 0, 263, - 263, 0, 0, 263, 263, 263, 263, 263, 0, 263, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 263, 263, 263, 263, 263, 0, 0, 0, 0, - 0, 0, 0, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 0, 257, 271, 271, 257, 271, 271, 271, - 271, 271, 271, 0, 271, 263, 263, 0, 0, 0, - 257, 257, 0, 257, 0, 257, 0, 264, 264, 0, - 0, 264, 264, 264, 264, 264, 0, 264, 0, 6, - 0, 0, 0, 211, 0, 0, 263, 263, 264, 264, - 264, 264, 264, 264, 0, 257, 257, 0, 0, 0, - 0, 0, 211, 0, 0, 0, 0, 262, 262, 0, - 0, 262, 262, 262, 262, 262, 0, 262, 0, 218, - 0, 0, 0, 264, 264, 0, 257, 257, 262, 262, - 262, 262, 262, 262, 0, 0, 0, 0, 218, 20, - 21, 22, 229, 24, 25, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 264, 264, 0, 0, 0, 0, - 0, 0, 27, 262, 262, 0, 0, 0, 0, 0, - 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 0, 17, 211, 211, 0, 211, 211, 211, 211, 211, - 211, 211, 211, 230, 262, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 0, 0, 218, 218, - 0, 218, 218, 218, 218, 218, 218, 218, 218, 265, - 265, 0, 0, 265, 265, 265, 265, 265, 0, 265, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 265, 265, 265, 265, 265, 266, 266, 0, 0, - 266, 266, 266, 266, 266, 0, 266, 0, 6, 6, - 6, 6, 6, 6, 263, 6, 0, 266, 266, 266, - 266, 266, 266, 0, 0, 265, 265, 0, 6, 6, - 6, 6, 0, 0, 0, 0, 0, 254, 254, 0, - 0, 254, 254, 254, 254, 254, 0, 254, 0, 0, - 0, 0, 266, 266, 0, 0, 265, 265, 254, 254, - 254, 254, 254, 254, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 264, 266, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 254, 254, 0, 0, 0, 0, 0, - 0, 0, 263, 263, 305, 0, 263, 263, 263, 263, - 263, 19, 0, 263, 263, 0, 263, 263, 263, 263, - 263, 263, 262, 263, 254, 254, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 459, 257, 257, 257, 257, - 257, 0, 0, 0, 0, 0, 257, 257, 257, 257, - 257, 257, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 264, 0, 0, 264, 264, 264, 264, 264, 0, - 0, 264, 264, 0, 264, 264, 264, 264, 264, 264, - 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 262, 0, 0, 262, 262, 262, 262, 262, 0, - 0, 262, 262, 0, 262, 262, 262, 262, 262, 262, - 0, 262, 206, 195, 0, 0, 249, 204, 202, 0, - 203, 0, 205, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 198, 182, 200, 192, 20, - 21, 22, 229, 24, 25, 0, 26, 0, 206, 195, - 0, 266, 0, 204, 202, 0, 203, 0, 205, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 194, - 397, 198, 182, 200, 192, 0, 0, 0, 0, 0, - 20, 21, 22, 229, 24, 25, 0, 26, 0, 0, - 0, 0, 254, 230, 0, 0, 0, 0, 0, 193, - 0, 209, 0, 27, 0, 194, 0, 0, 0, 0, + 32, 0, 0, 0, 273, 273, 0, 0, 273, 273, + 273, 273, 273, 0, 273, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 273, 273, 273, 273, 273, + 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 265, 0, 0, 265, 265, 265, 265, - 265, 0, 0, 265, 265, 0, 265, 265, 265, 265, - 265, 265, 0, 265, 230, 193, 0, 209, 0, 266, - 266, 0, 0, 266, 266, 266, 266, 266, 0, 0, - 266, 266, 0, 266, 266, 266, 266, 266, 266, 0, - 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 254, 254, 0, 0, 254, 254, 254, 254, 254, 0, - 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, - 0, 254, 206, 195, 0, 0, 460, 204, 202, 0, - 203, 0, 205, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 198, 182, 200, 192, 206, - 195, 0, 0, 0, 204, 202, 0, 203, 0, 205, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 471, 198, 182, 200, 192, 206, 195, 0, 194, - 506, 204, 202, 0, 203, 0, 205, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, - 182, 200, 192, 0, 0, 0, 194, 208, 0, 193, - 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, - 0, 0, 0, 194, 0, 0, 193, 0, 209, 0, - 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 212, 193, 0, 209, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 265, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 273, 273, 0, 265, 265, 265, 265, 265, 265, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 96, 0, + 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, + 32, 273, 273, 273, 0, 0, 96, 96, 265, 265, + 0, 19, 220, 220, 271, 0, 96, 220, 220, 220, + 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 271, 0, 220, 220, 220, 220, 265, + 265, 0, 0, 0, 238, 311, 239, 238, 0, 239, + 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, + 0, 238, 238, 239, 239, 0, 220, 0, 220, 220, + 0, 0, 0, 0, 0, 213, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 0, 0, 96, 96, 0, + 96, 96, 96, 96, 96, 96, 238, 96, 239, 220, + 0, 220, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 0, 0, 271, 271, 0, 271, 271, 271, 271, + 271, 271, 0, 271, 0, 0, 0, 0, 238, 0, + 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 0, 17, 213, 213, 0, 213, 213, + 213, 213, 213, 213, 213, 213, 0, 0, 0, 266, + 266, 0, 0, 266, 266, 266, 266, 266, 0, 266, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, + 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, + 20, 21, 22, 234, 24, 25, 0, 26, 273, 0, + 0, 0, 264, 264, 0, 0, 264, 264, 264, 264, + 264, 0, 264, 27, 0, 266, 266, 265, 0, 0, + 0, 0, 0, 264, 264, 264, 264, 264, 264, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 235, 240, 266, 266, 240, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 264, 264, + 0, 0, 240, 240, 0, 465, 0, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 0, 220, 273, 273, + 0, 273, 273, 273, 273, 273, 273, 0, 273, 264, + 264, 0, 0, 0, 0, 0, 220, 240, 0, 0, + 0, 0, 0, 308, 0, 265, 265, 0, 0, 265, + 265, 265, 265, 265, 0, 0, 265, 265, 0, 265, + 265, 265, 265, 265, 265, 0, 265, 0, 0, 240, + 0, 267, 267, 0, 0, 267, 267, 267, 267, 267, + 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 267, 267, 267, 267, 267, 267, 0, 0, + 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 0, 0, 220, 220, 0, 220, + 220, 220, 220, 220, 220, 220, 220, 267, 267, 0, + 0, 268, 268, 0, 0, 268, 268, 268, 268, 268, + 0, 268, 0, 0, 0, 0, 0, 238, 238, 239, + 239, 0, 268, 268, 268, 268, 268, 268, 267, 267, + 20, 21, 22, 234, 24, 25, 0, 26, 0, 0, + 0, 0, 256, 256, 266, 0, 256, 256, 256, 256, + 256, 0, 256, 27, 0, 0, 0, 268, 268, 0, + 0, 0, 0, 256, 256, 256, 256, 256, 256, 210, + 199, 0, 0, 254, 208, 206, 0, 207, 0, 209, + 0, 0, 308, 249, 235, 0, 249, 264, 268, 268, + 0, 0, 202, 186, 204, 196, 0, 0, 256, 256, + 249, 249, 308, 308, 308, 308, 308, 308, 308, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 201, 199, 210, 211, 183, - 184, 185, 186, 188, 0, 0, 196, 197, 0, 180, - 181, 187, 190, 189, 191, 0, 207, 0, 0, 0, + 0, 0, 0, 0, 0, 308, 198, 0, 0, 256, + 256, 0, 266, 266, 0, 249, 266, 266, 266, 266, + 266, 0, 0, 266, 266, 0, 266, 266, 266, 266, + 266, 266, 250, 266, 308, 250, 197, 0, 213, 0, + 0, 0, 0, 0, 426, 0, 0, 249, 0, 250, + 250, 0, 0, 0, 0, 264, 264, 0, 0, 264, + 264, 264, 264, 264, 0, 0, 264, 264, 0, 264, + 264, 264, 264, 264, 264, 0, 264, 210, 199, 0, + 0, 0, 208, 206, 250, 207, 0, 209, 0, 0, + 0, 0, 0, 0, 0, 0, 267, 473, 0, 403, + 202, 186, 204, 196, 480, 0, 0, 0, 240, 240, + 0, 0, 0, 0, 0, 0, 250, 210, 199, 0, + 0, 466, 208, 206, 0, 207, 0, 209, 0, 0, + 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, + 202, 186, 204, 196, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, + 0, 0, 0, 0, 197, 0, 213, 532, 0, 0, + 0, 0, 0, 0, 198, 539, 0, 0, 0, 0, + 0, 0, 0, 0, 267, 267, 547, 0, 267, 267, + 267, 267, 267, 0, 0, 267, 267, 256, 267, 267, + 267, 267, 267, 267, 197, 267, 213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 576, 0, 0, + 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 201, 199, 210, 211, 183, 184, 185, 186, 188, - 0, 0, 196, 197, 0, 180, 181, 187, 190, 189, - 191, 0, 207, 206, 195, 0, 0, 511, 204, 202, - 0, 203, 0, 205, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 198, 182, 200, 192, - 206, 195, 0, 0, 512, 204, 202, 0, 203, 0, - 205, 0, 0, 0, 0, 0, 0, 208, 0, 0, - 0, 0, 0, 198, 182, 200, 192, 0, 0, 0, - 194, 0, 0, 0, 0, 0, 212, 0, 0, 0, - 0, 206, 195, 0, 208, 559, 204, 202, 0, 203, - 0, 205, 0, 0, 0, 0, 0, 194, 0, 0, - 193, 0, 209, 212, 198, 182, 200, 192, 0, 0, - 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 209, - 212, 0, 0, 0, 0, 0, 0, 0, 194, 0, - 0, 0, 0, 0, 0, 201, 199, 210, 211, 183, - 184, 185, 186, 188, 0, 0, 196, 197, 0, 180, - 181, 187, 190, 189, 191, 0, 207, 0, 193, 0, - 209, 0, 201, 199, 210, 211, 183, 184, 185, 186, - 188, 0, 0, 196, 197, 0, 180, 181, 187, 190, - 189, 191, 0, 207, 0, 0, 0, 0, 0, 201, - 199, 210, 211, 183, 184, 185, 186, 188, 0, 0, - 196, 197, 0, 180, 181, 187, 190, 189, 191, 0, - 207, 206, 195, 0, 0, 560, 204, 202, 0, 203, - 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 198, 182, 200, 192, 206, 195, - 0, 0, 0, 204, 202, 0, 203, 0, 205, 0, + 0, 0, 0, 216, 268, 268, 595, 0, 268, 268, + 268, 268, 268, 0, 0, 268, 268, 0, 268, 268, + 268, 268, 268, 268, 605, 268, 0, 0, 0, 608, + 0, 0, 0, 0, 610, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 256, 0, 0, 256, + 256, 256, 256, 256, 0, 0, 256, 256, 0, 256, + 256, 256, 256, 256, 256, 0, 256, 0, 0, 0, + 0, 0, 205, 203, 214, 215, 187, 188, 189, 190, + 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, + 193, 195, 0, 211, 210, 199, 249, 249, 0, 208, + 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, + 0, 0, 212, 0, 0, 0, 477, 202, 186, 204, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 210, 199, 0, 0, 512, 208, 206, + 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, + 0, 198, 212, 0, 0, 0, 202, 186, 204, 196, + 0, 0, 0, 0, 0, 250, 250, 0, 0, 0, + 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 197, 0, 213, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 203, 214, 215, 187, 188, 189, 190, 192, 0, + 0, 200, 201, 0, 184, 185, 191, 194, 193, 195, + 197, 211, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 584, 198, 182, 200, 192, 206, 195, 0, 194, 0, - 204, 202, 0, 203, 0, 205, 0, 0, 208, 0, - 0, 0, 0, 0, 0, 0, 598, 0, 198, 182, - 200, 192, 0, 0, 0, 194, 0, 212, 193, 0, - 209, 0, 0, 0, 0, 208, 0, 0, 0, 0, + 205, 203, 214, 215, 187, 188, 189, 190, 192, 0, + 0, 200, 201, 0, 184, 185, 191, 194, 193, 195, + 0, 211, 210, 199, 0, 0, 517, 208, 206, 0, + 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 186, 204, 196, 210, + 199, 0, 0, 518, 208, 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 194, 0, 212, 193, 0, 209, 0, 0, - 0, 0, 0, 0, 261, 261, 0, 0, 261, 261, - 261, 261, 261, 0, 261, 0, 208, 0, 0, 0, - 0, 0, 193, 0, 209, 261, 261, 261, 261, 261, - 261, 0, 0, 0, 0, 212, 201, 199, 210, 211, - 183, 184, 185, 186, 188, 0, 0, 196, 197, 0, - 180, 181, 187, 190, 189, 191, 0, 207, 0, 0, - 261, 261, 0, 201, 199, 210, 211, 183, 184, 185, - 186, 188, 0, 0, 196, 197, 0, 180, 181, 187, - 190, 189, 191, 0, 207, 0, 0, 0, 0, 0, - 0, 261, 261, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 201, 199, 210, 211, 183, 184, - 185, 186, 188, 0, 0, 196, 197, 0, 180, 181, - 187, 190, 189, 191, 0, 207, 0, 0, 260, 260, - 0, 0, 260, 260, 260, 260, 260, 0, 260, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, - 260, 260, 260, 260, 260, 0, 208, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, - 0, 206, 195, 208, 260, 260, 204, 202, 0, 203, - 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 212, 0, 198, 182, 200, 192, 0, 0, - 208, 0, 0, 0, 0, 260, 260, 0, 0, 0, + 0, 0, 202, 186, 204, 196, 210, 199, 0, 198, + 565, 208, 206, 0, 207, 0, 209, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, + 186, 204, 196, 0, 0, 0, 198, 0, 0, 197, + 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, - 0, 0, 0, 0, 0, 0, 0, 0, 194, 0, - 0, 0, 0, 0, 201, 199, 210, 211, 183, 184, - 185, 186, 188, 0, 0, 196, 197, 0, 180, 181, - 187, 190, 189, 191, 0, 207, 0, 0, 193, 0, - 209, 201, 199, 210, 211, 183, 184, 185, 186, 188, - 0, 0, 196, 197, 0, 180, 181, 187, 190, 189, - 191, 0, 207, 0, 0, 0, 0, 0, 201, 199, - 210, 211, 183, 184, 185, 186, 188, 0, 0, 196, - 197, 0, 180, 181, 187, 190, 189, 191, 0, 207, - 206, 195, 0, 0, 0, 204, 202, 0, 203, 0, - 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 198, 182, 200, 192, 0, 0, 0, + 0, 0, 0, 198, 0, 0, 197, 0, 213, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 0, 0, 263, 263, 0, 0, 263, 263, 263, 263, + 263, 0, 263, 197, 0, 213, 0, 0, 212, 0, + 0, 0, 0, 263, 263, 263, 263, 263, 263, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 210, + 199, 0, 0, 566, 208, 206, 0, 207, 0, 209, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 263, + 0, 0, 202, 186, 204, 196, 0, 205, 203, 214, + 215, 187, 188, 189, 190, 192, 0, 0, 200, 201, + 0, 184, 185, 191, 194, 193, 195, 0, 211, 263, + 263, 0, 0, 0, 0, 0, 198, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 205, 203, 214, 215, + 187, 188, 189, 190, 192, 0, 0, 200, 201, 0, + 184, 185, 191, 194, 193, 195, 197, 211, 213, 262, + 262, 0, 0, 262, 262, 262, 262, 262, 0, 262, + 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, + 262, 262, 262, 262, 262, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, + 0, 0, 210, 199, 212, 0, 0, 208, 206, 0, + 207, 0, 209, 0, 0, 262, 262, 0, 0, 0, + 0, 0, 0, 216, 590, 202, 186, 204, 196, 0, + 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 262, 0, 0, + 216, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 205, 203, 214, 215, 187, + 188, 189, 190, 192, 0, 0, 200, 201, 0, 184, + 185, 191, 194, 193, 195, 0, 211, 0, 0, 197, + 0, 213, 205, 203, 214, 215, 187, 188, 189, 190, + 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, + 193, 195, 0, 211, 0, 0, 0, 0, 0, 205, + 203, 214, 215, 187, 188, 189, 190, 192, 0, 0, + 200, 201, 0, 184, 185, 191, 194, 193, 195, 0, + 211, 210, 199, 0, 212, 0, 208, 206, 0, 207, + 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 604, 216, 202, 186, 204, 196, 210, 199, + 0, 0, 0, 208, 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 261, 0, - 0, 261, 261, 261, 261, 261, 0, 194, 261, 261, - 0, 261, 261, 261, 261, 261, 261, 206, 261, 0, - 0, 0, 204, 202, 0, 203, 0, 205, 206, 195, - 0, 0, 0, 204, 202, 0, 203, 193, 205, 209, - 198, 0, 200, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 182, 200, 192, 0, 251, 251, 0, 0, - 251, 251, 251, 251, 251, 0, 251, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 251, 251, 251, - 251, 251, 251, 0, 0, 194, 208, 0, 0, 0, + 0, 202, 186, 204, 196, 263, 263, 0, 198, 263, + 263, 263, 263, 263, 0, 0, 263, 263, 0, 263, + 263, 263, 263, 263, 263, 0, 263, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 0, 0, 197, 0, + 213, 0, 205, 203, 214, 215, 187, 188, 189, 190, + 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, + 193, 195, 0, 211, 0, 197, 0, 213, 253, 253, + 0, 0, 253, 253, 253, 253, 253, 0, 253, 0, + 0, 0, 0, 0, 0, 0, 0, 212, 0, 253, + 253, 253, 253, 253, 253, 210, 199, 0, 0, 0, + 208, 206, 0, 207, 0, 209, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, + 204, 0, 0, 0, 253, 253, 0, 0, 0, 0, + 0, 0, 262, 262, 0, 0, 262, 262, 262, 262, + 262, 0, 0, 262, 262, 0, 262, 262, 262, 262, + 262, 262, 198, 262, 0, 253, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 212, 209, 0, 0, 0, - 0, 0, 251, 251, 0, 193, 0, 209, 0, 0, - 0, 260, 260, 0, 0, 260, 260, 260, 260, 260, - 0, 0, 260, 260, 0, 260, 260, 260, 260, 260, - 260, 0, 260, 251, 251, 252, 252, 0, 0, 252, - 252, 252, 252, 252, 0, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 252, 252, 252, 252, - 252, 252, 0, 0, 201, 199, 210, 211, 183, 184, - 185, 186, 188, 0, 0, 196, 197, 0, 180, 181, - 187, 190, 189, 191, 0, 207, 0, 0, 0, 0, - 0, 252, 252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 253, 253, 0, 0, 253, 253, 253, - 253, 253, 0, 253, 0, 208, 0, 0, 0, 0, - 0, 0, 252, 252, 253, 253, 253, 253, 253, 253, - 249, 0, 0, 249, 212, 249, 249, 249, 0, 0, + 0, 0, 0, 0, 0, 205, 203, 214, 215, 187, + 188, 189, 190, 192, 213, 0, 200, 201, 0, 184, + 185, 191, 194, 193, 195, 0, 211, 210, 199, 0, + 0, 0, 208, 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 249, 249, 249, 249, 249, 249, 0, 0, 0, 253, - 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 250, 0, 0, 250, 0, 250, - 250, 250, 208, 0, 0, 249, 249, 0, 0, 0, - 253, 253, 0, 208, 250, 250, 250, 250, 250, 250, - 0, 212, 0, 201, 199, 210, 211, 183, 184, 185, - 186, 188, 212, 0, 196, 197, 249, 249, 181, 187, - 190, 189, 191, 0, 207, 0, 0, 0, 0, 250, - 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 186, 204, 196, 210, 199, 212, 0, 0, 208, + 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 0, 202, 186, 204, + 196, 0, 0, 212, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, + 0, 198, 251, 0, 197, 251, 213, 251, 251, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 250, 250, 0, 0, 0, 0, 0, 0, 0, 0, - 201, 199, 210, 211, 0, 0, 0, 0, 0, 0, - 0, 201, 199, 210, 211, 183, 184, 185, 186, 188, - 0, 207, 196, 197, 0, 0, 0, 187, 190, 189, - 191, 0, 207, 0, 0, 0, 0, 0, 0, 251, - 251, 0, 0, 251, 251, 251, 251, 251, 0, 0, - 251, 251, 0, 251, 251, 251, 251, 251, 251, 0, - 0, 0, 243, 0, 0, 243, 0, 0, 243, 0, + 0, 0, 251, 251, 251, 251, 251, 251, 0, 0, + 0, 197, 0, 213, 205, 203, 214, 215, 187, 188, + 189, 190, 192, 0, 0, 200, 201, 0, 184, 185, + 191, 194, 193, 195, 0, 211, 0, 251, 251, 0, + 0, 205, 203, 214, 215, 187, 188, 189, 190, 192, + 0, 0, 200, 201, 0, 184, 185, 191, 194, 193, + 195, 0, 211, 0, 0, 0, 0, 0, 251, 251, + 212, 0, 0, 0, 0, 0, 0, 254, 254, 0, + 0, 254, 254, 254, 254, 254, 0, 254, 0, 216, + 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, + 254, 254, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 243, 243, 0, 243, 0, 243, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, - 0, 0, 242, 0, 0, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 243, 243, 242, - 242, 0, 242, 0, 242, 0, 0, 0, 252, 252, - 0, 0, 252, 252, 252, 252, 252, 0, 0, 252, - 252, 0, 252, 252, 252, 252, 252, 252, 243, 243, - 0, 0, 0, 0, 242, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, - 0, 0, 244, 0, 0, 244, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 242, 242, 0, 0, 244, - 244, 0, 244, 0, 244, 0, 253, 253, 0, 0, - 253, 253, 253, 253, 253, 0, 0, 253, 253, 0, - 253, 253, 253, 253, 253, 253, 0, 0, 0, 0, - 0, 0, 249, 249, 244, 244, 249, 249, 249, 249, - 249, 0, 0, 249, 249, 0, 249, 249, 249, 249, - 249, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 244, 244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 250, 250, 0, 0, - 250, 250, 250, 250, 250, 0, 0, 250, 250, 0, - 250, 250, 250, 250, 250, 250, 259, 0, 0, 259, - 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 240, 259, 259, 240, 259, - 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 240, 0, 240, 258, 240, 0, 258, - 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, - 0, 259, 259, 0, 0, 0, 258, 258, 0, 258, - 0, 258, 0, 0, 0, 0, 0, 240, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 239, 259, 259, 239, 0, 0, 239, 0, 0, - 0, 258, 258, 0, 0, 0, 0, 0, 240, 240, - 0, 239, 239, 0, 239, 256, 239, 0, 256, 0, - 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 258, 258, 0, 256, 256, 0, 256, 0, - 256, 0, 0, 0, 0, 0, 239, 239, 243, 243, - 243, 243, 243, 0, 0, 243, 243, 0, 243, 243, - 243, 243, 243, 243, 0, 0, 0, 0, 0, 0, - 256, 256, 0, 0, 0, 0, 0, 239, 239, 0, - 0, 0, 0, 0, 0, 242, 242, 242, 242, 242, - 0, 0, 242, 242, 0, 242, 242, 242, 242, 242, - 242, 256, 256, 0, 0, 245, 0, 0, 245, 0, - 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 246, 0, 0, 246, 245, 245, 246, 245, 0, - 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 246, 246, 0, 246, 0, 246, 0, 0, 0, - 0, 0, 0, 0, 0, 244, 244, 244, 244, 244, - 245, 245, 244, 244, 0, 244, 244, 244, 244, 244, - 244, 0, 0, 0, 0, 0, 246, 246, 255, 0, - 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 245, 245, 0, 196, 255, 255, 196, 255, 0, - 255, 0, 0, 0, 0, 0, 0, 246, 246, 0, - 0, 196, 196, 124, 196, 134, 196, 0, 0, 0, - 133, 0, 0, 122, 0, 123, 0, 0, 0, 0, - 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 277, 0, 0, 0, 0, 0, 196, 0, 0, 0, + 0, 253, 253, 254, 254, 253, 253, 253, 253, 253, + 0, 0, 253, 253, 0, 253, 253, 253, 253, 253, + 253, 0, 0, 0, 0, 0, 0, 0, 205, 203, + 214, 215, 0, 0, 254, 254, 0, 0, 0, 200, + 201, 0, 212, 0, 0, 0, 0, 0, 0, 211, + 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 216, 255, 0, 0, 0, 0, 0, 0, 212, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, + 252, 0, 252, 252, 252, 0, 0, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 252, 252, 252, + 252, 252, 252, 0, 0, 0, 0, 0, 0, 0, + 205, 203, 214, 215, 187, 188, 189, 190, 192, 255, + 255, 200, 201, 0, 0, 185, 191, 194, 193, 195, + 0, 211, 252, 252, 0, 0, 0, 205, 203, 214, + 215, 187, 188, 189, 190, 192, 0, 0, 200, 201, + 0, 0, 0, 191, 194, 193, 195, 0, 211, 243, + 0, 0, 243, 252, 252, 243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, + 243, 0, 243, 0, 243, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 251, 251, 0, 0, 251, 251, + 251, 251, 251, 0, 0, 251, 251, 0, 251, 251, + 251, 251, 251, 251, 243, 243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, + 245, 0, 0, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 243, 243, 245, 245, 0, + 245, 0, 245, 0, 0, 244, 0, 0, 244, 0, + 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 244, 244, 0, 244, 0, + 244, 0, 245, 245, 0, 0, 0, 0, 0, 0, + 254, 254, 0, 0, 254, 254, 254, 254, 254, 0, + 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, + 244, 244, 0, 245, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, + 0, 0, 246, 0, 0, 246, 0, 0, 0, 0, + 0, 244, 244, 0, 0, 0, 0, 0, 0, 246, + 246, 0, 246, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, - 0, 83, 259, 259, 259, 259, 259, 0, 196, 259, - 259, 0, 259, 259, 259, 259, 259, 259, 240, 240, - 240, 240, 240, 0, 0, 240, 240, 0, 240, 240, - 240, 240, 240, 240, 0, 0, 125, 0, 0, 0, - 0, 0, 258, 258, 258, 258, 258, 0, 0, 258, - 258, 0, 258, 258, 258, 258, 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 246, 246, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 246, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 239, 239, 239, - 239, 239, 0, 0, 239, 239, 0, 239, 239, 239, - 239, 239, 239, 0, 0, 0, 0, 0, 0, 0, - 0, 256, 256, 256, 256, 256, 0, 0, 0, 0, - 0, 256, 256, 256, 256, 256, 256, 0, 0, 124, - 0, 134, 0, 0, 0, 0, 133, 0, 0, 122, - 124, 123, 134, 0, 0, 0, 0, 133, 0, 124, - 122, 134, 123, 0, 0, 0, 133, 0, 281, 122, - 0, 123, 0, 0, 0, 121, 0, 0, 0, 0, - 164, 85, 86, 87, 88, 89, 0, 273, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, + 252, 0, 0, 252, 252, 252, 252, 252, 0, 0, + 252, 252, 0, 252, 252, 252, 252, 252, 252, 261, + 0, 0, 261, 0, 0, 261, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 242, 0, 0, 242, 261, + 261, 242, 261, 0, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 242, 242, 0, 242, 260, + 242, 0, 260, 0, 0, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 261, 0, 0, 0, 260, + 260, 0, 260, 0, 260, 243, 243, 243, 243, 243, + 242, 242, 243, 243, 0, 243, 243, 243, 243, 243, + 243, 0, 0, 0, 0, 261, 261, 0, 0, 0, + 0, 0, 0, 0, 260, 260, 0, 241, 0, 0, + 241, 242, 242, 241, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 241, 0, + 241, 0, 241, 0, 0, 260, 260, 0, 0, 0, + 0, 0, 0, 245, 245, 245, 245, 245, 0, 0, + 245, 245, 0, 245, 245, 245, 245, 245, 245, 0, + 0, 0, 241, 241, 0, 0, 0, 0, 0, 0, + 0, 244, 244, 244, 244, 244, 0, 0, 244, 244, + 0, 244, 244, 244, 244, 244, 244, 0, 0, 0, + 0, 0, 0, 241, 241, 258, 0, 0, 258, 0, + 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 247, 0, 0, 247, 258, 258, 247, 258, 0, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 247, 247, 0, 247, 0, 247, 0, 0, 0, + 0, 0, 0, 0, 0, 246, 246, 246, 246, 246, + 258, 258, 246, 246, 0, 246, 246, 246, 246, 246, + 246, 0, 0, 0, 0, 248, 247, 247, 248, 0, + 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 258, 0, 259, 248, 248, 259, 248, 0, + 248, 0, 0, 0, 0, 0, 0, 247, 247, 0, + 0, 259, 259, 0, 259, 0, 259, 0, 0, 0, + 0, 0, 0, 257, 0, 127, 257, 137, 0, 0, + 248, 248, 136, 0, 0, 125, 0, 126, 0, 0, + 257, 257, 0, 257, 0, 257, 259, 259, 0, 0, + 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 248, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 257, 0, 259, 259, 0, + 0, 0, 0, 83, 0, 261, 261, 261, 261, 261, + 0, 0, 261, 261, 0, 261, 261, 261, 261, 261, + 261, 242, 242, 242, 242, 242, 257, 257, 242, 242, + 0, 242, 242, 242, 242, 242, 242, 0, 128, 0, + 0, 0, 0, 0, 0, 260, 260, 260, 260, 260, + 0, 0, 260, 260, 0, 260, 260, 260, 260, 260, + 260, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 0, 137, 0, 0, 0, 0, 136, 0, 0, 125, + 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, + 0, 0, 0, 241, 241, 241, 241, 241, 0, 0, + 241, 241, 0, 241, 241, 241, 241, 241, 241, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 83, 0, - 0, 245, 245, 245, 245, 245, 0, 83, 0, 0, - 0, 245, 245, 245, 245, 245, 245, 246, 246, 246, - 246, 246, 125, 129, 0, 0, 0, 246, 246, 246, - 246, 246, 246, 125, 0, 0, 124, 0, 134, 0, - 0, 0, 125, 133, 0, 0, 122, 124, 123, 134, - 132, 0, 0, 0, 133, 0, 128, 122, 0, 123, - 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, - 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, - 0, 255, 255, 255, 255, 255, 255, 196, 196, 196, - 196, 196, 0, 0, 83, 0, 0, 196, 196, 196, - 196, 196, 196, 0, 0, 83, 0, 0, 124, 0, - 134, 278, 126, 127, 0, 133, 0, 0, 122, 0, - 123, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 164, 85, 86, 87, - 88, 89, 0, 0, 0, 0, 83, 130, 131, 86, - 87, 88, 89, 0, 0, 0, 164, 85, 86, 87, - 88, 89, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, - 0, 125, 10, 0, 0, 0, 0, 0, 0, 129, + 127, 0, 137, 0, 0, 0, 0, 136, 0, 127, + 125, 137, 126, 0, 0, 0, 136, 0, 0, 125, + 0, 126, 0, 0, 0, 124, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 0, 0, 278, 0, 0, + 0, 0, 168, 86, 87, 88, 89, 90, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + 0, 258, 258, 258, 258, 258, 0, 83, 10, 0, + 0, 258, 258, 258, 258, 258, 258, 247, 247, 247, + 247, 247, 0, 0, 0, 0, 0, 247, 247, 247, + 247, 247, 247, 128, 0, 132, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 0, 127, 0, 137, 0, + 0, 0, 0, 136, 0, 0, 125, 0, 126, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 131, 0, + 0, 248, 248, 248, 248, 248, 0, 0, 0, 0, + 0, 248, 248, 248, 248, 248, 248, 259, 259, 259, + 259, 259, 0, 0, 0, 0, 0, 259, 259, 259, + 259, 259, 259, 0, 83, 0, 168, 86, 87, 88, + 89, 90, 0, 0, 0, 0, 257, 257, 257, 257, + 257, 0, 0, 283, 129, 130, 257, 257, 257, 257, + 257, 257, 10, 127, 0, 137, 379, 0, 0, 128, + 136, 0, 127, 125, 137, 126, 0, 0, 0, 136, + 0, 0, 125, 0, 126, 0, 0, 0, 0, 132, + 0, 280, 0, 0, 0, 0, 0, 133, 134, 87, + 88, 89, 90, 0, 0, 0, 168, 86, 87, 88, + 89, 90, 0, 0, 0, 0, 135, 0, 0, 0, + 0, 83, 131, 10, 0, 0, 0, 0, 0, 0, + 83, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 0, 0, 0, 0, 0, 128, 0, 0, 132, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 135, 129, 130, + 0, 0, 0, 131, 0, 0, 135, 0, 0, 0, + 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 168, 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 0, 132, 0, 0, - 0, 0, 0, 128, 0, 0, 132, 0, 0, 0, - 0, 0, 128, 164, 85, 86, 87, 88, 89, 0, - 0, 0, 0, 0, 164, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 0, 282, 0, 126, 127, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 127, 0, 0, 0, 0, 0, 129, 0, 126, 127, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 0, 0, 164, 85, 86, 87, 88, - 89, 0, 0, 132, 0, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, - 128, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 0, 0, 0, 0, 0, 0, 132, 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, 129, 0, + 0, 0, 0, 135, 0, 0, 0, 0, 0, 131, + 168, 86, 87, 88, 89, 90, 0, 0, 0, 168, + 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 126, 127, 0, 0, 0, - 0, 0, 0, 0, 0, 132, 126, 127, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 132, 0, 129, 130, 0, 0, 0, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 131, 0, 0, 135, + 0, 0, 0, 0, 0, 131, 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, 126, 127, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 130, 0, 0, 0, 0, 0, 0, + 0, 129, 130, ); protected static $yyCheck = array(4, - 115, 41, 46, 46, 44, 42, 61, 62, 63, 126, - 58, 123, 46, 124, 40, 59, 37, 38, 58, 59, - 71, 42, 43, 91, 45, 91, 47, 91, 44, 34, - 35, 91, 260, 44, 125, 40, 125, 91, 220, 60, - 95, 62, 97, 59, 41, 125, 161, 44, 91, 37, - 101, 102, 260, 93, 42, 260, 61, 62, 63, 47, - 115, 58, 59, 41, 69, 70, 44, 59, 260, 37, - 41, 260, 300, 94, 42, 43, 126, 45, 286, 47, - 58, 59, 93, 41, 410, 125, 44, 40, 59, 94, - 95, 283, 97, 63, 286, 300, 93, 91, 59, 41, - 58, 59, 44, 124, 59, 126, 161, 260, 300, 125, - 115, 300, 340, 295, 125, 93, 171, 59, 160, 176, - 44, 91, 93, 59, 330, 44, 303, 44, 125, 63, - 44, 123, 340, 286, 340, 93, 37, 38, 126, 260, - 44, 42, 43, 304, 45, 91, 47, 125, 62, 154, - 155, 93, 157, 208, 125, 100, 161, 91, 126, 60, - 486, 62, 123, 126, 46, 286, 171, 125, 123, 93, - 123, 260, 364, 178, 93, 364, 93, 122, 123, 124, - 125, 126, 127, 125, 129, 242, 93, 123, 133, 93, - 46, 40, 249, 94, 260, 312, 260, 46, 40, 311, - 260, 383, 58, 208, 46, 39, 260, 212, 125, 58, - 46, 332, 260, 261, 331, 49, 50, 51, 125, 91, - 286, 125, 286, 260, 59, 126, 286, 232, 173, 340, - 175, 91, 286, 93, 260, 180, 181, 182, 183, 184, + 118, 46, 46, 46, 61, 62, 63, 180, 303, 126, + 152, 124, 164, 93, 126, 59, 125, 40, 37, 38, + 71, 123, 42, 42, 43, 59, 45, 84, 47, 34, + 35, 41, 91, 41, 44, 40, 44, 260, 125, 304, + 97, 60, 99, 62, 260, 125, 91, 165, 58, 59, + 58, 59, 59, 104, 105, 46, 61, 62, 63, 91, + 224, 118, 41, 37, 69, 70, 46, 283, 42, 43, + 286, 45, 44, 47, 247, 94, 40, 300, 125, 84, + 59, 254, 260, 93, 300, 93, 125, 59, 416, 123, + 44, 96, 97, 44, 99, 44, 37, 38, 260, 59, + 39, 42, 43, 260, 45, 124, 47, 126, 165, 251, + 49, 50, 51, 118, 93, 125, 123, 125, 175, 60, + 46, 62, 300, 37, 286, 91, 44, 59, 42, 43, + 40, 45, 59, 47, 44, 37, 300, 422, 91, 93, + 42, 364, 93, 300, 93, 47, 125, 58, 364, 59, + 44, 260, 126, 158, 159, 212, 161, 529, 530, 123, + 165, 334, 340, 123, 492, 59, 46, 102, 40, 321, + 175, 125, 44, 260, 125, 93, 63, 182, 340, 330, + 322, 466, 324, 41, 556, 126, 44, 456, 457, 340, + 125, 126, 127, 128, 129, 130, 123, 132, 44, 286, + 312, 136, 344, 60, 91, 378, 59, 212, 63, 311, + 46, 216, 126, 123, 331, 125, 62, 152, 370, 331, + 64, 93, 58, 257, 126, 389, 495, 340, 260, 126, + 41, 125, 237, 44, 91, 93, 91, 260, 512, 58, + 260, 383, 177, 517, 179, 332, 388, 58, 59, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 300, 209, 257, 260, 416, 332, 60, - 44, 328, 340, 315, 300, 220, 340, 33, 332, 35, - 340, 331, 373, 374, 40, 402, 403, 43, 62, 45, - 260, 312, 286, 373, 374, 46, 257, 488, 37, 38, - 91, 246, 257, 42, 43, 40, 45, 64, 47, 44, - 331, 460, 450, 451, 260, 372, 286, 548, 549, 324, - 46, 60, 364, 62, 312, 516, 44, 364, 273, 40, - 275, 41, 277, 278, 44, 91, 281, 282, 364, 40, - 286, 59, 573, 331, 312, 46, 340, 59, 399, 312, - 295, 489, 402, 403, 300, 301, 302, 41, 93, 41, - 44, 125, 44, 331, 58, 94, 410, 91, 331, 125, - 126, 316, 59, 318, 414, 415, 410, 420, 323, 400, - 401, 402, 403, 93, 329, 219, 332, 126, 260, 41, - 411, 412, 44, 338, 354, 400, 59, 33, 41, 35, - 421, 44, 517, 59, 40, 410, 463, 43, 310, 45, - 41, 312, 60, 44, 402, 403, 59, 414, 415, 41, - 41, 366, 44, 44, 523, 524, 155, 310, 157, 389, - 331, 61, 377, 421, 402, 403, 414, 382, 383, 402, - 403, 386, 171, 260, 261, 450, 451, 61, 320, 178, - 93, 550, 41, 421, 311, 91, 414, 415, 421, 123, - 332, 41, 517, 33, 44, 35, 411, 310, 340, 260, - 40, 506, 58, 43, 41, 45, 511, 44, 58, 59, - 41, 486, 125, 44, 489, 91, 431, 432, 493, 125, - 126, 58, 59, 44, 439, 440, 260, 58, 59, 400, - 401, 402, 403, 232, 260, 261, 262, 263, 264, 265, - 411, 412, 517, 93, 123, 41, 344, 345, 44, 574, - 421, 91, 286, 468, 123, 560, 93, 373, 374, 320, - 286, 58, 93, 59, 410, 480, 260, 13, 14, 594, - 123, 332, 37, 44, 579, 125, 506, 42, 43, 340, - 45, 511, 47, 123, 93, 590, 126, 313, 125, 44, - 505, 93, 286, 508, 125, 510, 91, 93, 332, 574, - 300, 301, 302, 312, 260, 123, 300, 301, 302, 300, - 301, 302, 260, 125, 340, 341, 342, 343, 40, 594, - 346, 33, 331, 35, 123, 324, 257, 44, 40, 544, - 560, 43, 123, 45, 360, 361, 362, 363, 332, 365, - 366, 260, 58, 558, 370, 371, 372, 373, 374, 579, - 49, 50, 51, 40, 260, 261, 262, 263, 264, 265, - 590, 126, 37, 38, 58, 580, 41, 42, 43, 44, - 45, 260, 47, 123, 40, 40, 402, 403, 40, 91, - 286, 41, 44, 58, 59, 60, 61, 62, 63, 93, - 40, 400, 401, 402, 403, 125, 40, 59, 61, 40, - 91, 41, 411, 412, 430, 61, 125, 313, 123, 41, - 340, 125, 421, 40, 126, 125, 91, 40, 93, 94, - 260, 261, 262, 263, 264, 265, 59, 41, 40, 59, - 44, 40, 40, 340, 340, 341, 342, 343, 40, 59, - 346, 260, 125, 41, 58, 59, 286, 41, 59, 124, - 125, 126, 361, 340, 360, 361, 362, 363, 61, 365, - 366, 123, 61, 125, 370, 260, 372, 373, 374, 59, - 46, 41, 44, 313, 93, 123, 125, 59, 125, 93, - 40, 364, 44, 260, 123, 280, 281, 282, 283, 284, - 285, 286, 287, 321, 340, 41, 402, 403, 41, 340, - 340, 341, 342, 343, 37, 91, 346, 123, 303, 42, - 43, 125, 45, 41, 47, 125, 41, 59, 125, 44, - 360, 361, 362, 363, 430, 365, 366, 60, 91, 62, - 370, 40, 372, 58, 59, 37, 38, 332, 40, 41, - 42, 43, 44, 45, 371, 47, 125, 59, 260, 261, - 262, 263, 264, 265, 123, 41, 58, 59, 60, 61, - 62, 63, 402, 403, 414, 415, 125, 125, 93, 58, - 125, 41, 123, 125, 286, 123, 41, 414, 415, 123, - 93, 257, 58, 414, 415, 125, 125, 91, 91, 91, - 430, 93, 94, 126, 91, 41, 257, 93, 125, 125, - 125, 313, 123, 91, 59, 125, 59, 41, 59, 41, - 41, 41, 44, 280, 281, 282, 283, 284, 285, 364, - 287, 123, 124, 125, 126, 41, 58, 59, 340, 341, - 342, 343, 41, 125, 346, 125, 303, 312, 7, 6, - 77, 99, 314, 91, 457, 451, 493, 60, 360, 361, - 362, 363, 59, 365, 366, 104, 331, 481, 370, 212, - 372, 93, 469, 37, 38, 530, 40, 41, 42, 43, - 44, 45, 566, 47, 260, 261, 262, 263, 264, 265, - 171, 530, 319, 218, 58, 59, 171, 61, 62, 63, - 402, 403, 222, 125, 157, 324, 31, 260, 261, 262, - 263, 264, 265, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, -1, 300, -1, -1, 91, 430, 93, - 94, 58, 59, -1, -1, 400, 401, 402, 403, 404, + 205, 206, 207, 208, 209, 210, 211, 300, 213, 40, + 300, 340, 93, 59, 223, 402, 403, 44, 320, 224, + 402, 403, 566, 312, 260, 437, 469, 257, 91, 41, + 332, 41, 44, 33, 44, 35, 44, 260, 340, 421, + 40, 585, 331, 43, 125, 45, 251, 60, 58, 59, + 286, 61, 596, 63, 62, 330, 373, 374, 494, 91, + 257, 59, 37, 286, 373, 374, 93, 42, 43, 59, + 45, 364, 47, 278, 364, 280, 91, 282, 283, 260, + 261, 286, 287, 93, 405, 60, 522, 62, 40, 61, + 41, 91, 260, 44, 46, 300, 410, 410, 125, 511, + 91, 312, 93, 260, 340, 420, 58, 58, 59, 332, + 40, 400, 401, 402, 403, 125, 46, 322, 286, 324, + 331, 310, 411, 412, 329, 125, 126, 91, 312, 286, + 335, 406, 421, 260, 414, 523, 414, 415, 37, 344, + 312, 416, 93, 42, 43, 312, 45, 331, 47, 260, + 261, 126, 564, 260, 310, 554, 555, 91, 33, 331, + 35, 60, 41, 62, 331, 40, 40, 372, 43, 61, + 45, 311, 46, 41, 125, 123, 44, 40, 383, 286, + 579, 456, 457, 388, 389, 41, 310, 392, 44, 400, + 401, 402, 403, 320, 58, 41, 523, 260, 44, 41, + 411, 412, 44, 41, 41, 332, 44, 44, 344, 345, + 421, 96, 417, 340, 373, 374, 91, 492, 402, 403, + 495, 58, 59, 286, 499, 332, 41, 126, 260, 44, + 402, 403, 437, 438, 91, 402, 403, 421, 13, 14, + 445, 446, 123, 58, 59, 260, 104, 105, 523, 421, + 125, 126, 44, 580, 286, 58, 93, 300, 301, 302, + 260, 261, 262, 263, 264, 265, 300, 301, 302, 474, + 91, 286, 123, 600, 159, 123, 161, 340, 93, 410, + 44, 486, 93, 44, 41, 93, 286, 44, 125, 33, + 175, 35, 260, 49, 50, 51, 40, 182, 41, 43, + 332, 45, 59, 123, 260, 580, 511, 125, 340, 514, + 125, 516, 40, 313, 123, 257, 280, 281, 282, 283, + 284, 285, 123, 287, 44, 600, 260, 261, 262, 263, + 264, 265, 41, 414, 415, 44, 93, 312, 40, 303, + 340, 341, 342, 343, 58, 550, 346, 91, 58, 58, + 59, 260, 237, 260, 123, 40, 331, 41, 40, 564, + 360, 361, 362, 363, 91, 365, 366, 93, 125, 40, + 370, 371, 372, 373, 374, 125, 40, 40, 61, 123, + 91, 586, 126, 61, 93, 260, 261, 262, 263, 264, + 265, 123, 91, 41, 404, 405, 406, 407, 408, 41, + 360, 125, 402, 403, 414, 415, 416, 417, 418, 419, + 125, 286, 33, 312, 35, 340, 125, 125, 91, 40, + 40, 40, 43, 40, 45, 400, 401, 402, 403, 59, + 430, 41, 331, 59, 44, 395, 411, 412, 313, 260, + 261, 262, 263, 264, 265, 330, 421, 40, 58, 59, + 40, 340, 37, 38, 40, 59, 41, 42, 43, 44, + 45, 260, 47, 414, 415, 340, 341, 342, 343, 125, + 91, 346, 41, 58, 59, 60, 61, 62, 63, 300, + 41, 59, 61, 93, 361, 360, 361, 362, 363, 61, + 365, 366, 59, 41, 46, 370, 44, 372, 373, 374, + 340, 400, 401, 402, 403, 126, 91, 41, 93, 94, + 93, 59, 44, 125, 123, 125, 260, 261, 262, 263, + 264, 265, 421, 59, 125, 346, 40, 402, 403, 41, + 364, 41, 44, 260, 44, 44, 123, 260, 321, 124, + 125, 126, 286, 340, 41, 93, 58, 59, 58, 59, + 41, 340, 512, 123, 41, 430, 59, 517, 371, 286, + 125, 260, 261, 262, 263, 264, 265, 91, 125, 313, + 125, 40, 123, 300, 301, 302, 91, 414, 415, 59, + 125, 93, 125, 93, 41, 58, 125, 41, 123, 41, + 41, 93, 125, 123, 123, 257, 340, 341, 342, 343, + 125, 91, 346, 58, 125, 332, 566, 280, 281, 282, + 283, 284, 285, 125, 287, 125, 360, 361, 362, 363, + 91, 365, 366, 91, 91, 585, 370, 93, 372, 257, + 303, 125, 125, 59, 123, 59, 596, 125, 41, 260, + 261, 262, 263, 264, 265, 37, 38, 346, 40, 41, + 42, 43, 44, 45, 59, 47, 41, 41, 402, 403, + 91, 334, 41, 364, 41, 286, 58, 59, 60, 61, + 62, 63, 37, 38, 7, 40, 41, 42, 43, 44, + 45, 125, 47, 125, 6, 101, 430, 77, 320, 463, + 457, 60, 313, 58, 59, 499, 61, 62, 63, 91, + 59, 93, 94, 107, 475, 414, 415, 487, 216, 536, + 572, 536, 41, 175, 175, 44, 330, 325, 91, 340, + 341, 342, 343, 222, 161, 346, 91, 312, 93, 94, + 59, 123, 124, 125, 126, 31, 260, -1, -1, 360, + 361, 362, 363, 226, 365, 366, 331, -1, -1, 370, + -1, 372, 125, -1, -1, -1, -1, -1, 123, 124, + 125, 126, 286, -1, 93, 280, 281, 282, 283, 284, + 285, -1, 287, -1, -1, -1, 300, 301, 302, -1, + -1, 402, 403, -1, -1, 300, 301, 302, -1, 304, + 280, 281, 282, 283, 284, 285, 125, 287, -1, -1, + -1, -1, -1, -1, 414, 415, -1, -1, 332, 430, + 300, 301, 302, 303, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, 123, - 124, 125, 126, -1, -1, 257, 93, -1, 260, 41, - 37, 38, 44, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, -1, -1, 58, 59, -1, 312, - -1, 58, 59, 60, 61, 62, 63, -1, 125, -1, - -1, -1, 280, 281, 282, 283, 284, 285, 331, 287, - 414, 415, -1, 41, -1, -1, 44, -1, 310, 311, - 312, 93, -1, -1, 91, 303, 93, 94, 320, -1, - 58, 59, -1, 41, -1, -1, 44, -1, 330, 331, - 332, -1, 280, 281, 282, 283, 284, 285, 340, 287, - 58, 59, -1, 125, -1, -1, 334, 124, 125, 126, - -1, -1, 300, 301, 302, 93, 304, -1, -1, -1, - -1, 246, -1, -1, -1, -1, -1, 400, 401, 402, - 403, -1, -1, -1, -1, 93, -1, -1, 411, 412, - -1, -1, -1, 257, -1, -1, 260, 125, 421, 414, - 415, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 125, 410, 411, + 415, 416, 417, 418, 419, 420, 421, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 46, 47, -1, 280, + 281, 282, 283, 284, 285, -1, 287, -1, 58, 59, + 60, 61, 62, 63, -1, 257, -1, -1, 260, 300, + 301, 302, 303, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, 91, 257, 93, 94, 260, 58, 59, 60, 61, + 62, 63, 414, 415, 414, 415, -1, 280, 281, 282, + 283, 284, 285, -1, 287, -1, -1, -1, 310, 311, + 312, -1, -1, -1, 124, 125, 126, -1, 320, 91, + 303, 93, 94, -1, -1, -1, -1, -1, 330, 331, + 332, -1, -1, -1, -1, 310, 311, 312, 340, 280, + 281, 282, 283, 284, 285, 320, 287, -1, -1, -1, + -1, 334, 124, 125, 126, 330, 331, 332, -1, -1, + -1, -1, 303, -1, -1, 340, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, 316, -1, 318, -1, -1, 310, 311, 312, -1, - -1, 58, 59, 60, 61, 62, 320, -1, -1, -1, - -1, -1, -1, 338, -1, -1, 330, 331, 332, -1, - -1, -1, 91, 37, 38, -1, 340, 41, 42, 43, - 44, 45, 46, 47, -1, -1, 93, 94, -1, -1, - -1, -1, 414, 415, 58, 59, 60, 61, 62, 63, - -1, -1, 377, -1, -1, -1, 41, 382, -1, 44, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, - -1, -1, -1, 58, 59, -1, -1, 91, -1, 93, - 94, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 431, 421, 93, 373, - 124, 125, 126, -1, 331, -1, -1, -1, -1, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, -1, -1, -1, 414, 415, -1, - 125, 58, 59, 60, 61, 62, 63, -1, -1, -1, - 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, - -1, -1, 426, -1, -1, -1, -1, -1, -1, 433, - 58, 59, -1, 61, 91, 63, 93, 94, -1, -1, - 505, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 414, 415, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 93, 94, 124, 125, 126, - -1, 280, 281, 282, 283, 284, 285, -1, 287, -1, - -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, - -1, 47, 496, 558, 303, -1, 124, 125, -1, -1, - 504, -1, 58, 59, 60, 61, 62, 63, -1, -1, - -1, 515, -1, -1, -1, 312, 414, 415, -1, -1, + 91, -1, 93, 94, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + -1, -1, -1, 124, 125, 126, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 37, + 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, 93, + 94, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, -1, -1, 42, 43, 44, 45, + 312, 47, -1, -1, -1, 93, 94, -1, -1, -1, + 124, 125, 126, -1, 60, 61, 62, 63, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 330, 331, -1, -1, 93, 94, -1, - 37, 38, 546, 340, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, 312, -1, - -1, 58, 59, 60, 61, 62, 63, -1, 124, 125, - 126, 575, -1, -1, -1, -1, -1, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 593, - -1, -1, -1, -1, 598, -1, 93, 94, -1, 603, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 91, 414, 415, 416, - 417, 418, 419, -1, 421, -1, -1, 124, 125, 126, + -1, -1, -1, -1, -1, -1, 124, 125, 126, -1, + -1, -1, -1, -1, -1, 91, -1, 93, 94, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, -1, 124, -1, + 126, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 312, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - -1, -1, -1, -1, 331, -1, -1, -1, 37, 38, - -1, -1, -1, 42, 43, 44, 45, -1, 47, 414, - 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, - 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, - -1, -1, 91, -1, 93, 94, -1, 60, 61, 62, - 63, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 312, 414, 415, 416, - 417, 418, 419, 420, 421, 124, -1, 126, 91, -1, - 93, 94, -1, -1, -1, 331, 404, 405, 406, 407, + 331, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -1, 58, 59, 60, 61, 62, 63, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, 124, 125, 126, -1, -1, 330, 331, 93, 94, + -1, 91, 37, 38, 312, -1, 340, 42, 43, 44, + 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 331, -1, 60, 61, 62, 63, 124, + 125, -1, -1, -1, 41, 125, 41, 44, -1, 44, + -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, + -1, 58, 59, 58, 59, -1, 91, -1, 93, 94, + -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 93, 421, 93, 124, + -1, 126, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, -1, 126, -1, 280, 281, 282, 283, 284, - 285, -1, 287, -1, -1, 312, -1, -1, -1, -1, - 91, -1, -1, -1, -1, 300, 301, 302, 303, -1, - -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, + 418, 419, -1, 421, -1, -1, -1, -1, 125, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, 125, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, -1, 37, + 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, 41, 411, 412, 44, 414, 415, 416, - 417, 418, 419, -1, 421, 93, 94, -1, -1, -1, - 58, 59, -1, 61, -1, 63, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, -1, 47, -1, 91, - -1, -1, -1, 312, -1, -1, 124, 125, 58, 59, - 60, 61, 62, 63, -1, 93, 94, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, -1, 47, -1, 312, - -1, -1, -1, 93, 94, -1, 124, 125, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, 331, 280, - 281, 282, 283, 284, 285, -1, 287, -1, -1, -1, - -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, - -1, -1, 303, 93, 94, -1, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 334, 124, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, 37, - 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, + 280, 281, 282, 283, 284, 285, -1, 287, 331, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, 303, -1, 93, 94, 312, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 334, 41, 124, 125, 44, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, 58, 59, -1, 125, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, 312, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, 124, + 125, -1, -1, -1, -1, -1, 331, 93, -1, -1, + -1, -1, -1, 91, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, 125, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 93, 94, -1, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, 414, 415, 414, + 415, -1, 58, 59, 60, 61, 62, 63, 124, 125, + 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, + -1, -1, 37, 38, 312, -1, 41, 42, 43, 44, + 45, -1, 47, 303, -1, -1, -1, 93, 94, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, + 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, + -1, -1, 260, 41, 334, -1, 44, 312, 124, 125, + -1, -1, 60, 61, 62, 63, -1, -1, 93, 94, + 58, 59, 280, 281, 282, 283, 284, 285, 286, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, 280, 281, - 282, 283, 284, 285, 312, 287, -1, 58, 59, 60, - 61, 62, 63, -1, -1, 93, 94, -1, 300, 301, - 302, 303, -1, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, - -1, -1, 93, 94, -1, -1, 124, 125, 58, 59, + -1, -1, -1, -1, -1, 303, 94, -1, -1, 124, + 125, -1, 400, 401, -1, 93, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 41, 421, 332, 44, 124, -1, 126, -1, + -1, -1, -1, -1, 379, -1, -1, 125, -1, 58, + 59, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, + -1, -1, 42, 43, 93, 45, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, 312, 432, -1, 59, + 60, 61, 62, 63, 439, -1, -1, -1, 414, 415, + -1, -1, -1, -1, -1, -1, 125, 37, 38, -1, + -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 312, 124, 125, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 400, 401, 125, -1, 404, 405, 406, 407, - 408, 91, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 312, 421, 124, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, + -1, -1, -1, -1, 124, -1, 126, 502, -1, -1, + -1, -1, -1, -1, 94, 510, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 521, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, 312, 414, 415, + 416, 417, 418, 419, 124, 421, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 552, -1, -1, + -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 125, 404, 405, 406, 407, - 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, 37, 38, -1, -1, 41, 42, 43, -1, - 45, -1, 47, -1, 312, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 280, - 281, 282, 283, 284, 285, -1, 287, -1, 37, 38, - -1, 312, -1, 42, 43, -1, 45, -1, 47, -1, - -1, -1, 303, -1, -1, -1, -1, -1, -1, 94, - 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, - 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, - -1, -1, 312, 334, -1, -1, -1, -1, -1, 124, - -1, 126, -1, 303, -1, 94, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + -1, -1, -1, 331, 400, 401, 581, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 599, 421, -1, -1, -1, 604, + -1, -1, -1, -1, 609, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 334, 124, -1, 126, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 418, 419, -1, 421, 37, 38, 414, 415, -1, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, 312, -1, -1, -1, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, 37, 38, -1, -1, 41, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, 94, 312, -1, -1, -1, 60, 61, 62, 63, + -1, -1, -1, -1, -1, 414, 415, -1, -1, -1, + -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 124, 421, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, - 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, + 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, 60, 61, 62, 63, 37, 38, -1, 94, + -1, -1, 60, 61, 62, 63, 37, 38, -1, 94, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, -1, -1, -1, 94, 312, -1, 124, + 61, 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, - -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, 124, -1, 126, -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, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, 37, 38, -1, -1, 41, 42, 43, - -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, - 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, 312, -1, -1, - -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, - 94, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, 37, 38, -1, 312, 41, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, 94, -1, -1, - 124, -1, 126, 331, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, 124, -1, 126, -1, -1, 312, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, 331, -1, 37, + 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, 60, 61, 62, 63, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, 124, + 125, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 124, 421, 126, 37, + 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, + -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, + -1, -1, 37, 38, 312, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, 93, 94, -1, -1, -1, + -1, -1, -1, 331, 59, 60, 61, 62, 63, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, -1, 126, - 331, -1, -1, -1, -1, -1, -1, -1, 94, -1, + -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, + 331, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, 124, -1, - 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 415, 416, 417, 418, 419, -1, 421, -1, -1, 124, + -1, 126, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 421, 37, 38, -1, -1, 41, 42, 43, -1, 45, + 421, 37, 38, -1, 312, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, + -1, -1, 58, 331, 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, 60, 61, 62, 63, 37, 38, -1, 94, -1, - 42, 43, -1, 45, -1, 47, -1, -1, 312, -1, - -1, -1, -1, -1, -1, -1, 58, -1, 60, 61, - 62, 63, -1, -1, -1, 94, -1, 331, 124, -1, - 126, -1, -1, -1, -1, 312, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 94, -1, 331, 124, -1, 126, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, -1, 312, -1, -1, -1, - -1, -1, 124, -1, 126, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, 331, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, - 93, 94, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, 37, 38, + -1, 60, 61, 62, 63, 400, 401, -1, 94, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + -1, -1, -1, -1, -1, 94, -1, -1, 124, -1, + 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, 421, -1, 124, -1, 126, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, -1, 312, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 312, -1, 58, + 59, 60, 61, 62, 63, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, 331, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, + 62, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 94, 421, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - -1, 37, 38, 312, 93, 94, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, 60, 61, 62, 63, -1, -1, - 312, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 126, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, + -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 60, 61, 62, 63, 37, 38, 312, -1, -1, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, 60, 61, 62, + 63, -1, -1, 312, 94, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, 94, 38, -1, 124, 41, 126, 43, 44, 45, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, + -1, 124, -1, 126, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, 124, -1, - 126, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 416, 417, 418, 419, -1, 421, -1, 93, 94, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + 419, -1, 421, -1, -1, -1, -1, -1, 124, 125, + 312, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, -1, 47, -1, 331, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, 94, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 37, 421, -1, - -1, -1, 42, 43, -1, 45, -1, 47, 37, 38, - -1, -1, -1, 42, 43, -1, 45, 124, 47, 126, - 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, -1, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, 94, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, 126, -1, -1, -1, - -1, -1, 93, 94, -1, 124, -1, 126, -1, -1, - -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, 400, 401, 93, 94, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, 124, 125, 37, 38, -1, -1, 41, - 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, - 62, 63, -1, -1, 400, 401, 402, 403, 404, 405, + 419, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, -1, -1, 124, 125, -1, -1, -1, 411, + 412, -1, 312, -1, -1, -1, -1, -1, -1, 421, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 331, 47, -1, -1, -1, -1, -1, -1, 312, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + 41, -1, 43, 44, 45, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 124, + 125, 411, 412, -1, -1, 415, 416, 417, 418, 419, + -1, 421, 93, 94, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, -1, -1, 416, 417, 418, 419, -1, 421, 38, + -1, -1, 41, 124, 125, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, 312, -1, -1, -1, -1, - -1, -1, 124, 125, 58, 59, 60, 61, 62, 63, - 38, -1, -1, 41, 331, 43, 44, 45, -1, -1, + 416, 417, 418, 419, 93, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 124, 125, 58, 59, -1, + 61, -1, 63, -1, -1, 38, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, + 63, -1, 93, 94, -1, -1, -1, -1, -1, -1, + 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 93, 94, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, 124, 125, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 38, -1, -1, 41, -1, 43, - 44, 45, 312, -1, -1, 93, 94, -1, -1, -1, - 124, 125, -1, 312, 58, 59, 60, 61, 62, 63, - -1, 331, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 331, -1, 411, 412, 124, 125, 415, 416, - 417, 418, 419, -1, 421, -1, -1, -1, -1, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, -1, -1, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, 421, 411, 412, -1, -1, -1, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, -1, 400, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 58, - 59, -1, 61, -1, 63, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 124, 125, - -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, -1, -1, 58, - 59, -1, 61, -1, 63, -1, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - -1, -1, 400, 401, 93, 94, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 38, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 38, -1, -1, 41, 58, 59, 44, 61, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, 61, 38, 63, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, 58, 59, -1, 61, - -1, 63, -1, -1, -1, -1, -1, 93, 94, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 38, 124, 125, 41, -1, -1, 44, -1, -1, - -1, 93, 94, -1, -1, -1, -1, -1, 124, 125, - -1, 58, 59, -1, 61, 38, 63, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, -1, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, 93, 94, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 124, 125, -1, -1, 38, -1, -1, 41, -1, + -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, + 59, 44, 61, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, 38, + 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, -1, -1, -1, 58, + 59, -1, 61, -1, 63, 404, 405, 406, 407, 408, + 93, 94, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, -1, 93, 94, -1, 38, -1, -1, + 41, 124, 125, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 61, -1, 63, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, 124, 125, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, 59, 44, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, 93, 94, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, 93, 94, 41, -1, + 419, -1, -1, -1, -1, 38, 93, 94, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, 41, 58, 59, 44, 61, -1, 63, -1, -1, -1, -1, -1, -1, 124, 125, -1, - -1, 58, 59, 33, 61, 35, 63, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 60, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + -1, -1, -1, 41, -1, 33, 44, 35, -1, -1, + 93, 94, 40, -1, -1, 43, -1, 45, -1, -1, + 58, 59, -1, 61, -1, 63, 93, 94, -1, -1, + -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 404, 405, 406, 407, 408, -1, 125, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, 126, -1, -1, -1, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -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, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, -1, -1, 33, + -1, -1, -1, -1, -1, 93, -1, 124, 125, -1, + -1, -1, -1, 91, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 404, 405, 406, 407, 408, 124, 125, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 126, -1, + -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, - 33, 45, 35, -1, -1, -1, -1, 40, -1, 33, - 43, 35, 45, -1, -1, -1, 40, -1, 62, 43, - -1, 45, -1, -1, -1, 58, -1, -1, -1, -1, - 260, 261, 262, 263, 264, 265, -1, 61, -1, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, - -1, -1, -1, -1, -1, -1, 286, -1, 91, -1, - -1, 404, 405, 406, 407, 408, -1, 91, -1, -1, + 33, -1, 35, -1, -1, -1, -1, 40, -1, 33, + 43, 35, 45, -1, -1, -1, 40, -1, -1, 43, + -1, 45, -1, -1, -1, 58, -1, -1, -1, -1, + -1, -1, 126, -1, -1, -1, -1, 61, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, + -1, 404, 405, 406, 407, 408, -1, 91, 286, -1, -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, - 407, 408, 126, 313, -1, -1, -1, 414, 415, 416, - 417, 418, 419, 126, -1, -1, 33, -1, 35, -1, - -1, -1, 126, 40, -1, -1, 43, 33, 45, 35, - 340, -1, -1, -1, 40, -1, 346, 43, -1, 45, - -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, + 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, + 417, 418, 419, 126, -1, 313, -1, -1, -1, -1, + -1, -1, 126, -1, -1, -1, 33, -1, 35, -1, + -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, + -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, - 407, 408, -1, -1, 91, -1, -1, 414, 415, 416, - 417, 418, 419, -1, -1, 91, -1, -1, 33, -1, - 35, 401, 402, 403, -1, 40, -1, -1, 43, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, 91, 260, 261, 262, + 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, + 417, 418, 419, -1, 91, -1, 260, 261, 262, 263, + 264, 265, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 401, 402, 403, 414, 415, 416, 417, + 418, 419, 286, 33, -1, 35, 123, -1, -1, 126, + 40, -1, 33, 43, 35, 45, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, -1, -1, -1, 313, + -1, 61, -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, 260, 261, 262, 263, - 264, 265, 286, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 286, -1, -1, -1, -1, -1, -1, - -1, 126, 286, -1, -1, -1, -1, -1, -1, 313, + 264, 265, -1, -1, -1, -1, 340, -1, -1, -1, + -1, 91, 346, 286, -1, -1, -1, -1, -1, -1, + 91, -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 313, -1, -1, -1, -1, -1, -1, -1, -1, 313, - -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, - -1, -1, 346, -1, -1, -1, -1, 340, -1, -1, + 313, -1, -1, -1, -1, -1, 126, -1, -1, 313, + -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 340, 402, 403, -1, -1, -1, 346, -1, -1, 340, -1, -1, -1, - -1, -1, 346, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, - -1, -1, -1, -1, -1, -1, 400, -1, 402, 403, - 286, -1, -1, -1, -1, -1, -1, -1, -1, 402, - 403, -1, -1, -1, -1, -1, 313, -1, 402, 403, - -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, - -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, - 265, -1, -1, 340, -1, -1, -1, -1, -1, 346, - -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, - 346, 286, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, + 403, -1, -1, -1, -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, -1, 313, -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, 313, -1, + -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, + 260, 261, 262, 263, 264, 265, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 286, -1, -1, -1, + -1, -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, - -1, -1, -1, -1, -1, 340, 402, 403, -1, -1, - -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 313, -1, 402, 403, -1, -1, -1, + -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 340, -1, -1, -1, -1, -1, 346, -1, -1, 340, + -1, -1, -1, -1, -1, 346, -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, -1, -1, -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, + -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -2015,88 +2016,96 @@ public function yyparse($yyLex) { case 80: #line 479 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 81: #line 483 "src/main/jay/grammars/xp.jay" + case 82: #line 484 "src/main/jay/grammars/xp.jay" + { + $yyVal= new InstanceCreationNode(); + $yyVal->type= $yyVals[-3+$yyTop]; + $yyVal->parameters= $yyVals[-1+$yyTop]; + $yyVal->body= NULL; + } break; + + case 83: #line 493 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 82: #line 484 "src/main/jay/grammars/xp.jay" + case 84: #line 494 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 83: #line 485 "src/main/jay/grammars/xp.jay" + case 85: #line 495 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyLex->create(new ReturnNode($yyVals[-1+$yyTop]))); } break; - case 84: #line 489 "src/main/jay/grammars/xp.jay" + case 86: #line 499 "src/main/jay/grammars/xp.jay" { $yyVal= array(NULL, NULL); } break; - case 85: #line 490 "src/main/jay/grammars/xp.jay" + case 87: #line 500 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop][0]['type']); } break; - case 86: #line 491 "src/main/jay/grammars/xp.jay" + case 88: #line 501 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 87: #line 495 "src/main/jay/grammars/xp.jay" + case 89: #line 505 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 88: #line 496 "src/main/jay/grammars/xp.jay" + case 90: #line 506 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 89: #line 500 "src/main/jay/grammars/xp.jay" + case 91: #line 510 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 90: #line 501 "src/main/jay/grammars/xp.jay" + case 92: #line 511 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 91: #line 505 "src/main/jay/grammars/xp.jay" + case 93: #line 515 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 92: #line 506 "src/main/jay/grammars/xp.jay" + case 94: #line 516 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[0+$yyTop], 'vararg' => TRUE), $yyVals[-2+$yyTop]); } break; - case 93: #line 507 "src/main/jay/grammars/xp.jay" + case 95: #line 517 "src/main/jay/grammars/xp.jay" { $yyVal= array('assign' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 94: #line 511 "src/main/jay/grammars/xp.jay" + case 96: #line 521 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[0+$yyTop], 'check' => TRUE); } break; - case 95: #line 512 "src/main/jay/grammars/xp.jay" + case 97: #line 522 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[-1+$yyTop], 'check' => FALSE); } break; - case 96: #line 516 "src/main/jay/grammars/xp.jay" + case 98: #line 526 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 97: #line 517 "src/main/jay/grammars/xp.jay" + case 99: #line 527 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 104: #line 536 "src/main/jay/grammars/xp.jay" + case 106: #line 546 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 106: #line 541 "src/main/jay/grammars/xp.jay" + case 108: #line 551 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 107: #line 542 "src/main/jay/grammars/xp.jay" + case 109: #line 552 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 108: #line 546 "src/main/jay/grammars/xp.jay" + case 110: #line 556 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 109: #line 546 "src/main/jay/grammars/xp.jay" + case 111: #line 556 "src/main/jay/grammars/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 110: #line 549 "src/main/jay/grammars/xp.jay" + case 112: #line 559 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 111: #line 549 "src/main/jay/grammars/xp.jay" + case 113: #line 559 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 112: #line 554 "src/main/jay/grammars/xp.jay" + case 114: #line 564 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 113: #line 554 "src/main/jay/grammars/xp.jay" + case 115: #line 564 "src/main/jay/grammars/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2108,168 +2117,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 114: #line 564 "src/main/jay/grammars/xp.jay" + case 116: #line 574 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 115: #line 564 "src/main/jay/grammars/xp.jay" + case 117: #line 574 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 116: #line 569 "src/main/jay/grammars/xp.jay" + case 118: #line 579 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 117: #line 569 "src/main/jay/grammars/xp.jay" + case 119: #line 579 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 118: #line 573 "src/main/jay/grammars/xp.jay" + case 120: #line 583 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 119: #line 573 "src/main/jay/grammars/xp.jay" + case 121: #line 583 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 120: #line 577 "src/main/jay/grammars/xp.jay" + case 122: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 121: #line 577 "src/main/jay/grammars/xp.jay" + case 123: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 122: #line 581 "src/main/jay/grammars/xp.jay" + case 124: #line 591 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 124: #line 582 "src/main/jay/grammars/xp.jay" + case 126: #line 592 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 126: #line 583 "src/main/jay/grammars/xp.jay" + case 128: #line 593 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 127: #line 583 "src/main/jay/grammars/xp.jay" + case 129: #line 593 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 128: #line 586 "src/main/jay/grammars/xp.jay" + case 130: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 129: #line 586 "src/main/jay/grammars/xp.jay" + case 131: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 130: #line 591 "src/main/jay/grammars/xp.jay" + case 132: #line 601 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 131: #line 594 "src/main/jay/grammars/xp.jay" + case 133: #line 604 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 133: #line 601 "src/main/jay/grammars/xp.jay" + case 135: #line 611 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 134: #line 602 "src/main/jay/grammars/xp.jay" + case 136: #line 612 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 135: #line 606 "src/main/jay/grammars/xp.jay" + case 137: #line 616 "src/main/jay/grammars/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 136: #line 609 "src/main/jay/grammars/xp.jay" + case 138: #line 619 "src/main/jay/grammars/xp.jay" { $v= new VariableNode($yyVals[-2+$yyTop]); $yyVal= array('i' => array($yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => $v, 'expression' => $yyVals[0+$yyTop])))), 'v' => array($v)); } break; - case 137: #line 616 "src/main/jay/grammars/xp.jay" + case 139: #line 626 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 138: #line 617 "src/main/jay/grammars/xp.jay" + case 140: #line 627 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 139: #line 621 "src/main/jay/grammars/xp.jay" + case 141: #line 631 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 140: #line 627 "src/main/jay/grammars/xp.jay" + case 142: #line 637 "src/main/jay/grammars/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 141: #line 628 "src/main/jay/grammars/xp.jay" + case 143: #line 638 "src/main/jay/grammars/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 142: #line 632 "src/main/jay/grammars/xp.jay" + case 144: #line 642 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 144: #line 637 "src/main/jay/grammars/xp.jay" + case 146: #line 647 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 145: #line 638 "src/main/jay/grammars/xp.jay" + case 147: #line 648 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 146: #line 642 "src/main/jay/grammars/xp.jay" + case 148: #line 652 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 147: #line 642 "src/main/jay/grammars/xp.jay" + case 149: #line 652 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 148: #line 646 "src/main/jay/grammars/xp.jay" + case 150: #line 656 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 149: #line 646 "src/main/jay/grammars/xp.jay" + case 151: #line 656 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 150: #line 652 "src/main/jay/grammars/xp.jay" + case 152: #line 662 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 151: #line 653 "src/main/jay/grammars/xp.jay" + case 153: #line 663 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 152: #line 657 "src/main/jay/grammars/xp.jay" + case 154: #line 667 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 153: #line 658 "src/main/jay/grammars/xp.jay" + case 155: #line 668 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 154: #line 658 "src/main/jay/grammars/xp.jay" + case 156: #line 668 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 155: #line 663 "src/main/jay/grammars/xp.jay" + case 157: #line 673 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 156: #line 664 "src/main/jay/grammars/xp.jay" + case 158: #line 674 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 157: #line 668 "src/main/jay/grammars/xp.jay" + case 159: #line 678 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 158: #line 669 "src/main/jay/grammars/xp.jay" + case 160: #line 679 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 159: #line 673 "src/main/jay/grammars/xp.jay" + case 161: #line 683 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 160: #line 673 "src/main/jay/grammars/xp.jay" + case 162: #line 683 "src/main/jay/grammars/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2282,36 +2291,36 @@ public function yyparse($yyLex) { } } break; - case 161: #line 687 "src/main/jay/grammars/xp.jay" + case 163: #line 697 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 162: #line 688 "src/main/jay/grammars/xp.jay" + case 164: #line 698 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 163: #line 692 "src/main/jay/grammars/xp.jay" + case 165: #line 702 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 165: #line 697 "src/main/jay/grammars/xp.jay" + case 167: #line 707 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 166: #line 697 "src/main/jay/grammars/xp.jay" + case 168: #line 707 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 167: #line 705 "src/main/jay/grammars/xp.jay" + case 169: #line 715 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 169: #line 710 "src/main/jay/grammars/xp.jay" + case 171: #line 720 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 170: #line 711 "src/main/jay/grammars/xp.jay" + case 172: #line 721 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 171: #line 715 "src/main/jay/grammars/xp.jay" + case 173: #line 725 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 173: #line 720 "src/main/jay/grammars/xp.jay" + case 175: #line 730 "src/main/jay/grammars/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2319,44 +2328,44 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 174: #line 726 "src/main/jay/grammars/xp.jay" + case 176: #line 736 "src/main/jay/grammars/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 175: #line 731 "src/main/jay/grammars/xp.jay" + case 177: #line 741 "src/main/jay/grammars/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 176: #line 739 "src/main/jay/grammars/xp.jay" + case 178: #line 749 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 177: #line 742 "src/main/jay/grammars/xp.jay" + case 179: #line 752 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 178: #line 745 "src/main/jay/grammars/xp.jay" + case 180: #line 755 "src/main/jay/grammars/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 179: #line 748 "src/main/jay/grammars/xp.jay" + case 181: #line 758 "src/main/jay/grammars/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 180: #line 754 "src/main/jay/grammars/xp.jay" + case 182: #line 764 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 181: #line 754 "src/main/jay/grammars/xp.jay" + case 183: #line 764 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2364,7 +2373,7 @@ public function yyparse($yyLex) { } } break; - case 182: #line 760 "src/main/jay/grammars/xp.jay" + case 184: #line 770 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2372,10 +2381,10 @@ public function yyparse($yyLex) { } } break; - case 183: #line 766 "src/main/jay/grammars/xp.jay" + case 185: #line 776 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 184: #line 766 "src/main/jay/grammars/xp.jay" + case 186: #line 776 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2386,10 +2395,10 @@ public function yyparse($yyLex) { } } break; - case 185: #line 775 "src/main/jay/grammars/xp.jay" + case 187: #line 785 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 186: #line 775 "src/main/jay/grammars/xp.jay" + case 188: #line 785 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2401,10 +2410,10 @@ public function yyparse($yyLex) { } } break; - case 187: #line 785 "src/main/jay/grammars/xp.jay" + case 189: #line 795 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 188: #line 785 "src/main/jay/grammars/xp.jay" + case 190: #line 795 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2415,43 +2424,43 @@ public function yyparse($yyLex) { } } break; - case 189: #line 794 "src/main/jay/grammars/xp.jay" + case 191: #line 804 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 190: #line 797 "src/main/jay/grammars/xp.jay" + case 192: #line 807 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 191: #line 800 "src/main/jay/grammars/xp.jay" + case 193: #line 810 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 192: #line 803 "src/main/jay/grammars/xp.jay" + case 194: #line 813 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 193: #line 806 "src/main/jay/grammars/xp.jay" + case 195: #line 816 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 194: #line 809 "src/main/jay/grammars/xp.jay" + case 196: #line 819 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 195: #line 812 "src/main/jay/grammars/xp.jay" + case 197: #line 822 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 196: #line 816 "src/main/jay/grammars/xp.jay" + case 198: #line 826 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2459,7 +2468,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 197: #line 822 "src/main/jay/grammars/xp.jay" + case 199: #line 832 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2467,7 +2476,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 198: #line 828 "src/main/jay/grammars/xp.jay" + case 200: #line 838 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2475,17 +2484,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 199: #line 834 "src/main/jay/grammars/xp.jay" + case 201: #line 844 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 200: #line 839 "src/main/jay/grammars/xp.jay" + case 202: #line 849 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-3+$yyTop], $yyVals[-1+$yyTop])); } break; - case 201: #line 839 "src/main/jay/grammars/xp.jay" + case 203: #line 849 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2493,7 +2502,7 @@ public function yyparse($yyLex) { } } break; - case 202: #line 845 "src/main/jay/grammars/xp.jay" + case 204: #line 855 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2503,32 +2512,32 @@ public function yyparse($yyLex) { } } break; - case 203: #line 856 "src/main/jay/grammars/xp.jay" + case 205: #line 866 "src/main/jay/grammars/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 204: #line 859 "src/main/jay/grammars/xp.jay" + case 206: #line 869 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 205: #line 865 "src/main/jay/grammars/xp.jay" + case 207: #line 875 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 207: #line 870 "src/main/jay/grammars/xp.jay" + case 209: #line 880 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 208: #line 871 "src/main/jay/grammars/xp.jay" + case 210: #line 881 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 209: #line 875 "src/main/jay/grammars/xp.jay" + case 211: #line 885 "src/main/jay/grammars/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 210: #line 876 "src/main/jay/grammars/xp.jay" + case 212: #line 886 "src/main/jay/grammars/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 211: #line 880 "src/main/jay/grammars/xp.jay" + case 213: #line 890 "src/main/jay/grammars/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2536,282 +2545,282 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 212: #line 886 "src/main/jay/grammars/xp.jay" + case 214: #line 896 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 213: #line 886 "src/main/jay/grammars/xp.jay" + case 215: #line 896 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 214: #line 887 "src/main/jay/grammars/xp.jay" + case 216: #line 897 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 215: #line 888 "src/main/jay/grammars/xp.jay" + case 217: #line 898 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 216: #line 889 "src/main/jay/grammars/xp.jay" + case 218: #line 899 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 217: #line 890 "src/main/jay/grammars/xp.jay" + case 219: #line 900 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 218: #line 891 "src/main/jay/grammars/xp.jay" + case 220: #line 901 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 219: #line 895 "src/main/jay/grammars/xp.jay" + case 221: #line 905 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 220: #line 898 "src/main/jay/grammars/xp.jay" + case 222: #line 908 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 221: #line 904 "src/main/jay/grammars/xp.jay" + case 223: #line 914 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 223: #line 909 "src/main/jay/grammars/xp.jay" + case 225: #line 919 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 224: #line 910 "src/main/jay/grammars/xp.jay" + case 226: #line 920 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 225: #line 914 "src/main/jay/grammars/xp.jay" + case 227: #line 924 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 227: #line 919 "src/main/jay/grammars/xp.jay" + case 229: #line 929 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 228: #line 920 "src/main/jay/grammars/xp.jay" + case 230: #line 930 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 229: #line 924 "src/main/jay/grammars/xp.jay" + case 231: #line 934 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 230: #line 925 "src/main/jay/grammars/xp.jay" + case 232: #line 935 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 231: #line 926 "src/main/jay/grammars/xp.jay" + case 233: #line 936 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 232: #line 927 "src/main/jay/grammars/xp.jay" + case 234: #line 937 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 233: #line 928 "src/main/jay/grammars/xp.jay" + case 235: #line 938 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 234: #line 929 "src/main/jay/grammars/xp.jay" + case 236: #line 939 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 235: #line 930 "src/main/jay/grammars/xp.jay" + case 237: #line 940 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 236: #line 931 "src/main/jay/grammars/xp.jay" + case 238: #line 941 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 237: #line 932 "src/main/jay/grammars/xp.jay" + case 239: #line 942 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 238: #line 933 "src/main/jay/grammars/xp.jay" + case 240: #line 943 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 239: #line 934 "src/main/jay/grammars/xp.jay" + case 241: #line 944 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 240: #line 935 "src/main/jay/grammars/xp.jay" + case 242: #line 945 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 241: #line 939 "src/main/jay/grammars/xp.jay" + case 243: #line 949 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 242: #line 940 "src/main/jay/grammars/xp.jay" + case 244: #line 950 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 243: #line 941 "src/main/jay/grammars/xp.jay" + case 245: #line 951 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 942 "src/main/jay/grammars/xp.jay" + case 246: #line 952 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 943 "src/main/jay/grammars/xp.jay" + case 247: #line 953 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 944 "src/main/jay/grammars/xp.jay" + case 248: #line 954 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 945 "src/main/jay/grammars/xp.jay" + case 249: #line 955 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 248: #line 946 "src/main/jay/grammars/xp.jay" + case 250: #line 956 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 249: #line 950 "src/main/jay/grammars/xp.jay" + case 251: #line 960 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 951 "src/main/jay/grammars/xp.jay" + case 252: #line 961 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 251: #line 952 "src/main/jay/grammars/xp.jay" + case 253: #line 962 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 252: #line 953 "src/main/jay/grammars/xp.jay" + case 254: #line 963 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 253: #line 954 "src/main/jay/grammars/xp.jay" + case 255: #line 964 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 254: #line 955 "src/main/jay/grammars/xp.jay" + case 256: #line 965 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 956 "src/main/jay/grammars/xp.jay" + case 257: #line 966 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 957 "src/main/jay/grammars/xp.jay" + case 258: #line 967 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 958 "src/main/jay/grammars/xp.jay" + case 259: #line 968 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 959 "src/main/jay/grammars/xp.jay" + case 260: #line 969 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 259: #line 960 "src/main/jay/grammars/xp.jay" + case 261: #line 970 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 260: #line 961 "src/main/jay/grammars/xp.jay" + case 262: #line 971 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 261: #line 965 "src/main/jay/grammars/xp.jay" + case 263: #line 975 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 262: #line 966 "src/main/jay/grammars/xp.jay" + case 264: #line 976 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 263: #line 967 "src/main/jay/grammars/xp.jay" + case 265: #line 977 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 264: #line 968 "src/main/jay/grammars/xp.jay" + case 266: #line 978 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 265: #line 969 "src/main/jay/grammars/xp.jay" + case 267: #line 979 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 266: #line 970 "src/main/jay/grammars/xp.jay" + case 268: #line 980 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 267: #line 974 "src/main/jay/grammars/xp.jay" + case 269: #line 984 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 268: #line 975 "src/main/jay/grammars/xp.jay" + case 270: #line 985 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 269: #line 980 "src/main/jay/grammars/xp.jay" + case 271: #line 990 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 271: #line 985 "src/main/jay/grammars/xp.jay" + case 273: #line 995 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 272: #line 986 "src/main/jay/grammars/xp.jay" + case 274: #line 996 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 273: #line 990 "src/main/jay/grammars/xp.jay" + case 275: #line 1000 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 274: #line 990 "src/main/jay/grammars/xp.jay" + case 276: #line 1000 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 275: #line 993 "src/main/jay/grammars/xp.jay" + case 277: #line 1003 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop], $yyVals[-1+$yyTop])); } break; - case 276: #line 996 "src/main/jay/grammars/xp.jay" + case 278: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop], NULL, $yyVals[-2+$yyTop])); } break; - case 277: #line 996 "src/main/jay/grammars/xp.jay" + case 279: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 278: #line 999 "src/main/jay/grammars/xp.jay" + case 280: #line 1009 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, $yyVals[-1+$yyTop])); } break; - case 279: #line 999 "src/main/jay/grammars/xp.jay" + case 281: #line 1009 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 280: #line 1005 "src/main/jay/grammars/xp.jay" + case 282: #line 1015 "src/main/jay/grammars/xp.jay" { $yyVal= FALSE; } break; - case 281: #line 1006 "src/main/jay/grammars/xp.jay" + case 283: #line 1016 "src/main/jay/grammars/xp.jay" { $yyVal= TRUE; } break; - case 288: #line 1024 "src/main/jay/grammars/xp.jay" + case 290: #line 1034 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 289: #line 1025 "src/main/jay/grammars/xp.jay" + case 291: #line 1035 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 290: #line 1029 "src/main/jay/grammars/xp.jay" + case 292: #line 1039 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 291: #line 1033 "src/main/jay/grammars/xp.jay" + case 293: #line 1043 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 292: #line 1037 "src/main/jay/grammars/xp.jay" + case 294: #line 1047 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 293: #line 1038 "src/main/jay/grammars/xp.jay" + case 295: #line 1048 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 295: #line 1043 "src/main/jay/grammars/xp.jay" + case 297: #line 1053 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 296: #line 1047 "src/main/jay/grammars/xp.jay" + case 298: #line 1057 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 297: #line 1048 "src/main/jay/grammars/xp.jay" + case 299: #line 1058 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 298: #line 1054 "src/main/jay/grammars/xp.jay" + case 300: #line 1064 "src/main/jay/grammars/xp.jay" { $yyVal= 0; } break; - case 299: #line 1055 "src/main/jay/grammars/xp.jay" + case 301: #line 1065 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 300: #line 1059 "src/main/jay/grammars/xp.jay" + case 302: #line 1069 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 301: #line 1060 "src/main/jay/grammars/xp.jay" + case 303: #line 1070 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 302: #line 1064 "src/main/jay/grammars/xp.jay" + case 304: #line 1074 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 303: #line 1065 "src/main/jay/grammars/xp.jay" + case 305: #line 1075 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 304: #line 1066 "src/main/jay/grammars/xp.jay" + case 306: #line 1076 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 305: #line 1067 "src/main/jay/grammars/xp.jay" + case 307: #line 1077 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 306: #line 1068 "src/main/jay/grammars/xp.jay" + case 308: #line 1078 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 307: #line 1069 "src/main/jay/grammars/xp.jay" + case 309: #line 1079 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 308: #line 1070 "src/main/jay/grammars/xp.jay" + case 310: #line 1080 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 309: #line 1071 "src/main/jay/grammars/xp.jay" + case 311: #line 1081 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 2815 "-" +#line 2824 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php index 94d7f6fc0..ceec623a9 100644 --- a/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php @@ -2,6 +2,7 @@ use xp\compiler\syntax\xp\Lexer; use xp\compiler\syntax\xp\Parser; +use xp\compiler\types\TypeName; use xp\compiler\ast\AnnotationNode; use xp\compiler\ast\IntegerNode; use xp\compiler\ast\DecimalNode; @@ -11,6 +12,7 @@ use xp\compiler\ast\BooleanNode; use xp\compiler\ast\ArrayNode; use xp\compiler\ast\MapNode; +use xp\compiler\ast\InstanceCreationNode; /** * TestCase @@ -227,4 +229,32 @@ public function targetAnnotations() { $this->parseMethodWithAnnotations('[@$conn: Inject]') ); } + + #[@test] + public function newinstance() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'action', + 'parameters' => array('default' => new InstanceCreationNode(array( + 'type' => new TypeName('IsPlatform'), + 'parameters' => array(new StringNode('WIN')) + ))) + ))), + $this->parseMethodWithAnnotations('[@action(new IsPlatform("WIN"))]') + ); + } + + #[@test] + public function newinstance_fully_qualified() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'action', + 'parameters' => array('default' => new InstanceCreationNode(array( + 'type' => new TypeName('unittest.actions.IsPlatform'), + 'parameters' => array(new StringNode('WIN')) + ))) + ))), + $this->parseMethodWithAnnotations('[@action(new unittest.actions.IsPlatform("WIN"))]') + ); + } } From d3c7f577ef7c3edac674cbf3e99225f3647f65a2 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 14 Oct 2013 09:23:39 +0200 Subject: [PATCH 02/13] - Support "T::const" and "T::$static" inside annotations [XP Language grammar] # See issue #36 --- src/main/jay/grammars/xp.jay | 8 +- .../compiler/ast/ConstantAccessNode.class.php | 23 + .../xp/compiler/syntax/xp/Parser.class.php | 2826 +++++++++-------- .../tests/syntax/xp/AnnotationTest.class.php | 24 + 4 files changed, 1485 insertions(+), 1396 deletions(-) diff --git a/src/main/jay/grammars/xp.jay b/src/main/jay/grammars/xp.jay index 5e23445e6..ff6945056 100644 --- a/src/main/jay/grammars/xp.jay +++ b/src/main/jay/grammars/xp.jay @@ -482,11 +482,17 @@ annotationmember: annotationvalue: literal | T_NEW typename '(' expressionlist_opt ')' { - $$= new InstanceCreationNode(); + $$= $yyLex->create(new InstanceCreationNode()); $$->type= $2; $$->parameters= $4; $$->body= NULL; } + | qualifiedname T_DOUBLE_COLON T_WORD { + $$= $yyLex->create(new ConstantAccessNode(new TypeName($1), $3)); + } + | qualifiedname T_DOUBLE_COLON T_VARIABLE { + $$= $yyLex->create(new StaticMemberAccessNode(new TypeName($1), $3)); + } ; methodbody: diff --git a/src/main/php/xp/compiler/ast/ConstantAccessNode.class.php b/src/main/php/xp/compiler/ast/ConstantAccessNode.class.php index bc1bdd302..747335e84 100644 --- a/src/main/php/xp/compiler/ast/ConstantAccessNode.class.php +++ b/src/main/php/xp/compiler/ast/ConstantAccessNode.class.php @@ -21,4 +21,27 @@ public function __construct($type= null, $name= '') { $this->type= $type; $this->name= $name; } + + /** + * Returns a hashcode + * + * @return string + */ + public function hashCode() { + return $this->type->compoundName().'::'.$this->name; + } + + /** + * Returns whether another object equals this. + * + * @param lang.Generic cmp + * @return bool + */ + public function equals($cmp) { + return + $cmp instanceof self && + $this->type->equals($cmp->type) && + $this->name === $cmp->name + ; + } } diff --git a/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/src/main/php/xp/compiler/syntax/xp/Parser.class.php index b39ade3b0..8d198a4cb 100644 --- a/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -161,30 +161,30 @@ class Parser extends \text\parser\generic\AbstractParser { 34, 34, 35, 35, 38, 38, 33, 33, 40, 25, 43, 25, 45, 25, 47, 25, 11, 11, 48, 48, 50, 50, 50, 51, 51, 51, 53, 53, 54, 54, - 52, 52, 42, 42, 42, 39, 39, 39, 44, 44, - 56, 56, 37, 37, 37, 57, 57, 41, 41, 46, - 46, 46, 46, 46, 46, 26, 26, 58, 58, 61, - 59, 62, 59, 65, 59, 66, 59, 68, 59, 69, - 59, 70, 59, 72, 59, 73, 59, 74, 59, 75, - 59, 59, 59, 59, 77, 77, 79, 79, 78, 78, - 80, 67, 67, 71, 71, 81, 81, 83, 82, 84, - 82, 63, 63, 64, 85, 64, 76, 76, 86, 86, - 90, 89, 91, 91, 87, 87, 92, 88, 55, 55, - 93, 93, 60, 60, 94, 94, 94, 98, 98, 98, - 98, 100, 31, 31, 101, 31, 102, 31, 103, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 111, 31, 31, 110, 110, 109, 109, 112, 112, - 113, 113, 36, 115, 36, 36, 36, 36, 36, 36, - 114, 114, 97, 97, 116, 116, 118, 118, 117, 117, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 107, 107, 107, 107, 107, 107, 108, 108, - 99, 99, 119, 119, 121, 120, 120, 123, 120, 124, - 120, 122, 122, 10, 10, 10, 32, 32, 32, 12, - 12, 95, 96, 125, 125, 126, 126, 21, 21, 49, - 49, 127, 127, 128, 128, 128, 128, 128, 128, 128, - 128, + 52, 52, 52, 52, 42, 42, 42, 39, 39, 39, + 44, 44, 56, 56, 37, 37, 37, 57, 57, 41, + 41, 46, 46, 46, 46, 46, 46, 26, 26, 58, + 58, 61, 59, 62, 59, 65, 59, 66, 59, 68, + 59, 69, 59, 70, 59, 72, 59, 73, 59, 74, + 59, 75, 59, 59, 59, 59, 77, 77, 79, 79, + 78, 78, 80, 67, 67, 71, 71, 81, 81, 83, + 82, 84, 82, 63, 63, 64, 85, 64, 76, 76, + 86, 86, 90, 89, 91, 91, 87, 87, 92, 88, + 55, 55, 93, 93, 60, 60, 94, 94, 94, 98, + 98, 98, 98, 100, 31, 31, 101, 31, 102, 31, + 103, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 111, 31, 31, 110, 110, 109, 109, + 112, 112, 113, 113, 36, 115, 36, 36, 36, 36, + 36, 36, 114, 114, 97, 97, 116, 116, 118, 118, + 117, 117, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, + 105, 105, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, + 108, 108, 99, 99, 119, 119, 121, 120, 120, 123, + 120, 124, 120, 122, 122, 10, 10, 10, 32, 32, + 32, 12, 12, 95, 96, 125, 125, 126, 126, 21, + 21, 49, 49, 127, 127, 128, 128, 128, 128, 128, + 128, 128, 128, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 5, 6, @@ -195,1280 +195,1306 @@ class Parser extends \text\parser\generic\AbstractParser { 1, 4, 1, 2, 2, 4, 0, 2, 0, 9, 0, 9, 0, 8, 0, 10, 4, 1, 1, 3, 2, 5, 5, 3, 3, 1, 1, 3, 3, 3, - 1, 5, 1, 3, 3, 0, 2, 1, 0, 1, - 1, 3, 3, 3, 4, 1, 2, 0, 2, 1, - 1, 1, 1, 1, 1, 0, 1, 1, 2, 0, - 4, 0, 7, 0, 10, 0, 8, 0, 6, 0, - 8, 0, 8, 0, 3, 0, 3, 0, 4, 0, - 6, 7, 7, 2, 1, 3, 1, 3, 1, 3, - 3, 1, 3, 0, 1, 1, 2, 0, 5, 0, - 4, 1, 3, 0, 0, 3, 2, 1, 1, 2, - 0, 9, 1, 3, 0, 1, 0, 5, 0, 1, - 1, 3, 0, 1, 5, 4, 4, 1, 4, 1, - 1, 0, 3, 2, 0, 4, 0, 5, 0, 6, - 2, 3, 1, 1, 1, 1, 1, 5, 3, 3, - 3, 0, 8, 4, 1, 3, 0, 1, 1, 3, - 1, 2, 1, 0, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 0, 1, 3, 3, + 1, 5, 3, 3, 1, 3, 3, 0, 2, 1, + 0, 1, 1, 3, 3, 3, 4, 1, 2, 0, + 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 2, 0, 4, 0, 7, 0, 10, 0, 8, 0, + 6, 0, 8, 0, 8, 0, 3, 0, 3, 0, + 4, 0, 6, 7, 7, 2, 1, 3, 1, 3, + 1, 3, 3, 1, 3, 0, 1, 1, 2, 0, + 5, 0, 4, 1, 3, 0, 0, 3, 2, 1, + 1, 2, 0, 9, 1, 3, 0, 1, 0, 5, + 0, 1, 1, 3, 0, 1, 5, 4, 4, 1, + 4, 1, 1, 0, 3, 2, 0, 4, 0, 5, + 0, 6, 2, 3, 1, 1, 1, 1, 1, 5, + 3, 3, 3, 0, 8, 4, 1, 3, 0, 1, + 1, 3, 1, 2, 1, 0, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 1, 1, 2, 0, 4, 2, 0, 6, 0, - 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 3, 4, 1, 3, 1, 3, 1, 3, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, + 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 4, 4, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 1, 1, 2, 0, 4, 2, 0, + 6, 0, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 3, 4, 1, 3, 1, 3, 1, + 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 284, 0, 0, 286, 285, 0, 15, 0, 304, - 306, 305, 308, 310, 309, 311, 307, 1, 0, 68, - 0, 302, 8, 0, 0, 4, 0, 0, 0, 0, - 0, 69, 20, 24, 22, 303, 18, 19, 0, 0, + 0, 286, 0, 0, 288, 287, 0, 15, 0, 306, + 308, 307, 310, 312, 311, 313, 309, 1, 0, 68, + 0, 304, 8, 0, 0, 4, 0, 0, 0, 0, + 0, 69, 20, 24, 22, 305, 18, 19, 0, 0, 0, 14, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 9, 0, 0, 0, 70, 67, 0, 0, 0, 0, 11, 12, 10, - 74, 75, 214, 0, 0, 220, 216, 219, 217, 218, - 0, 81, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 72, 0, 73, 0, 0, - 287, 0, 288, 289, 0, 294, 27, 0, 0, 0, - 31, 35, 0, 223, 0, 0, 0, 0, 0, 0, - 185, 0, 0, 0, 182, 0, 0, 0, 0, 0, - 221, 0, 222, 193, 194, 195, 196, 197, 0, 0, - 225, 0, 213, 79, 80, 0, 78, 0, 0, 0, - 0, 291, 29, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 0, 189, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, + 74, 75, 216, 0, 0, 222, 218, 221, 219, 220, + 0, 0, 81, 0, 0, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 73, + 0, 0, 289, 0, 290, 291, 0, 296, 27, 0, + 0, 0, 31, 35, 0, 225, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 0, 184, 0, 0, 0, + 0, 0, 223, 0, 224, 195, 196, 197, 198, 199, + 0, 0, 227, 0, 0, 79, 80, 83, 84, 0, + 78, 0, 0, 0, 0, 293, 29, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 191, 0, 0, 0, 0, 189, 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, 269, 270, 0, 275, 283, 282, 184, - 272, 0, 0, 0, 215, 0, 0, 297, 0, 292, - 295, 0, 299, 0, 0, 25, 0, 34, 36, 37, - 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, - 0, 0, 183, 0, 211, 0, 0, 0, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 271, 272, 0, + 277, 285, 284, 186, 274, 0, 0, 0, 217, 0, + 0, 299, 0, 294, 297, 0, 301, 0, 0, 25, + 0, 34, 36, 37, 0, 0, 0, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 0, 213, 0, + 0, 0, 211, 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, 0, 201, 0, 0, 192, 0, - 274, 280, 0, 172, 0, 0, 228, 226, 82, 293, - 21, 0, 0, 0, 0, 0, 0, 0, 23, 0, - 35, 0, 186, 0, 0, 0, 204, 212, 0, 0, - 0, 181, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 97, 0, 0, 278, 110, 0, 128, 114, 118, - 120, 116, 124, 126, 112, 122, 0, 0, 0, 0, - 108, 0, 63, 0, 0, 0, 0, 0, 0, 35, - 45, 0, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 210, 0, 188, 0, 276, 0, 0, 0, 130, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 134, 109, 0, 0, 61, 59, 100, 101, - 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, - 0, 0, 176, 177, 190, 0, 202, 0, 281, 0, - 0, 0, 0, 0, 135, 0, 0, 0, 0, 152, - 0, 0, 125, 127, 0, 0, 0, 0, 139, 0, - 0, 91, 0, 0, 0, 0, 0, 65, 0, 0, - 48, 0, 0, 53, 33, 0, 175, 206, 0, 179, - 279, 111, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 55, 0, 49, 54, 47, 203, 0, 0, 136, 0, - 0, 0, 153, 0, 0, 0, 0, 0, 0, 140, - 0, 0, 0, 0, 92, 94, 93, 0, 0, 0, - 0, 0, 161, 167, 131, 0, 158, 159, 0, 0, - 119, 0, 143, 0, 0, 0, 0, 95, 99, 0, - 83, 0, 64, 0, 0, 0, 56, 0, 0, 157, - 166, 160, 132, 0, 0, 0, 155, 113, 148, 150, - 0, 0, 146, 133, 0, 0, 62, 60, 0, 0, - 0, 0, 121, 117, 0, 0, 0, 123, 147, 85, - 84, 66, 163, 0, 0, 0, 156, 0, 0, 0, - 0, 168, 115, 0, 151, 164, 0, 149, 0, 0, - 162, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 0, 0, 194, 0, 276, 282, 0, 174, 0, 0, + 230, 228, 82, 295, 21, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 35, 0, 188, 0, 0, 0, + 206, 214, 0, 0, 0, 183, 180, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 0, 0, 280, 112, + 0, 130, 116, 120, 122, 118, 126, 128, 114, 124, + 0, 0, 0, 0, 110, 0, 63, 0, 0, 0, + 0, 0, 0, 35, 45, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 212, 0, 190, 0, 278, + 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 136, 111, 0, 0, + 61, 59, 102, 103, 104, 105, 106, 107, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 179, 192, 0, + 204, 0, 283, 0, 0, 0, 0, 0, 137, 0, + 0, 0, 0, 154, 0, 0, 127, 129, 0, 0, + 0, 0, 141, 215, 0, 0, 93, 0, 0, 0, + 0, 0, 65, 0, 0, 48, 0, 0, 53, 33, + 0, 177, 208, 0, 181, 281, 113, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 55, 0, 49, 54, 47, + 205, 0, 0, 138, 0, 0, 0, 155, 0, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 0, 94, + 96, 95, 0, 0, 0, 0, 0, 163, 169, 133, + 0, 160, 161, 0, 0, 121, 0, 145, 0, 0, + 0, 0, 97, 101, 0, 85, 0, 64, 0, 0, + 0, 56, 0, 0, 159, 168, 162, 134, 0, 0, + 0, 157, 115, 150, 152, 0, 0, 148, 135, 0, + 0, 62, 60, 0, 0, 0, 0, 123, 119, 0, + 0, 0, 125, 149, 87, 86, 66, 165, 0, 0, + 0, 158, 0, 0, 0, 0, 170, 117, 0, 153, + 166, 0, 151, 0, 0, 164, ); protected static $yyDgoto= array(2, - 3, 6, 28, 138, 4, 7, 8, 17, 53, 18, - 237, 111, 61, 98, 119, 166, 63, 242, 62, 100, - 121, 371, 238, 239, 240, 358, 243, 244, 317, 318, - 359, 298, 418, 369, 463, 140, 452, 464, 496, 457, - 524, 553, 456, 453, 406, 415, 499, 41, 30, 42, - 58, 93, 94, 95, 141, 454, 455, 360, 361, 274, - 389, 399, 441, 568, 393, 396, 483, 394, 395, 400, - 571, 397, 398, 392, 432, 535, 434, 448, 435, 449, - 572, 573, 586, 587, 585, 536, 560, 537, 538, 558, - 594, 559, 142, 247, 113, 114, 143, 334, 220, 180, - 175, 260, 251, 144, 145, 146, 147, 148, 257, 381, - 469, 258, 259, 149, 102, 150, 151, 308, 221, 222, - 300, 223, 388, 344, 115, 116, 31, 32, + 3, 6, 28, 140, 4, 7, 8, 17, 53, 18, + 241, 113, 61, 99, 121, 170, 63, 246, 62, 101, + 123, 375, 242, 243, 244, 362, 247, 248, 321, 322, + 363, 302, 422, 373, 468, 142, 457, 469, 501, 462, + 529, 558, 461, 458, 410, 419, 504, 41, 30, 42, + 58, 94, 95, 96, 143, 459, 460, 364, 365, 278, + 393, 403, 445, 573, 397, 400, 488, 398, 399, 404, + 576, 401, 402, 396, 436, 540, 438, 452, 439, 453, + 577, 578, 591, 592, 590, 541, 565, 542, 543, 563, + 599, 564, 144, 251, 115, 116, 145, 338, 224, 184, + 179, 264, 255, 146, 147, 148, 149, 150, 261, 385, + 474, 262, 263, 151, 103, 152, 153, 312, 225, 226, + 304, 227, 392, 348, 117, 118, 31, 32, ); - protected static $yySindex = array( -294, - 0, 0, -264, 103, -215, 307, -264, 0, 10, 21, - 69, 0, -222, -222, 0, 0, 75, 0, 157, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 940, 0, 0, 103, 103, 0, -42, 121, -19, -161, - 52, 0, 0, 0, 0, 0, 0, 0, -19, -19, - -19, 0, 148, 0, 165, 182, 0, 240, 157, 940, - 103, 103, 103, 225, 0, 273, 281, 0, 103, 103, - 450, 0, 0, 258, 82, 115, 82, 0, 0, 0, - 0, 0, 0, 103, 299, 0, 0, 0, 0, 0, - 379, 0, 392, 259, 0, 114, 103, 131, 103, 323, - 131, 4508, 408, 572, 572, 0, -156, 0, 147, 407, - 0, 414, 0, 0, 155, 0, 0, 103, 390, 479, - 0, 0, 420, 0, 4710, 4710, 4710, 4710, 4710, 4710, - 0, 4710, 319, 468, 0, 4710, 423, 140, 3082, -44, - 0, 507, 0, 0, 0, 0, 0, 0, 460, 510, - 0, 4710, 0, 0, 0, 299, 0, 103, 256, 463, - 114, 0, 0, 0, 103, 898, 303, 341, -116, -116, - 104, -116, -116, -116, 256, 0, 4710, 0, 4710, -44, - 2063, 35, 0, 4710, 4710, 4710, 4710, 4710, 4710, 4710, - 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4517, - 4701, 4323, 4710, 4447, 4710, 4710, 4710, 4710, 4710, 4710, - 4710, 103, 4710, 0, 0, 256, 0, 0, 0, 0, - 0, -44, -22, 4710, 0, 160, 528, 0, 280, 0, - 0, 1551, 0, 451, 315, 0, 48, 0, 0, 0, - 0, 453, 29, 0, 543, 414, -44, 462, 470, 3082, - 4710, 3082, 0, -44, 0, -58, 329, 551, 0, -177, - 3301, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, - 3328, 3328, 3082, 557, 3199, 60, 296, 4710, 372, 4710, - 372, 4710, 4710, 87, 87, 4710, 4710, 87, 87, 99, - 99, -111, -111, -111, 104, 0, -116, 146, 0, 4710, - 0, 0, 569, 0, 561, 468, 0, 0, 0, 0, - 0, 650, 362, 397, 364, -31, 502, 586, 0, 303, - 0, 4710, 0, 4710, 90, 587, 0, 0, 4614, 35, - 589, 0, 0, -44, 4710, 3328, 3328, 87, 87, 87, - 87, 0, 545, 4710, 0, 0, 37, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 600, 521, 2191, 650, - 0, 588, 0, 607, 608, 27, 560, 593, 539, 0, - 0, 4710, 0, 598, 623, 547, 556, -44, 650, 3082, - 563, 0, 4710, 0, -18, 0, 629, 4710, 4710, 0, - 346, 4710, 651, 652, 527, 654, 641, 645, 678, 681, - 382, 0, 0, 0, 337, 208, 0, 0, 0, 0, - 0, 0, 0, 0, 685, 208, 4710, 667, 472, 1781, - 2231, 502, 0, 0, 0, 615, 0, 702, 0, 710, - 693, 650, 692, 403, 0, 2448, 4710, 4710, 650, 0, - 394, 431, 0, 0, 4710, 4710, 699, 415, 0, 704, - 719, 0, 737, 739, -150, 239, 239, 0, 688, 3082, - 0, -6, -108, 0, 0, 502, 0, 0, -44, 0, - 0, 0, 659, 4710, 346, 662, 0, 735, 2487, 670, - 757, 762, 437, 2616, 2643, 4710, 382, 684, 0, 548, - 488, 208, 474, 593, 208, 774, 739, 780, 208, 0, - 0, 650, 0, 0, 0, 0, 135, 3082, 0, 650, - 4710, 527, 0, 4710, 482, 4710, 527, 701, 3082, 0, - 650, 593, 103, -33, 0, 0, 0, 739, 488, 488, - 784, 706, 0, 0, 0, 135, 0, 0, 714, 768, - 0, 2670, 0, 2783, 458, 112, 716, 0, 0, 4710, - 0, 650, 0, -33, -33, 488, 0, 802, 720, 0, - 0, 0, 0, 4710, 791, 527, 0, 0, 0, 0, - 726, 112, 0, 0, 2916, 728, 0, 0, -33, 103, - 650, 814, 0, 0, 527, 4710, 798, 0, 0, 0, - 0, 0, 0, -112, 732, 527, 0, 3055, 650, 103, - 817, 0, 0, 650, 0, 0, 736, 0, 650, 738, - 0, + protected static $yySindex = array( -255, + 0, 0, -252, -216, -145, 448, -252, 0, 15, 29, + -3, 0, -188, -188, 0, 0, 105, 0, 109, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 900, 0, 0, -216, -216, 0, -38, 135, -19, -132, + 60, 0, 0, 0, 0, 0, 0, 0, -19, -19, + -19, 0, 139, 0, 426, 147, 0, 187, 109, 900, + -216, -216, -216, 177, 0, 227, 247, 0, -216, -216, + 717, 0, 0, 273, 53, 79, 53, 0, 0, 0, + 0, 0, 0, -216, 265, 0, 0, 0, 0, 0, + 288, 7, 0, 329, 461, 0, 45, -216, 82, -216, + 275, 82, 4570, 369, 750, 750, -171, 0, -103, 0, + 103, 366, 0, 364, 0, 0, 284, 0, 0, -216, + 341, 442, 0, 0, 354, 0, 4844, 4844, 4844, 4844, + 4844, 4844, 0, 4844, 361, 446, 0, 4844, 398, 122, + 3070, -36, 0, 502, 0, 0, 0, 0, 0, 0, + 462, 517, 0, 4844, 15, 0, 0, 0, 0, 507, + 0, -216, -77, 470, 45, 0, 0, 0, -216, 597, + 309, 433, -101, -101, -15, -101, -101, -101, -77, 0, + 4844, 0, 4844, -36, 2027, -64, 0, 4844, 4844, 4844, + 4844, 4844, 4844, 4844, 4844, 4844, 4844, 4844, 4844, 4844, + 4844, 4844, 4844, 4699, 4806, 4442, 4844, 4455, 4844, 4844, + 4844, 4844, 4844, 4844, 4844, -216, 4844, 0, 0, -77, + 0, 0, 0, 0, 0, -36, -27, 4844, 0, 59, + 536, 0, 141, 0, 0, 1088, 0, 468, 326, 0, + 76, 0, 0, 0, 0, 482, 281, 0, 553, 364, + -36, 485, 487, 3070, 4844, 3070, 0, -36, 0, -63, + 356, 567, 0, -161, 3259, 3312, 3312, 3312, 3312, 3312, + 3312, 3312, 3312, 3312, 3312, 3312, 3070, 559, 80, 313, + 3453, 4844, 87, 4844, 87, 4844, 4844, 40, 40, 4844, + 4844, 40, 40, -21, -21, -108, -108, -108, -15, 0, + -101, -1, 0, 4844, 0, 0, 579, 0, 564, 446, + 0, 0, 0, 0, 0, 527, 363, 463, 367, -17, + 505, 593, 0, 309, 0, 4844, 0, 4844, 18, 595, + 0, 0, 4599, -64, 603, 0, 0, -36, 4844, 3312, + 3312, 40, 40, 40, 40, 0, 565, 4844, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 605, 521, 2150, 527, 0, 604, 0, 624, 629, 409, + 581, 609, 550, 0, 0, 4844, 0, 230, 637, 554, + 560, -36, 527, 3070, 561, 0, 4844, 0, 26, 0, + 643, 4844, 4844, 0, 350, 4844, 653, 658, 483, 661, + 646, 652, 662, 677, 378, 0, 0, 0, 813, -58, + 0, 0, 0, 0, 0, 0, 0, 0, 680, -58, + 4844, 664, 479, 1256, 2189, 505, 0, 0, 0, 596, + 0, 697, 0, 699, 682, 527, 681, 486, 0, 2412, + 4844, 4844, 527, 0, 397, 420, 0, 0, 4844, 4844, + 701, 490, 0, 0, 704, 720, 0, 726, 724, 145, + -57, -57, 0, 685, 3070, 0, 78, -83, 0, 0, + 505, 0, 0, -36, 0, 0, 0, 660, 4844, 350, + 671, 0, 736, 2448, 674, 764, 763, 445, 2574, 2601, + 4844, 378, 687, 0, 551, 491, -58, 475, 609, -58, + 773, 724, 775, -58, 0, 0, 527, 0, 0, 0, + 0, 96, 3070, 0, 527, 4844, 483, 0, 4844, 477, + 4844, 483, 698, 3070, 0, 527, 609, -216, 39, 0, + 0, 0, 724, 491, 491, 779, 702, 0, 0, 0, + 96, 0, 0, 703, 772, 0, 2628, 0, 2744, 451, + 121, 709, 0, 0, 4844, 0, 527, 0, 39, 39, + 491, 0, 799, 719, 0, 0, 0, 0, 4844, 788, + 483, 0, 0, 0, 0, 725, 121, 0, 0, 2874, + 727, 0, 0, 39, -216, 527, 815, 0, 0, 483, + 4844, 796, 0, 0, 0, 0, 0, 0, -119, 732, + 483, 0, 3016, 527, -216, 818, 0, 0, 527, 0, + 0, 737, 0, 527, 741, 0, ); - protected static $yyRindex= array( 756, - 0, 0, 781, 0, 0, 237, 840, 0, 879, 0, + protected static $yyRindex= array( 1126, + 0, 0, 1495, 0, 0, 340, 1799, 0, 712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -43, 129, 0, 0, 83, 0, 747, + 0, 0, 0, -24, 427, 0, 0, 124, 0, 760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 906, -101, 741, -101, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, - 742, 769, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 263, 0, 0, 0, 0, 0, 0, 0, 41, + 0, 0, 0, 739, -104, 738, -104, 0, 0, 0, + 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 748, 0, + 0, 748, 781, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 360, 0, 0, 0, 0, 0, 0, + 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1461, 1595, 0, 0, 0, 0, + 478, 1299, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 106, 0, 831, -32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, + 751, 865, 1727, 1764, 2836, 1854, 1893, 1930, 0, 0, + 0, 0, 0, 1299, 0, 618, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1375, 1606, 0, 0, 0, 0, 514, 1333, - 0, 22, 0, 0, 0, 0, 0, 0, 0, -79, - 0, 820, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 164, 746, 686, 1546, 1763, - 2746, 1806, 1935, 1995, 0, 0, 0, 0, 0, 1333, - 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1341, 0, 541, 0, 10, + 0, 0, 0, 0, 0, 137, 0, 1553, 0, 0, + 0, 0, 0, 0, 351, 0, 766, 0, 803, 0, + 1299, 804, 805, 99, 831, 101, 0, 1299, 0, 0, + 0, 641, 0, 0, 942, -12, 404, 546, 668, 877, + 975, 1134, 1294, 1432, 1469, 1605, 499, 0, 4401, 3757, + 4241, 0, 4270, 0, 4359, 0, 0, 3736, 3773, 0, + 0, 3832, 3858, 3645, 3699, 3140, 3523, 3560, 3043, 0, + 1984, 1202, 0, 808, 0, 0, 904, 0, 0, 0, + 0, 0, 0, 0, 0, 780, 0, -40, 0, 0, + 89, 0, 0, 0, 0, 831, 0, 786, 0, 0, + 0, 0, 0, 0, 1043, 0, 0, 1299, 0, 1636, + 1638, 3943, 3972, 4032, 4159, 0, 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1508, 0, 942, 0, 47, 0, 0, 0, 0, - 0, 164, 0, 1853, 0, 0, 0, 0, 0, 0, - 91, 0, 750, 0, 800, 0, 1333, 803, 804, 50, - 820, 244, 0, 1333, 0, 0, 0, 643, 0, 0, - -9, -7, 190, 320, 434, 562, 661, 759, 761, 1634, - 1636, 1845, 456, 0, 4313, 4284, 4198, 0, 4214, 0, - 4268, 0, 0, 3712, 3780, 0, 0, 3808, 3882, 3385, - 3630, 3172, 3481, 3586, 2873, 0, 2036, 1307, 0, 805, - 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, - 0, 777, 0, 144, 0, 0, 107, 0, 0, 0, - 0, 820, 0, 778, 0, 0, 0, 0, 0, 0, - 1109, 0, 0, 1333, 0, 2073, 2142, 4012, 4028, 4052, - 4110, 0, 0, 820, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, - 0, 0, 0, 0, 782, 0, 0, 845, 0, 0, - 0, 0, 0, -86, 0, 0, 0, 1333, 777, 783, - 0, 0, 820, 0, 261, 0, 0, 820, 847, 0, + 0, 0, 0, -86, 0, 0, 0, 0, 791, 0, + 0, 856, 0, 0, 0, 0, 0, -114, 0, 0, + 0, 1299, 780, 792, 0, 0, 831, 0, 3113, 0, + 0, 831, 857, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 868, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, - 0, 1210, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 777, 425, 0, 0, 0, 866, 0, 777, 0, + 0, 0, 0, 137, 0, 1163, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 780, 497, 0, 0, 0, + 861, 0, 780, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, + 891, 891, 0, 0, 51, 0, 0, 0, 0, 0, + 89, 0, 0, 1299, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 47, 0, 0, 149, 0, + 0, 893, 0, 878, 0, 0, 780, 0, 0, 0, + 0, 0, 503, 0, 780, 861, 0, 0, 0, 0, + 0, 0, 0, 515, 0, 780, 149, 0, 0, 0, + 0, 0, 896, 47, 47, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 814, 0, 0, 0, 0, 0, 780, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 831, 0, + 0, 0, 0, 0, 0, 0, 819, 0, 0, 0, + 0, 0, 0, 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 886, 0, 887, 887, 0, 0, 723, - 0, 0, 0, 0, 0, 107, 0, 0, 1333, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 143, 0, 0, 892, 0, 868, 0, - 0, 777, 0, 0, 0, 0, 0, 429, 0, 777, - 866, 0, 0, 0, 0, 0, 0, 0, 433, 0, - 777, 143, 0, 0, 0, 0, 0, 894, 74, 74, - 0, 0, 0, 0, 0, 271, 0, 0, 0, 0, - 0, 0, 0, 0, 396, 827, 0, 0, 0, 0, - 0, 777, 0, 0, 0, 74, 0, 0, 0, 0, - 0, 0, 0, 820, 0, 0, 0, 0, 0, 0, - 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, - 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, - 0, 0, 0, -38, 0, 0, 0, 0, 777, 0, - 0, + 0, 0, 0, -84, 0, 0, 0, 0, -84, 0, + 0, 0, 0, 780, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 938, 496, 515, 62, - 949, -56, 0, 881, 855, -151, 0, 0, 0, 0, - -117, -284, 0, 0, 0, 1816, 0, 639, 0, 0, - 66, 386, -165, 0, 0, -50, -327, 497, 504, 0, - -371, -128, 0, 467, 0, 0, 0, 0, 902, 912, - 0, 413, 0, 867, -141, -268, 763, 0, 311, -163, - 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 500, 491, - 0, 409, 0, 0, 0, 0, 0, 444, 446, 0, - 0, 0, 0, 0, 809, 810, 663, 0, -172, 0, + 0, 0, 0, -4, 0, 0, 931, 552, 632, 315, + 934, -60, 0, 866, 850, -90, 0, 0, 0, 0, + -116, -112, 0, 0, 0, 1973, 0, 630, 0, 0, + 57, 524, -200, 0, 0, -56, -383, 500, 493, 0, + -226, -242, 0, 449, 0, 0, 0, 0, 911, 914, + 0, 474, 0, 867, -148, -30, 754, 0, 66, -183, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 495, 492, + 0, 408, 0, 0, 0, 0, 0, 447, 452, 0, + 0, 0, 0, 0, 826, 827, 663, 0, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 657, 0, 0, 0, 788, 0, 772, 0, - 0, 0, 0, 0, 0, 834, 0, 975, + 0, 0, 670, 0, 0, 0, 757, 0, 768, 0, + 0, 0, 0, 0, 0, 842, 0, 977, ); protected static $yyTable = array(11, - 163, 219, 16, 50, 75, 76, 77, 253, 1, 213, - 227, 600, 232, 224, 213, 13, 503, 302, 210, 199, - 92, 26, 52, 208, 206, 551, 207, 103, 209, 47, - 48, 199, 160, 200, 199, 57, 200, 12, 39, 5, - 117, 202, 120, 204, 12, 224, 217, 233, 199, 199, - 200, 200, 501, 92, 92, 34, 74, 74, 74, 160, - 304, 120, 170, 413, 81, 82, 35, 13, 411, 409, - 14, 410, 320, 412, 323, 198, 391, 15, 107, 74, - 170, 327, 331, 199, 15, 200, 106, 321, 459, 552, - 227, 74, 74, 229, 74, 59, 210, 199, 55, 298, - 54, 208, 206, 156, 207, 197, 209, 213, 120, 326, - 65, 54, 54, 74, 170, 199, 502, 200, 245, 202, - 39, 204, 332, 210, 10, 110, 71, 36, 208, 206, - 46, 207, 98, 209, 44, 210, 343, 467, 110, 227, - 208, 16, 229, 91, 60, 209, 170, 124, 16, 44, - 32, 462, 414, 228, 74, 296, 74, 554, 555, 390, - 74, 384, 333, 298, 525, 32, 51, 139, 17, 374, - 74, 227, 17, 300, 229, 71, 109, 74, 56, 493, - 375, 505, 376, 57, 579, 213, 57, 497, 497, 494, - 169, 170, 171, 172, 173, 174, 98, 176, 161, 300, - 212, 181, 387, 17, 110, 425, 68, 74, 342, 26, - 34, 74, 213, 44, 216, 44, 162, 139, 420, 216, - 40, 17, 69, 550, 213, 431, 528, 601, 365, 213, - 231, 32, 74, 231, 17, 57, 160, 12, 541, 70, - 12, 428, 250, 545, 252, 300, 430, 231, 231, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 275, 276, 277, 279, 281, 284, 285, 288, - 289, 290, 291, 292, 293, 294, 295, 15, 297, 71, - 15, 328, 231, 78, 303, 214, 215, 230, 366, 273, - 214, 215, 584, 212, 9, 478, 506, 298, 110, 108, - 367, 198, 107, 165, 198, 165, 296, 314, 368, 211, - 165, 597, 216, 165, 231, 165, 139, 96, 198, 198, - 10, 198, 603, 198, 296, 74, 107, 107, 527, 110, - 98, 79, 210, 10, 106, 106, 230, 208, 206, 80, - 207, 16, 209, 336, 16, 337, 110, 338, 339, 305, - 306, 340, 341, 198, 450, 202, 548, 204, 178, 104, - 232, 165, 9, 232, 34, 273, 16, 49, 230, 540, - 160, 212, 310, 9, 255, 218, 177, 232, 232, 315, - 178, 205, 203, 214, 215, 198, 34, 139, 10, 139, - 216, 97, 200, 201, 380, 165, 165, 19, 212, 10, - 385, 74, 211, 17, 199, 549, 200, 200, 210, 139, - 212, 74, 232, 208, 206, 212, 207, 216, 209, 305, - 306, 213, 582, 300, 99, 577, 578, 83, 154, 216, - 154, 202, 106, 204, 216, 154, 363, 421, 154, 105, - 154, 118, 34, 476, 232, 122, 475, 152, 139, 300, - 592, 74, 74, 139, 273, 488, 158, 436, 487, 205, - 203, 214, 215, 17, 159, 137, 120, 9, 137, 138, - 200, 201, 138, 141, 233, 17, 141, 233, 533, 534, - 211, 112, 460, 17, 569, 570, 154, 74, 214, 215, - 74, 233, 233, 10, 74, 300, 174, 213, 9, 174, - 214, 215, 139, 479, 160, 214, 215, 211, 37, 38, - 484, 485, 164, 174, 174, 9, 154, 155, 74, 211, - 154, 154, 165, 593, 10, 179, 233, 43, 44, 45, - 165, 165, 165, 165, 165, 165, 300, 300, 300, 508, - 83, 10, 167, 606, 229, 182, 112, 451, 174, 183, - 224, 519, 225, 226, 171, 230, 165, 171, 233, 127, - 246, 137, 241, 64, 66, 67, 136, 256, 309, 125, - 495, 126, 171, 312, 313, 74, 139, 319, 451, 542, - 174, 544, 322, 165, 324, 329, 20, 21, 22, 23, - 24, 25, 325, 26, 330, 74, 153, 86, 87, 88, - 89, 90, 234, 231, 231, 234, 171, 212, 345, 27, - 165, 165, 165, 165, 335, 575, 165, 83, 177, 234, - 234, 362, 316, 364, 370, 372, 216, 378, 383, 139, - 165, 165, 165, 165, 301, 165, 165, 386, 171, 401, - 165, 165, 165, 165, 165, 402, 407, 408, 405, 439, - 416, 598, 128, 417, 234, 154, 154, 154, 154, 154, - 154, 419, 83, 422, 198, 198, 198, 198, 198, 429, - 404, 423, 165, 165, 198, 198, 198, 198, 198, 198, - 424, 154, 127, 212, 137, 433, 234, 427, 19, 136, - 437, 438, 125, 442, 126, 205, 203, 214, 215, 443, - 165, 235, 216, 444, 235, 440, 200, 201, 154, 85, - 86, 87, 88, 89, 90, 256, 211, 445, 235, 235, - 446, 447, 213, 213, 458, 461, 213, 213, 213, 213, - 213, 462, 213, 232, 232, 154, 154, 154, 154, 468, - 83, 154, 470, 213, 213, 213, 213, 213, 213, 91, - 471, 472, 474, 235, 481, 154, 154, 154, 154, 486, - 154, 154, 489, 58, 490, 154, 58, 154, 154, 154, - 482, 205, 203, 214, 215, 128, 213, 491, 213, 213, - 500, 58, 492, 507, 510, 235, 168, 86, 87, 88, - 89, 90, 211, 511, 513, 84, 514, 154, 154, 237, - 516, 236, 237, 301, 236, 515, 521, 522, 523, 213, - 213, 213, 10, 526, 529, 58, 237, 237, 236, 236, - 530, 543, 440, 546, 556, 154, 564, 440, 567, 301, - 557, 153, 86, 87, 88, 89, 90, 300, 563, 132, - 574, 580, 581, 301, 301, 301, 2, 233, 233, 583, - 588, 237, 591, 236, 596, 599, 602, 607, 609, 213, - 169, 169, 611, 30, 28, 207, 135, 346, 347, 348, - 41, 5, 131, 173, 40, 301, 440, 20, 21, 22, - 234, 24, 25, 237, 26, 236, 349, 350, 351, 352, - 287, 353, 354, 288, 289, 440, 355, 173, 356, 208, - 27, 106, 169, 57, 51, 173, 440, 205, 89, 168, - 86, 87, 88, 89, 90, 17, 17, 84, 17, 17, - 17, 17, 17, 17, 169, 17, 90, 86, 129, 130, - 6, 235, 88, 142, 87, 10, 17, 17, 17, 17, - 17, 17, 290, 290, 33, 290, 290, 290, 290, 290, - 290, 144, 290, 145, 29, 123, 357, 101, 373, 504, - 498, 73, 132, 290, 290, 531, 290, 290, 290, 17, - 72, 17, 17, 157, 509, 234, 234, 520, 299, 561, - 589, 562, 173, 248, 249, 173, 382, 377, 19, 135, - 346, 347, 348, 301, 231, 131, 290, 213, 290, 290, - 173, 17, 17, 17, 17, 46, 300, 0, 0, 349, - 350, 351, 352, 307, 353, 354, 213, 0, 0, 355, - 0, 356, 236, 0, 0, 0, 0, 0, 290, 290, - 290, 290, 300, 0, 173, 2, 2, 2, 2, 2, - 2, 0, 2, 0, 0, 0, 300, 300, 300, 0, - 0, 129, 130, 0, 0, 2, 2, 2, 0, 2, - 5, 5, 5, 5, 5, 5, 173, 5, 0, 0, - 0, 0, 0, 0, 235, 235, 0, 0, 300, 357, - 5, 5, 5, 5, 0, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 0, 17, 213, 213, 0, 213, - 213, 213, 213, 213, 213, 213, 213, 277, 277, 0, - 0, 277, 277, 277, 277, 277, 277, 277, 0, 6, - 6, 6, 6, 6, 6, 0, 6, 0, 277, 277, - 277, 277, 277, 277, 0, 17, 0, 0, 17, 6, - 6, 6, 6, 0, 0, 180, 180, 0, 0, 180, - 180, 180, 180, 180, 180, 180, 0, 0, 0, 0, - 0, 277, 290, 277, 277, 290, 180, 180, 180, 180, - 180, 180, 237, 237, 236, 236, 0, 20, 21, 22, - 234, 24, 25, 0, 26, 0, 0, 0, 17, 17, - 17, 0, 0, 0, 277, 277, 277, 0, 17, 180, - 27, 180, 180, 0, 0, 0, 0, 0, 17, 17, - 17, 0, 0, 0, 0, 290, 290, 290, 17, 20, - 21, 22, 23, 24, 25, 290, 26, 0, 0, 0, - 0, 235, 180, 180, 180, 290, 290, 290, 0, 0, - 0, 0, 27, 0, 0, 290, 32, 32, 0, 0, - 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 0, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, - 17, 0, 17, 17, 17, 17, 17, 17, 0, 17, - 32, 0, 32, 32, 0, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 0, 0, 290, 290, 0, 290, - 290, 290, 290, 290, 290, 0, 290, 0, 0, 0, - 0, 0, 0, 32, 32, 32, 0, 0, 0, 0, - 0, 0, 0, 96, 96, 0, 0, 96, 96, 96, - 96, 96, 0, 96, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 96, 96, 96, 96, 271, - 271, 0, 0, 271, 271, 271, 271, 271, 0, 271, - 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, - 271, 271, 271, 271, 271, 271, 0, 0, 0, 96, - 96, 277, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 213, 0, 0, 0, 213, 213, 213, 213, - 180, 213, 0, 0, 0, 271, 271, 0, 0, 0, - 96, 96, 96, 0, 213, 213, 213, 213, 0, 180, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 271, 271, 271, 0, - 0, 0, 0, 0, 0, 213, 0, 213, 213, 0, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 0, - 0, 277, 277, 0, 277, 277, 277, 277, 277, 277, - 277, 277, 0, 0, 0, 0, 0, 0, 213, 0, - 213, 0, 0, 0, 0, 0, 0, 0, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 0, 0, 180, - 180, 32, 180, 180, 180, 180, 180, 180, 180, 180, + 75, 76, 77, 167, 605, 231, 215, 50, 215, 223, + 39, 215, 306, 112, 93, 214, 257, 217, 26, 17, + 212, 16, 52, 104, 217, 213, 112, 164, 202, 47, + 48, 202, 112, 112, 13, 57, 464, 119, 109, 122, + 108, 508, 395, 9, 308, 202, 202, 1, 93, 93, + 17, 5, 237, 229, 221, 36, 74, 74, 74, 122, + 34, 346, 214, 203, 81, 82, 92, 212, 210, 10, + 211, 12, 213, 164, 35, 126, 214, 236, 172, 74, + 202, 212, 210, 327, 211, 206, 213, 208, 158, 164, + 331, 58, 74, 74, 58, 74, 172, 556, 335, 300, + 92, 92, 229, 59, 217, 100, 330, 111, 122, 58, + 217, 15, 202, 530, 12, 74, 214, 203, 249, 202, + 347, 212, 210, 214, 211, 394, 213, 55, 212, 210, + 172, 211, 32, 213, 229, 112, 506, 13, 336, 206, + 14, 208, 231, 58, 232, 302, 206, 32, 208, 201, + 39, 217, 60, 10, 15, 300, 160, 232, 74, 141, + 74, 557, 172, 300, 74, 217, 112, 71, 159, 100, + 388, 302, 40, 202, 74, 16, 467, 379, 337, 380, + 51, 74, 9, 173, 174, 175, 176, 177, 178, 57, + 180, 231, 57, 232, 185, 9, 91, 68, 226, 391, + 507, 9, 9, 216, 70, 217, 26, 56, 10, 435, + 141, 74, 217, 32, 429, 74, 71, 302, 16, 17, + 606, 10, 220, 231, 303, 232, 71, 10, 10, 220, + 226, 164, 12, 314, 378, 78, 74, 254, 432, 256, + 12, 57, 369, 434, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 279, 280, 281, + 283, 285, 288, 289, 292, 293, 294, 295, 296, 297, + 298, 299, 15, 301, 500, 259, 332, 309, 310, 17, + 15, 456, 456, 424, 277, 79, 109, 109, 108, 108, + 216, 17, 483, 218, 219, 555, 216, 300, 532, 17, + 218, 219, 370, 100, 9, 80, 511, 559, 560, 220, + 34, 141, 215, 472, 371, 220, 582, 583, 309, 310, + 19, 167, 372, 167, 324, 105, 553, 165, 167, 74, + 10, 167, 97, 167, 584, 318, 16, 216, 340, 325, + 341, 597, 342, 343, 16, 166, 344, 345, 106, 214, + 203, 216, 455, 54, 212, 210, 220, 211, 510, 213, + 277, 10, 98, 65, 54, 54, 156, 545, 156, 108, + 220, 49, 206, 156, 208, 17, 156, 17, 156, 167, + 218, 219, 141, 222, 141, 16, 218, 219, 100, 384, + 46, 216, 120, 303, 44, 389, 302, 124, 216, 215, + 182, 202, 202, 298, 141, 74, 34, 319, 154, 44, + 220, 554, 162, 167, 167, 74, 107, 220, 181, 303, + 587, 298, 302, 163, 156, 209, 207, 218, 219, 408, + 502, 502, 425, 303, 303, 303, 204, 205, 217, 538, + 539, 218, 219, 141, 233, 417, 215, 233, 141, 277, + 415, 413, 440, 414, 164, 416, 74, 74, 156, 156, + 215, 233, 233, 168, 444, 303, 17, 122, 302, 533, + 17, 34, 182, 44, 498, 44, 171, 465, 34, 209, + 207, 218, 219, 69, 499, 169, 209, 207, 218, 219, + 204, 205, 74, 574, 575, 74, 233, 141, 484, 74, + 215, 110, 367, 183, 109, 489, 490, 215, 34, 20, + 21, 22, 238, 24, 25, 129, 26, 139, 173, 17, + 186, 173, 138, 74, 598, 127, 481, 128, 233, 480, + 493, 187, 27, 492, 418, 513, 173, 139, 19, 176, + 139, 307, 176, 140, 611, 228, 140, 524, 167, 167, + 167, 167, 167, 167, 229, 143, 176, 176, 143, 129, + 230, 139, 234, 239, 37, 38, 138, 105, 245, 127, + 173, 128, 141, 83, 167, 547, 313, 549, 156, 157, + 74, 175, 444, 546, 175, 317, 234, 444, 550, 234, + 316, 176, 326, 156, 156, 156, 156, 156, 156, 175, + 74, 167, 173, 234, 234, 443, 323, 328, 130, 329, + 334, 580, 333, 43, 44, 45, 339, 83, 349, 156, + 114, 181, 366, 176, 216, 141, 368, 374, 167, 167, + 167, 167, 376, 175, 167, 382, 444, 589, 234, 302, + 302, 302, 387, 220, 405, 406, 156, 603, 167, 167, + 167, 167, 130, 167, 167, 444, 602, 390, 167, 167, + 167, 167, 167, 411, 409, 175, 444, 608, 412, 421, + 234, 420, 423, 156, 156, 156, 156, 426, 427, 156, + 64, 66, 67, 433, 428, 431, 233, 19, 114, 437, + 167, 167, 441, 156, 156, 156, 156, 442, 156, 156, + 446, 449, 250, 156, 447, 156, 156, 156, 235, 260, + 448, 235, 209, 207, 218, 219, 450, 451, 167, 463, + 473, 240, 466, 204, 205, 235, 235, 20, 21, 22, + 23, 24, 25, 215, 26, 156, 156, 475, 467, 476, + 477, 479, 172, 86, 87, 88, 89, 90, 17, 17, + 27, 17, 17, 17, 17, 17, 17, 486, 17, 487, + 235, 491, 494, 156, 320, 495, 496, 497, 10, 17, + 17, 17, 17, 17, 17, 292, 292, 505, 292, 292, + 292, 292, 292, 292, 512, 292, 172, 86, 87, 88, + 89, 90, 235, 515, 516, 134, 292, 292, 518, 292, + 292, 292, 17, 519, 17, 17, 520, 83, 521, 526, + 527, 528, 10, 534, 531, 535, 548, 233, 233, 561, + 551, 572, 137, 350, 351, 352, 562, 568, 133, 292, + 569, 292, 292, 579, 17, 17, 17, 17, 585, 134, + 83, 586, 353, 354, 355, 356, 588, 357, 358, 593, + 302, 596, 359, 604, 360, 601, 607, 260, 612, 614, + 30, 292, 292, 292, 292, 616, 137, 350, 351, 352, + 28, 171, 133, 171, 209, 41, 20, 21, 22, 238, + 24, 25, 175, 26, 131, 132, 353, 354, 355, 356, + 40, 357, 358, 289, 290, 291, 359, 210, 360, 27, + 175, 215, 215, 83, 108, 215, 215, 215, 215, 215, + 171, 215, 361, 51, 57, 175, 207, 236, 91, 171, + 236, 92, 215, 215, 215, 215, 215, 215, 131, 132, + 239, 88, 144, 90, 236, 236, 89, 33, 146, 29, + 279, 279, 102, 147, 279, 279, 279, 279, 279, 279, + 279, 125, 536, 377, 503, 215, 361, 215, 215, 234, + 234, 279, 279, 279, 279, 279, 279, 509, 17, 236, + 73, 17, 72, 303, 514, 161, 85, 86, 87, 88, + 89, 90, 201, 525, 594, 201, 311, 566, 215, 215, + 215, 381, 567, 305, 279, 292, 279, 279, 292, 201, + 201, 236, 10, 386, 252, 253, 235, 46, 0, 155, + 86, 87, 88, 89, 90, 237, 91, 0, 237, 302, + 0, 17, 17, 17, 0, 0, 0, 279, 279, 279, + 0, 17, 237, 237, 201, 10, 0, 0, 0, 0, + 0, 17, 17, 17, 0, 302, 0, 0, 292, 292, + 292, 17, 0, 0, 0, 0, 0, 0, 292, 302, + 302, 302, 84, 0, 0, 0, 201, 237, 292, 292, + 292, 0, 454, 86, 87, 88, 89, 90, 292, 182, + 182, 235, 235, 182, 182, 182, 182, 182, 182, 182, + 0, 302, 0, 0, 0, 84, 0, 0, 0, 237, + 182, 182, 182, 182, 182, 182, 0, 0, 0, 0, + 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 0, 17, 17, 17, 0, 17, 17, 17, 17, 17, + 17, 0, 17, 182, 0, 182, 182, 0, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 0, 0, 292, + 292, 0, 292, 292, 292, 292, 292, 292, 0, 292, + 0, 0, 0, 0, 0, 0, 182, 182, 182, 0, + 0, 0, 0, 0, 239, 0, 215, 239, 19, 20, + 21, 22, 23, 24, 25, 0, 26, 0, 0, 0, + 0, 239, 239, 0, 0, 215, 0, 0, 0, 32, + 32, 0, 27, 32, 32, 32, 32, 32, 32, 32, + 0, 0, 315, 0, 0, 279, 2, 0, 0, 0, + 32, 32, 32, 32, 32, 32, 239, 0, 0, 0, + 0, 0, 0, 0, 279, 0, 0, 0, 98, 98, + 0, 0, 98, 98, 98, 98, 98, 0, 98, 0, + 0, 0, 0, 32, 0, 32, 32, 0, 239, 98, + 98, 98, 98, 98, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 0, 17, 215, 215, 0, 215, 215, + 215, 215, 215, 215, 215, 215, 32, 32, 32, 0, + 236, 236, 0, 0, 98, 98, 0, 0, 0, 0, + 0, 0, 0, 279, 279, 279, 279, 279, 279, 279, + 279, 279, 0, 0, 279, 279, 0, 279, 279, 279, + 279, 279, 279, 279, 279, 98, 98, 98, 0, 0, + 0, 0, 0, 0, 238, 273, 273, 238, 0, 273, + 273, 273, 273, 273, 0, 273, 19, 0, 0, 0, + 0, 238, 238, 0, 182, 201, 273, 273, 273, 273, + 273, 273, 0, 0, 0, 0, 0, 20, 21, 22, + 238, 24, 25, 182, 26, 0, 0, 275, 275, 0, + 470, 275, 275, 275, 275, 275, 238, 275, 237, 237, + 27, 273, 273, 0, 0, 0, 0, 0, 275, 275, + 275, 275, 275, 275, 0, 2, 2, 2, 2, 2, + 2, 0, 2, 0, 0, 0, 0, 0, 238, 0, + 0, 239, 273, 273, 273, 2, 2, 2, 0, 2, + 0, 0, 0, 275, 275, 0, 0, 0, 0, 0, + 0, 0, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 0, 0, 182, 182, 0, 182, 182, 182, 182, + 182, 182, 182, 182, 275, 275, 275, 0, 0, 0, + 0, 0, 240, 0, 32, 240, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, + 240, 0, 0, 32, 0, 0, 0, 215, 215, 0, + 0, 0, 215, 215, 215, 215, 0, 215, 0, 241, + 0, 0, 241, 98, 0, 0, 0, 0, 0, 0, + 215, 215, 215, 215, 240, 0, 241, 241, 0, 0, + 0, 98, 98, 0, 0, 20, 21, 22, 238, 24, + 25, 98, 26, 0, 0, 0, 0, 239, 239, 0, + 0, 215, 0, 215, 215, 0, 240, 0, 27, 0, + 0, 241, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 0, 0, 32, 32, 0, 32, 32, 32, 32, + 32, 32, 32, 32, 215, 5, 215, 0, 0, 239, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 0, + 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 273, 0, 98, 98, 0, 98, 98, 98, 98, 98, + 98, 0, 98, 0, 0, 0, 0, 0, 0, 273, + 0, 222, 222, 0, 0, 0, 222, 222, 222, 222, + 222, 222, 0, 310, 0, 242, 0, 0, 242, 0, + 0, 0, 275, 0, 222, 222, 222, 222, 0, 0, + 0, 0, 242, 242, 0, 0, 0, 0, 0, 0, + 0, 275, 0, 0, 0, 0, 251, 0, 252, 251, + 0, 252, 0, 0, 0, 222, 0, 222, 222, 0, + 0, 0, 0, 251, 251, 252, 252, 242, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 238, 238, 273, + 273, 0, 273, 273, 273, 273, 273, 273, 222, 273, + 222, 0, 0, 0, 0, 0, 0, 0, 251, 242, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 0, + 0, 275, 275, 0, 275, 275, 275, 275, 275, 275, + 251, 275, 252, 267, 267, 0, 0, 267, 267, 267, + 267, 267, 215, 267, 5, 5, 5, 5, 5, 5, + 0, 5, 0, 0, 267, 267, 267, 267, 267, 267, + 0, 215, 0, 0, 5, 5, 5, 5, 0, 0, + 268, 268, 0, 0, 268, 268, 268, 268, 268, 0, + 268, 0, 310, 0, 0, 0, 0, 0, 0, 267, + 267, 268, 268, 268, 268, 268, 268, 0, 0, 0, + 0, 0, 310, 310, 310, 310, 310, 310, 310, 310, + 0, 0, 0, 0, 0, 240, 240, 0, 0, 0, + 267, 267, 0, 0, 0, 310, 268, 268, 0, 0, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 0, + 17, 215, 215, 0, 215, 215, 215, 215, 215, 215, + 215, 215, 241, 241, 310, 0, 0, 268, 268, 6, + 266, 266, 0, 0, 266, 266, 266, 266, 266, 0, + 266, 0, 0, 0, 0, 0, 222, 0, 0, 0, + 0, 266, 266, 266, 266, 266, 266, 0, 0, 0, + 0, 0, 0, 0, 0, 222, 0, 0, 0, 269, + 269, 0, 0, 269, 269, 269, 269, 269, 0, 269, + 0, 0, 0, 0, 0, 0, 266, 266, 0, 0, + 269, 269, 269, 269, 269, 269, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 270, 270, 0, 0, + 270, 270, 270, 270, 270, 0, 270, 266, 266, 0, + 0, 0, 0, 0, 0, 269, 269, 270, 270, 270, + 270, 270, 270, 0, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 0, 0, 222, 222, 0, 222, 222, + 222, 222, 222, 222, 222, 222, 269, 269, 242, 242, + 258, 258, 270, 270, 258, 258, 258, 258, 258, 0, + 258, 0, 0, 0, 0, 0, 0, 0, 267, 0, + 0, 258, 258, 258, 258, 258, 258, 0, 0, 251, + 251, 252, 252, 270, 270, 0, 0, 0, 0, 0, + 0, 0, 0, 214, 203, 0, 0, 258, 212, 210, + 0, 211, 0, 213, 0, 268, 258, 258, 6, 6, + 6, 6, 6, 6, 0, 6, 206, 190, 208, 200, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, + 6, 6, 0, 0, 0, 0, 0, 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 273, 273, 0, 0, 273, 273, - 273, 273, 273, 0, 273, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 273, 273, 273, 273, 273, - 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 265, 0, 0, 265, 265, 265, 265, - 265, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 273, 273, 0, 265, 265, 265, 265, 265, 265, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 96, 0, - 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, - 32, 273, 273, 273, 0, 0, 96, 96, 265, 265, - 0, 19, 220, 220, 271, 0, 96, 220, 220, 220, - 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 271, 0, 220, 220, 220, 220, 265, - 265, 0, 0, 0, 238, 311, 239, 238, 0, 239, - 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, - 0, 238, 238, 239, 239, 0, 220, 0, 220, 220, - 0, 0, 0, 0, 0, 213, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 0, 0, 96, 96, 0, - 96, 96, 96, 96, 96, 96, 238, 96, 239, 220, - 0, 220, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 0, 0, 271, 271, 0, 271, 271, 271, 271, - 271, 271, 0, 271, 0, 0, 0, 0, 238, 0, - 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 0, 17, 213, 213, 0, 213, 213, - 213, 213, 213, 213, 213, 213, 0, 0, 0, 266, - 266, 0, 0, 266, 266, 266, 266, 266, 0, 266, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, - 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, - 20, 21, 22, 234, 24, 25, 0, 26, 273, 0, - 0, 0, 264, 264, 0, 0, 264, 264, 264, 264, - 264, 0, 264, 27, 0, 266, 266, 265, 0, 0, - 0, 0, 0, 264, 264, 264, 264, 264, 264, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 235, 240, 266, 266, 240, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 264, 264, - 0, 0, 240, 240, 0, 465, 0, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 0, 220, 273, 273, - 0, 273, 273, 273, 273, 273, 273, 0, 273, 264, - 264, 0, 0, 0, 0, 0, 220, 240, 0, 0, - 0, 0, 0, 308, 0, 265, 265, 0, 0, 265, - 265, 265, 265, 265, 0, 0, 265, 265, 0, 265, - 265, 265, 265, 265, 265, 0, 265, 0, 0, 240, - 0, 267, 267, 0, 0, 267, 267, 267, 267, 267, - 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 267, 267, 267, 267, 267, 267, 0, 0, - 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 0, 0, 220, 220, 0, 220, - 220, 220, 220, 220, 220, 220, 220, 267, 267, 0, - 0, 268, 268, 0, 0, 268, 268, 268, 268, 268, - 0, 268, 0, 0, 0, 0, 0, 238, 238, 239, - 239, 0, 268, 268, 268, 268, 268, 268, 267, 267, - 20, 21, 22, 234, 24, 25, 0, 26, 0, 0, - 0, 0, 256, 256, 266, 0, 256, 256, 256, 256, - 256, 0, 256, 27, 0, 0, 0, 268, 268, 0, - 0, 0, 0, 256, 256, 256, 256, 256, 256, 210, - 199, 0, 0, 254, 208, 206, 0, 207, 0, 209, - 0, 0, 308, 249, 235, 0, 249, 264, 268, 268, - 0, 0, 202, 186, 204, 196, 0, 0, 256, 256, - 249, 249, 308, 308, 308, 308, 308, 308, 308, 308, + 202, 0, 0, 0, 0, 0, 267, 267, 0, 0, + 267, 267, 267, 267, 267, 0, 0, 267, 267, 0, + 267, 267, 267, 267, 267, 267, 0, 267, 0, 0, + 201, 0, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 268, 268, 266, 0, 268, 268, 268, + 268, 268, 0, 0, 268, 268, 0, 268, 268, 268, + 268, 268, 268, 0, 268, 0, 214, 203, 0, 0, + 0, 212, 210, 0, 211, 0, 213, 0, 0, 0, + 0, 0, 0, 0, 269, 0, 0, 0, 407, 206, + 190, 208, 200, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 214, 203, 0, 0, 471, + 212, 210, 0, 211, 0, 213, 0, 0, 0, 0, + 0, 270, 0, 202, 0, 0, 0, 0, 206, 190, + 208, 200, 0, 266, 266, 0, 0, 266, 266, 266, + 266, 266, 0, 0, 266, 266, 0, 266, 266, 266, + 266, 266, 266, 201, 266, 217, 0, 0, 0, 0, + 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 269, 269, 0, 258, 269, 269, 269, 269, + 269, 0, 0, 269, 269, 0, 269, 269, 269, 269, + 269, 269, 201, 269, 217, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 270, + 270, 0, 0, 270, 270, 270, 270, 270, 216, 0, + 270, 270, 0, 270, 270, 270, 270, 270, 270, 0, + 270, 0, 0, 0, 0, 430, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 308, 198, 0, 0, 256, - 256, 0, 266, 266, 0, 249, 266, 266, 266, 266, - 266, 0, 0, 266, 266, 0, 266, 266, 266, 266, - 266, 266, 250, 266, 308, 250, 197, 0, 213, 0, - 0, 0, 0, 0, 426, 0, 0, 249, 0, 250, - 250, 0, 0, 0, 0, 264, 264, 0, 0, 264, - 264, 264, 264, 264, 0, 0, 264, 264, 0, 264, - 264, 264, 264, 264, 264, 0, 264, 210, 199, 0, - 0, 0, 208, 206, 250, 207, 0, 209, 0, 0, - 0, 0, 0, 0, 0, 0, 267, 473, 0, 403, - 202, 186, 204, 196, 480, 0, 0, 0, 240, 240, - 0, 0, 0, 0, 0, 0, 250, 210, 199, 0, - 0, 466, 208, 206, 0, 207, 0, 209, 0, 0, - 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, - 202, 186, 204, 196, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, - 0, 0, 0, 0, 197, 0, 213, 532, 0, 0, - 0, 0, 0, 0, 198, 539, 0, 0, 0, 0, - 0, 0, 0, 0, 267, 267, 547, 0, 267, 267, - 267, 267, 267, 0, 0, 267, 267, 256, 267, 267, - 267, 267, 267, 267, 197, 267, 213, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 576, 0, 0, - 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 268, 268, 595, 0, 268, 268, - 268, 268, 268, 0, 0, 268, 268, 0, 268, 268, - 268, 268, 268, 268, 605, 268, 0, 0, 0, 608, - 0, 0, 0, 0, 610, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 256, 0, 0, 256, - 256, 256, 256, 256, 0, 0, 256, 256, 0, 256, - 256, 256, 256, 256, 256, 0, 256, 0, 0, 0, - 0, 0, 205, 203, 214, 215, 187, 188, 189, 190, - 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, - 193, 195, 0, 211, 210, 199, 249, 249, 0, 208, - 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, - 0, 0, 212, 0, 0, 0, 477, 202, 186, 204, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 210, 199, 0, 0, 512, 208, 206, - 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, - 0, 198, 212, 0, 0, 0, 202, 186, 204, 196, - 0, 0, 0, 0, 0, 250, 250, 0, 0, 0, + 0, 0, 0, 258, 258, 0, 0, 258, 258, 258, + 258, 258, 0, 0, 258, 258, 0, 258, 258, 258, + 258, 258, 258, 0, 258, 0, 0, 0, 478, 0, + 0, 0, 0, 0, 0, 485, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 209, 207, 218, 219, + 191, 192, 193, 194, 196, 0, 0, 204, 205, 0, + 188, 189, 195, 198, 197, 199, 0, 215, 214, 203, + 0, 0, 0, 212, 210, 0, 211, 0, 213, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 213, 0, 0, 0, 0, 0, 0, - 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 205, 203, 214, 215, 187, 188, 189, 190, 192, 0, - 0, 200, 201, 0, 184, 185, 191, 194, 193, 195, - 197, 211, 213, 0, 0, 0, 0, 0, 0, 0, + 482, 206, 190, 208, 200, 0, 0, 0, 0, 537, + 220, 0, 0, 0, 214, 203, 0, 544, 517, 212, + 210, 0, 211, 0, 213, 0, 0, 0, 552, 0, + 216, 0, 0, 0, 0, 202, 0, 206, 190, 208, + 200, 0, 0, 0, 0, 0, 0, 0, 0, 220, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, + 0, 0, 0, 0, 0, 201, 0, 217, 0, 0, + 0, 202, 0, 0, 0, 0, 0, 0, 0, 209, + 207, 218, 219, 191, 192, 193, 194, 196, 600, 0, + 204, 205, 0, 188, 189, 195, 198, 197, 199, 0, + 215, 201, 0, 217, 0, 0, 610, 0, 0, 0, + 0, 613, 0, 0, 0, 0, 615, 0, 209, 207, + 218, 219, 191, 192, 193, 194, 196, 0, 0, 204, + 205, 0, 188, 189, 195, 198, 197, 199, 0, 215, + 214, 203, 0, 0, 522, 212, 210, 0, 211, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 206, 190, 208, 200, 214, 203, 0, + 0, 523, 212, 210, 0, 211, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 205, 203, 214, 215, 187, 188, 189, 190, 192, 0, - 0, 200, 201, 0, 184, 185, 191, 194, 193, 195, - 0, 211, 210, 199, 0, 0, 517, 208, 206, 0, - 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 186, 204, 196, 210, - 199, 0, 0, 518, 208, 206, 0, 207, 0, 209, + 206, 190, 208, 200, 214, 203, 0, 202, 570, 212, + 210, 0, 211, 0, 213, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 206, 190, 208, + 200, 0, 0, 0, 202, 0, 0, 201, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 202, 186, 204, 196, 210, 199, 0, 198, - 565, 208, 206, 0, 207, 0, 209, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, - 186, 204, 196, 0, 0, 0, 198, 0, 0, 197, - 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, - 0, 0, 0, 198, 0, 0, 197, 0, 213, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, - 0, 0, 263, 263, 0, 0, 263, 263, 263, 263, - 263, 0, 263, 197, 0, 213, 0, 0, 212, 0, - 0, 0, 0, 263, 263, 263, 263, 263, 263, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 0, 210, - 199, 0, 0, 566, 208, 206, 0, 207, 0, 209, - 0, 0, 0, 0, 0, 0, 0, 0, 263, 263, - 0, 0, 202, 186, 204, 196, 0, 205, 203, 214, - 215, 187, 188, 189, 190, 192, 0, 0, 200, 201, - 0, 184, 185, 191, 194, 193, 195, 0, 211, 263, - 263, 0, 0, 0, 0, 0, 198, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 203, 214, 215, - 187, 188, 189, 190, 192, 0, 0, 200, 201, 0, - 184, 185, 191, 194, 193, 195, 197, 211, 213, 262, - 262, 0, 0, 262, 262, 262, 262, 262, 0, 262, - 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, - 262, 262, 262, 262, 262, 262, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, - 0, 0, 210, 199, 212, 0, 0, 208, 206, 0, - 207, 0, 209, 0, 0, 262, 262, 0, 0, 0, - 0, 0, 0, 216, 590, 202, 186, 204, 196, 0, - 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 262, 0, 0, - 216, 0, 0, 0, 0, 0, 0, 0, 0, 198, - 0, 0, 0, 0, 0, 205, 203, 214, 215, 187, - 188, 189, 190, 192, 0, 0, 200, 201, 0, 184, - 185, 191, 194, 193, 195, 0, 211, 0, 0, 197, - 0, 213, 205, 203, 214, 215, 187, 188, 189, 190, - 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, - 193, 195, 0, 211, 0, 0, 0, 0, 0, 205, - 203, 214, 215, 187, 188, 189, 190, 192, 0, 0, - 200, 201, 0, 184, 185, 191, 194, 193, 195, 0, - 211, 210, 199, 0, 212, 0, 208, 206, 0, 207, - 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 604, 216, 202, 186, 204, 196, 210, 199, - 0, 0, 0, 208, 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 186, 204, 196, 263, 263, 0, 198, 263, - 263, 263, 263, 263, 0, 0, 263, 263, 0, 263, - 263, 263, 263, 263, 263, 0, 263, 0, 0, 0, - 0, 0, 0, 0, 0, 198, 0, 0, 197, 0, - 213, 0, 205, 203, 214, 215, 187, 188, 189, 190, - 192, 0, 0, 200, 201, 0, 184, 185, 191, 194, - 193, 195, 0, 211, 0, 197, 0, 213, 253, 253, - 0, 0, 253, 253, 253, 253, 253, 0, 253, 0, - 0, 0, 0, 0, 0, 0, 0, 212, 0, 253, - 253, 253, 253, 253, 253, 210, 199, 0, 0, 0, - 208, 206, 0, 207, 0, 209, 216, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, - 204, 0, 0, 0, 253, 253, 0, 0, 0, 0, - 0, 0, 262, 262, 0, 0, 262, 262, 262, 262, - 262, 0, 0, 262, 262, 0, 262, 262, 262, 262, - 262, 262, 198, 262, 0, 253, 253, 0, 0, 0, + 0, 202, 0, 216, 201, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 205, 203, 214, 215, 187, - 188, 189, 190, 192, 213, 0, 200, 201, 0, 184, - 185, 191, 194, 193, 195, 0, 211, 210, 199, 0, - 0, 0, 208, 206, 0, 207, 0, 209, 0, 0, + 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, + 0, 201, 0, 217, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 186, 204, 196, 210, 199, 212, 0, 0, 208, - 206, 0, 207, 0, 209, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 0, 202, 186, 204, - 196, 0, 0, 212, 198, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, + 214, 203, 0, 0, 571, 212, 210, 0, 211, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 206, 190, 208, 200, 0, 0, 0, + 0, 209, 207, 218, 219, 191, 192, 193, 194, 196, + 0, 0, 204, 205, 0, 188, 189, 195, 198, 197, + 199, 0, 215, 0, 0, 0, 0, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 209, 207, 218, + 219, 191, 192, 193, 194, 196, 0, 0, 204, 205, + 0, 188, 189, 195, 198, 197, 199, 201, 215, 217, + 0, 0, 265, 265, 0, 0, 265, 265, 265, 265, + 265, 0, 265, 0, 0, 216, 0, 0, 0, 0, + 0, 0, 0, 265, 265, 265, 265, 265, 265, 0, + 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, + 214, 203, 216, 0, 0, 212, 210, 0, 211, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 265, 265, + 0, 220, 595, 206, 190, 208, 200, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 251, 0, 197, 251, 213, 251, 251, 251, + 0, 0, 0, 0, 0, 0, 0, 0, 220, 265, + 265, 0, 0, 0, 0, 0, 0, 202, 0, 0, + 0, 0, 0, 209, 207, 218, 219, 191, 192, 193, + 194, 196, 0, 0, 204, 205, 0, 188, 189, 195, + 198, 197, 199, 0, 215, 0, 0, 201, 0, 217, + 209, 207, 218, 219, 191, 192, 193, 194, 196, 0, + 0, 204, 205, 0, 188, 189, 195, 198, 197, 199, + 0, 215, 0, 0, 0, 0, 0, 209, 207, 218, + 219, 191, 192, 193, 194, 196, 0, 0, 204, 205, + 0, 188, 189, 195, 198, 197, 199, 0, 215, 0, + 0, 0, 214, 203, 0, 216, 0, 212, 210, 0, + 211, 0, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 609, 220, 206, 190, 208, 200, 264, + 264, 0, 0, 264, 264, 264, 264, 264, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 251, 251, 251, 251, 251, 251, 0, 0, - 0, 197, 0, 213, 205, 203, 214, 215, 187, 188, - 189, 190, 192, 0, 0, 200, 201, 0, 184, 185, - 191, 194, 193, 195, 0, 211, 0, 251, 251, 0, - 0, 205, 203, 214, 215, 187, 188, 189, 190, 192, - 0, 0, 200, 201, 0, 184, 185, 191, 194, 193, - 195, 0, 211, 0, 0, 0, 0, 0, 251, 251, - 212, 0, 0, 0, 0, 0, 0, 254, 254, 0, - 0, 254, 254, 254, 254, 254, 0, 254, 0, 216, - 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, - 254, 254, 254, 254, 0, 0, 0, 0, 0, 0, + 264, 264, 264, 264, 264, 264, 214, 203, 0, 202, + 0, 212, 210, 0, 211, 0, 213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, + 190, 208, 200, 0, 0, 264, 264, 0, 0, 201, + 0, 217, 0, 209, 207, 218, 219, 191, 192, 193, + 194, 196, 0, 200, 204, 205, 200, 188, 189, 195, + 198, 197, 199, 202, 215, 0, 264, 264, 0, 0, + 200, 200, 0, 200, 0, 200, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 216, 255, 0, 0, 0, + 0, 0, 0, 201, 0, 217, 0, 255, 255, 255, + 255, 255, 255, 0, 220, 200, 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, 253, 253, 254, 254, 253, 253, 253, 253, 253, - 0, 0, 253, 253, 0, 253, 253, 253, 253, 253, - 253, 0, 0, 0, 0, 0, 0, 0, 205, 203, - 214, 215, 0, 0, 254, 254, 0, 0, 0, 200, - 201, 0, 212, 0, 0, 0, 0, 0, 0, 211, - 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, - 255, 216, 255, 0, 0, 0, 0, 0, 0, 212, - 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, - 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, - 252, 0, 252, 252, 252, 0, 0, 0, 255, 255, - 0, 0, 0, 0, 0, 0, 0, 252, 252, 252, - 252, 252, 252, 0, 0, 0, 0, 0, 0, 0, - 205, 203, 214, 215, 187, 188, 189, 190, 192, 255, - 255, 200, 201, 0, 0, 185, 191, 194, 193, 195, - 0, 211, 252, 252, 0, 0, 0, 205, 203, 214, - 215, 187, 188, 189, 190, 192, 0, 0, 200, 201, - 0, 0, 0, 191, 194, 193, 195, 0, 211, 243, - 0, 0, 243, 252, 252, 243, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, - 243, 0, 243, 0, 243, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 251, 251, 0, 0, 251, 251, - 251, 251, 251, 0, 0, 251, 251, 0, 251, 251, - 251, 251, 251, 251, 243, 243, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, - 245, 0, 0, 245, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 243, 243, 245, 245, 0, - 245, 0, 245, 0, 0, 244, 0, 0, 244, 0, - 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 244, 244, 0, 244, 0, - 244, 0, 245, 245, 0, 0, 0, 0, 0, 0, - 254, 254, 0, 0, 254, 254, 254, 254, 254, 0, - 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, - 244, 244, 0, 245, 245, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, - 0, 0, 246, 0, 0, 246, 0, 0, 0, 0, - 0, 244, 244, 0, 0, 0, 0, 0, 0, 246, - 246, 0, 246, 0, 246, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 0, 265, 265, 200, 0, 265, + 265, 265, 265, 265, 0, 0, 265, 265, 0, 265, + 265, 265, 265, 265, 265, 0, 265, 0, 0, 0, + 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 209, 207, 218, 219, 191, 192, 193, + 194, 196, 0, 0, 204, 205, 0, 188, 189, 195, + 198, 197, 199, 0, 215, 214, 203, 0, 0, 0, + 212, 210, 0, 211, 0, 213, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 206, 190, + 208, 200, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, 214, 203, + 0, 0, 202, 212, 210, 0, 211, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 246, 246, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, - 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, - 255, 255, 255, 255, 255, 246, 246, 0, 0, 0, + 0, 206, 190, 208, 200, 0, 0, 0, 0, 0, + 0, 216, 201, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, - 252, 0, 0, 252, 252, 252, 252, 252, 0, 0, - 252, 252, 0, 252, 252, 252, 252, 252, 252, 261, - 0, 0, 261, 0, 0, 261, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 242, 0, 0, 242, 261, - 261, 242, 261, 0, 261, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 242, 242, 0, 242, 260, - 242, 0, 260, 0, 0, 260, 0, 0, 0, 0, - 0, 0, 0, 0, 261, 261, 0, 0, 0, 260, - 260, 0, 260, 0, 260, 243, 243, 243, 243, 243, - 242, 242, 243, 243, 0, 243, 243, 243, 243, 243, - 243, 0, 0, 0, 0, 261, 261, 0, 0, 0, - 0, 0, 0, 0, 260, 260, 0, 241, 0, 0, - 241, 242, 242, 241, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 241, 0, - 241, 0, 241, 0, 0, 260, 260, 0, 0, 0, - 0, 0, 0, 245, 245, 245, 245, 245, 0, 0, - 245, 245, 0, 245, 245, 245, 245, 245, 245, 0, - 0, 0, 241, 241, 0, 0, 0, 0, 0, 0, - 0, 244, 244, 244, 244, 244, 0, 0, 244, 244, - 0, 244, 244, 244, 244, 244, 244, 0, 0, 0, - 0, 0, 0, 241, 241, 258, 0, 0, 258, 0, - 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 0, 0, 247, 258, 258, 247, 258, 0, - 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 247, 0, 247, 0, 247, 0, 0, 0, - 0, 0, 0, 0, 0, 246, 246, 246, 246, 246, - 258, 258, 246, 246, 0, 246, 246, 246, 246, 246, - 246, 0, 0, 0, 0, 248, 247, 247, 248, 0, + 220, 0, 0, 0, 0, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 209, 207, 218, 219, 191, + 192, 193, 194, 196, 0, 0, 204, 205, 0, 188, + 189, 195, 198, 197, 199, 201, 215, 217, 0, 0, + 0, 0, 264, 264, 0, 0, 264, 264, 264, 264, + 264, 0, 0, 264, 264, 0, 264, 264, 264, 264, + 264, 264, 0, 264, 0, 0, 0, 0, 0, 209, + 207, 218, 219, 191, 192, 193, 194, 196, 0, 0, + 204, 205, 0, 188, 189, 195, 198, 197, 199, 214, + 215, 0, 0, 0, 212, 210, 0, 211, 0, 213, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 206, 0, 208, 0, 200, 200, 200, 200, + 200, 0, 0, 0, 0, 0, 200, 200, 200, 200, + 200, 200, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 256, + 256, 0, 0, 256, 256, 256, 256, 256, 0, 256, + 216, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 256, 256, 256, 256, 256, 256, 0, 0, 0, 220, + 0, 0, 0, 0, 0, 0, 257, 257, 0, 0, + 257, 257, 257, 257, 257, 0, 257, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 256, 257, 257, 257, + 257, 257, 257, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 0, 0, 0, 256, 256, 0, 0, + 0, 0, 257, 257, 0, 0, 0, 0, 209, 207, + 218, 219, 191, 192, 193, 194, 196, 0, 0, 204, + 205, 0, 0, 189, 195, 198, 197, 199, 0, 215, + 0, 0, 253, 257, 257, 253, 0, 253, 253, 253, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 253, 253, 253, 253, 253, 253, 0, 0, + 0, 209, 207, 218, 219, 191, 192, 193, 194, 196, + 0, 0, 204, 205, 0, 0, 0, 195, 198, 197, + 199, 0, 215, 0, 0, 0, 254, 253, 253, 254, + 0, 254, 254, 254, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 254, 254, 254, 254, + 254, 254, 0, 0, 216, 0, 0, 0, 253, 253, + 0, 0, 0, 245, 0, 0, 245, 0, 0, 245, + 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, + 0, 254, 254, 245, 245, 0, 245, 261, 245, 0, + 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 247, 0, 0, 247, 261, 261, 247, 261, 0, 261, + 0, 0, 254, 254, 0, 0, 0, 0, 245, 245, + 247, 247, 0, 247, 0, 247, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 261, 0, 209, 207, 218, 219, 0, 0, 0, 245, + 245, 0, 0, 204, 205, 247, 247, 0, 0, 246, + 0, 0, 246, 215, 0, 246, 0, 0, 0, 0, + 261, 261, 0, 0, 0, 0, 0, 0, 0, 246, + 246, 0, 246, 0, 246, 248, 247, 247, 248, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 258, 258, 0, 259, 248, 248, 259, 248, 0, - 248, 0, 0, 0, 0, 0, 0, 247, 247, 0, - 0, 259, 259, 0, 259, 0, 259, 0, 0, 0, - 0, 0, 0, 257, 0, 127, 257, 137, 0, 0, - 248, 248, 136, 0, 0, 125, 0, 126, 0, 0, - 257, 257, 0, 257, 0, 257, 259, 259, 0, 0, - 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, - 0, 248, 248, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 0, 259, 259, 0, - 0, 0, 0, 83, 0, 261, 261, 261, 261, 261, - 0, 0, 261, 261, 0, 261, 261, 261, 261, 261, - 261, 242, 242, 242, 242, 242, 257, 257, 242, 242, - 0, 242, 242, 242, 242, 242, 242, 0, 128, 0, - 0, 0, 0, 0, 0, 260, 260, 260, 260, 260, - 0, 0, 260, 260, 0, 260, 260, 260, 260, 260, - 260, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 137, 0, 0, 0, 0, 136, 0, 0, 125, - 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, - 0, 0, 0, 241, 241, 241, 241, 241, 0, 0, - 241, 241, 0, 241, 241, 241, 241, 241, 241, 0, - 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, - 127, 0, 137, 0, 0, 0, 0, 136, 0, 127, - 125, 137, 126, 0, 0, 0, 136, 0, 0, 125, - 0, 126, 0, 0, 0, 124, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 168, 86, 87, 88, 89, 90, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, - 0, 258, 258, 258, 258, 258, 0, 83, 10, 0, - 0, 258, 258, 258, 258, 258, 258, 247, 247, 247, - 247, 247, 0, 0, 0, 0, 0, 247, 247, 247, - 247, 247, 247, 128, 0, 132, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 127, 0, 137, 0, - 0, 0, 0, 136, 0, 0, 125, 0, 126, 0, - 0, 0, 135, 0, 0, 0, 0, 0, 131, 0, - 0, 248, 248, 248, 248, 248, 0, 0, 0, 0, - 0, 248, 248, 248, 248, 248, 248, 259, 259, 259, - 259, 259, 0, 0, 0, 0, 0, 259, 259, 259, - 259, 259, 259, 0, 83, 0, 168, 86, 87, 88, - 89, 90, 0, 0, 0, 0, 257, 257, 257, 257, - 257, 0, 0, 283, 129, 130, 257, 257, 257, 257, - 257, 257, 10, 127, 0, 137, 379, 0, 0, 128, - 136, 0, 127, 125, 137, 126, 0, 0, 0, 136, - 0, 0, 125, 0, 126, 0, 0, 0, 0, 132, - 0, 280, 0, 0, 0, 0, 0, 133, 134, 87, - 88, 89, 90, 0, 0, 0, 168, 86, 87, 88, - 89, 90, 0, 0, 0, 0, 135, 0, 0, 0, - 0, 83, 131, 10, 0, 0, 0, 0, 0, 0, - 83, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 248, 248, 0, 248, 0, + 248, 0, 256, 256, 246, 246, 256, 256, 256, 256, + 256, 0, 0, 256, 256, 0, 256, 256, 256, 256, + 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, + 248, 248, 0, 0, 0, 246, 246, 0, 0, 257, + 257, 0, 0, 257, 257, 257, 257, 257, 0, 0, + 257, 257, 0, 257, 257, 257, 257, 257, 257, 0, + 263, 248, 248, 263, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 132, 0, 0, 0, 0, 0, 128, 0, 0, 132, - 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 287, 135, 129, 130, - 0, 0, 0, 131, 0, 0, 135, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 168, 86, 87, 88, 89, 90, 0, + 263, 263, 0, 263, 0, 263, 0, 0, 0, 244, + 0, 0, 244, 0, 0, 244, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, + 244, 0, 244, 0, 244, 263, 263, 0, 0, 0, + 0, 0, 0, 0, 253, 253, 0, 0, 253, 253, + 253, 253, 253, 0, 0, 253, 253, 0, 253, 253, + 253, 253, 253, 253, 244, 244, 263, 263, 0, 262, + 0, 0, 262, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 262, 0, 262, 0, 262, 244, 244, 0, 254, 254, + 0, 0, 254, 254, 254, 254, 254, 0, 0, 254, + 254, 0, 254, 254, 254, 254, 254, 254, 0, 0, + 0, 0, 0, 0, 262, 262, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, + 245, 245, 245, 245, 0, 0, 245, 245, 0, 245, + 245, 245, 245, 245, 245, 262, 262, 0, 0, 0, + 261, 261, 261, 261, 261, 0, 0, 0, 0, 0, + 261, 261, 261, 261, 261, 261, 247, 247, 247, 247, + 247, 0, 0, 247, 247, 0, 247, 247, 247, 247, + 247, 247, 0, 0, 0, 0, 243, 0, 0, 243, + 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 243, 243, 0, 243, + 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 246, 246, 246, 246, 246, + 0, 0, 246, 246, 0, 246, 246, 246, 246, 246, + 246, 243, 243, 0, 0, 0, 0, 0, 0, 0, + 0, 248, 248, 248, 248, 248, 0, 0, 248, 248, + 0, 248, 248, 248, 248, 248, 248, 0, 260, 0, + 0, 260, 243, 243, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 260, 260, + 0, 260, 0, 260, 0, 0, 0, 249, 0, 0, + 249, 0, 0, 249, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 249, 249, 0, + 249, 0, 249, 260, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 263, 263, 263, + 263, 0, 0, 263, 263, 0, 263, 263, 263, 263, + 263, 263, 249, 249, 260, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 244, 244, 244, 244, 244, + 0, 0, 244, 244, 0, 244, 244, 244, 244, 244, + 244, 0, 0, 249, 249, 0, 250, 0, 0, 250, + 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 250, 250, 0, 250, + 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 262, 262, 262, 262, + 0, 259, 262, 262, 259, 262, 262, 262, 262, 262, + 262, 250, 250, 0, 0, 0, 0, 0, 259, 259, + 0, 259, 0, 259, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 0, 139, 0, 0, 0, + 0, 138, 250, 250, 127, 0, 128, 129, 0, 139, + 0, 0, 0, 259, 138, 0, 0, 127, 0, 128, + 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, + 0, 0, 0, 0, 259, 259, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 130, 0, 0, 0, 0, 0, 0, 0, 129, 130, - 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 243, 243, 243, 243, 243, 130, 0, 243, + 243, 0, 243, 243, 243, 243, 243, 243, 0, 0, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 0, 139, 0, 0, 0, 0, 138, + 0, 0, 127, 0, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, + 0, 129, 0, 139, 0, 0, 0, 0, 138, 0, + 0, 127, 0, 128, 260, 260, 260, 260, 260, 0, + 0, 0, 0, 0, 260, 260, 260, 260, 260, 260, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 249, 249, 249, 249, 249, 0, 0, + 0, 0, 0, 249, 249, 249, 249, 249, 249, 83, + 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, + 0, 172, 86, 87, 88, 89, 90, 0, 0, 0, + 0, 0, 0, 0, 172, 86, 87, 88, 89, 90, + 0, 383, 0, 0, 130, 0, 0, 10, 0, 0, + 0, 129, 0, 139, 0, 0, 0, 0, 138, 0, + 10, 127, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 0, 0, 282, + 0, 0, 250, 250, 250, 250, 250, 134, 0, 0, + 0, 0, 250, 250, 250, 250, 250, 250, 0, 0, + 0, 137, 0, 0, 0, 0, 0, 133, 0, 83, + 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, + 133, 0, 0, 0, 259, 259, 259, 259, 259, 0, + 0, 0, 0, 0, 259, 259, 259, 259, 259, 259, + 0, 0, 0, 0, 130, 0, 0, 0, 0, 135, + 136, 87, 88, 89, 90, 0, 0, 0, 129, 0, + 139, 0, 287, 131, 132, 138, 0, 0, 127, 0, + 128, 0, 0, 0, 291, 10, 131, 132, 172, 86, + 87, 88, 89, 90, 0, 0, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 0, 139, 0, + 0, 0, 134, 138, 10, 0, 127, 0, 128, 0, + 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, + 0, 134, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 0, 0, 83, 0, 0, 0, 137, 0, + 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 172, 86, + 87, 88, 89, 90, 0, 0, 0, 0, 0, 130, + 0, 131, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 0, 0, 0, 0, 0, 131, - 168, 86, 87, 88, 89, 90, 0, 0, 0, 168, - 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, + 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 172, 86, 87, 88, 89, + 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 172, 86, 87, 88, 89, 90, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 132, 0, 129, 130, 0, 0, 0, - 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, + 0, 133, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 0, 131, 0, 0, 135, - 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 137, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 130, 0, 0, 0, 0, 0, 0, - 0, 129, 130, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, ); protected static $yyCheck = array(4, - 118, 46, 46, 46, 61, 62, 63, 180, 303, 126, - 152, 124, 164, 93, 126, 59, 125, 40, 37, 38, - 71, 123, 42, 42, 43, 59, 45, 84, 47, 34, - 35, 41, 91, 41, 44, 40, 44, 260, 125, 304, - 97, 60, 99, 62, 260, 125, 91, 165, 58, 59, - 58, 59, 59, 104, 105, 46, 61, 62, 63, 91, - 224, 118, 41, 37, 69, 70, 46, 283, 42, 43, - 286, 45, 44, 47, 247, 94, 40, 300, 125, 84, - 59, 254, 260, 93, 300, 93, 125, 59, 416, 123, - 44, 96, 97, 44, 99, 44, 37, 38, 260, 59, - 39, 42, 43, 260, 45, 124, 47, 126, 165, 251, - 49, 50, 51, 118, 93, 125, 123, 125, 175, 60, - 46, 62, 300, 37, 286, 91, 44, 59, 42, 43, - 40, 45, 59, 47, 44, 37, 300, 422, 91, 93, - 42, 364, 93, 300, 93, 47, 125, 58, 364, 59, - 44, 260, 126, 158, 159, 212, 161, 529, 530, 123, - 165, 334, 340, 123, 492, 59, 46, 102, 40, 321, - 175, 125, 44, 260, 125, 93, 63, 182, 340, 330, - 322, 466, 324, 41, 556, 126, 44, 456, 457, 340, - 125, 126, 127, 128, 129, 130, 123, 132, 44, 286, - 312, 136, 344, 60, 91, 378, 59, 212, 63, 311, - 46, 216, 126, 123, 331, 125, 62, 152, 370, 331, - 64, 93, 58, 257, 126, 389, 495, 340, 260, 126, - 41, 125, 237, 44, 91, 93, 91, 260, 512, 58, - 260, 383, 177, 517, 179, 332, 388, 58, 59, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 300, 213, 40, - 300, 340, 93, 59, 223, 402, 403, 44, 320, 224, - 402, 403, 566, 312, 260, 437, 469, 257, 91, 41, - 332, 41, 44, 33, 44, 35, 44, 260, 340, 421, - 40, 585, 331, 43, 125, 45, 251, 60, 58, 59, - 286, 61, 596, 63, 62, 330, 373, 374, 494, 91, - 257, 59, 37, 286, 373, 374, 93, 42, 43, 59, - 45, 364, 47, 278, 364, 280, 91, 282, 283, 260, - 261, 286, 287, 93, 405, 60, 522, 62, 40, 61, - 41, 91, 260, 44, 46, 300, 410, 410, 125, 511, - 91, 312, 93, 260, 340, 420, 58, 58, 59, 332, - 40, 400, 401, 402, 403, 125, 46, 322, 286, 324, - 331, 310, 411, 412, 329, 125, 126, 91, 312, 286, - 335, 406, 421, 260, 414, 523, 414, 415, 37, 344, - 312, 416, 93, 42, 43, 312, 45, 331, 47, 260, - 261, 126, 564, 260, 310, 554, 555, 91, 33, 331, - 35, 60, 41, 62, 331, 40, 40, 372, 43, 61, - 45, 311, 46, 41, 125, 123, 44, 40, 383, 286, - 579, 456, 457, 388, 389, 41, 310, 392, 44, 400, - 401, 402, 403, 320, 58, 41, 523, 260, 44, 41, - 411, 412, 44, 41, 41, 332, 44, 44, 344, 345, - 421, 96, 417, 340, 373, 374, 91, 492, 402, 403, - 495, 58, 59, 286, 499, 332, 41, 126, 260, 44, - 402, 403, 437, 438, 91, 402, 403, 421, 13, 14, - 445, 446, 123, 58, 59, 260, 104, 105, 523, 421, - 125, 126, 44, 580, 286, 58, 93, 300, 301, 302, - 260, 261, 262, 263, 264, 265, 300, 301, 302, 474, - 91, 286, 123, 600, 159, 123, 161, 340, 93, 410, - 44, 486, 93, 44, 41, 93, 286, 44, 125, 33, - 175, 35, 260, 49, 50, 51, 40, 182, 41, 43, - 332, 45, 59, 123, 260, 580, 511, 125, 340, 514, - 125, 516, 40, 313, 123, 257, 280, 281, 282, 283, - 284, 285, 123, 287, 44, 600, 260, 261, 262, 263, - 264, 265, 41, 414, 415, 44, 93, 312, 40, 303, - 340, 341, 342, 343, 58, 550, 346, 91, 58, 58, - 59, 260, 237, 260, 123, 40, 331, 41, 40, 564, - 360, 361, 362, 363, 91, 365, 366, 93, 125, 40, - 370, 371, 372, 373, 374, 125, 40, 40, 61, 123, - 91, 586, 126, 61, 93, 260, 261, 262, 263, 264, - 265, 123, 91, 41, 404, 405, 406, 407, 408, 41, - 360, 125, 402, 403, 414, 415, 416, 417, 418, 419, - 125, 286, 33, 312, 35, 340, 125, 125, 91, 40, - 40, 40, 43, 40, 45, 400, 401, 402, 403, 59, - 430, 41, 331, 59, 44, 395, 411, 412, 313, 260, - 261, 262, 263, 264, 265, 330, 421, 40, 58, 59, - 40, 340, 37, 38, 40, 59, 41, 42, 43, 44, - 45, 260, 47, 414, 415, 340, 341, 342, 343, 125, - 91, 346, 41, 58, 59, 60, 61, 62, 63, 300, - 41, 59, 61, 93, 361, 360, 361, 362, 363, 61, - 365, 366, 59, 41, 46, 370, 44, 372, 373, 374, - 340, 400, 401, 402, 403, 126, 91, 41, 93, 94, - 93, 59, 44, 125, 123, 125, 260, 261, 262, 263, - 264, 265, 421, 59, 125, 346, 40, 402, 403, 41, - 364, 41, 44, 260, 44, 44, 123, 260, 321, 124, - 125, 126, 286, 340, 41, 93, 58, 59, 58, 59, - 41, 340, 512, 123, 41, 430, 59, 517, 371, 286, - 125, 260, 261, 262, 263, 264, 265, 91, 125, 313, - 125, 40, 123, 300, 301, 302, 91, 414, 415, 59, - 125, 93, 125, 93, 41, 58, 125, 41, 123, 41, - 41, 93, 125, 123, 123, 257, 340, 341, 342, 343, - 125, 91, 346, 58, 125, 332, 566, 280, 281, 282, - 283, 284, 285, 125, 287, 125, 360, 361, 362, 363, - 91, 365, 366, 91, 91, 585, 370, 93, 372, 257, - 303, 125, 125, 59, 123, 59, 596, 125, 41, 260, - 261, 262, 263, 264, 265, 37, 38, 346, 40, 41, - 42, 43, 44, 45, 59, 47, 41, 41, 402, 403, - 91, 334, 41, 364, 41, 286, 58, 59, 60, 61, - 62, 63, 37, 38, 7, 40, 41, 42, 43, 44, - 45, 125, 47, 125, 6, 101, 430, 77, 320, 463, - 457, 60, 313, 58, 59, 499, 61, 62, 63, 91, - 59, 93, 94, 107, 475, 414, 415, 487, 216, 536, - 572, 536, 41, 175, 175, 44, 330, 325, 91, 340, - 341, 342, 343, 222, 161, 346, 91, 312, 93, 94, - 59, 123, 124, 125, 126, 31, 260, -1, -1, 360, - 361, 362, 363, 226, 365, 366, 331, -1, -1, 370, - -1, 372, 125, -1, -1, -1, -1, -1, 123, 124, - 125, 126, 286, -1, 93, 280, 281, 282, 283, 284, - 285, -1, 287, -1, -1, -1, 300, 301, 302, -1, - -1, 402, 403, -1, -1, 300, 301, 302, -1, 304, - 280, 281, 282, 283, 284, 285, 125, 287, -1, -1, - -1, -1, -1, -1, 414, 415, -1, -1, 332, 430, - 300, 301, 302, 303, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, 37, 38, -1, - -1, 41, 42, 43, 44, 45, 46, 47, -1, 280, - 281, 282, 283, 284, 285, -1, 287, -1, 58, 59, - 60, 61, 62, 63, -1, 257, -1, -1, 260, 300, - 301, 302, 303, -1, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, 91, 257, 93, 94, 260, 58, 59, 60, 61, - 62, 63, 414, 415, 414, 415, -1, 280, 281, 282, - 283, 284, 285, -1, 287, -1, -1, -1, 310, 311, - 312, -1, -1, -1, 124, 125, 126, -1, 320, 91, - 303, 93, 94, -1, -1, -1, -1, -1, 330, 331, - 332, -1, -1, -1, -1, 310, 311, 312, 340, 280, - 281, 282, 283, 284, 285, 320, 287, -1, -1, -1, - -1, 334, 124, 125, 126, 330, 331, 332, -1, -1, - -1, -1, 303, -1, -1, 340, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, + 61, 62, 63, 120, 124, 154, 41, 46, 41, 46, + 125, 44, 40, 91, 71, 37, 184, 126, 123, 60, + 42, 46, 42, 84, 126, 47, 91, 91, 41, 34, + 35, 44, 91, 91, 59, 40, 420, 98, 125, 100, + 125, 125, 40, 260, 228, 58, 59, 303, 105, 106, + 91, 304, 169, 44, 91, 59, 61, 62, 63, 120, + 46, 63, 37, 38, 69, 70, 71, 42, 43, 286, + 45, 260, 47, 91, 46, 58, 37, 168, 41, 84, + 93, 42, 43, 251, 45, 60, 47, 62, 260, 91, + 258, 41, 97, 98, 44, 100, 59, 59, 260, 59, + 105, 106, 93, 44, 126, 59, 255, 63, 169, 59, + 126, 300, 125, 497, 260, 120, 37, 38, 179, 94, + 304, 42, 43, 37, 45, 123, 47, 260, 42, 43, + 93, 45, 44, 47, 125, 91, 59, 283, 300, 60, + 286, 62, 44, 93, 44, 260, 60, 59, 62, 124, + 46, 126, 93, 286, 300, 216, 260, 162, 163, 103, + 165, 123, 125, 123, 169, 126, 91, 44, 340, 123, + 338, 286, 64, 94, 179, 364, 260, 326, 340, 328, + 46, 186, 260, 127, 128, 129, 130, 131, 132, 41, + 134, 93, 44, 93, 138, 260, 300, 59, 93, 348, + 123, 260, 260, 312, 58, 126, 311, 340, 286, 393, + 154, 216, 126, 125, 382, 220, 93, 332, 364, 260, + 340, 286, 331, 125, 91, 125, 40, 286, 286, 331, + 125, 91, 260, 93, 325, 59, 241, 181, 387, 183, + 260, 93, 260, 392, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 300, 217, 332, 340, 340, 260, 261, 320, + 300, 340, 340, 374, 228, 59, 373, 374, 373, 374, + 312, 332, 441, 402, 403, 257, 312, 257, 499, 340, + 402, 403, 320, 257, 260, 59, 474, 534, 535, 331, + 46, 255, 421, 426, 332, 331, 559, 560, 260, 261, + 91, 33, 340, 35, 44, 61, 527, 44, 40, 334, + 286, 43, 60, 45, 561, 260, 364, 312, 282, 59, + 284, 584, 286, 287, 364, 62, 290, 291, 61, 37, + 38, 312, 409, 39, 42, 43, 331, 45, 471, 47, + 304, 286, 310, 49, 50, 51, 33, 516, 35, 41, + 331, 410, 60, 40, 62, 410, 43, 410, 45, 91, + 402, 403, 326, 420, 328, 410, 402, 403, 310, 333, + 40, 312, 311, 260, 44, 339, 260, 123, 312, 421, + 40, 414, 415, 44, 348, 410, 46, 332, 40, 59, + 331, 528, 310, 125, 126, 420, 410, 331, 58, 286, + 569, 62, 286, 58, 91, 400, 401, 402, 403, 364, + 461, 462, 376, 300, 301, 302, 411, 412, 126, 344, + 345, 402, 403, 387, 41, 37, 421, 44, 392, 393, + 42, 43, 396, 45, 91, 47, 461, 462, 125, 126, + 421, 58, 59, 123, 399, 332, 40, 528, 332, 500, + 44, 46, 40, 123, 330, 125, 123, 421, 46, 400, + 401, 402, 403, 58, 340, 44, 400, 401, 402, 403, + 411, 412, 497, 373, 374, 500, 93, 441, 442, 504, + 421, 41, 40, 58, 44, 449, 450, 421, 46, 280, + 281, 282, 283, 284, 285, 33, 287, 35, 41, 93, + 123, 44, 40, 528, 585, 43, 41, 45, 125, 44, + 41, 410, 303, 44, 126, 479, 59, 41, 91, 41, + 44, 227, 44, 41, 605, 44, 44, 491, 260, 261, + 262, 263, 264, 265, 93, 41, 58, 59, 44, 33, + 44, 35, 93, 334, 13, 14, 40, 61, 260, 43, + 93, 45, 516, 91, 286, 519, 41, 521, 105, 106, + 585, 41, 517, 517, 44, 260, 41, 522, 522, 44, + 123, 93, 40, 260, 261, 262, 263, 264, 265, 59, + 605, 313, 125, 58, 59, 123, 125, 123, 126, 123, + 44, 555, 257, 300, 301, 302, 58, 91, 40, 286, + 97, 58, 260, 125, 312, 569, 260, 123, 340, 341, + 342, 343, 40, 93, 346, 41, 571, 571, 93, 300, + 301, 302, 40, 331, 40, 125, 313, 591, 360, 361, + 362, 363, 126, 365, 366, 590, 590, 93, 370, 371, + 372, 373, 374, 40, 61, 125, 601, 601, 40, 61, + 125, 91, 123, 340, 341, 342, 343, 41, 125, 346, + 49, 50, 51, 41, 125, 125, 163, 91, 165, 340, + 402, 403, 40, 360, 361, 362, 363, 40, 365, 366, + 40, 40, 179, 370, 59, 372, 373, 374, 41, 186, + 59, 44, 400, 401, 402, 403, 40, 340, 430, 40, + 125, 125, 59, 411, 412, 58, 59, 280, 281, 282, + 283, 284, 285, 421, 287, 402, 403, 41, 260, 41, + 59, 61, 260, 261, 262, 263, 264, 265, 37, 38, + 303, 40, 41, 42, 43, 44, 45, 361, 47, 340, + 93, 61, 59, 430, 241, 46, 41, 44, 286, 58, + 59, 60, 61, 62, 63, 37, 38, 93, 40, 41, + 42, 43, 44, 45, 125, 47, 260, 261, 262, 263, + 264, 265, 125, 123, 59, 313, 58, 59, 125, 61, + 62, 63, 91, 40, 93, 94, 44, 91, 364, 123, + 260, 321, 286, 41, 340, 41, 340, 414, 415, 41, + 123, 371, 340, 341, 342, 343, 125, 125, 346, 91, + 59, 93, 94, 125, 123, 124, 125, 126, 40, 313, + 91, 123, 360, 361, 362, 363, 59, 365, 366, 125, + 91, 125, 370, 58, 372, 41, 125, 334, 41, 123, + 123, 123, 124, 125, 126, 125, 340, 341, 342, 343, + 123, 41, 346, 93, 257, 125, 280, 281, 282, 283, + 284, 285, 58, 287, 402, 403, 360, 361, 362, 363, + 125, 365, 366, 91, 91, 91, 370, 257, 372, 303, + 93, 37, 38, 91, 125, 41, 42, 43, 44, 45, + 125, 47, 430, 123, 59, 59, 125, 41, 41, 59, + 44, 41, 58, 59, 60, 61, 62, 63, 402, 403, + 334, 41, 364, 41, 58, 59, 41, 7, 125, 6, + 37, 38, 77, 125, 41, 42, 43, 44, 45, 46, + 47, 102, 504, 324, 462, 91, 430, 93, 94, 414, + 415, 58, 59, 60, 61, 62, 63, 468, 257, 93, + 60, 260, 59, 220, 480, 109, 260, 261, 262, 263, + 264, 265, 41, 492, 577, 44, 230, 541, 124, 125, + 126, 329, 541, 226, 91, 257, 93, 94, 260, 58, + 59, 125, 286, 334, 179, 179, 165, 31, -1, 260, + 261, 262, 263, 264, 265, 41, 300, -1, 44, 260, + -1, 310, 311, 312, -1, -1, -1, 124, 125, 126, + -1, 320, 58, 59, 93, 286, -1, -1, -1, -1, + -1, 330, 331, 332, -1, 286, -1, -1, 310, 311, + 312, 340, -1, -1, -1, -1, -1, -1, 320, 300, + 301, 302, 346, -1, -1, -1, 125, 93, 330, 331, + 332, -1, 260, 261, 262, 263, 264, 265, 340, 37, + 38, 414, 415, 41, 42, 43, 44, 45, 46, 47, + -1, 332, -1, -1, -1, 346, -1, -1, -1, 125, + 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, 91, -1, 93, 94, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 91, -1, 93, 94, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, - -1, -1, -1, 124, 125, 126, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 37, - 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, 93, - 94, 331, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, -1, 42, 43, 44, 45, - 312, 47, -1, -1, -1, 93, 94, -1, -1, -1, - 124, 125, 126, -1, 60, 61, 62, 63, -1, 331, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, -1, - -1, -1, -1, -1, -1, 91, -1, 93, 94, -1, + -1, -1, -1, -1, 41, -1, 312, 44, 91, 280, + 281, 282, 283, 284, 285, -1, 287, -1, -1, -1, + -1, 58, 59, -1, -1, 331, -1, -1, -1, 37, + 38, -1, 303, 41, 42, 43, 44, 45, 46, 47, + -1, -1, 125, -1, -1, 312, 91, -1, -1, -1, + 58, 59, 60, 61, 62, 63, 93, -1, -1, -1, + -1, -1, -1, -1, 331, -1, -1, -1, 37, 38, + -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, + -1, -1, -1, 91, -1, 93, 94, -1, 125, 58, + 59, 60, 61, 62, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 124, 125, 126, -1, + 414, 415, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, 124, 125, 126, -1, -1, + -1, -1, -1, -1, 41, 37, 38, 44, -1, 41, + 42, 43, 44, 45, -1, 47, 91, -1, -1, -1, + -1, 58, 59, -1, 312, 414, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, 280, 281, 282, + 283, 284, 285, 331, 287, -1, -1, 37, 38, -1, + 125, 41, 42, 43, 44, 45, 93, 47, 414, 415, + 303, 93, 94, -1, -1, -1, -1, -1, 58, 59, + 60, 61, 62, 63, -1, 280, 281, 282, 283, 284, + 285, -1, 287, -1, -1, -1, -1, -1, 125, -1, + -1, 334, 124, 125, 126, 300, 301, 302, -1, 304, + -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 124, 125, 126, -1, -1, -1, + -1, -1, 41, -1, 312, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, -1, 331, -1, -1, -1, 37, 38, -1, + -1, -1, 42, 43, 44, 45, -1, 47, -1, 41, + -1, -1, 44, 312, -1, -1, -1, -1, -1, -1, + 60, 61, 62, 63, 93, -1, 58, 59, -1, -1, + -1, 330, 331, -1, -1, 280, 281, 282, 283, 284, + 285, 340, 287, -1, -1, -1, -1, 414, 415, -1, + -1, 91, -1, 93, 94, -1, 125, -1, 303, -1, + -1, 93, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 124, 91, 126, -1, -1, 334, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, -1, -1, -1, -1, -1, -1, 331, + -1, 37, 38, -1, -1, -1, 42, 43, 44, 45, + 46, 47, -1, 91, -1, 41, -1, -1, 44, -1, + -1, -1, 312, -1, 60, 61, 62, 63, -1, -1, + -1, -1, 58, 59, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, -1, -1, 41, -1, 41, 44, + -1, 44, -1, -1, -1, 91, -1, 93, 94, -1, + -1, -1, -1, 58, 59, 58, 59, 93, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 414, 415, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 124, 421, + 126, -1, -1, -1, -1, -1, -1, -1, 93, 125, + 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, -1, 124, -1, - 126, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 312, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 331, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - 93, 94, -1, 58, 59, 60, 61, 62, 63, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, - 421, 124, 125, 126, -1, -1, 330, 331, 93, 94, - -1, 91, 37, 38, 312, -1, 340, 42, 43, 44, - 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, -1, 60, 61, 62, 63, 124, - 125, -1, -1, -1, 41, 125, 41, 44, -1, 44, - -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, - -1, 58, 59, 58, 59, -1, 91, -1, 93, 94, - -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 93, 421, 93, 124, - -1, 126, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, -1, -1, -1, -1, 125, -1, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, 37, + 125, 421, 125, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 312, 47, 280, 281, 282, 283, 284, 285, + -1, 287, -1, -1, 58, 59, 60, 61, 62, 63, + -1, 331, -1, -1, 300, 301, 302, 303, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, + 47, -1, 260, -1, -1, -1, -1, -1, -1, 93, + 94, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, -1, -1, -1, 414, 415, -1, -1, -1, + 124, 125, -1, -1, -1, 303, 93, 94, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 414, 415, 332, -1, -1, 124, 125, 91, + 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, 312, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - 280, 281, 282, 283, 284, 285, -1, 287, 331, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, -1, 47, 303, -1, 93, 94, 312, -1, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, - -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 334, 41, 124, 125, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - -1, -1, 58, 59, -1, 125, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, 312, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, 124, - 125, -1, -1, -1, -1, -1, 331, 93, -1, -1, - -1, -1, -1, 91, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, 125, - -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, 93, 94, -1, - -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, 414, 415, 414, - 415, -1, 58, 59, 60, 61, 62, 63, 124, 125, - 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, - -1, -1, 37, 38, 312, -1, 41, 42, 43, 44, - 45, -1, 47, 303, -1, -1, -1, 93, 94, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, - 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, - -1, -1, 260, 41, 334, -1, 44, 312, 124, 125, - -1, -1, 60, 61, 62, 63, -1, -1, 93, 94, - 58, 59, 280, 281, 282, 283, 284, 285, 286, 287, + -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, -1, 47, 124, 125, -1, + -1, -1, -1, -1, -1, 93, 94, 58, 59, 60, + 61, 62, 63, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 124, 125, 414, 415, + 37, 38, 93, 94, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, 312, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, 414, + 415, 414, 415, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + -1, 45, -1, 47, -1, 312, 93, 94, 280, 281, + 282, 283, 284, 285, -1, 287, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, + 302, 303, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 303, 94, -1, -1, 124, - 125, -1, 400, 401, -1, 93, 404, 405, 406, 407, + 94, -1, -1, -1, -1, -1, 400, 401, -1, -1, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, + 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 400, 401, 312, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, 37, 38, -1, -1, + -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, 312, -1, -1, -1, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, 312, -1, 94, -1, -1, -1, -1, 60, 61, + 62, 63, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 124, 421, 126, -1, -1, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, -1, 312, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 41, 421, 332, 44, 124, -1, 126, -1, - -1, -1, -1, -1, 379, -1, -1, 125, -1, 58, - 59, -1, -1, -1, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, - -1, -1, 42, 43, 93, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, 312, 432, -1, 59, - 60, 61, 62, 63, 439, -1, -1, -1, 414, 415, - -1, -1, -1, -1, -1, -1, 125, 37, 38, -1, + 418, 419, 124, 421, 126, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, 312, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 421, -1, -1, -1, -1, 383, -1, 331, -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, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, -1, -1, 436, -1, + -1, -1, -1, -1, -1, 443, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, 421, 37, 38, + -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, + -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, + 59, 60, 61, 62, 63, -1, -1, -1, -1, 507, + 331, -1, -1, -1, 37, 38, -1, 515, 41, 42, + 43, -1, 45, -1, 47, -1, -1, -1, 526, -1, + 312, -1, -1, -1, -1, 94, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 557, + -1, -1, -1, -1, -1, 124, -1, 126, -1, -1, + -1, 94, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 586, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 421, 124, -1, 126, -1, -1, 604, -1, -1, -1, + -1, 609, -1, -1, -1, -1, 614, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, + 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, - -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, - -1, -1, -1, -1, 124, -1, 126, 502, -1, -1, - -1, -1, -1, -1, 94, 510, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 521, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 312, 414, 415, - 416, 417, 418, 419, 124, 421, 126, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 552, -1, -1, - -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, 400, 401, 581, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 599, 421, -1, -1, -1, 604, - -1, -1, -1, -1, 609, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, - -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 37, 38, 414, 415, -1, 42, + 60, 61, 62, 63, 37, 38, -1, 94, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, 312, -1, -1, -1, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, 37, 38, -1, -1, 41, 42, 43, - -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, 94, 312, -1, -1, -1, 60, 61, 62, 63, - -1, -1, -1, -1, -1, 414, 415, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 124, 421, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, + 63, -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, 37, 38, -1, -1, 41, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, - 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, 37, 38, -1, 94, - 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, -1, -1, -1, 94, -1, -1, 124, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, - -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, + -1, 94, -1, 312, 124, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, 124, -1, 126, -1, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, -1, -1, -1, -1, 94, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 124, 421, 126, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, -1, 47, 124, -1, 126, -1, -1, 312, -1, + 45, -1, 47, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, 37, - 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - -1, -1, 60, 61, 62, 63, -1, 400, 401, 402, + -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, + 37, 38, 312, -1, -1, 42, 43, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, 331, 59, 60, 61, 62, 63, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, 124, + 125, -1, -1, -1, -1, -1, -1, 94, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, -1, 124, -1, 126, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + -1, 421, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, 124, - 125, -1, -1, -1, -1, -1, 94, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 124, 421, 126, 37, + -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, + -1, -1, 37, 38, -1, 312, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 331, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, 37, 38, 312, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, 93, 94, -1, -1, -1, - -1, -1, -1, 331, 59, 60, 61, 62, 63, -1, - -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, - 331, -1, -1, -1, -1, -1, -1, -1, -1, 94, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, 124, - -1, 126, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, -1, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 421, 37, 38, -1, 312, -1, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 331, 60, 61, 62, 63, 37, 38, - -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 400, 401, -1, 94, 404, + 58, 59, 60, 61, 62, 63, 37, 38, -1, 94, + -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + 61, 62, 63, -1, -1, 93, 94, -1, -1, 124, + -1, 126, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, 41, 411, 412, 44, 414, 415, 416, + 417, 418, 419, 94, 421, -1, 124, 125, -1, -1, + 58, 59, -1, 61, -1, 63, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 312, 47, -1, -1, -1, + -1, -1, -1, 124, -1, 126, -1, 58, 59, 60, + 61, 62, 63, -1, 331, 93, -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, 93, 94, -1, 400, 401, 125, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, - -1, -1, -1, -1, -1, 94, -1, -1, 124, -1, - 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, -1, 124, -1, 126, 37, 38, - -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, 312, -1, 58, - 59, 60, 61, 62, 63, 37, 38, -1, -1, -1, - 42, 43, -1, 45, -1, 47, 331, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, - 62, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 94, 421, -1, 124, 125, -1, -1, -1, + -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, + 62, 63, -1, -1, -1, -1, -1, 312, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 331, -1, 37, 38, + -1, -1, 94, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, 312, 124, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 331, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 126, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, - -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 124, 421, 126, -1, -1, + -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, 421, -1, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 37, + 421, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 60, 61, 62, 63, 37, 38, 312, -1, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, -1, 60, 61, 62, - 63, -1, -1, 312, 94, -1, -1, -1, -1, -1, + -1, -1, 60, -1, 62, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 37, + 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, + 312, -1, -1, -1, -1, -1, -1, -1, 126, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, 58, 59, 60, + 61, 62, 63, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, - -1, 94, 38, -1, 124, 41, 126, 43, 44, 45, + -1, -1, 331, -1, -1, -1, 124, 125, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, -1, 415, 416, 417, 418, 419, -1, 421, + -1, -1, 38, 124, 125, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, - -1, 124, -1, 126, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, 93, 94, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, 124, 125, - 312, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, -1, 47, -1, 331, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 411, 412, -1, -1, -1, 416, 417, 418, + 419, -1, 421, -1, -1, -1, 38, 93, 94, 41, + -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, 312, -1, -1, -1, 124, 125, + -1, -1, -1, 38, -1, -1, 41, -1, -1, 44, + -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, + -1, 93, 94, 58, 59, -1, 61, 41, 63, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, 41, 58, 59, 44, 61, -1, 63, + -1, -1, 124, 125, -1, -1, -1, -1, 93, 94, + 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, -1, 400, 401, 402, 403, -1, -1, -1, 124, + 125, -1, -1, 411, 412, 93, 94, -1, -1, 38, + -1, -1, 41, 421, -1, 44, -1, -1, -1, -1, + 124, 125, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, 38, 124, 125, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, + 63, -1, 400, 401, 93, 94, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -1, -1, -1, 124, 125, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 38, 124, 125, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 400, 401, 93, 94, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, -1, -1, 124, 125, -1, -1, -1, 411, - 412, -1, 312, -1, -1, -1, -1, -1, -1, 421, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 331, 47, -1, -1, -1, -1, -1, -1, 312, - -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, 43, 44, 45, -1, -1, -1, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 124, - 125, 411, 412, -1, -1, 415, 416, 417, 418, 419, - -1, 421, 93, 94, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, -1, -1, 416, 417, 418, 419, -1, 421, 38, - -1, -1, 41, 124, 125, 44, -1, -1, -1, -1, + 58, 59, -1, 61, -1, 63, -1, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, + 59, -1, 61, -1, 63, 93, 94, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 58, 59, -1, - 61, -1, 63, -1, -1, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, - 63, -1, 93, 94, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 93, 94, -1, 124, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, + 416, 417, 418, 419, 93, 94, 124, 125, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -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, 58, + 59, -1, 61, -1, 63, 124, 125, -1, 400, 401, + -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 38, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, - 59, 44, 61, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, -1, 61, 38, - 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, -1, -1, -1, 58, - 59, -1, 61, -1, 63, 404, 405, 406, 407, 408, - 93, 94, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, 93, 94, -1, 38, -1, -1, - 41, 124, 125, 44, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, - 61, -1, 63, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, - -1, -1, -1, 124, 125, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 38, -1, -1, 41, 58, 59, 44, 61, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + 414, 415, 416, 417, 418, 419, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, 38, -1, -1, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, - 93, 94, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, 38, 93, 94, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, 41, 58, 59, 44, 61, -1, - 63, -1, -1, -1, -1, -1, -1, 124, 125, -1, - -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, - -1, -1, -1, 41, -1, 33, 44, 35, -1, -1, - 93, 94, 40, -1, -1, 43, -1, 45, -1, -1, - 58, 59, -1, 61, -1, 63, 93, 94, -1, -1, - -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, -1, 124, 125, -1, - -1, -1, -1, 91, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 404, 405, 406, 407, 408, 124, 125, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 126, -1, + 419, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 38, -1, + -1, 41, 124, 125, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, -1, -1, 38, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 61, -1, 63, 93, 94, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 93, 94, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, - 33, -1, 35, -1, -1, -1, -1, 40, -1, 33, - 43, 35, 45, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, 58, -1, -1, -1, -1, - -1, -1, 126, -1, -1, -1, -1, 61, -1, -1, - -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, - -1, 404, 405, 406, 407, 408, -1, 91, 286, -1, - -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, - 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, - 417, 418, 419, 126, -1, 313, -1, -1, -1, -1, - -1, -1, 126, -1, -1, -1, 33, -1, 35, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, - -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, - 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, - 417, 418, 419, -1, 91, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 401, 402, 403, 414, 415, 416, 417, - 418, 419, 286, 33, -1, 35, 123, -1, -1, 126, - 40, -1, 33, 43, 35, 45, -1, -1, -1, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, 313, - -1, 61, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, 340, -1, -1, -1, - -1, 91, 346, 286, -1, -1, -1, -1, -1, -1, - 91, -1, 286, -1, -1, -1, -1, -1, -1, -1, + 419, -1, -1, 124, 125, -1, 38, -1, -1, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, 41, 411, 412, 44, 414, 415, 416, 417, 418, + 419, 93, 94, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, 35, -1, -1, -1, + -1, 40, 124, 125, 43, -1, 45, 33, -1, 35, + -1, -1, -1, 93, 40, -1, -1, 43, -1, 45, + -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, + -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, + -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 404, 405, 406, 407, 408, 126, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 313, -1, -1, -1, -1, -1, 126, -1, -1, 313, + -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, + -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, 404, 405, 406, 407, 408, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, 414, 415, 416, 417, 418, 419, 91, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 340, 402, 403, - -1, -1, -1, 346, -1, -1, 340, -1, -1, -1, - -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, 123, -1, -1, 126, -1, -1, 286, -1, -1, + -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, + 286, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 313, -1, -1, -1, -1, 61, + -1, -1, 404, 405, 406, 407, 408, 313, -1, -1, + -1, -1, 414, 415, 416, 417, 418, 419, -1, -1, + -1, 340, -1, -1, -1, -1, -1, 346, -1, 91, + -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, + 346, -1, -1, -1, 404, 405, 406, 407, 408, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + -1, -1, -1, -1, 126, -1, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, 33, -1, + 35, -1, 401, 402, 403, 40, -1, -1, 43, -1, + 45, -1, -1, -1, 400, 286, 402, 403, 260, 261, + 262, 263, 264, 265, -1, -1, 61, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, + -1, -1, 313, 40, 286, -1, 43, -1, 45, -1, + -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, + -1, 313, -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, - 403, -1, -1, -1, -1, -1, -1, -1, 402, 403, - -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, + -1, 126, -1, -1, 91, -1, -1, -1, 340, -1, + -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, -1, -1, -1, 126, + -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, - 260, 261, 262, 263, 264, 265, -1, -1, -1, 260, - 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 286, -1, -1, -1, - -1, -1, -1, -1, -1, 286, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, + -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 313, -1, 402, 403, -1, -1, -1, - -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 340, -1, -1, -1, -1, -1, 346, -1, -1, 340, - -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, + -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, + 402, 403, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, + -1, 346, -1, -1, -1, -1, 313, -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, 340, -1, -1, -1, -1, -1, 346, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, - -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -2018,94 +2044,104 @@ public function yyparse($yyLex) { case 82: #line 484 "src/main/jay/grammars/xp.jay" { - $yyVal= new InstanceCreationNode(); + $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; $yyVal->body= NULL; } break; - case 83: #line 493 "src/main/jay/grammars/xp.jay" + case 83: #line 490 "src/main/jay/grammars/xp.jay" + { + $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); + } break; + + case 84: #line 493 "src/main/jay/grammars/xp.jay" + { + $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); + } break; + + case 85: #line 499 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 84: #line 494 "src/main/jay/grammars/xp.jay" + case 86: #line 500 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 85: #line 495 "src/main/jay/grammars/xp.jay" + case 87: #line 501 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyLex->create(new ReturnNode($yyVals[-1+$yyTop]))); } break; - case 86: #line 499 "src/main/jay/grammars/xp.jay" + case 88: #line 505 "src/main/jay/grammars/xp.jay" { $yyVal= array(NULL, NULL); } break; - case 87: #line 500 "src/main/jay/grammars/xp.jay" + case 89: #line 506 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop][0]['type']); } break; - case 88: #line 501 "src/main/jay/grammars/xp.jay" + case 90: #line 507 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 89: #line 505 "src/main/jay/grammars/xp.jay" + case 91: #line 511 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 90: #line 506 "src/main/jay/grammars/xp.jay" + case 92: #line 512 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 91: #line 510 "src/main/jay/grammars/xp.jay" + case 93: #line 516 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 92: #line 511 "src/main/jay/grammars/xp.jay" + case 94: #line 517 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 93: #line 515 "src/main/jay/grammars/xp.jay" + case 95: #line 521 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 94: #line 516 "src/main/jay/grammars/xp.jay" + case 96: #line 522 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[0+$yyTop], 'vararg' => TRUE), $yyVals[-2+$yyTop]); } break; - case 95: #line 517 "src/main/jay/grammars/xp.jay" + case 97: #line 523 "src/main/jay/grammars/xp.jay" { $yyVal= array('assign' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 96: #line 521 "src/main/jay/grammars/xp.jay" + case 98: #line 527 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[0+$yyTop], 'check' => TRUE); } break; - case 97: #line 522 "src/main/jay/grammars/xp.jay" + case 99: #line 528 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[-1+$yyTop], 'check' => FALSE); } break; - case 98: #line 526 "src/main/jay/grammars/xp.jay" + case 100: #line 532 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 99: #line 527 "src/main/jay/grammars/xp.jay" + case 101: #line 533 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 106: #line 546 "src/main/jay/grammars/xp.jay" + case 108: #line 552 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 108: #line 551 "src/main/jay/grammars/xp.jay" + case 110: #line 557 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 109: #line 552 "src/main/jay/grammars/xp.jay" + case 111: #line 558 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 110: #line 556 "src/main/jay/grammars/xp.jay" + case 112: #line 562 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 111: #line 556 "src/main/jay/grammars/xp.jay" + case 113: #line 562 "src/main/jay/grammars/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 112: #line 559 "src/main/jay/grammars/xp.jay" + case 114: #line 565 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 113: #line 559 "src/main/jay/grammars/xp.jay" + case 115: #line 565 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 114: #line 564 "src/main/jay/grammars/xp.jay" + case 116: #line 570 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 115: #line 564 "src/main/jay/grammars/xp.jay" + case 117: #line 570 "src/main/jay/grammars/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2117,168 +2153,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 116: #line 574 "src/main/jay/grammars/xp.jay" + case 118: #line 580 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 117: #line 574 "src/main/jay/grammars/xp.jay" + case 119: #line 580 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 118: #line 579 "src/main/jay/grammars/xp.jay" + case 120: #line 585 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 119: #line 579 "src/main/jay/grammars/xp.jay" + case 121: #line 585 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 120: #line 583 "src/main/jay/grammars/xp.jay" + case 122: #line 589 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 121: #line 583 "src/main/jay/grammars/xp.jay" + case 123: #line 589 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 122: #line 587 "src/main/jay/grammars/xp.jay" + case 124: #line 593 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 123: #line 587 "src/main/jay/grammars/xp.jay" + case 125: #line 593 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 124: #line 591 "src/main/jay/grammars/xp.jay" + case 126: #line 597 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 126: #line 592 "src/main/jay/grammars/xp.jay" + case 128: #line 598 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 128: #line 593 "src/main/jay/grammars/xp.jay" + case 130: #line 599 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 129: #line 593 "src/main/jay/grammars/xp.jay" + case 131: #line 599 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 130: #line 596 "src/main/jay/grammars/xp.jay" + case 132: #line 602 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 131: #line 596 "src/main/jay/grammars/xp.jay" + case 133: #line 602 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 132: #line 601 "src/main/jay/grammars/xp.jay" + case 134: #line 607 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 133: #line 604 "src/main/jay/grammars/xp.jay" + case 135: #line 610 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 135: #line 611 "src/main/jay/grammars/xp.jay" + case 137: #line 617 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 136: #line 612 "src/main/jay/grammars/xp.jay" + case 138: #line 618 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 137: #line 616 "src/main/jay/grammars/xp.jay" + case 139: #line 622 "src/main/jay/grammars/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 138: #line 619 "src/main/jay/grammars/xp.jay" + case 140: #line 625 "src/main/jay/grammars/xp.jay" { $v= new VariableNode($yyVals[-2+$yyTop]); $yyVal= array('i' => array($yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => $v, 'expression' => $yyVals[0+$yyTop])))), 'v' => array($v)); } break; - case 139: #line 626 "src/main/jay/grammars/xp.jay" + case 141: #line 632 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 140: #line 627 "src/main/jay/grammars/xp.jay" + case 142: #line 633 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 141: #line 631 "src/main/jay/grammars/xp.jay" + case 143: #line 637 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 142: #line 637 "src/main/jay/grammars/xp.jay" + case 144: #line 643 "src/main/jay/grammars/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 143: #line 638 "src/main/jay/grammars/xp.jay" + case 145: #line 644 "src/main/jay/grammars/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 144: #line 642 "src/main/jay/grammars/xp.jay" + case 146: #line 648 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 146: #line 647 "src/main/jay/grammars/xp.jay" + case 148: #line 653 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 147: #line 648 "src/main/jay/grammars/xp.jay" + case 149: #line 654 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 148: #line 652 "src/main/jay/grammars/xp.jay" + case 150: #line 658 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 149: #line 652 "src/main/jay/grammars/xp.jay" + case 151: #line 658 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 150: #line 656 "src/main/jay/grammars/xp.jay" + case 152: #line 662 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 151: #line 656 "src/main/jay/grammars/xp.jay" + case 153: #line 662 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 152: #line 662 "src/main/jay/grammars/xp.jay" + case 154: #line 668 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 153: #line 663 "src/main/jay/grammars/xp.jay" + case 155: #line 669 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 154: #line 667 "src/main/jay/grammars/xp.jay" + case 156: #line 673 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 155: #line 668 "src/main/jay/grammars/xp.jay" + case 157: #line 674 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 156: #line 668 "src/main/jay/grammars/xp.jay" + case 158: #line 674 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 157: #line 673 "src/main/jay/grammars/xp.jay" + case 159: #line 679 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 158: #line 674 "src/main/jay/grammars/xp.jay" + case 160: #line 680 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 159: #line 678 "src/main/jay/grammars/xp.jay" + case 161: #line 684 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 160: #line 679 "src/main/jay/grammars/xp.jay" + case 162: #line 685 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 161: #line 683 "src/main/jay/grammars/xp.jay" + case 163: #line 689 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 162: #line 683 "src/main/jay/grammars/xp.jay" + case 164: #line 689 "src/main/jay/grammars/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2291,36 +2327,36 @@ public function yyparse($yyLex) { } } break; - case 163: #line 697 "src/main/jay/grammars/xp.jay" + case 165: #line 703 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 164: #line 698 "src/main/jay/grammars/xp.jay" + case 166: #line 704 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 165: #line 702 "src/main/jay/grammars/xp.jay" + case 167: #line 708 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 167: #line 707 "src/main/jay/grammars/xp.jay" + case 169: #line 713 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 168: #line 707 "src/main/jay/grammars/xp.jay" + case 170: #line 713 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 169: #line 715 "src/main/jay/grammars/xp.jay" + case 171: #line 721 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 171: #line 720 "src/main/jay/grammars/xp.jay" + case 173: #line 726 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 172: #line 721 "src/main/jay/grammars/xp.jay" + case 174: #line 727 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 173: #line 725 "src/main/jay/grammars/xp.jay" + case 175: #line 731 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 175: #line 730 "src/main/jay/grammars/xp.jay" + case 177: #line 736 "src/main/jay/grammars/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2328,44 +2364,44 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 176: #line 736 "src/main/jay/grammars/xp.jay" + case 178: #line 742 "src/main/jay/grammars/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 177: #line 741 "src/main/jay/grammars/xp.jay" + case 179: #line 747 "src/main/jay/grammars/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 178: #line 749 "src/main/jay/grammars/xp.jay" + case 180: #line 755 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 179: #line 752 "src/main/jay/grammars/xp.jay" + case 181: #line 758 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 180: #line 755 "src/main/jay/grammars/xp.jay" + case 182: #line 761 "src/main/jay/grammars/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 181: #line 758 "src/main/jay/grammars/xp.jay" + case 183: #line 764 "src/main/jay/grammars/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 182: #line 764 "src/main/jay/grammars/xp.jay" + case 184: #line 770 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 183: #line 764 "src/main/jay/grammars/xp.jay" + case 185: #line 770 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2373,7 +2409,7 @@ public function yyparse($yyLex) { } } break; - case 184: #line 770 "src/main/jay/grammars/xp.jay" + case 186: #line 776 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2381,10 +2417,10 @@ public function yyparse($yyLex) { } } break; - case 185: #line 776 "src/main/jay/grammars/xp.jay" + case 187: #line 782 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 186: #line 776 "src/main/jay/grammars/xp.jay" + case 188: #line 782 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2395,10 +2431,10 @@ public function yyparse($yyLex) { } } break; - case 187: #line 785 "src/main/jay/grammars/xp.jay" + case 189: #line 791 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 188: #line 785 "src/main/jay/grammars/xp.jay" + case 190: #line 791 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2410,10 +2446,10 @@ public function yyparse($yyLex) { } } break; - case 189: #line 795 "src/main/jay/grammars/xp.jay" + case 191: #line 801 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 190: #line 795 "src/main/jay/grammars/xp.jay" + case 192: #line 801 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2424,43 +2460,43 @@ public function yyparse($yyLex) { } } break; - case 191: #line 804 "src/main/jay/grammars/xp.jay" + case 193: #line 810 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 192: #line 807 "src/main/jay/grammars/xp.jay" + case 194: #line 813 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 193: #line 810 "src/main/jay/grammars/xp.jay" + case 195: #line 816 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 194: #line 813 "src/main/jay/grammars/xp.jay" + case 196: #line 819 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 195: #line 816 "src/main/jay/grammars/xp.jay" + case 197: #line 822 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 196: #line 819 "src/main/jay/grammars/xp.jay" + case 198: #line 825 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 197: #line 822 "src/main/jay/grammars/xp.jay" + case 199: #line 828 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 198: #line 826 "src/main/jay/grammars/xp.jay" + case 200: #line 832 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2468,7 +2504,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 199: #line 832 "src/main/jay/grammars/xp.jay" + case 201: #line 838 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2476,7 +2512,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 200: #line 838 "src/main/jay/grammars/xp.jay" + case 202: #line 844 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2484,17 +2520,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 201: #line 844 "src/main/jay/grammars/xp.jay" + case 203: #line 850 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 202: #line 849 "src/main/jay/grammars/xp.jay" + case 204: #line 855 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-3+$yyTop], $yyVals[-1+$yyTop])); } break; - case 203: #line 849 "src/main/jay/grammars/xp.jay" + case 205: #line 855 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2502,7 +2538,7 @@ public function yyparse($yyLex) { } } break; - case 204: #line 855 "src/main/jay/grammars/xp.jay" + case 206: #line 861 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2512,32 +2548,32 @@ public function yyparse($yyLex) { } } break; - case 205: #line 866 "src/main/jay/grammars/xp.jay" + case 207: #line 872 "src/main/jay/grammars/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 206: #line 869 "src/main/jay/grammars/xp.jay" + case 208: #line 875 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 207: #line 875 "src/main/jay/grammars/xp.jay" + case 209: #line 881 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 209: #line 880 "src/main/jay/grammars/xp.jay" + case 211: #line 886 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 210: #line 881 "src/main/jay/grammars/xp.jay" + case 212: #line 887 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 211: #line 885 "src/main/jay/grammars/xp.jay" + case 213: #line 891 "src/main/jay/grammars/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 212: #line 886 "src/main/jay/grammars/xp.jay" + case 214: #line 892 "src/main/jay/grammars/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 213: #line 890 "src/main/jay/grammars/xp.jay" + case 215: #line 896 "src/main/jay/grammars/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2545,282 +2581,282 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 214: #line 896 "src/main/jay/grammars/xp.jay" + case 216: #line 902 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 215: #line 896 "src/main/jay/grammars/xp.jay" + case 217: #line 902 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 216: #line 897 "src/main/jay/grammars/xp.jay" + case 218: #line 903 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 217: #line 898 "src/main/jay/grammars/xp.jay" + case 219: #line 904 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 218: #line 899 "src/main/jay/grammars/xp.jay" + case 220: #line 905 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 219: #line 900 "src/main/jay/grammars/xp.jay" + case 221: #line 906 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 220: #line 901 "src/main/jay/grammars/xp.jay" + case 222: #line 907 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 221: #line 905 "src/main/jay/grammars/xp.jay" + case 223: #line 911 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 222: #line 908 "src/main/jay/grammars/xp.jay" + case 224: #line 914 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 223: #line 914 "src/main/jay/grammars/xp.jay" + case 225: #line 920 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 225: #line 919 "src/main/jay/grammars/xp.jay" + case 227: #line 925 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 226: #line 920 "src/main/jay/grammars/xp.jay" + case 228: #line 926 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 227: #line 924 "src/main/jay/grammars/xp.jay" + case 229: #line 930 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 229: #line 929 "src/main/jay/grammars/xp.jay" + case 231: #line 935 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 230: #line 930 "src/main/jay/grammars/xp.jay" + case 232: #line 936 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 231: #line 934 "src/main/jay/grammars/xp.jay" + case 233: #line 940 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 232: #line 935 "src/main/jay/grammars/xp.jay" + case 234: #line 941 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 233: #line 936 "src/main/jay/grammars/xp.jay" + case 235: #line 942 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 234: #line 937 "src/main/jay/grammars/xp.jay" + case 236: #line 943 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 235: #line 938 "src/main/jay/grammars/xp.jay" + case 237: #line 944 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 236: #line 939 "src/main/jay/grammars/xp.jay" + case 238: #line 945 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 237: #line 940 "src/main/jay/grammars/xp.jay" + case 239: #line 946 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 238: #line 941 "src/main/jay/grammars/xp.jay" + case 240: #line 947 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 239: #line 942 "src/main/jay/grammars/xp.jay" + case 241: #line 948 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 240: #line 943 "src/main/jay/grammars/xp.jay" + case 242: #line 949 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 241: #line 944 "src/main/jay/grammars/xp.jay" + case 243: #line 950 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 242: #line 945 "src/main/jay/grammars/xp.jay" + case 244: #line 951 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 243: #line 949 "src/main/jay/grammars/xp.jay" + case 245: #line 955 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 950 "src/main/jay/grammars/xp.jay" + case 246: #line 956 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 951 "src/main/jay/grammars/xp.jay" + case 247: #line 957 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 952 "src/main/jay/grammars/xp.jay" + case 248: #line 958 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 953 "src/main/jay/grammars/xp.jay" + case 249: #line 959 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 954 "src/main/jay/grammars/xp.jay" + case 250: #line 960 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 955 "src/main/jay/grammars/xp.jay" + case 251: #line 961 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 250: #line 956 "src/main/jay/grammars/xp.jay" + case 252: #line 962 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 251: #line 960 "src/main/jay/grammars/xp.jay" + case 253: #line 966 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 252: #line 961 "src/main/jay/grammars/xp.jay" + case 254: #line 967 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 253: #line 962 "src/main/jay/grammars/xp.jay" + case 255: #line 968 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 254: #line 963 "src/main/jay/grammars/xp.jay" + case 256: #line 969 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 964 "src/main/jay/grammars/xp.jay" + case 257: #line 970 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 965 "src/main/jay/grammars/xp.jay" + case 258: #line 971 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 966 "src/main/jay/grammars/xp.jay" + case 259: #line 972 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 967 "src/main/jay/grammars/xp.jay" + case 260: #line 973 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 259: #line 968 "src/main/jay/grammars/xp.jay" + case 261: #line 974 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 260: #line 969 "src/main/jay/grammars/xp.jay" + case 262: #line 975 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 261: #line 970 "src/main/jay/grammars/xp.jay" + case 263: #line 976 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 262: #line 971 "src/main/jay/grammars/xp.jay" + case 264: #line 977 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 263: #line 975 "src/main/jay/grammars/xp.jay" + case 265: #line 981 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 264: #line 976 "src/main/jay/grammars/xp.jay" + case 266: #line 982 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 265: #line 977 "src/main/jay/grammars/xp.jay" + case 267: #line 983 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 266: #line 978 "src/main/jay/grammars/xp.jay" + case 268: #line 984 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 267: #line 979 "src/main/jay/grammars/xp.jay" + case 269: #line 985 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 268: #line 980 "src/main/jay/grammars/xp.jay" + case 270: #line 986 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 269: #line 984 "src/main/jay/grammars/xp.jay" + case 271: #line 990 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 270: #line 985 "src/main/jay/grammars/xp.jay" + case 272: #line 991 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 271: #line 990 "src/main/jay/grammars/xp.jay" + case 273: #line 996 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 273: #line 995 "src/main/jay/grammars/xp.jay" + case 275: #line 1001 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 274: #line 996 "src/main/jay/grammars/xp.jay" + case 276: #line 1002 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 275: #line 1000 "src/main/jay/grammars/xp.jay" + case 277: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 276: #line 1000 "src/main/jay/grammars/xp.jay" + case 278: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 277: #line 1003 "src/main/jay/grammars/xp.jay" + case 279: #line 1009 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop], $yyVals[-1+$yyTop])); } break; - case 278: #line 1006 "src/main/jay/grammars/xp.jay" + case 280: #line 1012 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop], NULL, $yyVals[-2+$yyTop])); } break; - case 279: #line 1006 "src/main/jay/grammars/xp.jay" + case 281: #line 1012 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 280: #line 1009 "src/main/jay/grammars/xp.jay" + case 282: #line 1015 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, $yyVals[-1+$yyTop])); } break; - case 281: #line 1009 "src/main/jay/grammars/xp.jay" + case 283: #line 1015 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 282: #line 1015 "src/main/jay/grammars/xp.jay" + case 284: #line 1021 "src/main/jay/grammars/xp.jay" { $yyVal= FALSE; } break; - case 283: #line 1016 "src/main/jay/grammars/xp.jay" + case 285: #line 1022 "src/main/jay/grammars/xp.jay" { $yyVal= TRUE; } break; - case 290: #line 1034 "src/main/jay/grammars/xp.jay" + case 292: #line 1040 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 291: #line 1035 "src/main/jay/grammars/xp.jay" + case 293: #line 1041 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 292: #line 1039 "src/main/jay/grammars/xp.jay" + case 294: #line 1045 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 293: #line 1043 "src/main/jay/grammars/xp.jay" + case 295: #line 1049 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 294: #line 1047 "src/main/jay/grammars/xp.jay" + case 296: #line 1053 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 295: #line 1048 "src/main/jay/grammars/xp.jay" + case 297: #line 1054 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 297: #line 1053 "src/main/jay/grammars/xp.jay" + case 299: #line 1059 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 298: #line 1057 "src/main/jay/grammars/xp.jay" + case 300: #line 1063 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 299: #line 1058 "src/main/jay/grammars/xp.jay" + case 301: #line 1064 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 300: #line 1064 "src/main/jay/grammars/xp.jay" + case 302: #line 1070 "src/main/jay/grammars/xp.jay" { $yyVal= 0; } break; - case 301: #line 1065 "src/main/jay/grammars/xp.jay" + case 303: #line 1071 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 302: #line 1069 "src/main/jay/grammars/xp.jay" + case 304: #line 1075 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 303: #line 1070 "src/main/jay/grammars/xp.jay" + case 305: #line 1076 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 304: #line 1074 "src/main/jay/grammars/xp.jay" + case 306: #line 1080 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 305: #line 1075 "src/main/jay/grammars/xp.jay" + case 307: #line 1081 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 306: #line 1076 "src/main/jay/grammars/xp.jay" + case 308: #line 1082 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 307: #line 1077 "src/main/jay/grammars/xp.jay" + case 309: #line 1083 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 308: #line 1078 "src/main/jay/grammars/xp.jay" + case 310: #line 1084 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 309: #line 1079 "src/main/jay/grammars/xp.jay" + case 311: #line 1085 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 310: #line 1080 "src/main/jay/grammars/xp.jay" + case 312: #line 1086 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 311: #line 1081 "src/main/jay/grammars/xp.jay" + case 313: #line 1087 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 2824 "-" +#line 2860 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php index ceec623a9..8aed76173 100644 --- a/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/xp/AnnotationTest.class.php @@ -13,6 +13,8 @@ use xp\compiler\ast\ArrayNode; use xp\compiler\ast\MapNode; use xp\compiler\ast\InstanceCreationNode; +use xp\compiler\ast\ConstantAccessNode; +use xp\compiler\ast\StaticMemberAccessNode; /** * TestCase @@ -257,4 +259,26 @@ public function newinstance_fully_qualified() { $this->parseMethodWithAnnotations('[@action(new unittest.actions.IsPlatform("WIN"))]') ); } + + #[@test] + public function constant_reference() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'inject', + 'parameters' => array('name' => new ConstantAccessNode(new TypeName('self'), 'CONNECTION_DSN')) + ))), + $this->parseMethodWithAnnotations('[@inject(name = self::CONNECTION_DSN)]') + ); + } + + #[@test] + public function static_member() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'value', + 'parameters' => array('default' => new StaticMemberAccessNode(new TypeName('CommandLine'), 'UNIX')) + ))), + $this->parseMethodWithAnnotations('[@value(CommandLine::$UNIX)]') + ); + } } From 173ecc1c81e22b66bd886d969aa96533d6a214c4 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Tue, 15 Oct 2013 10:41:57 +0200 Subject: [PATCH 03/13] - Support "new T()", "T::const" and "T::$static" inside annotations [PHP] # See issue #36 --- src/main/jay/grammars/php.jay | 23 +- .../xp/compiler/syntax/php/Parser.class.php | 2397 +++++++++-------- .../tests/syntax/php/AnnotationTest.class.php | 54 + 3 files changed, 1284 insertions(+), 1190 deletions(-) diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index 1cfab5e05..0eff70ae3 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -339,7 +339,7 @@ annotation: $$= $yyLex->create(new AnnotationNode()); $$->type= $2; } - | '@' qualifiedname '(' literal ')' { + | '@' qualifiedname '(' annotationvalue ')' { $$= $yyLex->create(new AnnotationNode()); $$->type= $2; $4 && $$->parameters= array('default' => $4); @@ -357,10 +357,27 @@ annotationmembers: ; annotationmember: - T_WORD '=' literal { $$= array($1 => $3); } - | T_CLASS '=' literal { $$= array($1 => $3); } + T_WORD '=' annotationvalue { $$= array($1 => $3); } + | T_CLASS '=' annotationvalue { $$= array($1 => $3); } ; +annotationvalue: + literal + | T_NEW typename '(' expressionlist_opt ')' { + $$= $yyLex->create(new InstanceCreationNode()); + $$->type= $2; + $$->parameters= $4; + $$->body= NULL; + } + | qualifiedname T_DOUBLE_COLON T_WORD { + $$= $yyLex->create(new ConstantAccessNode(new TypeName($1), $3)); + } + | qualifiedname T_DOUBLE_COLON T_VARIABLE { + $$= $yyLex->create(new StaticMemberAccessNode(new TypeName($1), $3)); + } +; + + methodbody: ';' { $$= NULL; } | '{' statements_opt '}' { $$= (array)$2; } diff --git a/src/main/php/xp/compiler/syntax/php/Parser.class.php b/src/main/php/xp/compiler/syntax/php/Parser.class.php index 4316adf79..c452e6e31 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -156,25 +156,25 @@ class Parser extends \text\parser\generic\AbstractParser { 13, 16, 16, 14, 14, 18, 18, 18, 19, 19, 20, 20, 22, 23, 24, 24, 28, 21, 29, 29, 9, 9, 32, 32, 34, 34, 34, 36, 36, 37, - 37, 30, 30, 27, 27, 39, 39, 40, 40, 38, - 38, 41, 41, 45, 43, 46, 43, 48, 43, 50, - 43, 52, 43, 53, 43, 54, 43, 56, 43, 58, - 43, 59, 43, 60, 43, 43, 43, 51, 51, 55, - 55, 61, 61, 63, 62, 64, 62, 42, 42, 47, - 65, 47, 57, 66, 66, 68, 67, 49, 49, 69, - 69, 44, 44, 70, 70, 71, 71, 71, 26, 73, - 26, 74, 26, 75, 26, 76, 26, 26, 26, 26, + 37, 35, 35, 35, 35, 30, 30, 27, 27, 41, + 41, 42, 42, 40, 40, 43, 43, 47, 45, 48, + 45, 50, 45, 51, 45, 53, 45, 54, 45, 55, + 45, 57, 45, 59, 45, 60, 45, 61, 45, 45, + 45, 52, 52, 56, 56, 62, 62, 64, 63, 65, + 63, 44, 44, 49, 66, 49, 58, 67, 67, 69, + 68, 39, 39, 70, 70, 46, 46, 71, 71, 72, + 72, 72, 26, 74, 26, 75, 26, 76, 26, 77, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 82, 82, 83, 83, 84, 35, 86, - 35, 25, 25, 25, 25, 25, 25, 85, 85, 85, - 85, 87, 87, 89, 89, 88, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, - 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, - 80, 80, 80, 81, 81, 72, 72, 90, 90, 92, - 91, 93, 91, 91, 91, 91, 94, 91, 31, 31, - 10, 95, 17, 17, 33, 33, 96, 96, 97, 97, - 97, 97, 97, 97, + 26, 26, 26, 26, 26, 26, 26, 83, 83, 84, + 84, 85, 38, 87, 38, 25, 25, 25, 25, 25, + 25, 86, 86, 86, 86, 88, 88, 90, 90, 89, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 81, 81, 81, 81, 81, 81, 82, 82, 73, + 73, 91, 91, 93, 92, 94, 92, 92, 92, 92, + 95, 92, 31, 31, 10, 96, 17, 17, 33, 33, + 97, 97, 98, 98, 98, 98, 98, 98, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -182,1099 +182,1104 @@ class Parser extends \text\parser\generic\AbstractParser { 2, 0, 2, 2, 0, 1, 2, 1, 2, 3, 2, 3, 3, 3, 0, 2, 0, 9, 0, 2, 5, 1, 1, 3, 2, 5, 5, 1, 3, 3, - 3, 1, 3, 0, 1, 1, 3, 3, 2, 0, - 1, 1, 2, 0, 4, 0, 7, 0, 10, 0, - 8, 0, 6, 0, 8, 0, 8, 0, 6, 0, - 3, 0, 3, 0, 4, 2, 1, 1, 3, 0, - 1, 1, 2, 0, 5, 0, 4, 1, 3, 0, - 0, 3, 1, 1, 2, 0, 9, 0, 1, 1, - 3, 0, 1, 4, 4, 1, 4, 1, 1, 0, - 3, 0, 3, 0, 5, 0, 6, 2, 1, 1, - 1, 1, 1, 5, 3, 3, 3, 3, 4, 4, - 2, 7, 4, 0, 1, 1, 3, 1, 1, 0, - 5, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 3, 0, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 0, 1, 1, 2, 0, - 4, 0, 4, 2, 2, 4, 0, 6, 1, 1, - 1, 1, 1, 3, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, + 3, 1, 5, 3, 3, 1, 3, 0, 1, 1, + 3, 3, 2, 0, 1, 1, 2, 0, 4, 0, + 7, 0, 10, 0, 8, 0, 6, 0, 8, 0, + 8, 0, 6, 0, 3, 0, 3, 0, 4, 2, + 1, 1, 3, 0, 1, 1, 2, 0, 5, 0, + 4, 1, 3, 0, 0, 3, 1, 1, 2, 0, + 9, 0, 1, 1, 3, 0, 1, 4, 4, 1, + 4, 1, 1, 0, 3, 0, 3, 0, 5, 0, + 6, 2, 1, 1, 1, 1, 1, 5, 3, 3, + 3, 3, 4, 4, 2, 7, 4, 0, 1, 1, + 3, 1, 1, 0, 5, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 3, 0, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 1, 1, 2, 0, 4, 0, 4, 2, 2, 4, + 0, 6, 1, 1, 1, 1, 1, 3, 0, 1, + 1, 2, 1, 1, 1, 1, 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 229, 231, 230, 232, 234, 233, 0, 1, 0, - 42, 226, 0, 8, 0, 4, 9, 0, 14, 16, - 228, 11, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 221, 0, 0, 13, 0, 41, 44, 0, - 0, 0, 0, 0, 157, 153, 156, 154, 155, 0, - 0, 149, 0, 0, 0, 19, 0, 0, 0, 23, - 25, 0, 0, 150, 46, 47, 0, 21, 25, 0, - 0, 152, 50, 51, 0, 0, 49, 0, 224, 0, - 17, 0, 24, 26, 28, 0, 0, 159, 0, 0, - 0, 0, 0, 0, 122, 0, 0, 0, 0, 120, - 0, 0, 119, 0, 129, 130, 131, 132, 133, 0, - 0, 162, 15, 0, 27, 0, 0, 0, 0, 29, + 0, 233, 235, 234, 236, 238, 237, 0, 1, 0, + 42, 230, 0, 8, 0, 4, 9, 0, 14, 16, + 232, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 225, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 0, 0, 161, 157, 160, 158, 159, + 0, 0, 0, 153, 0, 0, 0, 52, 19, 0, + 0, 0, 23, 25, 0, 0, 0, 154, 0, 46, + 47, 0, 21, 25, 0, 0, 0, 0, 50, 51, + 0, 54, 55, 0, 49, 0, 228, 0, 17, 0, + 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 0, 0, 0, 0, 124, 0, 0, 123, + 0, 0, 133, 134, 135, 136, 137, 163, 0, 0, + 0, 0, 166, 15, 0, 27, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 132, 145, 130, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 141, 126, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 208, 209, + 53, 0, 0, 155, 0, 0, 0, 31, 0, 0, + 33, 0, 30, 0, 0, 0, 226, 0, 223, 0, + 127, 224, 0, 152, 0, 0, 150, 214, 0, 216, + 125, 211, 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, 204, 205, 0, - 0, 151, 0, 0, 0, 31, 0, 0, 33, 0, - 30, 0, 0, 0, 222, 0, 219, 0, 123, 220, - 0, 148, 0, 0, 146, 210, 0, 212, 121, 207, 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, 138, 137, 0, - 111, 0, 165, 163, 34, 32, 37, 0, 0, 0, - 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 0, 0, 209, 0, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 147, 0, 217, - 0, 0, 0, 125, 0, 0, 0, 0, 55, 0, - 115, 114, 127, 64, 0, 84, 68, 72, 74, 70, - 80, 82, 66, 76, 87, 0, 0, 0, 61, 0, - 98, 211, 0, 216, 213, 0, 59, 0, 0, 0, - 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 142, 63, 0, 117, 0, 0, 58, - 57, 0, 0, 0, 0, 0, 0, 0, 81, 83, - 0, 0, 99, 218, 40, 52, 0, 38, 65, 0, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 106, 79, 103, 0, - 0, 73, 0, 0, 0, 0, 0, 0, 105, 0, - 0, 0, 0, 101, 67, 94, 96, 0, 91, 0, - 0, 0, 75, 89, 71, 0, 0, 0, 77, 93, - 0, 0, 102, 0, 0, 0, 69, 0, 97, 0, - 95, 0, 0, 107, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, + 141, 115, 0, 0, 169, 167, 156, 34, 32, 37, + 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, + 0, 219, 0, 0, 213, 0, 120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, + 221, 0, 0, 0, 129, 0, 0, 0, 0, 59, + 0, 119, 118, 131, 68, 0, 88, 72, 76, 78, + 74, 84, 86, 70, 80, 91, 0, 0, 0, 65, + 0, 102, 215, 0, 220, 217, 0, 63, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 146, 67, 0, 121, 0, 0, + 62, 61, 0, 0, 0, 0, 0, 0, 0, 85, + 87, 0, 0, 103, 222, 40, 56, 0, 38, 69, + 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 110, 83, 107, + 0, 0, 77, 0, 0, 0, 0, 0, 0, 109, + 0, 0, 0, 0, 105, 71, 98, 100, 0, 95, + 0, 0, 0, 79, 93, 75, 0, 0, 0, 81, + 97, 0, 0, 106, 0, 0, 0, 73, 0, 101, + 0, 99, 0, 0, 111, ); protected static $yyDgoto= array(2, - 3, 6, 19, 10, 4, 7, 8, 111, 92, 197, - 36, 51, 68, 81, 37, 53, 70, 93, 94, 125, - 95, 96, 126, 189, 62, 317, 297, 283, 349, 368, - 298, 34, 21, 35, 113, 64, 65, 318, 299, 300, - 319, 320, 321, 230, 331, 340, 405, 334, 265, 337, - 395, 335, 336, 341, 408, 353, 388, 338, 339, 333, - 409, 410, 417, 418, 416, 389, 390, 398, 266, 199, - 277, 209, 145, 140, 212, 201, 115, 116, 117, 118, - 119, 203, 204, 205, 120, 85, 121, 122, 254, 210, - 211, 269, 273, 323, 200, 22, 23, + 3, 6, 19, 10, 4, 7, 8, 118, 100, 209, + 36, 51, 71, 86, 37, 53, 73, 101, 102, 136, + 103, 104, 137, 201, 64, 328, 308, 294, 360, 379, + 309, 34, 21, 35, 65, 66, 67, 120, 121, 329, + 310, 311, 330, 331, 332, 242, 342, 351, 416, 345, + 348, 406, 346, 347, 352, 419, 364, 399, 349, 350, + 344, 420, 421, 428, 429, 427, 400, 401, 409, 122, + 211, 288, 221, 156, 151, 224, 213, 123, 124, 125, + 126, 127, 215, 216, 217, 131, 91, 132, 133, 266, + 222, 223, 280, 284, 334, 212, 22, 23, ); - protected static $yySindex = array( -281, - 0, 0, -247, -213, -213, 209, -247, 0, 2, 68, - 104, 0, 0, 0, 0, 0, 0, 77, 0, -282, - 0, 0, 166, 0, -213, 0, 0, 106, 0, 0, - 0, 0, -19, 100, 151, -19, -19, 0, -213, 227, - 166, 106, 0, -42, -34, 0, 19, 0, 0, -19, - -7, -19, 174, 244, 0, 0, 0, 0, 0, 245, - 269, 0, 274, 286, 288, 0, -19, 207, 289, 0, - 0, -195, -195, 0, 0, 0, -170, 0, 0, -19, - 6, 0, 0, 0, 3383, 244, 0, 593, 0, 80, - 0, -294, 0, 0, 0, 110, 3835, 0, 3864, 3864, - 3864, 3864, 3864, 3864, 0, 3864, 3864, 303, 305, 0, - -64, 1185, 0, 306, 0, 0, 0, 0, 0, 310, - 309, 0, 0, 295, 0, 121, 87, 296, 209, 0, - 62, 182, 1212, -178, -178, -274, -178, -178, -178, -63, - 0, 0, 0, 18, -79, 0, 3864, 3864, 3864, 3864, - 3864, 3864, 3864, 3864, 3864, 3629, 3738, 3864, 3864, 3864, - 3864, 3864, 3864, 3864, 3747, 3777, 3864, 3864, 3864, 3864, - 3864, 3864, 3864, 3864, 3864, 3864, -20, 0, 0, 3864, - 3864, 0, 3864, 369, 80, 0, 320, 3864, 0, 21, - 0, 3864, 3864, -79, 0, 322, 0, 345, 0, 0, - 3864, 0, 347, 342, 0, 0, -28, 0, 0, 0, - -79, -244, 1969, 2012, 2012, 2012, 2012, 2012, 2012, 2012, - 2012, 3864, 2012, 3864, 2012, 2012, 2012, 2012, 1942, 331, - 3160, 2547, 75, 3864, 102, 3864, 102, 200, 200, 200, - 200, 200, 281, 281, -274, -274, -274, 0, 0, 1942, - 0, 1185, 0, 0, 0, 0, 0, 1942, 1942, 1942, - 0, 3864, 3864, 1942, 358, 306, 277, 18, 3864, 372, - 0, 3864, 3864, 0, 373, 0, -79, 2012, 2012, 3864, - 2012, 2012, -62, 374, 375, -79, 3485, 0, 334, 0, - 1239, 1282, 3864, 0, 3134, 296, 398, 103, 0, 396, - 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3485, 1309, 327, 0, 3485, - 0, 0, 3864, 0, 0, 403, 0, 399, 296, -62, - 3864, 0, 3864, 418, 419, 3485, 420, 408, 409, 429, - 430, 346, 0, 0, 0, 432, 0, 9, -16, 0, - 0, 415, 3485, 1336, 3864, 3864, 118, 3864, 0, 0, - 3864, 3864, 0, 0, 0, 0, 3485, 0, 0, 359, - 0, 424, 1379, 445, 1433, 1406, 1818, 363, 152, 3864, - 3485, 3864, 155, 3485, 377, 0, 0, 0, 0, 152, - 438, 0, 1845, 85, 460, 135, -125, 467, 0, 3864, - 450, 170, 3485, 0, 0, 0, 0, 386, 0, -125, - -19, 472, 0, 0, 0, 3485, 3864, 478, 0, 0, - 197, 3485, 0, 1872, 3485, 497, 0, 3485, 0, 416, - 0, 3485, 425, 0, + protected static $yySindex = array( -267, + 0, 0, -263, -193, -193, 84, -263, 0, -16, 27, + 38, 0, 0, 0, 0, 0, 0, 32, 0, -128, + 0, 0, 215, 0, -193, 0, 0, 85, 0, 0, + 0, 0, -77, 68, 119, -77, -77, 0, -193, 151, + 215, 85, 0, -136, -75, 0, 506, 0, 0, -77, + -46, -77, 167, -77, 258, 0, 0, 0, 0, 0, + 267, 297, -63, 0, 307, 308, 309, 0, 0, -77, + 228, 312, 0, 0, 323, -22, -22, 0, -214, 0, + 0, -231, 0, 0, -77, -3, 3847, 0, 0, 0, + 3449, 0, 0, 258, 0, 3, 0, 92, 0, -240, + 0, 0, 0, 66, 3856, 3847, 3847, 3847, 3847, 3847, + 3847, 0, 3847, 3847, 332, 336, 0, -29, 2030, 0, + 339, 338, 0, 0, 0, 0, 0, 0, 928, 338, + 344, 342, 0, 0, 340, 0, 76, 139, 341, 84, + 0, 159, 181, 1256, -157, -157, -273, -157, -157, -157, + -42, 0, 0, 0, 60, -81, 0, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3582, 3695, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3792, 3815, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, -51, 0, 0, + 0, 3847, 3847, 0, 3847, 264, 92, 0, 363, 3847, + 0, 65, 0, 3847, 3847, -81, 0, 366, 0, 367, + 0, 0, 3847, 0, 369, 364, 0, 0, -115, 0, + 0, 0, -81, -213, 2057, 2085, 2085, 2085, 2085, 2085, + 2085, 2085, 2085, 3847, 2085, 3847, 2085, 2085, 2085, 2085, + 2030, 353, 2924, 2257, 1852, 3847, 736, 3847, 736, -12, + -12, -12, -12, -12, -19, -19, -273, -273, -273, 0, + 0, 0, 2030, 928, 0, 0, 0, 0, 0, 0, + 2030, 2030, 2030, 0, 3847, 3847, 371, 292, 60, 3847, + 376, 0, 3847, 3847, 0, 377, 0, -81, 2085, 2085, + 3847, 2085, 2085, -41, 387, 401, -81, 3438, 0, 325, + 0, 1314, 1341, 3847, 0, 2848, 341, 402, 104, 0, + 412, 0, 0, 0, 0, 322, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3438, 1382, 348, 0, + 3438, 0, 0, 3847, 0, 0, 435, 0, 425, 341, + -41, 3847, 0, 3847, 463, 464, 3438, 465, 447, 448, + 471, 480, 396, 0, 0, 0, 481, 0, -83, 15, + 0, 0, 453, 3438, 1411, 3847, 3847, 175, 3847, 0, + 0, 3847, 3847, 0, 0, 0, 0, 3438, 0, 0, + 413, 0, 478, 1524, 499, 1560, 1644, 1796, 415, 197, + 3847, 3438, 3847, 212, 3438, 430, 0, 0, 0, 0, + 197, 508, 0, 1823, 155, 528, 208, -72, 552, 0, + 3847, 535, 255, 3438, 0, 0, 0, 0, 474, 0, + -72, -77, 559, 0, 0, 0, 3438, 3847, 543, 0, + 0, 263, 3438, 0, 1945, 3438, 561, 0, 3438, 0, + 482, 0, 3438, 479, 0, ); - protected static $yyRindex= array( 473, - 0, 0, 54, 0, 0, -45, 181, 0, -37, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 0, 0, 0, 0, -2, - -82, 0, 0, -121, 428, 0, 0, 0, 0, 0, - 440, 0, 0, 523, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 0, 0, 0, 443, 0, + protected static $yyRindex= array( 33, + 0, 0, 61, 0, 0, -4, 113, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -215, 0, 0, 0, 526, 0, 0, -215, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 513, 0, 0, 0, 0, -18, + 168, 0, 0, -87, 484, 0, 0, 0, 0, 0, + 485, 0, 0, 0, -40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 568, 0, 0, 0, + 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -188, 579, -39, 0, 0, + 580, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, - 0, 148, 0, 536, 0, 0, 0, 0, 0, 0, - 537, 0, 0, 0, 0, 0, 0, 137, 252, 0, - 1915, 0, 0, 553, 580, 705, 607, 651, 678, 0, - 0, 0, 0, 560, 141, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 170, 0, 0, 0, 203, 0, + 0, 13, 0, 0, 0, 0, 0, 0, 80, 594, + 0, 595, 0, 0, 0, 0, 0, 0, 97, 304, + 0, 1972, 0, 0, 596, 623, 858, 650, 694, 804, + 0, 0, 0, 0, 604, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 213, 0, 150, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, - 567, 0, 0, 568, 0, 0, 0, 0, 0, 0, - 168, 0, 2106, 41, 192, 1264, 1457, 1484, 1897, 1983, - 2060, 0, 3142, 0, 3151, 3167, 3171, 3175, 266, 0, - 2725, 2704, 2611, 0, 2653, 0, 2679, 2489, 2517, 2557, - 2585, 2463, 2051, 2079, 746, 773, 800, 0, 0, 176, - 0, 0, 0, 0, 0, 0, 0, 254, 2090, 2119, - 0, 567, 567, 267, 0, 112, 0, 0, 517, -10, - 0, 0, 0, 0, 17, 0, 141, 3180, 3211, 0, - 3222, 3244, 578, 0, 0, 141, 495, 0, 0, 0, - 0, 0, 567, 0, 2748, 255, 0, 0, 0, 594, + 0, 266, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, + 0, 0, 579, 0, 0, 607, 0, 0, 0, 0, + 0, 0, 472, 0, 316, 57, 262, 718, 1265, 1864, + 2097, 2932, 2956, 0, 2992, 0, 3142, 3180, 3184, 3188, + 134, 0, 2774, 2751, 2682, 0, 2706, 0, 2730, 73, + 2515, 2539, 2658, 2274, 2125, 2230, 1082, 1109, 1136, 0, + 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, + 268, 901, 1187, 0, 579, 579, 0, 0, 0, 556, + 46, 0, 0, 0, 0, 143, 0, 211, 3196, 3217, + 0, 3227, 3238, 609, 0, 0, 211, 526, 0, 0, + 0, 0, 0, 579, 0, 2799, 182, 0, 0, 0, + 611, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 526, 0, 0, 0, + -114, 0, 0, 579, 0, 0, 0, 0, 36, 182, + 0, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 495, 0, 0, 0, -114, - 0, 0, 567, 0, 0, 0, 0, -14, 255, 0, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 526, 0, 612, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 495, 0, 596, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 495, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 596, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3337, - 0, 0, 0, 615, 0, 3391, 512, 0, 0, 567, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -110, 0, 0, -110, 0, 0, - 0, 495, 0, 0, + 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3316, 0, 0, 0, 622, 0, 3403, 547, 0, 0, + 579, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 548, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -98, 0, 0, -98, 0, + 0, 0, 526, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 111, 0, 0, 652, 3137, 14, 264, - 0, 0, 0, 579, 0, 0, 66, 0, 531, 476, - 0, 0, 0, -225, 479, 4121, 0, 0, 0, 0, - -127, 620, 623, 0, 51, 595, 0, 1033, 341, 0, - 356, 488, 0, -164, 0, 0, 0, 0, 533, 0, + 0, 0, 0, 171, 0, 0, 646, -33, 7, -30, + 0, 0, 0, 590, 0, 0, 109, 0, 539, 483, + 0, 0, 0, -291, 502, 4114, 0, 0, 0, 0, + -139, 657, 659, 0, 246, 619, 0, 26, 3053, -279, + 361, 0, 372, 331, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 270, 0, 0, 0, 0, 291, 0, 0, 597, 0, - 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 411, 0, 0, 0, 502, 0, 475, - 0, 0, 0, 0, 0, 664, 0, + 0, 283, 0, 0, 0, 0, 305, 0, 0, 614, + 0, 0, -135, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 428, 0, 0, 0, 519, 0, + 492, 0, 0, 0, 0, 0, 695, 0, ); - protected static $yyTable = array(10, - 10, 18, 10, 10, 10, 10, 10, 10, 10, 10, - 62, 206, 198, 261, 60, 275, 251, 29, 30, 20, - 10, 10, 10, 10, 10, 10, 214, 214, 39, 39, - 214, 214, 214, 214, 214, 214, 214, 177, 1, 127, - 18, 45, 366, 208, 39, 128, 9, 214, 214, 214, - 214, 214, 214, 118, 118, 10, 10, 118, 118, 118, - 118, 118, 118, 118, 82, 55, 56, 57, 58, 59, - 327, 39, 39, 5, 118, 118, 118, 118, 118, 118, - 214, 136, 214, 214, 136, 10, 10, 10, 5, 86, - 45, 227, 227, 25, 272, 276, 294, 63, 136, 136, - 39, 143, 192, 350, 289, 303, 367, 118, 39, 118, - 118, 176, 214, 214, 214, 11, 174, 172, 225, 173, - 171, 175, 83, 84, 225, 227, 26, 178, 179, 60, - 91, 227, 78, 136, 167, 32, 169, 61, 176, 118, - 118, 118, 190, 174, 172, 89, 173, 171, 175, 46, - 152, 152, 109, 129, 152, 152, 152, 152, 152, 152, - 152, 167, 27, 169, 185, 136, 352, 28, 130, 33, - 109, 152, 152, 152, 152, 152, 152, 206, 206, 186, - 35, 206, 206, 206, 206, 206, 206, 206, 110, 18, - 164, 110, 41, 164, 42, 35, 38, 38, 206, 206, - 206, 206, 206, 206, 208, 208, 152, 152, 208, 208, - 208, 208, 208, 208, 208, 6, 166, 225, 225, 166, - 365, 74, 193, 178, 179, 208, 208, 208, 208, 208, - 208, 270, 167, 206, 206, 167, 176, 152, 152, 38, - 38, 174, 172, 18, 173, 171, 175, 406, 407, 167, - 167, 225, 207, 112, 225, 225, 112, 225, 62, 62, - 208, 208, 60, 60, 206, 206, 47, 50, 38, 195, - 195, 112, 10, 10, 10, 52, 196, 296, 54, 55, - 56, 57, 58, 59, 167, 12, 13, 14, 15, 16, - 17, 208, 208, 10, 36, 35, 71, 36, 35, 44, - 45, 214, 10, 67, 72, 73, 113, 110, 74, 113, - 110, 271, 36, 66, 75, 69, 167, 176, 60, 248, - 214, 214, 174, 113, 113, 110, 76, 175, 118, 79, - 69, 77, 80, 5, 5, 5, 5, 5, 5, 124, - 90, 195, 143, 69, 144, 146, 187, 118, 118, 181, - 182, 61, 183, 5, 5, 184, 188, 202, 113, 257, - 128, 262, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 136, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 263, 268, 177, 267, 280, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 286, 287, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 290, 293, 177, 301, 302, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 152, 322, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 328, 330, - 249, 332, 329, 347, 152, 12, 13, 14, 15, 16, - 17, 344, 206, 136, 136, 136, 348, 355, 356, 358, - 6, 6, 6, 6, 6, 6, 359, 360, 361, 362, - 363, 206, 364, 369, 170, 168, 178, 179, 374, 208, - 6, 6, 380, 379, 382, 165, 166, 386, 12, 13, - 14, 15, 16, 17, 394, 387, 400, 402, 208, 397, - 403, 170, 168, 178, 179, 404, 411, 2, 413, 414, - 419, 177, 422, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 167, 12, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 425, 426, 430, 432, 43, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 434, - 22, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 20, 152, 48, 223, 158, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 160, 161, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 200, - 200, 225, 177, 200, 200, 200, 200, 200, 200, 200, - 144, 178, 179, 112, 167, 167, 167, 108, 145, 112, - 200, 200, 200, 200, 200, 200, 201, 201, 54, 60, - 201, 201, 201, 201, 201, 201, 201, 18, 82, 55, - 56, 57, 58, 59, 56, 112, 90, 201, 201, 201, - 201, 201, 201, 199, 199, 200, 200, 199, 199, 199, - 199, 199, 199, 199, 108, 88, 92, 88, 24, 191, - 256, 49, 255, 48, 199, 199, 199, 199, 199, 199, - 351, 87, 201, 201, 421, 345, 200, 200, 288, 420, - 399, 114, 178, 179, 253, 274, 31, 202, 202, 0, - 0, 202, 202, 202, 202, 202, 202, 202, 0, 199, - 199, 0, 0, 201, 201, 0, 0, 0, 202, 202, - 202, 202, 202, 202, 203, 203, 0, 123, 203, 203, - 203, 203, 203, 203, 203, 0, 0, 0, 0, 0, - 199, 199, 0, 0, 0, 203, 203, 203, 203, 203, - 203, 198, 198, 202, 202, 198, 198, 198, 198, 198, - 198, 198, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 0, 198, 198, 198, 198, 198, 198, 0, 0, - 203, 203, 2, 2, 202, 202, 0, 0, 0, 0, - 0, 0, 189, 189, 0, 0, 189, 189, 189, 189, - 189, 189, 189, 2, 284, 285, 0, 198, 198, 0, - 0, 203, 203, 189, 189, 189, 189, 189, 189, 190, - 190, 0, 0, 190, 190, 190, 190, 190, 190, 190, - 0, 0, 0, 357, 0, 326, 0, 0, 198, 198, - 190, 190, 190, 190, 190, 190, 191, 191, 189, 189, - 191, 191, 191, 191, 191, 191, 191, 0, 0, 0, - 0, 0, 0, 0, 0, 346, 0, 191, 191, 191, - 191, 191, 191, 0, 200, 190, 190, 0, 392, 189, - 189, 396, 12, 13, 14, 15, 16, 17, 0, 0, - 0, 0, 0, 200, 0, 0, 0, 372, 0, 0, - 415, 201, 191, 191, 0, 0, 190, 190, 0, 0, - 0, 0, 0, 423, 0, 0, 0, 0, 0, 427, - 201, 0, 391, 0, 0, 0, 0, 0, 199, 0, - 0, 0, 0, 191, 191, 0, 0, 90, 0, 0, - 0, 0, 412, 0, 0, 0, 0, 199, 0, 0, + protected static $yyTable = array(40, + 156, 156, 43, 43, 156, 44, 45, 283, 39, 218, + 66, 210, 20, 63, 39, 338, 43, 187, 43, 69, + 43, 72, 185, 75, 187, 45, 64, 186, 94, 185, + 183, 18, 184, 182, 186, 18, 43, 18, 188, 72, + 39, 220, 63, 63, 262, 92, 286, 353, 361, 39, + 39, 43, 1, 113, 72, 10, 10, 5, 10, 10, + 10, 10, 10, 10, 10, 10, 9, 2, 61, 39, + 274, 113, 68, 377, 45, 25, 10, 10, 10, 10, + 10, 10, 218, 218, 381, 26, 218, 218, 218, 218, + 218, 218, 218, 138, 39, 5, 27, 140, 389, 139, + 140, 68, 68, 218, 218, 218, 218, 218, 218, 140, + 183, 10, 10, 183, 140, 140, 183, 43, 18, 197, + 114, 99, 28, 114, 141, 93, 287, 134, 189, 190, + 183, 183, 300, 183, 198, 183, 218, 378, 218, 218, + 35, 10, 10, 10, 281, 229, 202, 6, 33, 140, + 168, 229, 305, 168, 43, 35, 440, 261, 39, 442, + 41, 314, 42, 444, 170, 183, 183, 170, 218, 218, + 218, 29, 30, 50, 117, 11, 38, 117, 83, 122, + 122, 140, 38, 122, 122, 122, 122, 122, 122, 122, + 47, 117, 117, 97, 363, 32, 183, 183, 154, 204, + 122, 122, 122, 122, 122, 122, 156, 156, 38, 46, + 156, 156, 156, 156, 156, 156, 156, 38, 38, 376, + 78, 205, 35, 18, 282, 35, 117, 156, 156, 156, + 156, 156, 156, 122, 52, 122, 122, 88, 56, 57, + 58, 59, 60, 114, 189, 190, 114, 210, 210, 207, + 219, 210, 210, 210, 210, 210, 210, 210, 66, 66, + 43, 114, 156, 156, 70, 122, 122, 122, 210, 210, + 210, 210, 210, 210, 64, 64, 12, 13, 14, 15, + 16, 17, 12, 13, 14, 15, 16, 17, 260, 74, + 207, 207, 188, 156, 156, 229, 229, 208, 307, 188, + 417, 418, 171, 210, 210, 171, 116, 43, 36, 116, + 62, 36, 2, 2, 2, 2, 2, 2, 76, 171, + 171, 89, 90, 54, 116, 43, 36, 77, 10, 10, + 10, 98, 2, 2, 210, 210, 78, 98, 231, 231, + 5, 5, 5, 5, 5, 5, 79, 80, 81, 10, + 84, 135, 82, 2, 171, 85, 139, 218, 10, 139, + 5, 5, 87, 12, 13, 14, 15, 16, 17, 12, + 12, 154, 231, 139, 139, 155, 218, 218, 231, 191, + 157, 192, 189, 190, 194, 195, 171, 140, 43, 189, + 190, 432, 6, 6, 6, 6, 6, 6, 199, 214, + 196, 200, 270, 183, 139, 275, 276, 279, 139, 278, + 291, 297, 6, 6, 298, 301, 304, 333, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 312, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 139, 313, 339, 340, 343, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 122, 341, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 229, 229, 140, + 140, 140, 355, 122, 122, 358, 183, 183, 183, 183, + 183, 156, 359, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 12, 13, 14, 15, 16, 17, + 156, 229, 366, 367, 369, 370, 371, 229, 212, 212, + 372, 380, 212, 212, 212, 212, 212, 212, 212, 373, + 374, 375, 210, 267, 56, 57, 58, 59, 60, 212, + 212, 212, 212, 212, 212, 385, 391, 390, 393, 397, + 398, 210, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 405, 408, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 212, 212, 411, 413, 414, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 415, 12, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 422, 171, 424, 425, 212, 212, 39, 430, 433, + 436, 441, 437, 445, 443, 43, 22, 20, 48, 227, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 112, + 162, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 204, 204, 164, 165, 204, 204, 204, 204, + 204, 204, 204, 229, 148, 116, 139, 149, 116, 58, + 64, 60, 24, 204, 204, 204, 204, 204, 204, 205, + 205, 116, 92, 205, 205, 205, 205, 205, 205, 205, + 112, 94, 96, 96, 171, 171, 171, 368, 203, 269, + 205, 205, 205, 205, 205, 205, 203, 203, 204, 204, + 203, 203, 203, 203, 203, 203, 203, 268, 49, 48, + 95, 362, 356, 431, 130, 410, 299, 203, 203, 203, + 203, 203, 203, 265, 285, 205, 205, 31, 0, 204, + 204, 0, 403, 0, 0, 407, 0, 0, 139, 139, + 206, 206, 0, 0, 206, 206, 206, 206, 206, 206, + 206, 0, 203, 203, 426, 0, 205, 205, 0, 0, + 0, 206, 206, 206, 206, 206, 206, 434, 172, 0, + 0, 172, 0, 438, 0, 55, 56, 57, 58, 59, + 60, 0, 187, 203, 203, 172, 172, 185, 183, 0, + 184, 182, 186, 212, 0, 0, 206, 206, 0, 0, + 0, 0, 0, 0, 0, 178, 0, 180, 0, 0, + 0, 0, 212, 0, 0, 61, 0, 0, 0, 0, + 172, 0, 0, 0, 0, 0, 0, 206, 206, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, + 207, 207, 172, 0, 207, 207, 207, 207, 207, 207, + 207, 54, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 207, 207, 207, 207, 207, 207, 0, 0, 0, + 0, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 0, 0, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 0, 202, 202, 207, 207, 202, 202, + 202, 202, 202, 202, 202, 0, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 202, 202, 202, 202, 202, + 202, 0, 0, 0, 0, 0, 204, 207, 207, 0, + 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, + 0, 143, 0, 0, 143, 0, 0, 0, 0, 0, + 202, 202, 0, 205, 0, 0, 0, 0, 143, 143, + 0, 203, 0, 0, 187, 175, 0, 0, 0, 185, + 183, 0, 184, 182, 186, 0, 0, 0, 0, 0, + 203, 202, 202, 0, 0, 0, 0, 178, 160, 180, + 172, 0, 0, 143, 0, 204, 204, 0, 0, 204, + 204, 204, 204, 204, 0, 206, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 0, 0, 0, + 0, 174, 205, 205, 206, 143, 205, 205, 205, 205, + 205, 0, 0, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 0, 0, 0, 188, 172, 203, + 203, 173, 0, 203, 203, 203, 203, 203, 0, 0, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 200, 0, 0, 200, 200, 200, 200, - 200, 0, 202, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 0, 0, 0, 0, 0, 201, - 201, 202, 0, 201, 201, 201, 201, 201, 0, 203, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 0, 0, 0, 0, 0, 199, 199, 203, 0, - 199, 199, 199, 199, 199, 0, 0, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 0, 0, - 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 206, 206, 0, 0, 206, 206, 206, + 206, 206, 0, 0, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 207, 0, 0, 193, 193, + 0, 0, 193, 193, 193, 193, 193, 193, 193, 0, + 172, 172, 172, 0, 207, 181, 179, 189, 190, 193, + 193, 193, 193, 193, 193, 194, 194, 0, 0, 194, + 194, 194, 194, 194, 194, 194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 194, 194, 194, 194, + 194, 194, 195, 195, 193, 193, 195, 195, 195, 195, + 195, 195, 195, 0, 0, 0, 0, 0, 202, 0, + 0, 0, 0, 195, 195, 195, 195, 195, 195, 0, + 0, 194, 194, 207, 207, 193, 193, 207, 207, 207, + 207, 207, 0, 0, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 0, 0, 144, 195, 195, + 144, 143, 194, 194, 0, 0, 0, 0, 0, 188, + 0, 0, 0, 0, 144, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 202, 195, + 195, 202, 202, 202, 202, 202, 0, 0, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 202, 0, 0, 202, 202, 202, 202, 202, 0, - 0, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 0, 0, 0, 0, 189, 203, 203, 0, - 0, 203, 203, 203, 203, 203, 0, 0, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 0, - 0, 0, 0, 190, 198, 198, 0, 0, 198, 198, - 198, 198, 198, 0, 0, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 0, 0, 0, 0, - 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 189, 0, 0, 189, - 189, 189, 189, 189, 0, 0, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 0, 0, 0, - 0, 0, 190, 190, 0, 0, 190, 190, 190, 190, - 190, 0, 0, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 0, 0, 0, 0, 0, 191, - 191, 0, 0, 191, 191, 191, 191, 191, 0, 0, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 176, 164, 0, 0, 0, 174, 172, 0, 173, - 171, 175, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 167, 149, 169, 161, 176, 164, - 0, 0, 194, 174, 172, 0, 173, 171, 175, 0, + 0, 0, 187, 175, 0, 0, 206, 185, 183, 0, + 184, 182, 186, 0, 0, 173, 0, 0, 173, 0, + 0, 144, 0, 143, 0, 178, 160, 180, 172, 0, + 0, 0, 173, 173, 0, 0, 0, 181, 179, 189, + 190, 161, 162, 163, 164, 166, 0, 0, 176, 177, + 193, 158, 159, 165, 170, 169, 171, 167, 168, 174, + 187, 175, 0, 0, 0, 185, 183, 173, 184, 182, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 178, 160, 180, 172, 187, 175, 173, + 0, 0, 185, 183, 0, 184, 182, 186, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 149, 169, 161, 176, 164, 0, 163, 0, - 174, 172, 0, 173, 171, 175, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 149, - 169, 161, 0, 0, 168, 163, 0, 168, 162, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 176, 164, - 0, 168, 168, 174, 172, 0, 173, 171, 175, 0, - 0, 0, 163, 0, 0, 162, 0, 0, 0, 0, - 0, 167, 149, 169, 161, 176, 164, 0, 342, 0, - 174, 172, 0, 173, 171, 175, 168, 0, 0, 0, - 0, 0, 162, 324, 0, 0, 0, 343, 167, 149, - 169, 161, 176, 164, 0, 163, 0, 174, 172, 0, - 173, 171, 175, 0, 0, 370, 0, 0, 168, 0, - 0, 0, 0, 0, 371, 167, 149, 169, 161, 378, - 0, 0, 163, 0, 0, 162, 325, 0, 0, 0, - 0, 0, 0, 0, 0, 176, 164, 0, 0, 381, - 174, 172, 0, 173, 171, 175, 0, 0, 0, 163, - 0, 0, 162, 0, 0, 0, 0, 0, 167, 149, - 169, 161, 176, 164, 0, 0, 384, 174, 172, 0, - 173, 171, 175, 0, 0, 0, 0, 429, 0, 162, - 431, 0, 0, 0, 433, 167, 149, 169, 161, 176, - 164, 0, 163, 0, 174, 172, 0, 173, 171, 175, + 178, 160, 180, 172, 0, 0, 0, 174, 0, 0, + 0, 0, 193, 0, 0, 0, 0, 0, 187, 175, + 0, 0, 0, 185, 183, 0, 184, 182, 186, 0, + 0, 0, 0, 0, 174, 0, 0, 173, 335, 194, + 354, 178, 160, 180, 172, 0, 0, 187, 175, 0, + 0, 0, 185, 183, 0, 184, 182, 186, 0, 0, + 0, 0, 0, 0, 173, 336, 195, 0, 0, 382, + 178, 160, 180, 172, 0, 174, 0, 0, 0, 0, + 0, 193, 193, 0, 0, 193, 193, 193, 193, 193, + 0, 0, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 0, 174, 173, 0, 0, 194, 194, + 0, 0, 194, 194, 194, 194, 194, 144, 0, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 0, 0, 0, 0, 173, 195, 195, 0, 0, 195, + 195, 195, 195, 195, 0, 0, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 0, 0, 0, + 187, 175, 0, 0, 392, 185, 183, 188, 184, 182, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 178, 160, 180, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 187, 175, 0, 144, + 0, 185, 183, 0, 184, 182, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 178, + 160, 180, 172, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 167, 149, 169, 161, 177, 169, 0, 163, - 169, 0, 162, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 169, 169, 0, 0, 0, 0, - 0, 0, 0, 177, 170, 0, 163, 170, 0, 162, + 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, + 0, 0, 188, 174, 0, 181, 179, 189, 190, 161, + 162, 163, 164, 166, 0, 0, 176, 177, 0, 158, + 159, 165, 170, 169, 171, 167, 168, 173, 173, 173, + 187, 175, 0, 173, 395, 185, 183, 0, 184, 182, + 186, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 178, 160, 180, 172, 0, 0, 0, + 0, 0, 0, 181, 179, 189, 190, 161, 162, 163, + 164, 166, 188, 0, 176, 177, 0, 158, 159, 165, + 170, 169, 171, 167, 168, 0, 0, 174, 0, 0, + 181, 179, 189, 190, 161, 162, 163, 164, 166, 0, + 0, 176, 177, 0, 158, 159, 165, 170, 169, 171, + 167, 168, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 170, 170, 0, 0, 0, 0, 0, 0, 169, - 177, 0, 0, 0, 0, 0, 162, 0, 0, 0, + 0, 181, 179, 189, 190, 161, 162, 163, 164, 166, + 0, 0, 176, 177, 0, 158, 159, 165, 170, 169, + 171, 167, 168, 0, 0, 0, 0, 0, 0, 0, + 181, 179, 189, 190, 161, 162, 163, 164, 166, 0, + 0, 176, 177, 0, 158, 159, 165, 170, 169, 171, + 167, 168, 187, 175, 0, 188, 396, 185, 183, 0, + 184, 182, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 178, 160, 180, 172, 187, + 175, 0, 0, 412, 185, 183, 0, 184, 182, 186, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 178, 160, 180, 172, 0, 0, 187, 174, + 394, 0, 0, 185, 183, 0, 184, 182, 186, 0, + 0, 0, 0, 0, 174, 0, 0, 174, 0, 0, + 0, 178, 0, 180, 0, 0, 174, 0, 0, 173, + 0, 174, 174, 181, 179, 189, 190, 161, 162, 163, + 164, 166, 0, 0, 176, 177, 0, 158, 159, 165, + 170, 169, 171, 167, 168, 0, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 174, 0, 0, 181, + 179, 189, 190, 161, 162, 163, 164, 166, 0, 0, + 176, 177, 0, 158, 159, 165, 170, 169, 171, 167, + 168, 187, 175, 0, 0, 0, 185, 183, 174, 184, + 182, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 439, 0, 178, 160, 180, 172, 156, 156, + 0, 0, 0, 156, 156, 0, 156, 156, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, - 0, 169, 0, 0, 170, 168, 178, 179, 150, 151, - 152, 153, 155, 177, 168, 165, 166, 180, 147, 148, - 154, 159, 158, 160, 156, 157, 0, 0, 170, 0, - 0, 170, 168, 178, 179, 150, 151, 152, 153, 155, - 177, 0, 165, 166, 0, 147, 148, 154, 159, 158, - 160, 156, 157, 0, 0, 0, 0, 0, 170, 168, - 178, 179, 150, 151, 152, 153, 155, 177, 0, 165, - 166, 0, 147, 148, 154, 159, 158, 160, 156, 157, + 0, 156, 156, 156, 156, 0, 0, 0, 174, 0, + 0, 0, 0, 181, 179, 189, 190, 161, 162, 163, + 164, 166, 0, 0, 176, 177, 0, 158, 159, 165, + 170, 169, 171, 167, 168, 156, 187, 175, 173, 0, + 0, 185, 183, 0, 184, 182, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, + 160, 180, 172, 187, 175, 156, 0, 0, 185, 183, + 0, 184, 182, 186, 0, 0, 0, 188, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 160, 180, 172, + 0, 187, 175, 174, 0, 0, 185, 183, 0, 184, + 182, 186, 0, 0, 188, 0, 0, 175, 0, 0, + 175, 0, 0, 0, 178, 160, 180, 172, 0, 0, + 174, 0, 0, 173, 175, 175, 0, 0, 0, 0, + 0, 0, 191, 188, 0, 191, 0, 191, 191, 191, + 191, 0, 0, 0, 0, 0, 0, 0, 174, 0, + 173, 0, 191, 191, 191, 191, 191, 191, 0, 175, + 0, 0, 0, 0, 174, 181, 179, 189, 190, 161, + 162, 163, 164, 166, 0, 0, 176, 177, 173, 158, + 159, 165, 170, 169, 171, 167, 168, 191, 191, 0, + 0, 175, 181, 179, 189, 190, 161, 162, 163, 164, + 166, 0, 0, 176, 177, 0, 158, 159, 165, 170, + 169, 171, 167, 168, 0, 0, 0, 0, 191, 191, + 0, 181, 179, 189, 190, 0, 188, 0, 0, 0, + 0, 0, 176, 177, 0, 0, 0, 192, 0, 0, + 192, 0, 192, 192, 192, 192, 174, 174, 174, 0, + 0, 0, 0, 156, 0, 0, 0, 192, 192, 192, + 192, 192, 192, 187, 175, 0, 0, 0, 185, 183, + 0, 184, 182, 186, 0, 0, 0, 0, 0, 0, + 0, 196, 0, 0, 196, 0, 178, 196, 180, 0, + 0, 0, 192, 192, 0, 0, 0, 0, 0, 0, + 0, 196, 196, 196, 196, 196, 196, 0, 0, 0, + 0, 188, 0, 0, 181, 179, 189, 190, 161, 162, + 163, 164, 166, 192, 192, 176, 177, 0, 158, 159, + 165, 170, 169, 171, 167, 168, 196, 196, 188, 0, + 0, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 0, 12, 156, 156, 0, 156, 156, 156, 156, 156, + 156, 156, 156, 0, 0, 0, 188, 196, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 168, 168, 0, - 0, 170, 168, 178, 179, 150, 151, 152, 153, 155, - 177, 0, 165, 166, 0, 147, 148, 154, 159, 158, - 160, 156, 157, 0, 0, 0, 0, 0, 170, 168, - 178, 179, 150, 151, 152, 153, 155, 177, 0, 165, - 166, 0, 147, 148, 154, 159, 158, 160, 156, 157, - 0, 0, 0, 0, 0, 170, 168, 178, 179, 150, - 151, 152, 153, 155, 177, 0, 165, 166, 0, 147, - 148, 154, 159, 158, 160, 156, 157, 0, 0, 0, - 0, 0, 0, 383, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 170, 168, - 178, 179, 150, 151, 152, 153, 155, 169, 0, 165, - 166, 0, 147, 148, 154, 159, 158, 160, 156, 157, - 0, 0, 0, 0, 0, 170, 168, 178, 179, 150, - 151, 152, 153, 155, 170, 0, 165, 166, 0, 147, - 148, 154, 159, 158, 160, 156, 157, 0, 0, 0, - 0, 0, 170, 168, 178, 179, 150, 151, 152, 153, - 155, 0, 0, 165, 166, 0, 147, 148, 154, 159, - 158, 160, 156, 157, 176, 164, 0, 0, 385, 174, - 172, 0, 173, 171, 175, 0, 0, 0, 0, 169, - 169, 169, 0, 0, 0, 0, 0, 167, 149, 169, - 161, 176, 164, 0, 0, 401, 174, 172, 0, 173, - 171, 175, 0, 0, 0, 0, 170, 170, 170, 0, - 0, 0, 0, 0, 167, 149, 169, 161, 176, 164, - 0, 163, 0, 174, 172, 0, 173, 171, 175, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, - 0, 167, 149, 169, 161, 0, 0, 171, 163, 0, - 171, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 152, 152, 0, 171, 171, 152, 152, 0, 152, - 152, 152, 0, 0, 0, 163, 0, 0, 162, 0, - 0, 0, 0, 0, 152, 152, 152, 152, 176, 164, - 0, 0, 0, 174, 172, 0, 173, 171, 175, 171, - 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, - 0, 167, 149, 169, 161, 176, 164, 0, 152, 0, - 174, 172, 0, 173, 171, 175, 0, 0, 0, 0, - 0, 171, 0, 173, 0, 0, 173, 0, 167, 149, - 169, 161, 0, 0, 0, 163, 0, 0, 152, 0, - 173, 173, 0, 0, 0, 0, 0, 0, 176, 164, - 0, 0, 0, 174, 172, 0, 173, 171, 175, 0, - 0, 0, 163, 0, 0, 162, 0, 0, 0, 0, - 0, 167, 149, 169, 161, 173, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 187, 162, 187, 187, 187, 187, 0, 0, 0, - 172, 0, 0, 172, 0, 163, 0, 173, 187, 187, - 187, 187, 187, 187, 0, 0, 188, 172, 172, 188, - 0, 188, 188, 188, 188, 0, 0, 0, 0, 177, - 139, 0, 0, 139, 0, 162, 188, 188, 188, 188, - 188, 188, 0, 187, 187, 0, 135, 139, 139, 135, - 0, 0, 172, 0, 0, 0, 177, 0, 0, 140, - 0, 0, 140, 135, 135, 0, 0, 0, 0, 0, - 0, 188, 188, 0, 187, 187, 140, 140, 0, 0, - 0, 0, 139, 177, 172, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, - 0, 0, 188, 188, 0, 0, 0, 0, 0, 0, - 0, 140, 0, 0, 139, 0, 0, 170, 168, 178, - 179, 150, 151, 152, 153, 155, 152, 171, 165, 166, - 135, 147, 148, 154, 159, 158, 160, 156, 157, 0, - 0, 0, 0, 140, 170, 168, 178, 179, 150, 151, - 152, 153, 155, 177, 0, 165, 166, 0, 147, 148, - 154, 159, 158, 160, 156, 157, 0, 0, 0, 0, - 0, 170, 168, 178, 179, 150, 151, 152, 153, 155, - 177, 0, 165, 166, 0, 147, 148, 154, 159, 158, - 160, 156, 157, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, - 171, 171, 0, 173, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 177, 12, 152, 152, 0, 152, 152, - 152, 152, 152, 152, 152, 152, 0, 0, 0, 0, - 0, 170, 168, 178, 179, 150, 151, 152, 153, 155, - 0, 0, 165, 166, 0, 147, 148, 154, 159, 158, - 160, 156, 157, 0, 0, 0, 0, 0, 170, 168, - 178, 179, 150, 151, 152, 153, 155, 0, 0, 165, - 166, 187, 0, 148, 154, 159, 158, 160, 156, 157, - 172, 0, 0, 0, 0, 173, 173, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 170, 168, 178, 179, 150, 151, 152, 153, 155, - 139, 0, 165, 166, 0, 0, 0, 154, 159, 158, - 160, 156, 157, 0, 0, 0, 135, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, - 187, 187, 0, 0, 187, 187, 187, 187, 187, 0, - 0, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 172, 172, 172, 0, 0, 0, 188, 188, - 0, 0, 188, 188, 188, 188, 188, 0, 0, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 192, 0, 139, 192, 0, 0, 192, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, - 192, 192, 192, 192, 192, 192, 179, 0, 0, 179, - 0, 140, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 179, 179, 0, 179, - 0, 179, 0, 0, 181, 192, 192, 181, 0, 0, - 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 181, 181, 0, 181, 0, 181, - 0, 179, 179, 176, 164, 0, 192, 192, 174, 172, - 0, 173, 171, 175, 180, 0, 0, 180, 0, 0, - 180, 0, 0, 0, 0, 0, 167, 0, 169, 181, - 181, 0, 179, 179, 180, 180, 0, 180, 0, 180, - 0, 0, 182, 0, 0, 182, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 181, 181, 182, 182, 0, 182, 0, 182, 194, 180, - 180, 194, 0, 0, 194, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 194, 194, - 0, 194, 0, 194, 0, 0, 0, 182, 182, 0, - 180, 180, 0, 0, 0, 0, 0, 0, 0, 0, - 183, 0, 0, 183, 0, 0, 183, 0, 0, 0, - 0, 0, 0, 194, 194, 0, 0, 0, 182, 182, - 183, 183, 0, 183, 0, 183, 184, 0, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 175, 0, 181, + 179, 189, 190, 161, 162, 163, 164, 166, 0, 0, + 176, 177, 0, 158, 159, 165, 170, 169, 171, 167, + 168, 0, 0, 0, 0, 191, 181, 179, 189, 190, + 161, 162, 163, 164, 166, 0, 0, 176, 177, 0, + 0, 159, 165, 170, 169, 171, 167, 168, 0, 0, + 0, 0, 0, 0, 181, 179, 189, 190, 161, 162, + 163, 164, 166, 0, 0, 176, 177, 0, 0, 0, + 165, 170, 169, 171, 167, 168, 0, 0, 0, 175, + 175, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 191, 0, 0, 191, 191, + 191, 191, 191, 0, 0, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 0, 0, 0, 0, + 0, 0, 185, 0, 0, 185, 0, 0, 185, 0, + 192, 0, 0, 0, 0, 0, 0, 0, 188, 0, + 0, 0, 185, 185, 0, 185, 184, 185, 0, 184, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 194, 194, 184, 184, 0, 184, - 0, 184, 0, 0, 195, 183, 183, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 184, 184, 0, 184, + 0, 184, 0, 0, 196, 0, 0, 185, 185, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 192, 184, 184, 192, 192, 192, 192, 192, 185, 185, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 0, 0, 0, 0, 0, 181, 179, 189, 190, + 0, 0, 184, 184, 0, 0, 0, 176, 177, 0, + 0, 0, 0, 196, 196, 0, 0, 196, 196, 196, + 196, 196, 0, 0, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 186, 0, 0, 186, 0, + 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 186, 186, 0, 186, 198, + 186, 0, 198, 0, 0, 198, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 198, 0, 198, 187, 198, 0, 187, 0, 0, 187, + 186, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 187, 0, 187, 188, 187, 0, + 188, 0, 0, 188, 198, 198, 0, 0, 0, 0, + 0, 186, 186, 0, 0, 0, 0, 188, 188, 0, + 188, 199, 188, 0, 199, 0, 0, 0, 187, 187, + 0, 0, 0, 0, 0, 198, 198, 0, 199, 199, + 0, 199, 0, 199, 197, 0, 0, 197, 0, 0, + 0, 0, 188, 188, 0, 0, 0, 0, 0, 187, + 187, 197, 197, 0, 197, 0, 197, 0, 0, 138, + 0, 0, 138, 199, 199, 185, 0, 0, 0, 0, + 0, 0, 0, 188, 188, 0, 138, 138, 0, 138, + 0, 138, 0, 0, 0, 0, 197, 0, 0, 184, + 0, 0, 0, 0, 199, 199, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 175, 0, 0, 0, 185, + 183, 138, 184, 182, 186, 0, 0, 197, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 178, 0, 180, + 0, 0, 0, 0, 0, 0, 0, 0, 185, 185, + 185, 185, 185, 138, 0, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 0, 0, 0, 0, + 0, 174, 184, 184, 184, 184, 184, 0, 0, 184, + 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, + 187, 175, 0, 0, 0, 185, 183, 0, 184, 182, + 186, 173, 177, 0, 0, 177, 0, 0, 0, 0, + 0, 0, 0, 178, 0, 180, 0, 0, 186, 177, + 177, 0, 0, 0, 0, 0, 176, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 195, 0, 195, 193, 195, 0, 193, 0, - 0, 184, 184, 0, 0, 0, 183, 183, 0, 0, - 0, 0, 193, 193, 0, 193, 0, 193, 134, 0, - 0, 134, 0, 192, 0, 0, 195, 195, 0, 0, - 0, 0, 184, 184, 0, 134, 134, 0, 134, 0, - 134, 0, 0, 0, 0, 0, 0, 193, 0, 179, - 0, 0, 0, 0, 0, 0, 0, 195, 195, 0, + 0, 0, 198, 176, 176, 0, 0, 174, 0, 0, + 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, + 0, 0, 200, 0, 0, 200, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 176, 200, + 200, 0, 0, 0, 0, 0, 177, 0, 0, 0, + 188, 186, 186, 186, 186, 186, 0, 0, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 0, + 176, 199, 0, 0, 200, 198, 198, 198, 198, 198, + 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 0, 197, 0, 0, 0, 0, 187, + 187, 187, 187, 187, 0, 0, 200, 0, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 0, 0, 138, + 0, 0, 0, 188, 188, 188, 188, 188, 0, 0, + 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 0, 0, 0, 199, 199, 199, 199, 199, 188, + 0, 0, 0, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 0, 0, 0, 0, 0, 197, 197, 197, + 197, 197, 201, 0, 0, 201, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 0, 0, 0, 0, 201, + 201, 0, 138, 138, 138, 138, 138, 0, 0, 0, + 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 178, 0, 0, 178, 179, 0, 0, 179, 180, 0, + 0, 180, 0, 0, 201, 188, 181, 178, 178, 181, + 0, 179, 179, 0, 0, 180, 180, 181, 179, 189, + 190, 0, 0, 181, 181, 0, 0, 182, 176, 177, + 182, 0, 177, 0, 0, 277, 201, 189, 0, 0, + 189, 0, 178, 0, 182, 182, 179, 0, 190, 0, + 180, 190, 0, 0, 189, 189, 176, 0, 181, 0, + 0, 0, 0, 0, 0, 190, 190, 0, 0, 0, + 0, 0, 0, 0, 178, 0, 0, 0, 179, 182, + 0, 0, 180, 0, 0, 0, 0, 0, 0, 189, + 181, 0, 200, 181, 179, 189, 190, 295, 296, 0, + 190, 0, 0, 0, 176, 177, 0, 0, 0, 0, + 0, 182, 0, 0, 177, 177, 177, 0, 108, 0, + 0, 189, 0, 0, 0, 108, 337, 0, 108, 0, + 108, 0, 190, 0, 0, 0, 0, 0, 176, 176, + 176, 0, 0, 0, 108, 0, 0, 0, 0, 108, + 0, 0, 0, 0, 0, 0, 357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 0, 0, 0, 0, 0, 181, 193, 193, - 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, - 0, 0, 192, 192, 0, 0, 192, 192, 192, 192, - 192, 0, 134, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 0, 0, 0, 180, 0, 0, - 0, 0, 179, 179, 179, 179, 179, 0, 0, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 0, 0, 0, 0, 0, 182, 0, 0, 0, 0, - 181, 181, 181, 181, 181, 0, 0, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 0, 0, - 0, 194, 0, 0, 0, 0, 170, 168, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 165, 166, 0, - 180, 180, 180, 180, 180, 0, 0, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 0, 0, - 0, 0, 0, 183, 0, 0, 0, 0, 182, 182, - 182, 182, 182, 0, 0, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 0, 0, 0, 184, - 0, 0, 0, 0, 194, 194, 194, 194, 194, 0, - 0, 0, 0, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 0, 0, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 200, 200, 200, 108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 183, 183, 183, 183, - 183, 0, 0, 0, 0, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 0, 0, 0, 0, 134, 0, - 0, 0, 184, 184, 184, 184, 184, 0, 0, 0, - 0, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 0, 0, 0, 0, 0, 0, 0, 195, 195, 195, - 195, 195, 0, 0, 0, 0, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 0, 0, 0, 193, 193, - 193, 193, 193, 0, 0, 0, 0, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 0, 0, 0, 0, - 0, 134, 134, 134, 134, 134, 0, 0, 0, 0, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 40, - 176, 164, 43, 43, 0, 174, 172, 0, 173, 171, - 175, 0, 196, 0, 0, 196, 43, 0, 43, 0, - 0, 197, 0, 167, 197, 169, 176, 164, 0, 196, - 196, 174, 172, 43, 173, 171, 175, 174, 197, 197, - 174, 175, 0, 0, 175, 176, 43, 0, 176, 167, - 177, 169, 0, 177, 174, 174, 0, 163, 175, 175, - 0, 0, 176, 176, 196, 0, 0, 177, 177, 0, - 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, - 0, 178, 0, 163, 178, 0, 0, 162, 0, 174, - 0, 0, 185, 175, 0, 185, 196, 176, 178, 178, - 0, 0, 177, 0, 0, 197, 43, 0, 0, 185, - 185, 0, 0, 0, 186, 0, 0, 186, 0, 0, - 0, 174, 0, 0, 0, 175, 0, 0, 0, 176, - 0, 186, 186, 178, 177, 0, 0, 0, 0, 0, - 0, 0, 0, 43, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 108, 0, + 108, 108, 104, 402, 0, 104, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 178, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, + 0, 104, 0, 423, 0, 0, 104, 0, 0, 0, + 108, 0, 201, 0, 0, 0, 0, 105, 0, 0, + 106, 108, 107, 0, 0, 0, 0, 0, 105, 0, + 0, 106, 0, 107, 104, 0, 326, 0, 0, 0, + 0, 114, 0, 0, 0, 0, 128, 0, 0, 0, + 178, 0, 114, 0, 179, 0, 0, 0, 180, 0, + 0, 0, 0, 0, 0, 104, 181, 104, 104, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 104, - 0, 0, 0, 0, 0, 0, 104, 0, 0, 104, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 43, - 0, 0, 97, 100, 0, 99, 0, 100, 104, 0, - 100, 0, 0, 100, 0, 100, 0, 0, 0, 0, - 98, 0, 0, 0, 0, 177, 107, 0, 0, 100, - 0, 0, 0, 0, 100, 0, 0, 0, 0, 104, - 0, 104, 104, 0, 0, 0, 43, 0, 0, 0, - 0, 177, 196, 0, 39, 0, 0, 0, 0, 0, - 0, 197, 100, 0, 43, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, - 0, 175, 0, 0, 0, 176, 0, 0, 102, 0, - 177, 0, 0, 100, 0, 100, 100, 101, 0, 0, - 0, 0, 0, 0, 97, 0, 0, 99, 0, 100, - 0, 0, 0, 170, 168, 178, 179, 0, 0, 0, - 0, 178, 0, 315, 165, 166, 0, 43, 107, 0, - 0, 0, 185, 0, 196, 196, 196, 0, 0, 170, - 168, 178, 179, 197, 197, 197, 0, 0, 0, 0, - 165, 166, 0, 0, 186, 0, 39, 0, 0, 174, - 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, - 0, 0, 177, 177, 177, 0, 104, 104, 104, 104, - 104, 104, 0, 0, 0, 0, 0, 316, 0, 0, - 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 178, 178, 178, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 185, 185, 0, 0, 0, - 0, 0, 108, 55, 56, 57, 58, 59, 0, 104, - 100, 100, 100, 100, 100, 100, 186, 186, 186, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 97, 104, - 104, 99, 0, 100, 0, 0, 104, 104, 104, 104, - 0, 0, 104, 0, 0, 0, 0, 0, 0, 222, - 0, 0, 107, 0, 0, 106, 104, 104, 104, 104, - 0, 104, 104, 100, 0, 0, 104, 104, 104, 104, - 104, 0, 0, 0, 0, 61, 109, 0, 0, 0, - 39, 0, 110, 100, 100, 0, 0, 0, 105, 0, - 100, 100, 100, 100, 0, 0, 100, 0, 104, 104, - 0, 0, 0, 0, 108, 55, 56, 57, 58, 59, - 100, 100, 100, 100, 102, 100, 100, 0, 0, 0, - 100, 0, 100, 100, 100, 0, 0, 0, 0, 0, - 101, 0, 0, 0, 0, 0, 0, 97, 0, 101, - 99, 0, 100, 0, 103, 104, 97, 0, 0, 99, - 0, 100, 100, 100, 0, 0, 0, 106, 224, 0, - 0, 107, 0, 0, 0, 0, 0, 234, 0, 101, - 107, 0, 0, 0, 0, 0, 97, 61, 109, 99, - 0, 100, 0, 0, 110, 304, 305, 306, 0, 39, - 105, 0, 0, 0, 0, 0, 0, 236, 39, 0, - 107, 0, 0, 0, 307, 308, 309, 310, 0, 311, - 312, 0, 0, 0, 313, 0, 314, 0, 0, 0, - 0, 0, 0, 102, 0, 0, 0, 101, 39, 0, - 0, 0, 102, 0, 97, 0, 0, 99, 0, 100, - 0, 0, 0, 0, 0, 0, 103, 104, 108, 55, - 56, 57, 58, 59, 0, 0, 101, 0, 107, 0, - 0, 0, 102, 97, 0, 0, 99, 0, 100, 0, + 39, 0, 0, 0, 0, 0, 0, 182, 0, 0, + 0, 0, 0, 0, 201, 201, 201, 189, 0, 0, + 327, 0, 0, 109, 0, 0, 0, 0, 190, 0, + 0, 0, 0, 0, 109, 108, 108, 108, 108, 108, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 178, 178, 178, 0, 179, 179, 179, 0, + 180, 180, 180, 0, 0, 0, 0, 0, 181, 181, + 181, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 105, 0, 0, 106, 0, 107, 0, 108, 182, + 182, 182, 0, 0, 0, 0, 0, 0, 0, 189, + 189, 189, 234, 0, 0, 114, 0, 0, 108, 108, + 190, 190, 190, 0, 0, 108, 108, 108, 108, 0, + 0, 108, 104, 104, 104, 104, 104, 104, 0, 0, + 0, 0, 0, 39, 0, 108, 108, 108, 108, 0, + 108, 108, 0, 0, 0, 108, 108, 108, 108, 108, + 0, 0, 0, 0, 0, 0, 0, 115, 56, 57, + 58, 59, 60, 0, 0, 0, 0, 109, 115, 56, + 57, 58, 59, 60, 0, 104, 0, 108, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 0, 0, 0, 105, 104, 104, 106, 0, 107, + 0, 0, 104, 104, 104, 104, 0, 0, 104, 0, + 113, 0, 0, 0, 0, 236, 0, 0, 114, 0, + 0, 113, 104, 104, 104, 104, 0, 104, 104, 0, + 62, 116, 104, 0, 104, 104, 104, 117, 315, 316, + 317, 62, 116, 112, 0, 0, 39, 0, 117, 0, + 0, 0, 0, 0, 112, 0, 0, 318, 319, 320, + 321, 0, 322, 323, 104, 104, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 107, 0, 0, + 109, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 105, 0, 0, 106, 0, 107, 0, 0, 110, + 111, 115, 56, 57, 58, 59, 60, 108, 0, 0, + 110, 111, 246, 0, 105, 114, 0, 106, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, - 102, 61, 109, 0, 0, 0, 0, 0, 110, 0, - 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, - 0, 0, 0, 0, 0, 0, 0, 108, 55, 56, - 57, 58, 59, 0, 0, 0, 108, 55, 56, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 248, 0, 0, 114, 108, + 0, 0, 0, 39, 0, 0, 105, 0, 108, 106, + 0, 107, 0, 0, 113, 105, 0, 0, 106, 0, + 107, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 114, 0, 0, 0, 62, 116, 0, 109, 0, 114, + 0, 117, 0, 0, 0, 0, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, + 109, 0, 0, 0, 0, 0, 0, 39, 0, 0, + 0, 0, 0, 0, 115, 56, 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 103, 104, 0, 0, 0, 0, 108, 55, 56, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 109, 0, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 109, 0, 0, 0, 0, 0, 110, 0, 61, - 109, 0, 0, 105, 0, 0, 110, 0, 0, 106, - 0, 0, 105, 0, 131, 55, 56, 57, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 109, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 0, 0, 105, 108, 55, 56, 57, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 106, 103, 104, + 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 109, 0, - 0, 0, 0, 0, 110, 0, 106, 0, 103, 104, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 109, 0, 0, - 0, 0, 0, 110, 0, 112, 0, 0, 0, 105, - 0, 0, 0, 0, 0, 0, 0, 133, 0, 134, - 135, 136, 137, 138, 139, 0, 141, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 62, 116, 0, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 115, 56, 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 115, 56, 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 104, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 223, 225, 226, 227, - 228, 229, 231, 232, 233, 235, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 0, 0, 0, - 250, 229, 0, 252, 0, 0, 0, 0, 258, 0, - 0, 0, 259, 260, 0, 0, 0, 0, 0, 0, - 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 111, 0, 0, + 0, 0, 0, 0, 113, 0, 115, 56, 57, 58, + 59, 60, 0, 0, 0, 142, 56, 57, 58, 59, + 60, 0, 0, 0, 62, 116, 0, 113, 0, 0, + 0, 117, 0, 0, 0, 0, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 62, 116, 0, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 113, + 112, 0, 0, 0, 0, 0, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, + 116, 0, 0, 0, 0, 0, 117, 0, 143, 116, + 0, 0, 112, 110, 111, 117, 0, 0, 0, 0, + 119, 112, 0, 0, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 111, 144, 145, + 146, 147, 148, 149, 150, 0, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 0, 279, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 281, 0, 282, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 110, 111, + 0, 0, 0, 0, 0, 0, 0, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 235, 237, 238, 239, 240, 241, 243, 244, 245, 247, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 0, 0, 0, 0, 241, 263, 0, 264, 0, + 0, 0, 0, 271, 0, 0, 0, 272, 273, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 264, 264, 0, 0, 0, 0, 0, 229, - 0, 0, 291, 292, 0, 0, 0, 0, 0, 0, - 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 289, 0, 290, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, + 0, 293, 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, 119, 119, + 0, 0, 0, 241, 0, 0, 302, 303, 0, 0, + 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, - 0, 229, 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 264, 373, 0, 375, 0, - 0, 376, 377, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 0, 393, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 384, 0, 386, 0, 0, 387, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 424, + 0, 0, 0, 0, 119, 0, 404, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 435, ); - protected static $yyCheck = array(37, - 38, 123, 40, 41, 42, 43, 44, 45, 46, 47, - 125, 91, 140, 194, 125, 260, 181, 300, 301, 6, - 58, 59, 60, 61, 62, 63, 37, 38, 92, 92, - 41, 42, 43, 44, 45, 46, 47, 312, 320, 334, - 35, 44, 59, 123, 59, 340, 260, 58, 59, 60, - 61, 62, 63, 37, 38, 93, 94, 41, 42, 43, - 44, 45, 46, 47, 260, 261, 262, 263, 264, 265, - 296, 92, 92, 321, 58, 59, 60, 61, 62, 63, - 91, 41, 93, 94, 44, 123, 124, 125, 35, 260, - 93, 300, 301, 92, 123, 340, 277, 47, 58, 59, - 92, 40, 41, 329, 269, 286, 123, 91, 123, 93, - 94, 37, 123, 124, 125, 5, 42, 43, 334, 45, - 46, 47, 72, 73, 340, 334, 59, 402, 403, 300, - 125, 340, 67, 93, 60, 25, 62, 333, 37, 123, - 124, 125, 129, 42, 43, 80, 45, 46, 47, 39, - 37, 38, 41, 44, 41, 42, 43, 44, 45, 46, - 47, 60, 59, 62, 44, 125, 331, 91, 59, 64, - 59, 58, 59, 60, 61, 62, 63, 37, 38, 59, - 44, 41, 42, 43, 44, 45, 46, 47, 41, 311, - 41, 44, 93, 44, 44, 59, 260, 260, 58, 59, - 60, 61, 62, 63, 37, 38, 93, 94, 41, 42, - 43, 44, 45, 46, 47, 35, 41, 300, 301, 44, - 348, 40, 41, 402, 403, 58, 59, 60, 61, 62, - 63, 260, 41, 93, 94, 44, 37, 124, 125, 260, - 260, 42, 43, 35, 45, 46, 47, 373, 374, 58, - 59, 334, 332, 41, 300, 301, 44, 340, 373, 374, - 93, 94, 373, 374, 124, 125, 40, 310, 260, 333, - 333, 59, 310, 311, 312, 310, 340, 340, 260, 261, - 262, 263, 264, 265, 93, 280, 281, 282, 283, 284, - 285, 124, 125, 331, 41, 41, 123, 44, 44, 36, - 37, 312, 340, 311, 61, 61, 41, 41, 40, 44, - 44, 340, 59, 50, 41, 52, 125, 37, 300, 340, - 331, 332, 42, 58, 59, 59, 41, 47, 312, 123, - 67, 44, 44, 280, 281, 282, 283, 284, 285, 260, - 335, 333, 40, 80, 40, 410, 260, 331, 332, 44, - 41, 333, 44, 300, 301, 61, 61, 340, 93, 40, - 340, 40, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 331, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 40, 44, 312, 41, 58, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 41, 123, + protected static $yyCheck = array(33, + 41, 41, 36, 37, 44, 36, 37, 123, 92, 91, + 125, 151, 6, 47, 92, 307, 50, 37, 52, 50, + 54, 52, 42, 54, 37, 44, 125, 47, 260, 42, + 43, 35, 45, 46, 47, 123, 70, 35, 312, 70, + 92, 123, 76, 77, 192, 260, 260, 327, 340, 92, + 92, 85, 320, 41, 85, 37, 38, 321, 40, 41, + 42, 43, 44, 45, 46, 47, 260, 35, 300, 92, + 206, 59, 47, 59, 93, 92, 58, 59, 60, 61, + 62, 63, 37, 38, 364, 59, 41, 42, 43, 44, + 45, 46, 47, 334, 59, 35, 59, 41, 378, 340, + 44, 76, 77, 58, 59, 60, 61, 62, 63, 44, + 38, 93, 94, 41, 58, 59, 44, 151, 35, 44, + 41, 125, 91, 44, 59, 340, 340, 125, 402, 403, + 58, 59, 280, 61, 59, 63, 91, 123, 93, 94, + 44, 123, 124, 125, 260, 334, 140, 35, 64, 93, + 41, 340, 288, 44, 188, 59, 436, 188, 123, 439, + 93, 297, 44, 443, 41, 93, 94, 44, 123, 124, + 125, 300, 301, 310, 41, 5, 260, 44, 70, 37, + 38, 125, 260, 41, 42, 43, 44, 45, 46, 47, + 40, 58, 59, 85, 342, 25, 124, 125, 40, 41, + 58, 59, 60, 61, 62, 63, 37, 38, 260, 39, + 41, 42, 43, 44, 45, 46, 47, 260, 260, 359, + 40, 41, 41, 311, 340, 44, 93, 58, 59, 60, + 61, 62, 63, 91, 310, 93, 94, 260, 261, 262, + 263, 264, 265, 41, 402, 403, 44, 37, 38, 333, + 332, 41, 42, 43, 44, 45, 46, 47, 373, 374, + 294, 59, 93, 94, 311, 123, 124, 125, 58, 59, + 60, 61, 62, 63, 373, 374, 280, 281, 282, 283, + 284, 285, 280, 281, 282, 283, 284, 285, 340, 123, + 333, 333, 312, 124, 125, 300, 301, 340, 340, 312, + 373, 374, 41, 93, 94, 44, 41, 341, 41, 44, + 333, 44, 280, 281, 282, 283, 284, 285, 61, 58, + 59, 76, 77, 346, 59, 359, 59, 61, 310, 311, + 312, 335, 300, 301, 124, 125, 40, 335, 300, 301, + 280, 281, 282, 283, 284, 285, 410, 41, 41, 331, + 123, 260, 44, 321, 93, 44, 41, 312, 340, 44, + 300, 301, 40, 280, 281, 282, 283, 284, 285, 410, + 410, 40, 334, 58, 59, 40, 331, 332, 340, 41, + 410, 44, 402, 403, 41, 44, 125, 331, 422, 402, + 403, 422, 280, 281, 282, 283, 284, 285, 260, 340, + 61, 61, 40, 331, 340, 40, 40, 44, 93, 41, + 58, 41, 300, 301, 123, 40, 40, 93, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 41, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 125, 41, 41, 340, 123, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 312, 44, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 300, 301, 413, + 414, 415, 125, 331, 332, 41, 404, 405, 406, 407, + 408, 312, 58, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 280, 281, 282, 283, 284, 285, + 331, 334, 40, 40, 40, 59, 59, 340, 37, 38, + 40, 59, 41, 42, 43, 44, 45, 46, 47, 40, + 125, 41, 312, 260, 261, 262, 263, 264, 265, 58, + 59, 60, 61, 62, 63, 361, 59, 125, 40, 125, + 344, 331, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 340, 123, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 93, 94, 59, 413, 41, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 371, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 40, 40, 312, 41, 41, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 312, 93, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 41, 44, - 177, 123, 340, 41, 331, 280, 281, 282, 283, 284, - 285, 125, 312, 413, 414, 415, 58, 40, 40, 40, - 280, 281, 282, 283, 284, 285, 59, 59, 40, 40, - 125, 331, 41, 59, 400, 401, 402, 403, 361, 312, - 300, 301, 59, 125, 40, 411, 412, 125, 280, 281, - 282, 283, 284, 285, 340, 344, 59, 413, 331, 123, - 41, 400, 401, 402, 403, 371, 40, 35, 59, 340, - 125, 312, 41, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 331, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 58, 340, 41, 123, 93, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 125, - 123, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 123, 41, 41, 123, 41, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 41, 41, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 37, - 38, 340, 312, 41, 42, 43, 44, 45, 46, 47, - 41, 402, 403, 58, 413, 414, 415, 41, 41, 93, - 58, 59, 60, 61, 62, 63, 37, 38, 41, 125, - 41, 42, 43, 44, 45, 46, 47, 35, 260, 261, - 262, 263, 264, 265, 41, 59, 125, 58, 59, 60, - 61, 62, 63, 37, 38, 93, 94, 41, 42, 43, - 44, 45, 46, 47, 59, 41, 125, 79, 7, 129, - 185, 42, 184, 41, 58, 59, 60, 61, 62, 63, - 330, 77, 93, 94, 411, 320, 124, 125, 268, 410, - 390, 85, 402, 403, 183, 211, 23, 37, 38, -1, - -1, 41, 42, 43, 44, 45, 46, 47, -1, 93, - 94, -1, -1, 124, 125, -1, -1, -1, 58, 59, - 60, 61, 62, 63, 37, 38, -1, 125, 41, 42, - 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, - 124, 125, -1, -1, -1, 58, 59, 60, 61, 62, - 63, 37, 38, 93, 94, 41, 42, 43, 44, 45, - 46, 47, 280, 281, 282, 283, 284, 285, -1, -1, - -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, - 93, 94, 300, 301, 124, 125, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 46, 47, 321, 262, 263, -1, 93, 94, -1, - -1, 124, 125, 58, 59, 60, 61, 62, 63, 37, - 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, - -1, -1, -1, 336, -1, 293, -1, -1, 124, 125, + 421, 40, 331, 59, 340, 124, 125, 92, 125, 41, + 58, 41, 340, 125, 123, 93, 123, 123, 41, 123, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 41, + 41, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 37, 38, 41, 41, 41, 42, 43, 44, + 45, 46, 47, 340, 41, 58, 331, 41, 93, 41, + 125, 41, 7, 58, 59, 60, 61, 62, 63, 37, + 38, 59, 41, 41, 42, 43, 44, 45, 46, 47, + 59, 125, 125, 84, 413, 414, 415, 347, 140, 197, 58, 59, 60, 61, 62, 63, 37, 38, 93, 94, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, -1, -1, -1, -1, 323, -1, 58, 59, 60, - 61, 62, 63, -1, 312, 93, 94, -1, 381, 124, - 125, 384, 280, 281, 282, 283, 284, 285, -1, -1, - -1, -1, -1, 331, -1, -1, -1, 355, -1, -1, - 403, 312, 93, 94, -1, -1, 124, 125, -1, -1, - -1, -1, -1, 416, -1, -1, -1, -1, -1, 422, - 331, -1, 380, -1, -1, -1, -1, -1, 312, -1, - -1, -1, -1, 124, 125, -1, -1, 335, -1, -1, - -1, -1, 400, -1, -1, -1, -1, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, - 401, 331, -1, 404, 405, 406, 407, 408, -1, 312, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, -1, 400, 401, 331, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + 41, 42, 43, 44, 45, 46, 47, 196, 42, 41, + 82, 341, 331, 421, 91, 401, 279, 58, 59, 60, + 61, 62, 63, 195, 223, 93, 94, 23, -1, 124, + 125, -1, 392, -1, -1, 395, -1, -1, 413, 414, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, + 47, -1, 93, 94, 414, -1, 124, 125, -1, -1, + -1, 58, 59, 60, 61, 62, 63, 427, 41, -1, + -1, 44, -1, 433, -1, 260, 261, 262, 263, 264, + 265, -1, 37, 124, 125, 58, 59, 42, 43, -1, + 45, 46, 47, 312, -1, -1, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 60, -1, 62, -1, -1, + -1, -1, 331, -1, -1, 300, -1, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, 331, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, 331, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, + 37, 38, 125, -1, 41, 42, 43, 44, 45, 46, + 47, 346, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 37, 38, 93, 94, 41, 42, + 43, 44, 45, 46, 47, -1, -1, 312, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, 331, 124, 125, -1, + -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, + -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, + 93, 94, -1, 331, -1, -1, -1, -1, 58, 59, + -1, 312, -1, -1, 37, 38, -1, -1, -1, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, + 331, 124, 125, -1, -1, -1, -1, 60, 61, 62, + 63, -1, -1, 93, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + -1, 94, 400, 401, 331, 125, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 418, 419, 420, 421, -1, -1, -1, 312, 331, 400, + 401, 124, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 37, 38, -1, -1, -1, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, - -1, -1, 41, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 37, 38, -1, 94, -1, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, -1, -1, 41, 94, -1, 44, 124, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 58, 59, 42, 43, -1, 45, 46, 47, -1, - -1, -1, 94, -1, -1, 124, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 37, 38, -1, 316, -1, - 42, 43, -1, 45, 46, 47, 93, -1, -1, -1, - -1, -1, 124, 125, -1, -1, -1, 59, 60, 61, - 62, 63, 37, 38, -1, 94, -1, 42, 43, -1, - 45, 46, 47, -1, -1, 353, -1, -1, 125, -1, - -1, -1, -1, -1, 59, 60, 61, 62, 63, 367, - -1, -1, 94, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, -1, 45, 46, 47, -1, -1, -1, 94, - -1, -1, 124, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, -1, -1, 41, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, 425, -1, 124, - 428, -1, -1, -1, 432, 60, 61, 62, 63, 37, - 38, -1, 94, -1, 42, 43, -1, 45, 46, 47, + 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, 312, 41, -1, 94, - 44, -1, 124, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 312, -1, -1, 37, 38, + -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, + 413, 414, 415, -1, 331, 400, 401, 402, 403, 58, + 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, 37, 38, 93, 94, 41, 42, 43, 44, + 45, 46, 47, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, 93, 94, 400, 401, 124, 125, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 41, 93, 94, + 44, 331, 124, 125, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, 58, 59, -1, -1, -1, -1, - -1, -1, -1, 312, 41, -1, 94, 44, -1, 124, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 124, + 125, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, -1, -1, -1, -1, -1, 93, - 312, -1, -1, -1, -1, -1, 124, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, + 45, 46, 47, -1, -1, 41, -1, -1, 44, -1, + -1, 125, -1, 413, -1, 60, 61, 62, 63, -1, + -1, -1, 58, 59, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 94, + 37, 38, -1, -1, -1, 42, 43, 93, 45, 46, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, 37, 38, 124, + -1, -1, 42, 43, -1, 45, 46, 47, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, 125, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 312, 331, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, 125, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + 60, 61, 62, 63, -1, -1, -1, 94, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, 37, 38, + -1, -1, -1, 42, 43, -1, 45, 46, 47, -1, + -1, -1, -1, -1, 94, -1, -1, 124, 125, 331, + 59, 60, 61, 62, 63, -1, -1, 37, 38, -1, + -1, -1, 42, 43, -1, 45, 46, 47, -1, -1, + -1, -1, -1, -1, 124, 125, 331, -1, -1, 59, + 60, 61, 62, 63, -1, 94, -1, -1, -1, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 94, 124, -1, -1, 400, 401, + -1, -1, 404, 405, 406, 407, 408, 331, -1, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, -1, -1, 124, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 312, 45, 46, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, 331, 37, 38, -1, 413, + -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 94, -1, 60, + 61, 62, 63, -1, -1, 312, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, + -1, -1, 312, 94, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 413, 414, 415, + 37, 38, -1, 124, 41, 42, 43, -1, 45, 46, + 47, -1, -1, 312, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 94, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 413, 414, 415, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 312, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 331, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 331, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 420, 421, 37, 38, -1, -1, 41, 42, - 43, -1, 45, 46, 47, -1, -1, -1, -1, 413, - 414, 415, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 37, 38, -1, -1, 41, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, 413, 414, 415, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, - -1, 94, -1, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - -1, 60, 61, 62, 63, -1, -1, 41, 94, -1, - 44, 124, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 58, 59, 42, 43, -1, 45, - 46, 47, -1, -1, -1, 94, -1, -1, 124, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, - -1, -1, -1, 42, 43, -1, 45, 46, 47, 93, - -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 37, 38, -1, 94, -1, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, 125, -1, 41, -1, -1, 44, -1, 60, 61, - 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, - 58, 59, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 37, 38, -1, 312, 41, 42, 43, -1, + 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, + 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, + -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, -1, 37, 94, + 331, -1, -1, 42, 43, -1, 45, 46, 47, -1, + -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, + -1, 60, -1, 62, -1, -1, 94, -1, -1, 124, + -1, 58, 59, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, -1, 124, -1, -1, -1, + -1, -1, -1, -1, -1, 312, 93, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, 37, 38, -1, -1, -1, 42, 43, 125, 45, + 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, -1, 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, -1, - -1, -1, 94, -1, -1, 124, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, - -1, 41, 124, 43, 44, 45, 46, -1, -1, -1, - 41, -1, -1, 44, -1, 94, -1, 125, 58, 59, - 60, 61, 62, 63, -1, -1, 38, 58, 59, 41, - -1, 43, 44, 45, 46, -1, -1, -1, -1, 312, - 41, -1, -1, 44, -1, 124, 58, 59, 60, 61, - 62, 63, -1, 93, 94, -1, 41, 58, 59, 44, - -1, -1, 93, -1, -1, -1, 312, -1, -1, 41, - -1, -1, 44, 58, 59, -1, -1, -1, -1, -1, - -1, 93, 94, -1, 124, 125, 58, 59, -1, -1, - -1, -1, 93, 312, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, - -1, 93, -1, -1, 125, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 312, 331, 411, 412, - 125, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, 125, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, -1, -1, -1, 94, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, 94, 37, 38, 124, -1, + -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + 61, 62, 63, 37, 38, 124, -1, -1, 42, 43, + -1, 45, 46, 47, -1, -1, -1, 312, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, + -1, 37, 38, 94, -1, -1, 42, 43, -1, 45, + 46, 47, -1, -1, 312, -1, -1, 41, -1, -1, + 44, -1, -1, -1, 60, 61, 62, 63, -1, -1, + 94, -1, -1, 124, 58, 59, -1, -1, -1, -1, + -1, -1, 38, 312, -1, 41, -1, 43, 44, 45, + 46, -1, -1, -1, -1, -1, -1, -1, 94, -1, + 124, -1, 58, 59, 60, 61, 62, 63, -1, 93, + -1, -1, -1, -1, 331, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 124, 414, + 415, 416, 417, 418, 419, 420, 421, 93, 94, -1, + -1, 125, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, 124, 125, + -1, 400, 401, 402, 403, -1, 312, -1, -1, -1, + -1, -1, 411, 412, -1, -1, -1, 38, -1, -1, + 41, -1, 43, 44, 45, 46, 413, 414, 415, -1, + -1, -1, -1, 312, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, + -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, + -1, 38, -1, -1, 41, -1, 60, 44, 62, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, 312, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 124, 125, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 93, 94, 312, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, - 414, 415, -1, 331, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 312, 410, 411, 412, -1, 414, 415, + -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, 312, 124, 125, -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, 331, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, -1, -1, 331, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + -1, 415, 416, 417, 418, 419, 420, 421, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, -1, -1, + 416, 417, 418, 419, 420, 421, -1, -1, -1, 413, + 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 331, -1, 415, 416, 417, 418, 419, 420, 421, - 331, -1, -1, -1, -1, 413, 414, 415, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 331, -1, 411, 412, -1, -1, -1, 416, 417, 418, - 419, 420, 421, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 413, 414, 415, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 38, -1, 413, 41, -1, -1, 44, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, - 58, 59, 60, 61, 62, 63, 38, -1, -1, 41, - -1, 413, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, -1, -1, 38, 93, 94, 41, -1, -1, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, - -1, 93, 94, 37, 38, -1, 124, 125, 42, 43, - -1, 45, 46, 47, 38, -1, -1, 41, -1, -1, - 44, -1, -1, -1, -1, -1, 60, -1, 62, 93, - 94, -1, 124, 125, 58, 59, -1, 61, -1, 63, -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, 125, 58, 59, -1, 61, -1, 63, 38, 93, - 94, 41, -1, -1, 44, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, -1, -1, -1, 93, 94, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, - -1, -1, -1, 93, 94, -1, -1, -1, 124, 125, - 58, 59, -1, 61, -1, 63, 38, -1, -1, 41, + 331, -1, -1, -1, -1, -1, -1, -1, 312, -1, + -1, -1, 58, 59, -1, 61, 38, 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, - -1, 63, -1, -1, 41, 93, 94, 44, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, 61, 41, 63, -1, 44, -1, - -1, 93, 94, -1, -1, -1, 124, 125, -1, -1, - -1, -1, 58, 59, -1, 61, -1, 63, 41, -1, - -1, 44, -1, 331, -1, -1, 93, 94, -1, -1, - -1, -1, 124, 125, -1, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, -1, 93, -1, 331, - -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, + -1, 63, -1, -1, 331, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, 331, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, 125, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, 331, -1, -1, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 93, 94, 404, 405, 406, 407, 408, 124, 125, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, -1, -1, -1, 400, 401, 402, 403, + -1, -1, 124, 125, -1, -1, -1, 411, 412, -1, + -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 38, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, 38, + 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, 38, 63, -1, 41, -1, -1, 44, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, -1, 61, 38, 63, -1, + 41, -1, -1, 44, 93, 94, -1, -1, -1, -1, + -1, 124, 125, -1, -1, -1, -1, 58, 59, -1, + 61, 41, 63, -1, 44, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, 124, 125, -1, 58, 59, + -1, 61, -1, 63, 41, -1, -1, 44, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, 124, + 125, 58, 59, -1, 61, -1, 63, -1, -1, 41, + -1, -1, 44, 93, 94, 331, -1, -1, -1, -1, + -1, -1, -1, 124, 125, -1, 58, 59, -1, 61, + -1, 63, -1, -1, -1, -1, 93, -1, -1, 331, + -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, + 43, 93, 45, 46, 47, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, + -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, + 406, 407, 408, 125, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, 94, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - -1, 331, -1, -1, -1, -1, 400, 401, 402, 403, - -1, -1, -1, -1, -1, -1, -1, 411, 412, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - -1, -1, -1, 331, -1, -1, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, 331, - -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, - -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, 331, -1, -1, -1, -1, -1, + 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, + 47, 124, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, 60, -1, 62, -1, -1, 331, 58, + 59, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, 404, 405, 406, 407, - 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, 331, -1, - -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, + -1, -1, 331, 58, 59, -1, -1, 94, -1, -1, + -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, 41, -1, -1, 44, 331, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 58, + 59, -1, -1, -1, -1, -1, 125, -1, -1, -1, + 331, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + 125, 331, -1, -1, 93, 404, 405, 406, 407, 408, + -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 331, -1, -1, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 125, -1, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 331, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, -1, 404, 405, 406, 407, 408, 312, + -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, 404, 405, 406, + 407, 408, 41, -1, -1, 44, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, -1, 58, + 59, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, - 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, - 417, 418, 419, 420, 421, -1, -1, -1, 404, 405, - 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 33, - 37, 38, 36, 37, -1, 42, 43, -1, 45, 46, - 47, -1, 41, -1, -1, 44, 50, -1, 52, -1, - -1, 41, -1, 60, 44, 62, 37, 38, -1, 58, - 59, 42, 43, 67, 45, 46, 47, 41, 58, 59, - 44, 41, -1, -1, 44, 41, 80, -1, 44, 60, - 41, 62, -1, 44, 58, 59, -1, 94, 58, 59, - -1, -1, 58, 59, 93, -1, -1, 58, 59, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 94, 44, -1, -1, 124, -1, 93, - -1, -1, 41, 93, -1, 44, 125, 93, 58, 59, - -1, -1, 93, -1, -1, 125, 140, -1, -1, 58, - 59, -1, -1, -1, 41, -1, -1, 44, -1, -1, - -1, 125, -1, -1, -1, 125, -1, -1, -1, 125, - -1, 58, 59, 93, 125, -1, -1, -1, -1, -1, - -1, -1, -1, 177, 93, -1, -1, -1, -1, -1, + 41, -1, -1, 44, 41, -1, -1, 44, 41, -1, + -1, 44, -1, -1, 93, 312, 41, 58, 59, 44, + -1, 58, 59, -1, -1, 58, 59, 400, 401, 402, + 403, -1, -1, 58, 59, -1, -1, 41, 411, 412, + 44, -1, 331, -1, -1, 213, 125, 41, -1, -1, + 44, -1, 93, -1, 58, 59, 93, -1, 41, -1, + 93, 44, -1, -1, 58, 59, 331, -1, 93, -1, + -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, + -1, -1, -1, -1, 125, -1, -1, -1, 125, 93, + -1, -1, 125, -1, -1, -1, -1, -1, -1, 93, + 125, -1, 331, 400, 401, 402, 403, 275, 276, -1, + 93, -1, -1, -1, 411, 412, -1, -1, -1, -1, + -1, 125, -1, -1, 413, 414, 415, -1, 33, -1, + -1, 125, -1, -1, -1, 40, 304, -1, 43, -1, + 45, -1, 125, -1, -1, -1, -1, -1, 413, 414, + 415, -1, -1, -1, 59, -1, -1, -1, -1, 64, + -1, -1, -1, -1, -1, -1, 334, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 125, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, 413, 414, 415, 92, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 366, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 125, 33, - -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, -1, -1, 283, - -1, -1, 40, 33, -1, 43, -1, 45, 92, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - 58, -1, -1, -1, -1, 312, 64, -1, -1, 59, - -1, -1, -1, -1, 64, -1, -1, -1, -1, 123, - -1, 125, 126, -1, -1, -1, 330, -1, -1, -1, - -1, 312, 331, -1, 92, -1, -1, -1, -1, -1, - -1, 331, 92, -1, 348, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, - -1, 331, -1, -1, -1, 331, -1, -1, 126, -1, - 331, -1, -1, 123, -1, 125, 126, 33, -1, -1, - -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, - -1, -1, -1, 400, 401, 402, 403, -1, -1, -1, - -1, 331, -1, 59, 411, 412, -1, 411, 64, -1, - -1, -1, 331, -1, 413, 414, 415, -1, -1, 400, - 401, 402, 403, 413, 414, 415, -1, -1, -1, -1, - 411, 412, -1, -1, 331, -1, 92, -1, -1, 413, - 414, 415, -1, 413, 414, 415, -1, 413, 414, 415, - -1, -1, 413, 414, 415, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, -1, 123, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 413, 414, 415, -1, -1, -1, -1, - -1, -1, -1, -1, 413, 414, 415, -1, -1, -1, - -1, -1, 260, 261, 262, 263, 264, 265, -1, 313, - 260, 261, 262, 263, 264, 265, 413, 414, 415, -1, - -1, 33, -1, -1, -1, -1, -1, -1, 40, 333, - 334, 43, -1, 45, -1, -1, 340, 341, 342, 343, - -1, -1, 346, -1, -1, -1, -1, -1, -1, 61, - -1, -1, 64, -1, -1, 313, 360, 361, 362, 363, - -1, 365, 366, 313, -1, -1, 370, 371, 372, 373, - 374, -1, -1, -1, -1, 333, 334, -1, -1, -1, - 92, -1, 340, 333, 334, -1, -1, -1, 346, -1, - 340, 341, 342, 343, -1, -1, 346, -1, 402, 403, - -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, - 360, 361, 362, 363, 126, 365, 366, -1, -1, -1, - 370, -1, 372, 373, 374, -1, -1, -1, -1, -1, - 33, -1, -1, -1, -1, -1, -1, 40, -1, 33, - 43, -1, 45, -1, 402, 403, 40, -1, -1, 43, - -1, 45, 402, 403, -1, -1, -1, 313, 61, -1, - -1, 64, -1, -1, -1, -1, -1, 61, -1, 33, - 64, -1, -1, -1, -1, -1, 40, 333, 334, 43, - -1, 45, -1, -1, 340, 341, 342, 343, -1, 92, - 346, -1, -1, -1, -1, -1, -1, 61, 92, -1, - 64, -1, -1, -1, 360, 361, 362, 363, -1, 365, - 366, -1, -1, -1, 370, -1, 372, -1, -1, -1, - -1, -1, -1, 126, -1, -1, -1, 33, 92, -1, - -1, -1, 126, -1, 40, -1, -1, 43, -1, 45, - -1, -1, -1, -1, -1, -1, 402, 403, 260, 261, - 262, 263, 264, 265, -1, -1, 33, -1, 64, -1, - -1, -1, 126, 40, -1, -1, 43, -1, 45, -1, + -1, -1, -1, -1, -1, 33, -1, -1, 123, -1, + 125, 126, 40, 391, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 92, 64, -1, -1, + -1, 59, -1, 411, -1, -1, 64, -1, -1, -1, + 33, -1, 331, -1, -1, -1, -1, 40, -1, -1, + 43, 33, 45, -1, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, 92, -1, 59, -1, -1, -1, + -1, 64, -1, -1, -1, -1, 58, -1, -1, -1, + 331, -1, 64, -1, 331, -1, -1, -1, 331, -1, + -1, -1, -1, -1, -1, 123, 331, 125, 126, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, - 126, 333, 334, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, + 92, -1, -1, -1, -1, -1, -1, 331, -1, -1, + -1, -1, -1, -1, 413, 414, 415, 331, -1, -1, + 123, -1, -1, 126, -1, -1, -1, -1, 331, -1, + -1, -1, -1, -1, 126, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 413, 414, 415, -1, 413, 414, 415, -1, + 413, 414, 415, -1, -1, -1, -1, -1, 413, 414, + 415, -1, -1, -1, 33, -1, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, 313, 413, + 414, 415, -1, -1, -1, -1, -1, -1, -1, 413, + 414, 415, 61, -1, -1, 64, -1, -1, 333, 334, + 413, 414, 415, -1, -1, 340, 341, 342, 343, -1, + -1, 346, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, 92, -1, 360, 361, 362, 363, -1, + 365, 366, -1, -1, -1, 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, + 263, 264, 265, -1, -1, -1, -1, 126, 260, 261, + 262, 263, 264, 265, -1, 313, -1, 402, 403, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, 40, 333, 334, 43, -1, 45, + -1, -1, 340, 341, 342, 343, -1, -1, 346, -1, + 313, -1, -1, -1, -1, 61, -1, -1, 64, -1, + -1, 313, 360, 361, 362, 363, -1, 365, 366, -1, + 333, 334, 370, -1, 372, 373, 374, 340, 341, 342, + 343, 333, 334, 346, -1, -1, 92, -1, 340, -1, + -1, -1, -1, -1, 346, -1, -1, 360, 361, 362, + 363, -1, 365, 366, 402, 403, -1, 370, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 402, 403, -1, -1, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, - 313, -1, -1, -1, -1, -1, -1, -1, -1, 313, + 126, -1, -1, -1, 33, -1, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, 402, + 403, 260, 261, 262, 263, 264, 265, 33, -1, -1, + 402, 403, 61, -1, 40, 64, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 333, 334, -1, -1, -1, -1, -1, 340, -1, 333, - 334, -1, -1, 346, -1, -1, 340, -1, -1, 313, - -1, -1, 346, -1, 260, 261, 262, 263, 264, 265, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, - 334, -1, -1, -1, -1, -1, 340, -1, -1, -1, - -1, -1, 346, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, - 403, -1, -1, -1, -1, -1, -1, 313, 402, 403, + -1, -1, -1, -1, -1, 61, -1, -1, 64, 33, + -1, -1, -1, 92, -1, -1, 40, -1, 33, 43, + -1, 45, -1, -1, 313, 40, -1, -1, 43, -1, + 45, -1, -1, -1, -1, -1, 92, -1, -1, -1, + 64, -1, -1, -1, 333, 334, -1, 126, -1, 64, + -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, + 126, -1, -1, -1, -1, -1, -1, 92, -1, -1, + -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, 126, -1, 402, 403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, -1, - -1, -1, -1, -1, 340, -1, 313, -1, 402, 403, + -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, -1, - -1, -1, -1, 340, -1, 85, -1, -1, -1, 346, - -1, -1, -1, -1, -1, -1, -1, 97, -1, 99, - 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, + -1, -1, -1, -1, 313, -1, 260, 261, 262, 263, + 264, 265, -1, -1, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, 333, 334, -1, 313, -1, -1, + -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 333, 334, -1, + -1, -1, -1, -1, 340, -1, -1, -1, -1, 313, + 346, -1, -1, -1, -1, -1, -1, -1, 313, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, + 334, -1, -1, -1, -1, -1, 340, -1, 333, 334, + -1, -1, 346, 402, 403, 340, -1, -1, -1, -1, + 87, 346, -1, -1, 91, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 402, 403, 105, 106, + 107, 108, 109, 110, 111, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 402, 403, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, -1, -1, -1, - 180, 181, -1, 183, -1, -1, -1, -1, 188, -1, - -1, -1, 192, 193, -1, -1, -1, -1, -1, -1, - -1, 201, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, 192, 193, -1, 195, -1, + -1, -1, -1, 200, -1, -1, -1, 204, 205, -1, + -1, -1, -1, -1, -1, -1, 213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 222, -1, 224, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 234, -1, 236, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 234, -1, 236, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 246, + -1, 248, -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, 275, 276, + -1, -1, -1, 280, -1, -1, 283, 284, -1, -1, + -1, -1, -1, -1, 291, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 262, 263, -1, -1, -1, -1, -1, 269, - -1, -1, 272, 273, -1, -1, -1, -1, -1, -1, - 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 334, -1, -1, + -1, -1, -1, -1, -1, 342, -1, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, - -1, 331, -1, 333, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 367, -1, 369, -1, -1, 372, 373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 355, 356, -1, 358, -1, - -1, 361, 362, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 391, -1, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 380, -1, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 411, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 417, + -1, 428, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1665,61 +1670,79 @@ public function yyparse($yyLex) { case 51: #line 361 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 52: #line 365 "src/main/jay/grammars/php.jay" + case 53: #line 366 "src/main/jay/grammars/php.jay" + { + $yyVal= $yyLex->create(new InstanceCreationNode()); + $yyVal->type= $yyVals[-3+$yyTop]; + $yyVal->parameters= $yyVals[-1+$yyTop]; + $yyVal->body= NULL; + } break; + + case 54: #line 372 "src/main/jay/grammars/php.jay" + { + $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); + } break; + + case 55: #line 375 "src/main/jay/grammars/php.jay" + { + $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); + } break; + + case 56: #line 382 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 53: #line 366 "src/main/jay/grammars/php.jay" + case 57: #line 383 "src/main/jay/grammars/php.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 54: #line 370 "src/main/jay/grammars/php.jay" + case 58: #line 387 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 55: #line 371 "src/main/jay/grammars/php.jay" + case 59: #line 388 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 56: #line 375 "src/main/jay/grammars/php.jay" + case 60: #line 392 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 57: #line 376 "src/main/jay/grammars/php.jay" + case 61: #line 393 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 58: #line 380 "src/main/jay/grammars/php.jay" + case 62: #line 397 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => $yyVals[-2+$yyTop], 'check' => TRUE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 59: #line 381 "src/main/jay/grammars/php.jay" + case 63: #line 398 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => new TypeName('var'), 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 60: #line 389 "src/main/jay/grammars/php.jay" + case 64: #line 406 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 62: #line 394 "src/main/jay/grammars/php.jay" + case 66: #line 411 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 63: #line 395 "src/main/jay/grammars/php.jay" + case 67: #line 412 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 64: #line 399 "src/main/jay/grammars/php.jay" + case 68: #line 416 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 65: #line 399 "src/main/jay/grammars/php.jay" + case 69: #line 416 "src/main/jay/grammars/php.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 66: #line 402 "src/main/jay/grammars/php.jay" + case 70: #line 419 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 67: #line 402 "src/main/jay/grammars/php.jay" + case 71: #line 419 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 68: #line 407 "src/main/jay/grammars/php.jay" + case 72: #line 424 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 69: #line 407 "src/main/jay/grammars/php.jay" + case 73: #line 424 "src/main/jay/grammars/php.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -1731,178 +1754,178 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 70: #line 417 "src/main/jay/grammars/php.jay" + case 74: #line 434 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 71: #line 417 "src/main/jay/grammars/php.jay" + case 75: #line 434 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 72: #line 422 "src/main/jay/grammars/php.jay" + case 76: #line 439 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 73: #line 422 "src/main/jay/grammars/php.jay" + case 77: #line 439 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 74: #line 426 "src/main/jay/grammars/php.jay" + case 78: #line 443 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 75: #line 426 "src/main/jay/grammars/php.jay" + case 79: #line 443 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 76: #line 430 "src/main/jay/grammars/php.jay" + case 80: #line 447 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 77: #line 430 "src/main/jay/grammars/php.jay" + case 81: #line 447 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 78: #line 434 "src/main/jay/grammars/php.jay" + case 82: #line 451 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 79: #line 434 "src/main/jay/grammars/php.jay" + case 83: #line 451 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 80: #line 439 "src/main/jay/grammars/php.jay" + case 84: #line 456 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 82: #line 440 "src/main/jay/grammars/php.jay" + case 86: #line 457 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 84: #line 441 "src/main/jay/grammars/php.jay" + case 88: #line 458 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 85: #line 441 "src/main/jay/grammars/php.jay" + case 89: #line 458 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 87: #line 445 "src/main/jay/grammars/php.jay" + case 91: #line 462 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new NoopNode()); } break; - case 88: #line 449 "src/main/jay/grammars/php.jay" + case 92: #line 466 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => NULL, 'value' => $yyVals[0+$yyTop]); } break; - case 89: #line 450 "src/main/jay/grammars/php.jay" + case 93: #line 467 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 90: #line 454 "src/main/jay/grammars/php.jay" + case 94: #line 471 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 92: #line 459 "src/main/jay/grammars/php.jay" + case 96: #line 476 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 93: #line 460 "src/main/jay/grammars/php.jay" + case 97: #line 477 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 94: #line 464 "src/main/jay/grammars/php.jay" + case 98: #line 481 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 95: #line 464 "src/main/jay/grammars/php.jay" + case 99: #line 481 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 96: #line 468 "src/main/jay/grammars/php.jay" + case 100: #line 485 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 97: #line 468 "src/main/jay/grammars/php.jay" + case 101: #line 485 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 98: #line 474 "src/main/jay/grammars/php.jay" + case 102: #line 491 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 99: #line 475 "src/main/jay/grammars/php.jay" + case 103: #line 492 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 100: #line 479 "src/main/jay/grammars/php.jay" + case 104: #line 496 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 101: #line 480 "src/main/jay/grammars/php.jay" + case 105: #line 497 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 102: #line 480 "src/main/jay/grammars/php.jay" + case 106: #line 497 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 104: #line 489 "src/main/jay/grammars/php.jay" + case 108: #line 506 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 105: #line 490 "src/main/jay/grammars/php.jay" + case 109: #line 507 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 106: #line 494 "src/main/jay/grammars/php.jay" + case 110: #line 511 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CatchNode()); } break; - case 107: #line 494 "src/main/jay/grammars/php.jay" + case 111: #line 511 "src/main/jay/grammars/php.jay" { $yyVals[-8+$yyTop]->type= $yyVals[-5+$yyTop]; $yyVals[-8+$yyTop]->variable= $yyVals[-4+$yyTop]; $yyVals[-8+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 108: #line 504 "src/main/jay/grammars/php.jay" + case 112: #line 521 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 110: #line 509 "src/main/jay/grammars/php.jay" + case 114: #line 526 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 111: #line 510 "src/main/jay/grammars/php.jay" + case 115: #line 527 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 112: #line 514 "src/main/jay/grammars/php.jay" + case 116: #line 531 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 114: #line 519 "src/main/jay/grammars/php.jay" + case 118: #line 536 "src/main/jay/grammars/php.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 115: #line 524 "src/main/jay/grammars/php.jay" + case 119: #line 541 "src/main/jay/grammars/php.jay" { $yyVal= new DynamicInstanceCreationNode(); $yyVal->variable= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 116: #line 532 "src/main/jay/grammars/php.jay" + case 120: #line 549 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 117: #line 535 "src/main/jay/grammars/php.jay" + case 121: #line 552 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 118: #line 538 "src/main/jay/grammars/php.jay" + case 122: #line 555 "src/main/jay/grammars/php.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 120: #line 545 "src/main/jay/grammars/php.jay" + case 124: #line 562 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 121: #line 545 "src/main/jay/grammars/php.jay" + case 125: #line 562 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1910,19 +1933,19 @@ public function yyparse($yyLex) { } } break; - case 122: #line 551 "src/main/jay/grammars/php.jay" + case 126: #line 568 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 123: #line 551 "src/main/jay/grammars/php.jay" + case 127: #line 568 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]->position= $p; $yyVal= $yyVals[0+$yyTop]; } break; - case 124: #line 555 "src/main/jay/grammars/php.jay" + case 128: #line 572 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 125: #line 555 "src/main/jay/grammars/php.jay" + case 129: #line 572 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -1934,10 +1957,10 @@ public function yyparse($yyLex) { } } break; - case 126: #line 565 "src/main/jay/grammars/php.jay" + case 130: #line 582 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 127: #line 565 "src/main/jay/grammars/php.jay" + case 131: #line 582 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -1948,38 +1971,38 @@ public function yyparse($yyLex) { } } break; - case 128: #line 574 "src/main/jay/grammars/php.jay" + case 132: #line 591 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 129: #line 577 "src/main/jay/grammars/php.jay" + case 133: #line 594 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 130: #line 580 "src/main/jay/grammars/php.jay" + case 134: #line 597 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 131: #line 583 "src/main/jay/grammars/php.jay" + case 135: #line 600 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 132: #line 586 "src/main/jay/grammars/php.jay" + case 136: #line 603 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 133: #line 589 "src/main/jay/grammars/php.jay" + case 137: #line 606 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 134: #line 593 "src/main/jay/grammars/php.jay" + case 138: #line 610 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -1987,7 +2010,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 135: #line 599 "src/main/jay/grammars/php.jay" + case 139: #line 616 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -1995,7 +2018,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 136: #line 605 "src/main/jay/grammars/php.jay" + case 140: #line 622 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2003,41 +2026,41 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 137: #line 611 "src/main/jay/grammars/php.jay" + case 141: #line 628 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 138: #line 616 "src/main/jay/grammars/php.jay" + case 142: #line 633 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicInstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->variable= $yyVals[0+$yyTop]; } break; - case 139: #line 621 "src/main/jay/grammars/php.jay" + case 143: #line 638 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 140: #line 624 "src/main/jay/grammars/php.jay" + case 144: #line 641 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName('var[]'), 'expression' => $yyVals[0+$yyTop]))); } break; - case 141: #line 627 "src/main/jay/grammars/php.jay" + case 145: #line 644 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new SilenceOperatorNode($yyVals[0+$yyTop])); } break; - case 142: #line 630 "src/main/jay/grammars/php.jay" + case 146: #line 647 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new LambdaNode($yyVals[-4+$yyTop], (array)$yyVals[-1+$yyTop])); } break; - case 143: #line 633 "src/main/jay/grammars/php.jay" + case 147: #line 650 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2047,25 +2070,25 @@ public function yyparse($yyLex) { } } break; - case 144: #line 644 "src/main/jay/grammars/php.jay" + case 148: #line 661 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 146: #line 649 "src/main/jay/grammars/php.jay" + case 150: #line 666 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 147: #line 650 "src/main/jay/grammars/php.jay" + case 151: #line 667 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 148: #line 654 "src/main/jay/grammars/php.jay" + case 152: #line 671 "src/main/jay/grammars/php.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 150: #line 659 "src/main/jay/grammars/php.jay" + case 154: #line 676 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 151: #line 659 "src/main/jay/grammars/php.jay" + case 155: #line 676 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 152: #line 663 "src/main/jay/grammars/php.jay" + case 156: #line 680 "src/main/jay/grammars/php.jay" { switch (strtolower($yyVals[0+$yyTop])) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2073,260 +2096,260 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 153: #line 669 "src/main/jay/grammars/php.jay" + case 157: #line 686 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 154: #line 670 "src/main/jay/grammars/php.jay" + case 158: #line 687 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 155: #line 671 "src/main/jay/grammars/php.jay" + case 159: #line 688 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 156: #line 672 "src/main/jay/grammars/php.jay" + case 160: #line 689 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 157: #line 673 "src/main/jay/grammars/php.jay" + case 161: #line 690 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 158: #line 677 "src/main/jay/grammars/php.jay" + case 162: #line 694 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 159: #line 680 "src/main/jay/grammars/php.jay" + case 163: #line 697 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 160: #line 683 "src/main/jay/grammars/php.jay" + case 164: #line 700 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 161: #line 686 "src/main/jay/grammars/php.jay" + case 165: #line 703 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 162: #line 692 "src/main/jay/grammars/php.jay" + case 166: #line 709 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 163: #line 693 "src/main/jay/grammars/php.jay" + case 167: #line 710 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 164: #line 697 "src/main/jay/grammars/php.jay" + case 168: #line 714 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 166: #line 702 "src/main/jay/grammars/php.jay" + case 170: #line 719 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 167: #line 706 "src/main/jay/grammars/php.jay" + case 171: #line 723 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 168: #line 707 "src/main/jay/grammars/php.jay" + case 172: #line 724 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 169: #line 708 "src/main/jay/grammars/php.jay" + case 173: #line 725 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 170: #line 709 "src/main/jay/grammars/php.jay" + case 174: #line 726 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 171: #line 710 "src/main/jay/grammars/php.jay" + case 175: #line 727 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 172: #line 711 "src/main/jay/grammars/php.jay" + case 176: #line 728 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 173: #line 712 "src/main/jay/grammars/php.jay" + case 177: #line 729 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 174: #line 713 "src/main/jay/grammars/php.jay" + case 178: #line 730 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 175: #line 714 "src/main/jay/grammars/php.jay" + case 179: #line 731 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 176: #line 715 "src/main/jay/grammars/php.jay" + case 180: #line 732 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 177: #line 716 "src/main/jay/grammars/php.jay" + case 181: #line 733 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 178: #line 717 "src/main/jay/grammars/php.jay" + case 182: #line 734 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 179: #line 721 "src/main/jay/grammars/php.jay" + case 183: #line 738 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 180: #line 722 "src/main/jay/grammars/php.jay" + case 184: #line 739 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 181: #line 723 "src/main/jay/grammars/php.jay" + case 185: #line 740 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 182: #line 724 "src/main/jay/grammars/php.jay" + case 186: #line 741 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 183: #line 725 "src/main/jay/grammars/php.jay" + case 187: #line 742 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 184: #line 726 "src/main/jay/grammars/php.jay" + case 188: #line 743 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 185: #line 727 "src/main/jay/grammars/php.jay" + case 189: #line 744 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 186: #line 728 "src/main/jay/grammars/php.jay" + case 190: #line 745 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 187: #line 732 "src/main/jay/grammars/php.jay" + case 191: #line 749 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 188: #line 733 "src/main/jay/grammars/php.jay" + case 192: #line 750 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 189: #line 734 "src/main/jay/grammars/php.jay" + case 193: #line 751 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 190: #line 735 "src/main/jay/grammars/php.jay" + case 194: #line 752 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 191: #line 736 "src/main/jay/grammars/php.jay" + case 195: #line 753 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 192: #line 737 "src/main/jay/grammars/php.jay" + case 196: #line 754 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 193: #line 738 "src/main/jay/grammars/php.jay" + case 197: #line 755 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 194: #line 739 "src/main/jay/grammars/php.jay" + case 198: #line 756 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 740 "src/main/jay/grammars/php.jay" + case 199: #line 757 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 741 "src/main/jay/grammars/php.jay" + case 200: #line 758 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 742 "src/main/jay/grammars/php.jay" + case 201: #line 759 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 198: #line 746 "src/main/jay/grammars/php.jay" + case 202: #line 763 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 199: #line 747 "src/main/jay/grammars/php.jay" + case 203: #line 764 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 200: #line 748 "src/main/jay/grammars/php.jay" + case 204: #line 765 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 749 "src/main/jay/grammars/php.jay" + case 205: #line 766 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 750 "src/main/jay/grammars/php.jay" + case 206: #line 767 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 751 "src/main/jay/grammars/php.jay" + case 207: #line 768 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 204: #line 755 "src/main/jay/grammars/php.jay" + case 208: #line 772 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 205: #line 756 "src/main/jay/grammars/php.jay" + case 209: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 206: #line 761 "src/main/jay/grammars/php.jay" + case 210: #line 778 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 208: #line 766 "src/main/jay/grammars/php.jay" + case 212: #line 783 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 209: #line 767 "src/main/jay/grammars/php.jay" + case 213: #line 784 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 210: #line 771 "src/main/jay/grammars/php.jay" + case 214: #line 788 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 211: #line 771 "src/main/jay/grammars/php.jay" + case 215: #line 788 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 212: #line 774 "src/main/jay/grammars/php.jay" + case 216: #line 791 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 213: #line 774 "src/main/jay/grammars/php.jay" + case 217: #line 791 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 214: #line 777 "src/main/jay/grammars/php.jay" + case 218: #line 794 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 215: #line 780 "src/main/jay/grammars/php.jay" + case 219: #line 797 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 216: #line 783 "src/main/jay/grammars/php.jay" + case 220: #line 800 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 217: #line 786 "src/main/jay/grammars/php.jay" + case 221: #line 803 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 218: #line 786 "src/main/jay/grammars/php.jay" + case 222: #line 803 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 221: #line 799 "src/main/jay/grammars/php.jay" + case 225: #line 816 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 222: #line 803 "src/main/jay/grammars/php.jay" + case 226: #line 820 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 223: #line 807 "src/main/jay/grammars/php.jay" + case 227: #line 824 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 224: #line 808 "src/main/jay/grammars/php.jay" + case 228: #line 825 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 225: #line 814 "src/main/jay/grammars/php.jay" + case 229: #line 831 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 226: #line 815 "src/main/jay/grammars/php.jay" + case 230: #line 832 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 227: #line 819 "src/main/jay/grammars/php.jay" + case 231: #line 836 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 228: #line 820 "src/main/jay/grammars/php.jay" + case 232: #line 837 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 229: #line 824 "src/main/jay/grammars/php.jay" + case 233: #line 841 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 230: #line 825 "src/main/jay/grammars/php.jay" + case 234: #line 842 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 231: #line 826 "src/main/jay/grammars/php.jay" + case 235: #line 843 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 232: #line 827 "src/main/jay/grammars/php.jay" + case 236: #line 844 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 233: #line 828 "src/main/jay/grammars/php.jay" + case 237: #line 845 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 234: #line 829 "src/main/jay/grammars/php.jay" + case 238: #line 846 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2330 "-" +#line 2353 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/syntax/php/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/syntax/php/AnnotationTest.class.php index 8d8533afe..66ea7c428 100644 --- a/src/test/php/net/xp_lang/tests/syntax/php/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/php/AnnotationTest.class.php @@ -2,6 +2,7 @@ use xp\compiler\syntax\php\Parser; use xp\compiler\syntax\php\Lexer; +use xp\compiler\types\TypeName; use xp\compiler\ast\AnnotationNode; use xp\compiler\ast\StringNode; use xp\compiler\ast\IntegerNode; @@ -11,6 +12,9 @@ use xp\compiler\ast\BooleanNode; use xp\compiler\ast\ArrayNode; use xp\compiler\ast\MapNode; +use xp\compiler\ast\InstanceCreationNode; +use xp\compiler\ast\ConstantAccessNode; +use xp\compiler\ast\StaticMemberAccessNode; /** * TestCase for annotations @@ -200,4 +204,54 @@ public function multipleAnnotations() { new AnnotationNode(array('type' => 'Deprecated')), ), $this->parseMethodWithAnnotations('#[@WebMethod, @Deprecated]')); } + + #[@test] + public function newinstance() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'action', + 'parameters' => array('default' => new InstanceCreationNode(array( + 'type' => new TypeName('IsPlatform'), + 'parameters' => array(new StringNode('WIN')) + ))) + ))), + $this->parseMethodWithAnnotations('#[@action(new IsPlatform("WIN"))]') + ); + } + + #[@test] + public function newinstance_fully_qualified() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'action', + 'parameters' => array('default' => new InstanceCreationNode(array( + 'type' => new TypeName('unittest.actions.IsPlatform'), + 'parameters' => array(new StringNode('WIN')) + ))) + ))), + $this->parseMethodWithAnnotations('#[@action(new \unittest\actions\IsPlatform("WIN"))]') + ); + } + + #[@test] + public function constant_reference() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'inject', + 'parameters' => array('name' => new ConstantAccessNode(new TypeName('self'), 'CONNECTION_DSN')) + ))), + $this->parseMethodWithAnnotations('#[@inject(name = self::CONNECTION_DSN)]') + ); + } + + #[@test] + public function static_member() { + $this->assertEquals( + array(new AnnotationNode(array( + 'type' => 'value', + 'parameters' => array('default' => new StaticMemberAccessNode(new TypeName('CommandLine'), 'UNIX')) + ))), + $this->parseMethodWithAnnotations('#[@value(CommandLine::$UNIX)]') + ); + } } From c90e69518db895503ea282029d69f706e04b653d Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Tue, 15 Oct 2013 14:29:45 +0200 Subject: [PATCH 04/13] - Support "new T()" in annotations [metadata] --- .../xp/compiler/emit/php/Emitter.class.php | 58 +++++++++++++++---- .../execution/source/AnnotationTest.class.php | 15 +++++ 2 files changed, 62 insertions(+), 11 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index daa4997ad..3cc624fb8 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -41,6 +41,7 @@ use xp\compiler\ast\IndexerNode; use xp\compiler\ast\StaticInitializerNode; use xp\compiler\ast\LocalsToMemberPromoter; +use xp\compiler\ast\InstanceCreationNode; use xp\compiler\emit\Buffer; use lang\reflect\Modifiers; use lang\Throwable; @@ -1494,6 +1495,34 @@ protected function emitAnnotations(&$meta, $annotations) { } } + /** + * Resolve annotation value + * + * @param xp.compiler.ast.Node value + */ + protected function resolveAnnotationValue($value) { + if ($value instanceof ClassAccessNode) { // class literal + return $this->resolveType($value->class)->name(); + } else if ($value instanceof InstanceCreationNode) { + $type= $this->literal($this->resolveType($value->type)); + $params= array(); + foreach ($value->parameters as $param) { + $params[]= $this->export($this->resolveAnnotationValue($param)); + } + return function() use($type, $params) { return 'new '.$type.'('.implode(', ', $params).')'; }; + } else if ($value instanceof ArrayNode) { + $r= array(); + foreach ($value->values as $element) { + $r[]= $this->resolveAnnotationValue($element); + } + return $r; + } else if ($value instanceof Resolveable) { + return $value->resolve(); + } else { + throw new \lang\IllegalStateException('Cannot resolve '.$value->toString()); + } + } + /** * Emit annotation * @@ -1503,16 +1532,7 @@ protected function emitAnnotations(&$meta, $annotations) { protected function emitAnnotation(&$meta, $annotation) { $params= array(); foreach ((array)$annotation->parameters as $name => $value) { - if ($value instanceof ClassAccessNode) { // class literal - $params[$name]= $this->resolveType($value->class)->name(); - } else if ($value instanceof Resolveable) { - $params[$name]= $value->resolve(); - } else if ($value instanceof ArrayNode) { - $params[$name]= array(); - foreach ($value->values as $element) { - $element instanceof Resolveable && $params[$name][]= $element->resolve(); - } - } + $params[$name]= $this->resolveAnnotationValue($value); } // Sort out where annotations should go @@ -1759,6 +1779,20 @@ protected function emitIndexer($b, $indexer) { $this->types[0]->indexer= $i; } + protected function export($value) { + if (is_array($value)) { + $r= ''; + foreach ($value as $key => $val) { + $r.= ', '.$this->export($key).' => '.$this->export($val); + } + return 'array('.substr($r, 2).')'; + } else if ($value instanceof \Closure) { + return $value(); + } else { + return var_export($value, true); + } + } + /** * Emits class registration * @@ -1784,7 +1818,9 @@ protected function registerClass($b, $declaration, $qualified) { $this->emitAnnotations($this->metadata[0]['class'], (array)$declaration->annotations); $b->append($this->core.'::$cn[\''.$this->declaration($declaration).'\']= \''.$qualified.'\';'); - $b->append($this->core.'::$meta[\''.$qualified.'\']= '.var_export($this->metadata[0], true).';'); + $b->append($this->core.'::$meta[\''.$qualified.'\']= '); + $b->append($this->export($this->metadata[0])); + $b->append(';'); // Run static initializer if existant on synthetic types if ($declaration->synthetic && $this->inits[0][2]) { diff --git a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php index a9d777e5c..f85602eda 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php @@ -16,6 +16,9 @@ public static function defineFixture() { [@test] public void getAll() { } + + [@test, @values(["Hello", new lang.types.String("Hello")])] + public void withValues(var $value) { } [@test, @ignore("Risky")] public void deleteAll() { } @@ -45,6 +48,18 @@ public function testAnnotation() { } } + /** + * Test simple annotation + * + */ + #[@test] + public function newInstanceAnnotation() { + with ($m= self::$fixture->getMethod('withValues')); { + $this->assertTrue($m->hasAnnotation('values')); + $this->assertEquals(array('Hello', new \lang\types\String('Hello')), $m->getAnnotation('values')); + } + } + /** * Test multiple annotations * From de85b615b70c2e3c4b7528b884448c67b6dd396e Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Tue, 15 Oct 2013 19:05:52 +0200 Subject: [PATCH 05/13] - Support "T::const" and "T::$static" in annotations [metadata] --- .../xp/compiler/emit/php/Emitter.class.php | 9 ++++ .../execution/source/AnnotationTest.class.php | 50 +++++++++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 3cc624fb8..65999aced 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -42,6 +42,7 @@ use xp\compiler\ast\StaticInitializerNode; use xp\compiler\ast\LocalsToMemberPromoter; use xp\compiler\ast\InstanceCreationNode; +use xp\compiler\ast\ConstantAccessNode; use xp\compiler\emit\Buffer; use lang\reflect\Modifiers; use lang\Throwable; @@ -1510,6 +1511,14 @@ protected function resolveAnnotationValue($value) { $params[]= $this->export($this->resolveAnnotationValue($param)); } return function() use($type, $params) { return 'new '.$type.'('.implode(', ', $params).')'; }; + } else if ($value instanceof StaticMemberAccessNode) { + $type= $this->literal($this->resolveType($value->type)); + $name= $value->name; + return function() use($type, $name) { return $type.'::$'.$name; }; + } else if ($value instanceof ConstantAccessNode) { + $type= $this->literal($this->resolveType($value->type)); + $name= $value->name; + return function() use($type, $name) { return $type.'::'.$name; }; } else if ($value instanceof ArrayNode) { $r= array(); foreach ($value->values as $element) { diff --git a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php index f85602eda..d8e4399e2 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php @@ -13,12 +13,19 @@ class AnnotationTest extends ExecutionTest { #[@beforeClass] public static function defineFixture() { self::$fixture= self::define('class', 'AnnotationsForAnnotationTest', null, '{ + const string TEST = "Test"; [@test] public void getAll() { } - [@test, @values(["Hello", new lang.types.String("Hello")])] - public void withValues(var $value) { } + [@test, @values([new lang.types.String("Hello")])] + public void withNewInstance(var $value) { } + + [@test, @values([self::TEST])] + public void withClassConstant(var $value) { } + + [@test, @values([lang.CommandLine::$UNIX])] + public void withEnumMember(var $value) { } [@test, @ignore("Risky")] public void deleteAll() { } @@ -49,14 +56,47 @@ public function testAnnotation() { } /** - * Test simple annotation + * Test annotation with "new T()" * */ #[@test] public function newInstanceAnnotation() { - with ($m= self::$fixture->getMethod('withValues')); { + with ($m= self::$fixture->getMethod('withNewInstance')); { + $this->assertTrue($m->hasAnnotation('values')); + $this->assertEquals( + array(new \lang\types\String('Hello')), + $m->getAnnotation('values') + ); + } + } + + /** + * Test annotation with "T::const" + * + */ + #[@test] + public function classConstantAnnotation() { + with ($m= self::$fixture->getMethod('withClassConstant')); { + $this->assertTrue($m->hasAnnotation('values')); + $this->assertEquals( + array('Test'), + $m->getAnnotation('values') + ); + } + } + + /** + * Test annotation with "T::$MEMBER" + * + */ + #[@test] + public function enumMemberAnnotation() { + with ($m= self::$fixture->getMethod('withEnumMember')); { $this->assertTrue($m->hasAnnotation('values')); - $this->assertEquals(array('Hello', new \lang\types\String('Hello')), $m->getAnnotation('values')); + $this->assertEquals( + array(\lang\CommandLine::$UNIX), + $m->getAnnotation('values') + ); } } From 2f7399b9df240eb4c29574a0a21dc3b6d972ca80 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Tue, 15 Oct 2013 19:17:26 +0200 Subject: [PATCH 06/13] - Convert to new coding standards for unittest: No apidoc, underscores --- .../execution/source/AnnotationTest.class.php | 70 +++++-------------- 1 file changed, 16 insertions(+), 54 deletions(-) diff --git a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php index d8e4399e2..747695647 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php @@ -18,13 +18,13 @@ public static function defineFixture() { [@test] public void getAll() { } - [@test, @values([new lang.types.String("Hello")])] + [@test, @value(new lang.types.String("Hello"))] public void withNewInstance(var $value) { } - [@test, @values([self::TEST])] + [@test, @value(self::TEST)] public void withClassConstant(var $value) { } - [@test, @values([lang.CommandLine::$UNIX])] + [@test, @value(lang.CommandLine::$UNIX)] public void withEnumMember(var $value) { } [@test, @ignore("Risky")] @@ -43,69 +43,39 @@ public static function defineFixture() { }'); } - /** - * Test simple annotation - * - */ - #[@test] - public function testAnnotation() { + public function test_annotation() { with ($m= self::$fixture->getMethod('getAll')); { $this->assertTrue($m->hasAnnotation('test')); $this->assertEquals(null, $m->getAnnotation('test')); } } - /** - * Test annotation with "new T()" - * - */ #[@test] - public function newInstanceAnnotation() { + public function newinstance_annotation() { with ($m= self::$fixture->getMethod('withNewInstance')); { - $this->assertTrue($m->hasAnnotation('values')); - $this->assertEquals( - array(new \lang\types\String('Hello')), - $m->getAnnotation('values') - ); + $this->assertTrue($m->hasAnnotation('value')); + $this->assertEquals(new \lang\types\String('Hello'), $m->getAnnotation('value')); } } - /** - * Test annotation with "T::const" - * - */ #[@test] - public function classConstantAnnotation() { + public function class_constant_annotation() { with ($m= self::$fixture->getMethod('withClassConstant')); { - $this->assertTrue($m->hasAnnotation('values')); - $this->assertEquals( - array('Test'), - $m->getAnnotation('values') - ); + $this->assertTrue($m->hasAnnotation('value')); + $this->assertEquals('Test', $m->getAnnotation('value')); } } - /** - * Test annotation with "T::$MEMBER" - * - */ #[@test] - public function enumMemberAnnotation() { + public function enum_member_annotation() { with ($m= self::$fixture->getMethod('withEnumMember')); { - $this->assertTrue($m->hasAnnotation('values')); - $this->assertEquals( - array(\lang\CommandLine::$UNIX), - $m->getAnnotation('values') - ); + $this->assertTrue($m->hasAnnotation('value')); + $this->assertEquals(\lang\CommandLine::$UNIX, $m->getAnnotation('value')); } } - /** - * Test multiple annotations - * - */ #[@test] - public function ignoreAnnotation() { + public function ignore_annotation() { with ($m= self::$fixture->getMethod('deleteAll')); { $this->assertTrue($m->hasAnnotation('test'), '@test'); $this->assertEquals(null, $m->getAnnotation('test'), '@test'); @@ -114,12 +84,8 @@ public function ignoreAnnotation() { } } - /** - * Test multiple annotations - * - */ #[@test] - public function limitAnnotation() { + public function limit_annotation() { with ($m= self::$fixture->getMethod('updateAll')); { $this->assertTrue($m->hasAnnotation('test'), '@test'); $this->assertEquals(null, $m->getAnnotation('test'), '@test'); @@ -128,12 +94,8 @@ public function limitAnnotation() { } } - /** - * Test annotation with array value - * - */ #[@test] - public function restrictedAnnotation() { + public function restricted_annotation() { with ($m= self::$fixture->getMethod('reset')); { $this->assertTrue($m->hasAnnotation('restricted')); $this->assertEquals(array('roles' => array('admin', 'root')), $m->getAnnotation('restricted')); From 8df40ec19ffb77c6f094b445499067422664d7c9 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Oct 2013 15:51:25 +0200 Subject: [PATCH 07/13] - Support maps in annotations --- .../xp/compiler/emit/php/Emitter.class.php | 7 ++ .../execution/source/AnnotationTest.class.php | 97 +++++++++---------- 2 files changed, 53 insertions(+), 51 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 65999aced..488422887 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -32,6 +32,7 @@ use xp\compiler\ast\ClassNode; use xp\compiler\ast\AssignmentNode; use xp\compiler\ast\ArrayNode; +use xp\compiler\ast\MapNode; use xp\compiler\ast\FieldNode; use xp\compiler\ast\ConstructorNode; use xp\compiler\ast\MethodNode; @@ -1525,6 +1526,12 @@ protected function resolveAnnotationValue($value) { $r[]= $this->resolveAnnotationValue($element); } return $r; + } else if ($value instanceof MapNode) { + $r= array(); + foreach ($value->elements as $pair) { + $r[$this->resolveAnnotationValue($pair[0])]= $this->resolveAnnotationValue($pair[1]); + } + return $r; } else if ($value instanceof Resolveable) { return $value->resolve(); } else { diff --git a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php index 747695647..f6e1ec97a 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php @@ -6,77 +6,72 @@ */ class AnnotationTest extends ExecutionTest { protected static $fixture= null; - + /** - * Sets up test case and define class to be used in fixtures + * Returns a method object + * + * @param string $source source of annotation + * @return lang.reflect.Method */ - #[@beforeClass] - public static function defineFixture() { - self::$fixture= self::define('class', 'AnnotationsForAnnotationTest', null, '{ + protected function methodAnnotatedWith($source) { + $class= self::define('class', 'AnnotationTest_'.$this->name, null, '{ const string TEST = "Test"; - - [@test] - public void getAll() { } - - [@test, @value(new lang.types.String("Hello"))] - public void withNewInstance(var $value) { } - - [@test, @value(self::TEST)] - public void withClassConstant(var $value) { } - - [@test, @value(lang.CommandLine::$UNIX)] - public void withEnumMember(var $value) { } - - [@test, @ignore("Risky")] - public void deleteAll() { } - - [@test, @limit(time = 0.1)] - public void updateAll() { } - - // TODO: Support this grammatically - // - // [@test, @expect(lang.FormatException::class)] - // public void findBy() { } - - [@restricted(roles = ["admin", "root"])] - public void reset() { } + '.$source.' public void fixture() { } }'); + return $class->getMethod('fixture'); + } + + public function test_annotation_exists() { + $this->assertTrue($this->methodAnnotatedWith('[@test]')->hasAnnotation('test')); } public function test_annotation() { - with ($m= self::$fixture->getMethod('getAll')); { - $this->assertTrue($m->hasAnnotation('test')); - $this->assertEquals(null, $m->getAnnotation('test')); - } + $this->assertEquals(null, $this->methodAnnotatedWith('[@test]')->getAnnotation('test')); } #[@test] public function newinstance_annotation() { - with ($m= self::$fixture->getMethod('withNewInstance')); { - $this->assertTrue($m->hasAnnotation('value')); - $this->assertEquals(new \lang\types\String('Hello'), $m->getAnnotation('value')); - } + $this->assertEquals( + new \lang\types\String('Hello'), + $this->methodAnnotatedWith('[@value(new lang.types.String("Hello"))]')->getAnnotation('value') + ); } #[@test] - public function class_constant_annotation() { - with ($m= self::$fixture->getMethod('withClassConstant')); { - $this->assertTrue($m->hasAnnotation('value')); - $this->assertEquals('Test', $m->getAnnotation('value')); - } + public function newinstance_annotation_with_array() { + $this->assertEquals( + array(new \lang\types\String('Hello')), + $this->methodAnnotatedWith('[@value([new lang.types.String("Hello")])]')->getAnnotation('value') + ); + } + + #[@test] + public function newinstance_annotation_with_map() { + $this->assertEquals( + array('hello' => new \lang\types\String('Hello')), + $this->methodAnnotatedWith('[@value([hello : new lang.types.String("Hello")])]')->getAnnotation('value') + ); + } + + #[@test] + public function class_constant_annotation_via_self() { + $this->assertEquals( + 'Test', + $this->methodAnnotatedWith('[@value(self::TEST)]')->getAnnotation('value') + ); } #[@test] public function enum_member_annotation() { - with ($m= self::$fixture->getMethod('withEnumMember')); { - $this->assertTrue($m->hasAnnotation('value')); - $this->assertEquals(\lang\CommandLine::$UNIX, $m->getAnnotation('value')); - } + $this->assertEquals( + \lang\CommandLine::$UNIX, + $this->methodAnnotatedWith('[@value(lang.CommandLine::$UNIX)]')->getAnnotation('value') + ); } #[@test] public function ignore_annotation() { - with ($m= self::$fixture->getMethod('deleteAll')); { + with ($m= $this->methodAnnotatedWith('[@test, @ignore("Risky")]')); { $this->assertTrue($m->hasAnnotation('test'), '@test'); $this->assertEquals(null, $m->getAnnotation('test'), '@test'); $this->assertTrue($m->hasAnnotation('ignore'), '@ignore'); @@ -86,7 +81,7 @@ public function ignore_annotation() { #[@test] public function limit_annotation() { - with ($m= self::$fixture->getMethod('updateAll')); { + with ($m= $this->methodAnnotatedWith('[@test, @limit(time = 0.1)]')); { $this->assertTrue($m->hasAnnotation('test'), '@test'); $this->assertEquals(null, $m->getAnnotation('test'), '@test'); $this->assertTrue($m->hasAnnotation('limit'), '@limit'); @@ -96,7 +91,7 @@ public function limit_annotation() { #[@test] public function restricted_annotation() { - with ($m= self::$fixture->getMethod('reset')); { + with ($m= $this->methodAnnotatedWith('[@restricted(roles = ["admin", "root"])]')); { $this->assertTrue($m->hasAnnotation('restricted')); $this->assertEquals(array('roles' => array('admin', 'root')), $m->getAnnotation('restricted')); } From e0f4c6f71d69951041781768fa31d4b30b8867c9 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Oct 2013 15:55:56 +0200 Subject: [PATCH 08/13] - QA: Less assertions per test --- .../execution/source/AnnotationTest.class.php | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php index f6e1ec97a..d66aa8a10 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/AnnotationTest.class.php @@ -69,31 +69,48 @@ public function enum_member_annotation() { ); } + #[@test] + public function has_ignore_annotation() { + $this->assertTrue( + $this->methodAnnotatedWith('[@ignore("Risky")]')->hasAnnotation('ignore') + ); + } + #[@test] public function ignore_annotation() { - with ($m= $this->methodAnnotatedWith('[@test, @ignore("Risky")]')); { - $this->assertTrue($m->hasAnnotation('test'), '@test'); - $this->assertEquals(null, $m->getAnnotation('test'), '@test'); - $this->assertTrue($m->hasAnnotation('ignore'), '@ignore'); - $this->assertEquals('Risky', $m->getAnnotation('ignore'), '@ignore'); - } + $this->assertEquals( + 'Risky', + $this->methodAnnotatedWith('[@ignore("Risky")]')->getAnnotation('ignore') + ); + } + + #[@test] + public function has_limit_annotation() { + $this->assertTrue( + $this->methodAnnotatedWith('[@test, @limit(time = 0.1)]')->hasAnnotation('limit') + ); } #[@test] public function limit_annotation() { - with ($m= $this->methodAnnotatedWith('[@test, @limit(time = 0.1)]')); { - $this->assertTrue($m->hasAnnotation('test'), '@test'); - $this->assertEquals(null, $m->getAnnotation('test'), '@test'); - $this->assertTrue($m->hasAnnotation('limit'), '@limit'); - $this->assertEquals(array('time' => 0.1), $m->getAnnotation('limit'), '@limit'); - } + $this->assertEquals( + array('time' => 0.1), + $this->methodAnnotatedWith('[@test, @limit(time = 0.1)]')->getAnnotation('limit') + ); + } + + #[@test] + public function has_restricted_annotation() { + $this->assertTrue( + $this->methodAnnotatedWith('[@restricted(roles = ["admin", "root"])]')->hasAnnotation('restricted') + ); } #[@test] public function restricted_annotation() { - with ($m= $this->methodAnnotatedWith('[@restricted(roles = ["admin", "root"])]')); { - $this->assertTrue($m->hasAnnotation('restricted')); - $this->assertEquals(array('roles' => array('admin', 'root')), $m->getAnnotation('restricted')); - } + $this->assertEquals( + array('roles' => array('admin', 'root')), + $this->methodAnnotatedWith('[@restricted(roles = ["admin", "root"])]')->getAnnotation('restricted') + ); } } From 2fe25851a9f9464a82efa910544574c2ec04a548 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Oct 2013 18:10:49 +0200 Subject: [PATCH 09/13] - Refactor: Inline emitAnnotation() --- .../xp/compiler/emit/php/Emitter.class.php | 49 +++++++------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 488422887..c7c3fce17 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1493,7 +1493,25 @@ protected function emitParameters($b, array $parameters, $delim) { */ protected function emitAnnotations(&$meta, $annotations) { foreach ($annotations as $annotation) { - $this->emitAnnotation($meta, $annotation); + + // Sort out where annotations should go + if (isset($annotation->target)) { + $ptr= &$meta[DETAIL_TARGET_ANNO][$annotation->target]; + } else { + $ptr= &$meta[DETAIL_ANNOTATIONS]; + } + + // Set annotation value + if (!$annotation->parameters) { + $ptr[$annotation->type]= null; + } else if (isset($annotation->parameters['default'])) { + $ptr[$annotation->type]= $this->resolveAnnotationValue($annotation->parameters['default']); + } else { + $ptr[$annotation->type]= array(); + foreach ((array)$annotation->parameters as $name => $value) { + $ptr[$annotation->type][$name]= $this->resolveAnnotationValue($value); + } + } } } @@ -1539,35 +1557,6 @@ protected function resolveAnnotationValue($value) { } } - /** - * Emit annotation - * - * @param &var meta - * @param xp.compiler.ast.AnnotationNode lambda - */ - protected function emitAnnotation(&$meta, $annotation) { - $params= array(); - foreach ((array)$annotation->parameters as $name => $value) { - $params[$name]= $this->resolveAnnotationValue($value); - } - - // Sort out where annotations should go - if (isset($annotation->target)) { - $ptr= &$meta[DETAIL_TARGET_ANNO][$annotation->target]; - } else { - $ptr= &$meta[DETAIL_ANNOTATIONS]; - } - - // Set annotation value - if (!$annotation->parameters) { - $ptr[$annotation->type]= null; - } else if (isset($annotation->parameters['default'])) { - $ptr[$annotation->type]= $params['default']; - } else { - $ptr[$annotation->type]= $params; - } - } - /** * Emit a lambda * From c1e537bc4c0d8862f8735dd136c5c9000e20d9ac Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Oct 2013 18:13:04 +0200 Subject: [PATCH 10/13] - Refactor: Remove superfluous cast --- src/main/php/xp/compiler/emit/php/Emitter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index c7c3fce17..fbabaf286 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1508,7 +1508,7 @@ protected function emitAnnotations(&$meta, $annotations) { $ptr[$annotation->type]= $this->resolveAnnotationValue($annotation->parameters['default']); } else { $ptr[$annotation->type]= array(); - foreach ((array)$annotation->parameters as $name => $value) { + foreach ($annotation->parameters as $name => $value) { $ptr[$annotation->type][$name]= $this->resolveAnnotationValue($value); } } From 09df1b1dc888532056d72c9c6754232a1d9ac4bd Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Oct 2013 18:15:47 +0200 Subject: [PATCH 11/13] - Refactor: Do without references --- .../xp/compiler/emit/php/Emitter.class.php | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index fbabaf286..c9128155e 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1494,24 +1494,24 @@ protected function emitParameters($b, array $parameters, $delim) { protected function emitAnnotations(&$meta, $annotations) { foreach ($annotations as $annotation) { - // Sort out where annotations should go - if (isset($annotation->target)) { - $ptr= &$meta[DETAIL_TARGET_ANNO][$annotation->target]; - } else { - $ptr= &$meta[DETAIL_ANNOTATIONS]; - } - // Set annotation value if (!$annotation->parameters) { - $ptr[$annotation->type]= null; + $value= null; } else if (isset($annotation->parameters['default'])) { - $ptr[$annotation->type]= $this->resolveAnnotationValue($annotation->parameters['default']); + $value= $this->resolveAnnotationValue($annotation->parameters['default']); } else { - $ptr[$annotation->type]= array(); - foreach ($annotation->parameters as $name => $value) { - $ptr[$annotation->type][$name]= $this->resolveAnnotationValue($value); + $value= array(); + foreach ($annotation->parameters as $name => $parameter) { + $value[$name]= $this->resolveAnnotationValue($parameter); } } + + // Sort out where annotations should go + if (isset($annotation->target)) { + $meta[DETAIL_TARGET_ANNO][$annotation->target][$annotation->type]= $value; + } else { + $meta[DETAIL_ANNOTATIONS][$annotation->type]= $value; + } } } From d337783162de1cf748d554e80554129708cebbda Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Oct 2013 08:24:25 +0200 Subject: [PATCH 12/13] - Refactor: Remove emitAnnotations() with reference in favor of creator function --- .../xp/compiler/emit/php/Emitter.class.php | 113 ++++++++---------- 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index c9128155e..0d762b29e 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1342,20 +1342,15 @@ protected function emitOperator($b, $operator) { $name= 'operator··'.$ovl[$operator->symbol]; $this->enter(new MethodScope($name)); - $return= $this->resolveType($operator->returns); - $this->metadata[0][1][$name]= array( - DETAIL_ARGUMENTS => array(), - DETAIL_RETURNS => $return->name(), - DETAIL_THROWS => array(), - DETAIL_COMMENT => $operator->comment - ? trim(preg_replace('/\n\s+\* ?/', "\n", "\n ".substr($operator->comment, 4, strpos($operator->comment, '* @')- 2))) - : null - , - DETAIL_ANNOTATIONS => array(), - DETAIL_TARGET_ANNO => array() - ); array_unshift($this->method, $name); - $this->emitAnnotations($this->metadata[0][1][$name], (array)$operator->annotations); + + // Meta data + $return= $this->resolveType($operator->returns); + $this->metadata[0][1][$name]= $this->meta($operator->comment, $operator->annotations, array( + DETAIL_ARGUMENTS => array(), + DETAIL_RETURNS => $return->name(), + DETAIL_THROWS => array() + )); $b->append('public static function ')->append($name); $signature= $this->emitParameters($b, (array)$operator->parameters, '{'); @@ -1486,13 +1481,23 @@ protected function emitParameters($b, array $parameters, $delim) { } /** - * Emit annotations + * Creates meta data * - * @param &var meta - * @param xp.compiler.ast.AnnotationNode[] annotations + * @param string $comment + * @param xp.compiler.ast.AnnotationNode[] $annotations + * @param [:var] $merge + * @return [:var] meta data */ - protected function emitAnnotations(&$meta, $annotations) { - foreach ($annotations as $annotation) { + protected function meta($comment, $annotations, $merge= array()) { + $meta= $merge + array( + DETAIL_COMMENT => $comment + ? trim(preg_replace('/\n\s+\* ?/', "\n", "\n ".substr($comment, 4, strpos($comment, '* @')- 2))) + : null + , + DETAIL_ANNOTATIONS => array(), + DETAIL_TARGET_ANNO => array() + ); + foreach ((array)$annotations as $annotation) { // Set annotation value if (!$annotation->parameters) { @@ -1513,6 +1518,7 @@ protected function emitAnnotations(&$meta, $annotations) { $meta[DETAIL_ANNOTATIONS][$annotation->type]= $value; } } + return $meta; } /** @@ -1630,24 +1636,18 @@ protected function emitMethod($b, $method) { // Begin $this->enter(new MethodScope($method->name)); + array_unshift($this->method, $method->name); if (!Modifiers::isStatic($method->modifiers)) { $this->scope[0]->setType(new VariableNode('this'), $this->scope[0]->declarations[0]->name); } - + + // Meta data $return= $this->resolveType($method->returns, false); - $this->metadata[0][1][$method->name]= array( - DETAIL_ARGUMENTS => array(), - DETAIL_RETURNS => $return->name(), - DETAIL_THROWS => array(), - DETAIL_COMMENT => $method->comment - ? trim(preg_replace('/\n\s+\* ?/', "\n", "\n ".substr($method->comment, 4, strpos($method->comment, '* @')- 2))) - : null - , - DETAIL_ANNOTATIONS => array(), - DETAIL_TARGET_ANNO => array() - ); - array_unshift($this->method, $method->name); - $this->emitAnnotations($this->metadata[0][1][$method->name], (array)$method->annotations); + $this->metadata[0][1][$method->name]= $this->meta($method->comment, $method->annotations, array( + DETAIL_ARGUMENTS => array(), + DETAIL_RETURNS => $return->name(), + DETAIL_THROWS => array() + )); // Parameters, body if (null !== $method->body) { @@ -1709,18 +1709,14 @@ protected function emitConstructor($b, $constructor) { // Begin $this->enter(new MethodScope('__construct')); $this->scope[0]->setType(new VariableNode('this'), $this->scope[0]->declarations[0]->name); - - $this->metadata[0][1]['__construct']= array( - DETAIL_ARGUMENTS => array(), - DETAIL_RETURNS => null, - DETAIL_THROWS => array(), - DETAIL_COMMENT => preg_replace('/\n\s+\* ?/', "\n ", "\n ".$constructor->comment), - DETAIL_ANNOTATIONS => array(), - DETAIL_TARGET_ANNO => array() - ); - array_unshift($this->method, '__construct'); - $this->emitAnnotations($this->metadata[0][1]['__construct'], (array)$constructor->annotations); + + // Meta data + $this->metadata[0][1]['__construct']= $this->meta($constructor->comment, $constructor->annotations, array( + DETAIL_ARGUMENTS => array(), + DETAIL_RETURNS => null, + DETAIL_THROWS => array() + )); // Arguments, initializations, body if (null !== $constructor->body) { @@ -1813,15 +1809,6 @@ protected function export($value) { protected function registerClass($b, $declaration, $qualified) { unset($this->metadata[0]['EXT']); - // Retain comment - $this->metadata[0]['class'][DETAIL_COMMENT]= $declaration->comment - ? trim(preg_replace('/\n\s+\* ?/', "\n", "\n ".substr($declaration->comment, 4, strpos($declaration->comment, '* @')- 2))) - : null - ; - - // Copy annotations - $this->emitAnnotations($this->metadata[0]['class'], (array)$declaration->annotations); - $b->append($this->core.'::$cn[\''.$this->declaration($declaration).'\']= \''.$qualified.'\';'); $b->append($this->core.'::$meta[\''.$qualified.'\']= '); $b->append($this->export($this->metadata[0])); @@ -2023,14 +2010,12 @@ protected function emitField($b, $field) { $initializable && $b->append('= ')->append(var_export($init, true)); $b->append(';'); - // Copy annotations - $this->metadata[0][0][$field->name]= array(DETAIL_ANNOTATIONS => array()); - $this->emitAnnotations($this->metadata[0][0][$field->name], (array)$field->annotations); - - // Add field metadata (type, stored in @type annotation, see + // Meta data. Add field metadata (type, stored in @type annotation, see // lang.reflect.Field and lang.XPClass::detailsForField()). $type= $this->resolveType($field->type); - $this->metadata[0][0][$field->name][DETAIL_ANNOTATIONS]['type']= $type->name(); + $this->metadata[0][0][$field->name]= $this->meta($field->comment, $field->annotations, array( + DETAIL_ANNOTATIONS => array('type' => $type->name()) + )); // Register type information $f= new Field(); @@ -2057,10 +2042,12 @@ protected function emitClass($b, $declaration) { $this->emitTypeName($b, 'class', $declaration); $b->append(' extends '.$this->literal($parentType, true)); array_unshift($this->metadata, array(array(), array())); - $this->metadata[0]['class'][DETAIL_ANNOTATIONS]= array(); array_unshift($this->properties, array()); array_unshift($this->inits, array(false => array(), true => array(), 2 => false)); + // Meta data + $this->metadata[0]['class']= $this->meta($declaration->comment, $declaration->annotations, array()); + // Generics if ($declaration->name->isGeneric()) { $this->metadata[0]['class'][DETAIL_ANNOTATIONS]['generic']['self']= $this->genericComponentAsMetadata($declaration->name); @@ -2207,10 +2194,12 @@ protected function emitEnum($b, $declaration) { $this->emitTypeName($b, 'class', $declaration); $b->append(' extends '.$this->literal($parentType, true)); array_unshift($this->metadata, array(array(), array())); - $this->metadata[0]['class'][DETAIL_ANNOTATIONS]= array(); array_unshift($this->properties, array('get' => array(), 'set' => array())); $abstract= Modifiers::isAbstract($declaration->modifiers); + // Meta data + $this->metadata[0]['class']= $this->meta($declaration->comment, $declaration->annotations, array()); + // Generics if ($declaration->name->isGeneric()) { $this->metadata[0]['class'][DETAIL_ANNOTATIONS]['generic']['self']= $this->genericComponentAsMetadata($declaration->name); @@ -2317,7 +2306,9 @@ protected function emitInterface($b, $declaration) { $this->enter(new TypeDeclarationScope()); $this->emitTypeName($b, 'interface', $declaration); array_unshift($this->metadata, array(array(), array())); - $this->metadata[0]['class'][DETAIL_ANNOTATIONS]= array(); + + // Meta data + $this->metadata[0]['class']= $this->meta($declaration->comment, $declaration->annotations, array()); // Generics if ($declaration->name->isGeneric()) { From ff8c005f69834725cbacc87637d6ceb7c2ddf268 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Oct 2013 08:26:21 +0200 Subject: [PATCH 13/13] - Remove superfluous type hint, array cast used in each invocation anyway --- src/main/php/xp/compiler/emit/php/Emitter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 0d762b29e..cd310230c 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -948,7 +948,7 @@ protected function emitWhile($b, $loop) { * @param xp.compiler.emit.Buffer b * @return xp.compiler.ast.Node[] nodes */ - protected function emitForComponent($b, array $nodes) { + protected function emitForComponent($b, $nodes) { $s= sizeof($nodes)- 1; foreach ($nodes as $i => $node) { $this->emitOne($b, $node);