From ae06ec802611ac1d8e29fbef1510984c6a3f7d86 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Thu, 7 Jun 2012 17:12:15 +0200 Subject: [PATCH 01/20] - Initial release: Tests with and without names --- .../execution/source/NamedArgsTest.class.php | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php new file mode 100755 index 000000000..74a548d12 --- /dev/null +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -0,0 +1,60 @@ +define('class', $this->name, NULL, '{ + public [:var] fixture(string $url= null, [:string] $params= [:], [:string] $headers= [:]) { + return [ url: $url, params: $params, headers: $headers]; + } + + public [:var] run() { + return $this.fixture('.$arguments.'); + } + }'); + return $fixture->newInstance()->run(); + } + + /** + * Test + * + */ + #[@test] + public function pass_all_without_names() { + $this->assertEquals( + array('url' => '/', 'params' => array('a' => 'b'), 'headers' => array('X' => 'Y')), + $this->pass('"/", [ a: "b" ], [ X: "Y"]') + ); + } + + /** + * Test + * + */ + #[@test] + public function pass_all_with_names() { + $this->assertEquals( + array('url' => '/', 'params' => array('a' => 'b'), 'headers' => array('X' => 'Y')), + $this->pass('url: "/", params: [ a: "b" ], headers: [ X: "Y"]') + ); + } + } +?> From 66bc31ffd361319dc5be4afc67468a916d7730b4 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Thu, 7 Jun 2012 17:22:24 +0200 Subject: [PATCH 02/20] - Add rule "arguments" and change all instances to use it --- .../src/main/php/xp/compiler/grammar/xp.jay | 14 +- .../xp/compiler/syntax/xp/Parser.class.php | 2638 +++++++++-------- 2 files changed, 1335 insertions(+), 1317 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/grammar/xp.jay b/compiler/src/main/php/xp/compiler/grammar/xp.jay index 1a95bab51..0b76854b5 100644 --- a/compiler/src/main/php/xp/compiler/grammar/xp.jay +++ b/compiler/src/main/php/xp/compiler/grammar/xp.jay @@ -480,6 +480,10 @@ throws_opt: /* empty */ { $$= NULL; } | T_THROWS name_list { $$= $2; } ; + +arguments: + expressionlist_opt +; // }}} // {{{ Overloadable operators @@ -681,7 +685,7 @@ expression_opt: ; instancecreation: - typename '(' expressionlist_opt ')' classbody_opt { + typename '(' arguments ')' classbody_opt { $$= new InstanceCreationNode(); $$->type= $1; $$->parameters= $3; @@ -703,7 +707,7 @@ staticmember: T_VARIABLE { $$= new StaticMemberAccessNode(NULL, $1); } - | T_WORD '(' expressionlist_opt ')' { + | T_WORD '(' arguments ')' { $$= new StaticMethodCallNode(NULL, $1, $3); } | T_WORD { @@ -746,7 +750,7 @@ expression: $$= $4; } } - | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } expressionlist_opt ')' chain_opt { + | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } arguments ')' chain_opt { $2->arguments= $4; if ($6) { $$= $6[0]; @@ -956,10 +960,10 @@ chain: | '.' member { $$= $yyLex->create(new MemberAccessNode(NULL, $2)); } - | '.' member '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2)); } expressionlist_opt ')' { + | '.' member '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2)); } arguments ')' { $1->arguments= $5; } - | '.' '(' { $1= $yyLex->create(new InstanceCallNode(NULL)); } expressionlist_opt ')' { + | '.' '(' { $1= $yyLex->create(new InstanceCallNode(NULL)); } arguments ')' { $1->arguments= $4; } ; diff --git a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php index befa75066..1fbf01550 100644 --- a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -168,27 +168,27 @@ 44, 25, 46, 25, 11, 11, 47, 47, 49, 49, 49, 50, 50, 51, 51, 42, 42, 39, 39, 39, 43, 43, 52, 52, 37, 37, 53, 53, 41, 41, - 45, 45, 45, 45, 45, 45, 26, 26, 54, 54, - 57, 55, 58, 55, 61, 55, 63, 55, 65, 55, - 66, 55, 67, 55, 69, 55, 70, 55, 71, 55, - 72, 55, 55, 55, 55, 74, 74, 76, 76, 75, - 75, 77, 64, 64, 68, 68, 78, 78, 80, 79, - 81, 79, 59, 59, 60, 82, 60, 73, 73, 83, - 83, 87, 86, 88, 88, 84, 84, 89, 85, 62, - 62, 90, 90, 56, 56, 91, 91, 91, 95, 95, - 95, 95, 97, 31, 31, 98, 31, 99, 31, 100, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 108, 31, 31, 107, 107, 106, 106, 109, - 109, 110, 110, 36, 112, 36, 36, 36, 36, 36, - 36, 111, 111, 94, 94, 113, 113, 115, 115, 114, - 114, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 102, 102, 102, 102, 102, 102, 102, - 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 104, 104, 104, 104, 104, 104, 105, 105, - 96, 96, 116, 116, 118, 117, 117, 120, 117, 121, - 117, 119, 119, 119, 32, 32, 32, 12, 12, 92, - 93, 122, 122, 123, 123, 21, 21, 48, 48, 124, - 124, 125, 125, 125, 125, 125, 125, 125, 125, + 54, 45, 45, 45, 45, 45, 45, 26, 26, 56, + 56, 59, 57, 60, 57, 63, 57, 64, 57, 66, + 57, 67, 57, 68, 57, 70, 57, 71, 57, 72, + 57, 73, 57, 57, 57, 57, 75, 75, 77, 77, + 76, 76, 78, 65, 65, 69, 69, 79, 79, 81, + 80, 82, 80, 61, 61, 62, 83, 62, 74, 74, + 84, 84, 88, 87, 89, 89, 85, 85, 90, 86, + 55, 55, 91, 91, 58, 58, 92, 92, 92, 96, + 96, 96, 96, 98, 31, 31, 99, 31, 100, 31, + 101, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 109, 31, 31, 108, 108, 107, 107, + 110, 110, 111, 111, 36, 113, 36, 36, 36, 36, + 36, 36, 112, 112, 95, 95, 114, 114, 116, 116, + 115, 115, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, + 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 105, 105, 105, 105, 105, 105, 106, + 106, 97, 97, 117, 117, 119, 118, 118, 121, 118, + 122, 118, 120, 120, 120, 32, 32, 32, 12, 12, + 93, 94, 123, 123, 124, 124, 21, 21, 48, 48, + 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 0, 7, @@ -200,1217 +200,1231 @@ 0, 8, 0, 10, 4, 1, 1, 3, 2, 5, 5, 1, 3, 3, 3, 1, 3, 0, 2, 1, 0, 1, 1, 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, + 1, 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, 4, 4, 3, 3, 3, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 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, 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, 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, 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, 9, 0, 0, 7, 0, 0, - 0, 0, 0, 292, 294, 293, 296, 298, 297, 299, - 295, 1, 0, 66, 0, 290, 8, 0, 0, 4, - 12, 13, 0, 0, 0, 67, 20, 24, 22, 291, + 0, 0, 0, 293, 295, 294, 297, 299, 298, 300, + 296, 1, 0, 66, 0, 291, 8, 0, 0, 4, + 12, 13, 0, 0, 0, 67, 20, 24, 22, 292, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 0, 0, 0, 0, 15, 0, 0, - 205, 0, 211, 207, 210, 208, 209, 0, 0, 0, + 206, 0, 212, 208, 211, 209, 210, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 70, 0, 71, 0, 0, 275, 0, 276, - 277, 0, 282, 27, 0, 0, 0, 31, 35, 0, - 16, 214, 0, 0, 0, 0, 0, 0, 176, 0, - 0, 0, 173, 0, 0, 0, 0, 0, 212, 0, - 213, 184, 185, 186, 187, 188, 0, 0, 216, 204, - 74, 75, 0, 73, 0, 0, 0, 0, 279, 29, + 0, 0, 70, 0, 71, 0, 0, 276, 0, 277, + 278, 0, 283, 27, 0, 0, 0, 31, 35, 0, + 16, 215, 0, 0, 0, 0, 0, 0, 177, 0, + 0, 0, 174, 0, 0, 0, 0, 0, 213, 0, + 214, 185, 186, 187, 188, 189, 0, 0, 217, 205, + 74, 75, 0, 73, 0, 0, 0, 0, 280, 29, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 182, 0, 180, 0, 0, 0, 0, 178, + 0, 0, 183, 0, 181, 0, 0, 0, 0, 179, 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, 259, - 260, 0, 265, 0, 175, 262, 0, 0, 206, 0, - 285, 0, 280, 283, 0, 287, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, + 261, 0, 266, 0, 176, 263, 0, 0, 207, 0, + 286, 0, 281, 284, 0, 288, 0, 0, 25, 0, 34, 36, 37, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 202, 0, 0, - 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 175, 0, 203, 0, 0, + 0, 201, 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, 192, 0, 0, - 183, 0, 272, 274, 273, 270, 0, 264, 163, 0, - 0, 219, 217, 281, 21, 0, 0, 0, 0, 0, - 0, 23, 0, 35, 0, 177, 0, 0, 0, 195, - 203, 0, 0, 0, 172, 169, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 0, 0, 268, 101, 0, - 119, 105, 109, 111, 107, 115, 117, 103, 113, 0, - 0, 0, 0, 99, 0, 61, 0, 0, 0, 0, - 0, 35, 45, 0, 43, 0, 0, 0, 0, 0, - 0, 0, 0, 201, 0, 179, 0, 266, 0, 0, - 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 125, 100, 0, 0, 59, 91, - 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 168, 181, 0, 193, 0, 271, - 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, - 143, 0, 0, 116, 118, 0, 0, 0, 0, 130, - 0, 83, 0, 0, 0, 0, 63, 0, 0, 48, - 0, 0, 53, 33, 0, 166, 197, 0, 170, 269, - 102, 0, 0, 0, 0, 120, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 55, 0, 49, - 54, 47, 194, 0, 0, 127, 0, 0, 0, 144, - 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, - 84, 0, 85, 0, 0, 0, 0, 152, 158, 122, - 0, 149, 150, 0, 0, 110, 0, 134, 0, 0, - 0, 0, 90, 76, 0, 62, 86, 0, 0, 56, - 0, 0, 148, 157, 151, 123, 0, 0, 0, 146, - 104, 139, 141, 0, 0, 137, 124, 0, 60, 0, - 0, 0, 0, 112, 108, 0, 0, 0, 114, 138, - 77, 64, 154, 0, 0, 0, 147, 0, 0, 0, - 0, 159, 106, 0, 142, 155, 0, 140, 0, 0, - 153, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 184, 0, 273, 275, 274, 271, 0, 265, 164, 0, + 0, 220, 218, 282, 21, 0, 0, 0, 0, 0, + 0, 23, 0, 35, 0, 178, 0, 0, 0, 91, + 196, 204, 0, 0, 0, 173, 170, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 0, 0, 269, 102, + 0, 120, 106, 110, 112, 108, 116, 118, 104, 114, + 0, 0, 0, 0, 100, 0, 61, 0, 0, 0, + 0, 0, 35, 45, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 202, 0, 180, 0, 267, 0, + 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 126, 101, 0, 0, 59, + 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 168, 169, 182, 0, 194, 0, + 272, 0, 0, 0, 0, 0, 127, 0, 0, 0, + 0, 144, 0, 0, 117, 119, 0, 0, 0, 0, + 131, 0, 83, 0, 0, 0, 0, 63, 0, 0, + 48, 0, 0, 53, 33, 0, 167, 198, 0, 171, + 270, 103, 0, 0, 0, 0, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 55, 0, + 49, 54, 47, 195, 0, 0, 128, 0, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 132, 0, 0, + 0, 84, 0, 85, 0, 0, 0, 0, 153, 159, + 123, 0, 150, 151, 0, 0, 111, 0, 135, 0, + 0, 0, 0, 90, 76, 0, 62, 86, 0, 0, + 56, 0, 0, 149, 158, 152, 124, 0, 0, 0, + 147, 105, 140, 142, 0, 0, 138, 125, 0, 60, + 0, 0, 0, 0, 113, 109, 0, 0, 0, 115, + 139, 77, 64, 155, 0, 0, 0, 148, 0, 0, + 0, 0, 160, 107, 0, 143, 156, 0, 141, 0, + 0, 154, ); protected static $yyDgoto= array(2, 3, 6, 22, 116, 4, 7, 8, 33, 12, 60, 210, 88, 47, 74, 96, 143, 49, 215, 48, 76, - 98, 343, 211, 212, 213, 331, 216, 217, 290, 291, - 332, 270, 389, 341, 432, 118, 422, 433, 464, 426, - 490, 516, 423, 378, 386, 466, 35, 24, 36, 70, - 71, 424, 425, 333, 334, 247, 361, 371, 412, 531, - 365, 119, 368, 452, 366, 367, 372, 534, 369, 370, - 364, 403, 500, 405, 419, 406, 420, 535, 536, 547, - 548, 546, 501, 523, 502, 503, 521, 554, 522, 120, - 220, 90, 91, 121, 307, 195, 157, 152, 233, 224, - 122, 123, 124, 125, 126, 230, 353, 438, 231, 232, - 127, 80, 128, 129, 283, 196, 197, 272, 277, 360, - 317, 92, 93, 25, 26, + 98, 344, 211, 212, 213, 332, 216, 217, 290, 291, + 333, 270, 390, 342, 433, 118, 423, 434, 465, 427, + 491, 517, 424, 379, 387, 467, 35, 24, 36, 70, + 71, 425, 426, 299, 300, 334, 335, 247, 362, 372, + 413, 532, 366, 369, 453, 367, 368, 373, 535, 370, + 371, 365, 404, 501, 406, 420, 407, 421, 536, 537, + 548, 549, 547, 502, 524, 503, 504, 522, 555, 523, + 120, 220, 90, 91, 121, 308, 195, 157, 152, 233, + 224, 122, 123, 124, 125, 126, 230, 354, 439, 231, + 232, 127, 80, 128, 129, 283, 196, 197, 272, 277, + 361, 318, 92, 93, 25, 26, ); - protected static $yySindex = array( -289, - 0, 0, -239, -212, 0, 598, -239, 0, 38, 91, - 97, -216, 215, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 145, 0, 431, 0, 0, -212, -212, 0, - 0, 0, 31, -212, 59, 0, 0, 0, 0, 0, - 0, 0, 255, 274, 215, 431, -212, -212, -212, 30, - 410, 0, 0, 258, 15, 53, 15, 0, 334, 333, - 0, 358, 0, 0, 0, 0, 0, 364, 356, 116, - 0, 45, -212, 119, -212, 317, 119, 30, 0, 4235, - 336, 336, 0, -80, 0, 141, 395, 0, 366, 0, - 0, 303, 0, 0, -212, 340, 420, 0, 0, 352, - 0, 0, 4468, 4468, 4468, 4468, 4468, 4468, 0, 4468, - 300, 442, 0, 4468, 381, 100, 3175, 221, 0, 463, - 0, 0, 0, 0, 0, 0, 419, 475, 0, 0, - 0, 0, 358, 0, -212, -69, 427, 45, 0, 0, - 0, -212, 417, 269, -27, -76, -76, -116, -76, -76, - -76, -69, 0, 4468, 0, 4468, 221, 2052, -74, 0, - 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, - 4468, 4468, 4468, 4468, 4468, 4468, 4343, 4354, 2920, 4468, - 4199, 4468, 4468, 4468, 4468, 4468, 4468, -212, 4468, 0, - 0, -69, 0, -12, 0, 0, 221, 4468, 0, -66, - 0, 276, 0, 0, 561, 0, 408, 270, 0, 42, - 0, 0, 0, 0, 409, 316, 0, 499, 366, 221, - 421, 423, 3175, 4468, 3175, 0, 221, 0, -84, 283, - 506, 0, -131, 3210, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3175, 490, 4041, 1633, 3792, - 4468, 1708, 4468, 1708, 4468, 4468, 155, 155, 4468, 4468, - 155, 155, 166, 166, -116, -116, -116, 0, -76, 198, - 0, 4468, 0, 0, 0, 0, 512, 0, 0, 495, - 442, 0, 0, 0, 0, 396, 294, 313, 44, 432, - 524, 0, 269, 0, 4468, 0, 4468, -50, 522, 0, - 0, 4363, -74, 526, 0, 0, 221, 4468, 3288, 3288, - 155, 155, 155, 155, 0, 474, 4468, 0, 0, -25, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 531, - 447, 2160, 396, 0, 517, 0, 533, 407, 497, 525, - 471, 0, 0, 4468, 0, 729, 567, 485, 486, 221, - 396, 3175, 487, 0, 4468, 0, 451, 0, 572, 4468, - 4468, 0, 275, 4468, 576, 577, 383, 587, 573, 575, - 601, 602, 314, 0, 0, 0, 336, -69, 0, 0, - 0, 0, 0, 0, 0, 615, -69, 4468, 603, 403, - 697, 2324, 432, 0, 0, 0, 542, 0, 627, 0, - 635, 618, 396, 619, 293, 0, 2351, 4468, 4468, 396, - 0, 318, 345, 0, 0, 4468, 4468, 626, 337, 0, - 631, 0, 651, 661, -141, -10, 0, 628, 3175, 0, - 1, -114, 0, 0, 432, 0, 0, 221, 0, 0, - 0, 583, 4468, 275, 599, 0, 668, 2459, 605, 688, - 691, 368, 2486, 2583, 4468, 314, 624, 0, 429, -69, - 695, 525, -69, 711, 661, -69, 0, 0, 396, 0, - 0, 0, 0, 93, 3175, 0, 396, 4468, 383, 0, - 4468, 425, 4468, 383, 637, 3175, 0, 396, -212, 7, - 0, 430, 0, 661, 429, 713, 648, 0, 0, 0, - 93, 0, 0, 655, 724, 0, 2623, 0, 2650, 413, - 13, 662, 0, 0, 396, 0, 0, 7, 429, 0, - 749, 677, 0, 0, 0, 0, 4468, 743, 383, 0, - 0, 0, 0, 678, 13, 0, 0, 682, 0, 7, - -212, 396, 767, 0, 0, 383, 4468, 751, 0, 0, - 0, 0, 0, -89, 685, 383, 0, 2758, 396, -212, - 782, 0, 0, 396, 0, 0, 701, 0, 396, 704, - 0, + protected static $yySindex = array( -275, + 0, 0, -263, -108, 0, 1309, -263, 0, 28, 37, + 44, 54, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 154, 0, 479, 0, 0, -108, -108, 0, + 0, 0, -58, -108, 9, 0, 0, 0, 0, 0, + 0, 0, 222, 243, 134, 479, -108, -108, -108, -7, + 351, 0, 0, 235, -3, 62, -3, 0, 232, 277, + 0, 352, 0, 0, 0, 0, 0, 353, 385, 320, + 0, 38, -108, 36, -108, 316, 36, -7, 0, 4260, + 267, 267, 0, -127, 0, 133, 389, 0, 357, 0, + 0, 14, 0, 0, -108, 335, 415, 0, 0, 344, + 0, 0, 4546, 4546, 4546, 4546, 4546, 4546, 0, 4546, + 268, 406, 0, 4546, 350, 65, 3279, 114, 0, 436, + 0, 0, 0, 0, 0, 0, 388, 440, 0, 0, + 0, 0, 352, 0, -108, -71, 398, 38, 0, 0, + 0, -108, 1576, 234, 319, -80, -80, -112, -80, -80, + -80, -71, 0, 4546, 0, 4546, 114, 2229, -83, 0, + 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4546, 4299, 4504, 4230, 4546, + 4244, 4546, 4546, 4546, 4546, 4546, 4546, -108, 4546, 0, + 0, -71, 0, -8, 0, 0, 114, 4546, 0, 42, + 0, 299, 0, 0, 2137, 0, 376, 242, 0, -68, + 0, 0, 0, 0, 378, 149, 0, 461, 357, 114, + 384, 386, 3279, 4546, 3279, 0, 114, 0, -75, 249, + 467, 0, -187, 3334, 3376, 3376, 3376, 3376, 3376, 3376, + 3376, 3376, 3376, 3376, 3376, 3279, 454, 50, 645, 346, + 4546, 1702, 4546, 1702, 4546, 4546, -32, -32, 4546, 4546, + -32, -32, 162, 162, -112, -112, -112, 0, -80, 218, + 0, 4546, 0, 0, 0, 0, 474, 0, 0, 462, + 406, 0, 0, 0, 0, 465, 273, 328, -70, 412, + 496, 0, 234, 0, 4546, 0, 4546, 3, 499, 0, + 0, 0, 4391, -83, 501, 0, 0, 114, 4546, 3376, + 3376, -32, -32, -32, -32, 0, 453, 4546, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 508, 425, 2392, 465, 0, 492, 0, 514, 697, 464, + 497, 439, 0, 0, 4546, 0, 590, 531, 456, 457, + 114, 465, 3279, 458, 0, 4546, 0, 17, 0, 536, + 4546, 4546, 0, 244, 4546, 545, 547, 452, 549, 538, + 540, 555, 560, 265, 0, 0, 0, 267, -71, 0, + 0, 0, 0, 0, 0, 0, 566, -71, 4546, 550, + 360, 2163, 2420, 412, 0, 0, 0, 485, 0, 576, + 0, 584, 571, 465, 575, 332, 0, 2528, 4546, 4546, + 465, 0, 276, 298, 0, 0, 4546, 4546, 578, 363, + 0, 581, 0, 600, 601, -191, -73, 0, 551, 3279, + 0, 27, -99, 0, 0, 412, 0, 0, 114, 0, + 0, 0, 525, 4546, 244, 530, 0, 595, 2555, 532, + 615, 612, 297, 2652, 2692, 4546, 265, 539, 0, 349, + -71, 619, 497, -71, 632, 601, -71, 0, 0, 465, + 0, 0, 0, 0, -27, 3279, 0, 465, 4546, 452, + 0, 4546, 334, 4546, 452, 552, 3279, 0, 465, -108, + 59, 0, 345, 0, 601, 349, 643, 561, 0, 0, + 0, -27, 0, 0, 564, 635, 0, 2719, 0, 2827, + 324, 29, 572, 0, 0, 465, 0, 0, 59, 349, + 0, 664, 579, 0, 0, 0, 0, 4546, 659, 452, + 0, 0, 0, 0, 594, 29, 0, 0, 597, 0, + 59, -108, 465, 682, 0, 0, 452, 4546, 666, 0, + 0, 0, 0, 0, -86, 606, 452, 0, 2854, 465, + -108, 691, 0, 0, 465, 0, 0, 610, 0, 465, + 616, 0, ); - protected static $yyRindex= array( 924, - 0, 0, 1093, 0, 0, 190, 1216, 0, 734, 0, - 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + protected static $yyRindex= array( 993, + 0, 0, 1285, 0, 0, 188, 1435, 0, 803, 0, + 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 0, 504, 0, 0, 0, 0, - 0, 0, 0, 774, -118, 708, -118, 0, 775, 0, - 0, 797, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 716, 0, 0, 716, 0, 0, 747, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 0, - 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, + 0, 0, 0, 82, 0, 259, 0, 0, 0, 0, + 0, 0, 0, 843, -104, 614, -104, 0, 684, 0, + 0, 709, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 629, 0, 0, 629, 0, 0, 660, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1596, 1720, 0, 0, 0, 0, 861, 1421, 0, -7, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, + 1665, 1789, 0, 0, 0, 0, 76, 1490, 0, 87, + 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -113, 722, 871, -5, 1831, 2786, 1858, 1899, - 1928, 0, 0, 0, 0, 0, 1421, 0, 592, 0, + 0, 0, 52, 631, 940, 1900, 1927, 2948, 1968, 1997, + 2094, 0, 0, 0, 0, 0, 1490, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 803, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1448, 878, 0, -13, - 0, 0, 0, 0, -113, 0, 1067, 0, 0, 0, - 0, 0, 0, 644, 0, 730, 0, 778, 0, 1421, - 779, 784, 29, 825, 57, 0, 1421, 0, 0, 0, - 620, 0, 0, 160, 18, 20, 46, 51, 56, 58, - 216, 224, 236, 280, 292, 830, 0, 3932, 1172, 1037, - 0, 3892, 0, 3916, 0, 0, 3340, 3471, 0, 0, - 3508, 3615, 997, 3314, 2879, 3043, 3085, 0, 2025, 1324, - 0, 783, 0, 0, 0, 0, 898, 0, 0, 0, - 0, 0, 0, 0, 0, 761, 0, 3, 0, -18, - 0, 0, 0, 0, 825, 0, 762, 0, 0, 0, - 0, 0, 0, 1200, 0, 0, 1421, 0, 458, 477, - 3722, 3738, 3767, 3807, 0, 0, 825, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1517, 341, 0, 12, + 0, 0, 0, 0, 52, 0, 1136, 0, 0, 0, + 0, 0, 0, 151, 0, 644, 0, 681, 0, 1490, + 683, 685, 34, 732, 241, 0, 1490, 0, 0, 0, + 518, 0, 0, 1143, 22, 26, 31, 228, 284, 286, + 424, 493, 662, 726, 872, 652, 0, 4046, 1241, 1106, + 0, 3977, 0, 4001, 0, 0, 535, 3542, 0, 0, + 3579, 3661, 1066, 3421, 3112, 3154, 3244, 0, 2121, 1393, + 0, 686, 0, 0, 0, 0, 967, 0, 0, 0, + 0, 0, 0, 0, 0, 655, 0, -43, 0, -2, + 0, 0, 0, 0, 732, 0, 656, 0, 0, 0, + 0, 0, 0, 0, 1269, 0, 0, 1490, 0, 977, + 1027, 3803, 3819, 3843, 3961, 0, 0, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -104, 0, 0, 0, 770, 0, 0, 835, - 0, 0, 0, 0, 0, -107, 0, 0, 0, 1421, - 761, 771, 0, 0, 825, 0, 4006, 0, 0, 825, - 844, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 863, 0, 0, + 0, 0, 0, -118, 0, 0, 0, 663, 0, 0, + 724, 0, 0, 0, 0, 0, -103, 0, 0, 0, + 1490, 655, 665, 0, 0, 732, 0, 4069, 0, 0, + 732, 729, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -113, 0, 1297, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 761, 338, 0, 0, 0, 847, 0, 761, + 0, 52, 0, 1366, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 655, 371, 0, 0, 0, 737, 0, + 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 750, 0, 756, 0, 0, 6, + 0, 0, 0, 0, 0, -2, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 866, 0, 869, 0, 0, 349, 0, - 0, 0, 0, 0, -18, 0, 0, 1421, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 547, 0, 0, 0, 0, 0, 0, 0, 64, 0, - 0, 84, 0, 0, 876, 863, 0, 0, 761, 0, - 0, 0, 0, 0, 350, 0, 761, 847, 0, 0, - 0, 0, 0, 0, 0, 414, 0, 761, 0, 0, - 0, 0, 0, 880, 64, 0, 0, 0, 0, 0, - 219, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 799, 0, 0, 0, 761, 0, 0, 0, 64, 0, - 0, 0, 0, 0, 0, 0, 825, 0, 0, 0, - 0, 0, 0, 0, 800, 0, 0, 0, 0, 0, - 0, 761, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, - 0, 0, 0, -102, 0, 0, 0, 0, 761, 0, - 0, + 0, 435, 0, 0, 0, 0, 0, 0, 0, 212, + 0, 0, 238, 0, 0, 759, 748, 0, 0, 655, + 0, 0, 0, 0, 0, 383, 0, 655, 737, 0, + 0, 0, 0, 0, 0, 0, 394, 0, 655, 0, + 0, 0, 0, 0, 760, 212, 0, 0, 0, 0, + 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 306, 677, 0, 0, 0, 655, 0, 0, 0, 212, + 0, 0, 0, 0, 0, 0, 0, 732, 0, 0, + 0, 0, 0, 0, 0, 678, 0, 0, 0, 0, + 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, + 0, 0, 0, 0, -113, 0, 0, 0, 0, 655, + 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 919, 0, 0, 849, - 922, -46, 0, 881, 870, -135, 0, 0, 0, 0, - -91, -308, 0, 0, 0, 1946, 0, 653, 0, 0, - 60, 581, 488, 0, 0, -35, -367, 516, 0, 0, - -222, -240, 483, 0, 0, 0, 0, 905, 907, 0, - 879, -285, 776, 0, 523, -189, 0, 0, 135, 0, - 0, 323, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 509, 510, 0, 434, 0, - 0, 0, 0, 0, 466, 469, 0, 0, 0, 0, - 0, 820, 821, 676, 0, -145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, - 0, 0, 0, 785, 0, 786, 0, 0, 0, 0, - 0, 0, 838, 0, 962, + 0, 0, 0, -4, 0, 0, 797, 0, 0, 731, + 804, -46, 0, 763, 739, -132, 0, 0, 0, 0, + -91, -354, 0, 0, 0, 2313, 0, 528, 0, 0, + 60, -38, 366, 0, 0, -45, -336, 399, 0, 0, + -300, -383, 367, 0, 0, 0, 0, 787, 791, 0, + 758, -319, 657, 115, -49, 0, 33, -165, 0, 0, + -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 407, 396, 0, 321, + 0, 0, 0, 0, 0, 354, 356, 0, 0, 0, + 0, 0, 707, 708, 580, 0, -41, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 565, 0, 0, 0, 676, 0, 692, 0, 0, 0, + 0, 0, 0, 741, 0, 866, ); protected static $yyTable = array(11, - 55, 56, 57, 140, 26, 205, 137, 102, 279, 189, - 470, 226, 155, 1, 363, 69, 87, 39, 28, 428, - 98, 87, 97, 41, 42, 32, 94, 276, 97, 44, - 218, 255, 255, 161, 560, 255, 255, 255, 255, 255, - 32, 255, 54, 54, 54, 131, 132, 9, 97, 189, - 206, 161, 255, 255, 255, 255, 255, 255, 191, 468, - 222, 191, 17, 222, 5, 514, 31, 54, 54, 32, - 54, 58, 220, 10, 296, 191, 191, 222, 222, 218, - 87, 300, 316, 28, 436, 161, 223, 255, 255, 223, - 54, 224, 491, 17, 224, 97, 225, 362, 226, 225, - 221, 226, 45, 223, 223, 218, 32, 86, 224, 224, - 191, 218, 222, 225, 225, 226, 226, 161, 255, 255, - 286, 220, 89, 469, 57, 69, 472, 57, 304, 515, - 201, 54, 87, 54, 137, 87, 29, 54, 223, 117, - 465, 268, 191, 224, 222, 431, 288, 54, 225, 221, - 226, 46, 288, 220, 54, 30, 85, 215, 346, 84, - 289, 356, 146, 147, 148, 149, 150, 151, 305, 153, - 223, 402, 288, 158, 69, 224, 57, 494, 288, 133, - 225, 221, 226, 54, 286, 9, 89, 54, 461, 215, - 9, 187, 26, 280, 281, 188, 185, 183, 462, 184, - 190, 186, 187, 190, 396, 54, 391, 185, 306, 280, - 281, 10, 186, 223, 192, 225, 10, 190, 190, 68, + 55, 56, 57, 140, 187, 69, 99, 87, 205, 185, + 183, 98, 184, 189, 186, 137, 17, 87, 26, 87, + 137, 39, 87, 41, 42, 471, 94, 1, 97, 44, + 119, 276, 279, 89, 58, 131, 132, 561, 364, 437, + 5, 32, 54, 54, 54, 189, 58, 17, 97, 58, + 206, 429, 45, 187, 176, 219, 32, 138, 185, 183, + 102, 184, 192, 186, 58, 192, 223, 54, 54, 223, + 54, 224, 305, 28, 224, 139, 179, 221, 181, 192, + 192, 473, 29, 223, 223, 469, 187, 176, 224, 224, + 54, 185, 183, 189, 184, 97, 186, 202, 58, 89, + 86, 46, 30, 507, 219, 218, 317, 466, 511, 179, + 175, 181, 306, 219, 192, 226, 163, 515, 223, 163, + 229, 363, 32, 224, 492, 69, 221, 162, 87, 287, + 201, 54, 133, 54, 163, 540, 219, 54, 462, 117, + 174, 268, 189, 175, 495, 162, 192, 54, 463, 470, + 223, 9, 307, 546, 54, 224, 289, 553, 221, 194, + 432, 347, 146, 147, 148, 149, 150, 151, 163, 153, + 558, 289, 68, 158, 69, 189, 9, 10, 296, 162, + 564, 516, 289, 54, 290, 301, 9, 54, 9, 338, + 46, 288, 293, 287, 44, 519, 403, 34, 187, 188, + 163, 43, 10, 185, 193, 54, 26, 294, 186, 44, + 392, 162, 10, 223, 10, 225, 17, 10, 192, 541, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 254, 257, 258, - 261, 262, 263, 264, 265, 266, 267, 273, 269, 9, - 561, 156, 190, 156, 192, 301, 228, 246, 156, 228, - 315, 156, 17, 156, 227, 228, 194, 227, 98, 98, - 97, 97, 518, 228, 228, 10, 229, 539, 34, 229, - 189, 227, 227, 117, 190, 190, 191, 274, 137, 59, - 43, 189, 473, 229, 229, 145, 540, 145, 54, 552, - 50, 288, 145, 337, 9, 145, 255, 145, 228, 156, - 309, 193, 310, 51, 311, 312, 227, 72, 313, 314, - 230, 463, 17, 230, 73, 190, 191, 10, 229, 289, - 10, 246, 231, 445, 17, 231, 444, 230, 230, 155, - 228, 421, 17, 156, 156, 28, 138, 284, 227, 231, - 231, 275, 336, 145, 117, 289, 117, 154, 28, 293, - 229, 352, 75, 338, 139, 284, 137, 357, 284, 289, - 289, 289, 230, 54, 294, 339, 117, 457, 128, 78, - 456, 128, 54, 340, 231, 532, 533, 145, 145, 58, - 129, 79, 58, 129, 255, 255, 83, 513, 255, 255, - 255, 255, 255, 392, 230, 255, 255, 58, 255, 255, - 255, 255, 255, 255, 117, 105, 231, 115, 81, 117, - 246, 54, 114, 407, 82, 103, 61, 104, 105, 95, - 115, 191, 191, 222, 222, 114, 498, 499, 103, 99, - 104, 58, 97, 384, 37, 38, 39, 429, 382, 380, - 135, 381, 136, 383, 132, 54, 137, 132, 54, 223, - 223, 54, 141, 142, 224, 224, 188, 117, 448, 225, - 225, 226, 226, 61, 144, 453, 454, 188, 156, 156, - 156, 156, 156, 156, 54, 192, 61, 187, 176, 288, - 288, 288, 185, 183, 553, 184, 192, 186, 240, 156, - 61, 240, 475, 159, 156, 410, 198, 13, 106, 160, - 179, 199, 181, 566, 486, 240, 240, 241, 200, 203, - 241, 106, 145, 145, 145, 145, 145, 145, 214, 287, - 286, 156, 385, 292, 241, 241, 54, 117, 295, 302, - 507, 209, 509, 297, 175, 298, 299, 308, 145, 303, - 240, 318, 154, 335, 342, 54, 190, 191, 156, 156, - 156, 156, 350, 344, 156, 355, 358, 190, 191, 241, - 373, 374, 379, 190, 174, 145, 189, 377, 156, 156, - 156, 156, 240, 156, 156, 388, 117, 387, 156, 156, - 156, 156, 156, 390, 288, 130, 63, 64, 65, 66, - 67, 241, 145, 145, 145, 145, 558, 393, 145, 394, - 395, 398, 400, 506, 404, 408, 409, 347, 510, 348, - 156, 156, 145, 145, 145, 145, 413, 145, 145, 228, - 228, 414, 145, 415, 145, 145, 145, 227, 227, 359, - 416, 417, 145, 63, 64, 65, 66, 67, 156, 229, - 229, 13, 89, 418, 427, 145, 63, 64, 65, 66, - 67, 430, 431, 545, 145, 145, 437, 439, 10, 62, - 63, 64, 65, 66, 67, 440, 441, 399, 450, 443, - 557, 10, 401, 46, 451, 285, 455, 44, 13, 458, - 563, 459, 145, 230, 230, 110, 14, 15, 16, 207, - 18, 19, 44, 20, 460, 231, 231, 474, 110, 68, - 14, 15, 16, 17, 18, 19, 202, 20, 89, 21, - 467, 477, 113, 319, 320, 321, 478, 481, 109, 480, - 447, 483, 219, 21, 482, 113, 319, 320, 321, 229, - 492, 109, 322, 323, 324, 325, 488, 326, 327, 489, - 208, 495, 328, 519, 329, 322, 323, 324, 325, 511, - 326, 327, 188, 288, 508, 328, 44, 329, 44, 517, - 17, 17, 520, 17, 17, 17, 17, 17, 17, 526, - 17, 192, 527, 530, 107, 108, 537, 13, 541, 288, - 289, 17, 17, 17, 17, 17, 17, 107, 108, 542, - 505, 544, 549, 288, 288, 288, 551, 556, 559, 562, - 278, 278, 330, 278, 278, 278, 278, 278, 278, 13, - 278, 434, 567, 569, 17, 330, 17, 17, 571, 11, - 30, 278, 278, 14, 278, 278, 278, 204, 28, 160, - 14, 15, 16, 207, 18, 19, 41, 20, 198, 543, - 182, 180, 190, 191, 40, 376, 17, 17, 17, 17, - 164, 177, 178, 21, 278, 160, 278, 278, 275, 276, - 165, 240, 240, 165, 277, 164, 199, 14, 15, 16, - 17, 18, 19, 229, 20, 97, 160, 165, 165, 411, - 241, 241, 51, 57, 208, 196, 278, 278, 278, 278, - 21, 162, 164, 81, 162, 160, 82, 204, 204, 78, - 133, 204, 204, 204, 204, 204, 80, 204, 164, 162, - 79, 164, 165, 135, 136, 27, 101, 23, 204, 204, - 204, 204, 204, 204, 267, 267, 164, 77, 267, 267, - 267, 267, 267, 267, 267, 345, 100, 471, 496, 493, - 53, 52, 476, 162, 165, 267, 267, 267, 267, 267, - 267, 204, 134, 204, 204, 487, 524, 271, 550, 525, - 164, 221, 222, 349, 354, 204, 14, 15, 16, 207, - 18, 19, 278, 20, 282, 162, 40, 0, 267, 0, - 267, 267, 0, 17, 204, 204, 204, 0, 0, 21, - 0, 411, 164, 0, 0, 0, 411, 0, 14, 15, - 16, 207, 18, 19, 2, 20, 0, 0, 0, 0, - 0, 267, 267, 267, 0, 0, 0, 0, 0, 0, - 208, 21, 0, 278, 242, 0, 0, 242, 0, 242, - 242, 242, 0, 17, 17, 17, 0, 0, 0, 0, - 0, 411, 0, 17, 242, 242, 242, 242, 242, 242, - 0, 0, 208, 17, 17, 17, 0, 0, 411, 0, - 0, 0, 0, 17, 249, 0, 0, 249, 411, 0, - 249, 0, 0, 278, 278, 278, 0, 0, 0, 242, - 242, 0, 0, 278, 249, 249, 0, 249, 0, 249, - 0, 0, 0, 278, 278, 278, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 242, 242, 0, 0, 0, 0, 0, 0, 0, 249, - 249, 0, 0, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 0, 17, 17, 17, 0, 17, 17, 17, - 17, 17, 17, 0, 0, 0, 0, 296, 0, 0, - 249, 249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 204, 5, 278, 278, 0, 278, 278, 278, - 278, 278, 278, 0, 0, 0, 0, 0, 0, 0, - 0, 204, 0, 2, 2, 2, 2, 2, 2, 267, - 2, 0, 250, 0, 0, 250, 0, 0, 0, 0, - 0, 0, 0, 2, 2, 2, 0, 2, 267, 250, - 250, 0, 250, 0, 250, 0, 171, 171, 0, 0, - 171, 171, 171, 171, 171, 171, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 171, 171, 171, - 171, 171, 171, 0, 250, 250, 0, 0, 0, 0, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 0, - 17, 204, 204, 0, 204, 204, 204, 204, 204, 204, - 171, 0, 171, 171, 0, 250, 250, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 6, 0, 267, 267, - 0, 267, 267, 267, 267, 267, 267, 0, 0, 0, - 0, 0, 0, 171, 171, 171, 296, 0, 0, 0, - 0, 0, 0, 32, 32, 0, 0, 32, 32, 32, - 32, 32, 32, 32, 0, 0, 296, 296, 296, 296, - 296, 296, 296, 296, 32, 32, 32, 32, 32, 32, - 87, 87, 0, 0, 87, 87, 87, 87, 87, 296, - 87, 0, 5, 5, 5, 5, 5, 5, 0, 5, - 0, 87, 87, 87, 87, 87, 0, 32, 0, 32, - 32, 0, 5, 5, 5, 5, 242, 242, 0, 0, - 242, 242, 242, 242, 242, 0, 0, 242, 242, 0, - 242, 242, 242, 242, 242, 242, 87, 87, 0, 0, - 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 249, 249, 249, 249, 249, 0, 0, 87, 87, 87, - 249, 249, 249, 249, 249, 249, 0, 261, 261, 0, - 0, 261, 261, 261, 261, 261, 0, 261, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 261, 261, - 261, 261, 261, 261, 263, 263, 0, 0, 263, 263, - 263, 263, 263, 0, 263, 6, 6, 6, 6, 6, - 6, 0, 6, 0, 0, 263, 263, 263, 263, 263, - 263, 171, 0, 261, 261, 6, 6, 6, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 263, 0, 0, 261, 261, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 263, 263, 263, 0, 250, 250, 250, 250, 250, - 0, 0, 0, 0, 0, 250, 250, 250, 250, 250, - 250, 0, 0, 0, 0, 0, 0, 0, 0, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 32, 0, - 171, 171, 0, 171, 171, 171, 171, 171, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 204, 204, 0, 87, 0, 204, 204, 204, - 204, 0, 204, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 87, 204, 204, 204, 204, 0, - 0, 0, 0, 87, 0, 0, 0, 0, 0, 187, - 176, 0, 0, 0, 185, 183, 0, 184, 0, 186, - 0, 0, 0, 0, 0, 0, 204, 0, 204, 204, - 0, 0, 179, 0, 181, 0, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 0, 0, 32, 32, 0, - 32, 32, 32, 32, 32, 32, 0, 0, 0, 204, - 0, 204, 0, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 261, 0, 87, 87, 0, 87, 87, 87, - 87, 87, 87, 0, 187, 0, 0, 0, 0, 185, - 183, 261, 184, 0, 186, 0, 211, 211, 189, 263, - 0, 211, 211, 211, 211, 211, 211, 179, 0, 181, - 0, 0, 0, 0, 0, 0, 0, 0, 263, 211, - 211, 211, 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, - 211, 0, 211, 211, 0, 0, 0, 0, 0, 0, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 0, - 0, 261, 261, 189, 261, 261, 261, 261, 261, 261, - 0, 0, 0, 211, 0, 211, 0, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 0, 0, 263, 263, - 0, 263, 263, 263, 263, 263, 263, 256, 256, 0, - 0, 256, 256, 256, 256, 256, 0, 256, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 256, - 256, 256, 256, 256, 254, 254, 0, 0, 254, 254, - 254, 254, 254, 0, 254, 0, 0, 204, 0, 0, - 0, 0, 0, 0, 0, 254, 254, 254, 254, 254, - 254, 0, 0, 256, 256, 0, 204, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 257, 0, 0, 257, - 257, 257, 257, 257, 188, 257, 0, 0, 0, 0, - 254, 254, 0, 0, 256, 256, 257, 257, 257, 257, - 257, 257, 0, 192, 258, 258, 0, 0, 258, 258, - 258, 258, 258, 0, 258, 0, 0, 0, 0, 0, - 0, 254, 254, 0, 0, 258, 258, 258, 258, 258, - 258, 257, 257, 0, 0, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 0, 17, 204, 204, 0, 204, - 204, 204, 204, 204, 204, 0, 0, 0, 0, 188, - 258, 258, 257, 257, 0, 0, 0, 0, 0, 0, - 0, 211, 182, 180, 190, 191, 0, 0, 192, 0, - 0, 0, 0, 177, 178, 0, 0, 0, 0, 0, - 211, 258, 258, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 247, 0, 0, 247, 247, 247, 247, 247, - 0, 247, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 247, 247, 247, 247, 247, 247, 187, 176, - 0, 0, 227, 185, 183, 0, 184, 0, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, - 191, 179, 163, 181, 173, 0, 0, 247, 247, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 0, 0, - 211, 211, 0, 211, 211, 211, 211, 211, 211, 0, - 0, 0, 256, 0, 0, 175, 0, 0, 247, 247, + 261, 262, 263, 264, 265, 266, 267, 349, 269, 339, + 192, 273, 59, 562, 99, 99, 228, 246, 464, 98, + 98, 340, 280, 281, 302, 229, 357, 50, 225, 341, + 89, 225, 216, 44, 285, 44, 17, 78, 57, 188, + 316, 57, 51, 117, 222, 225, 225, 189, 17, 190, + 191, 274, 285, 157, 72, 157, 17, 9, 192, 54, + 157, 280, 281, 157, 216, 157, 73, 155, 137, 397, + 310, 289, 311, 28, 312, 313, 499, 500, 314, 315, + 225, 190, 191, 10, 226, 154, 227, 226, 188, 227, + 57, 246, 422, 222, 89, 79, 31, 289, 146, 32, + 146, 226, 226, 227, 227, 146, 95, 192, 146, 289, + 146, 157, 225, 290, 117, 275, 117, 61, 155, 448, + 85, 188, 353, 84, 28, 222, 377, 337, 358, 190, + 191, 75, 446, 28, 54, 445, 226, 117, 227, 290, + 192, 165, 187, 54, 165, 157, 157, 185, 183, 137, + 184, 284, 186, 290, 290, 290, 146, 474, 514, 165, + 412, 533, 534, 458, 393, 179, 457, 181, 226, 348, + 227, 129, 81, 82, 129, 117, 182, 180, 190, 191, + 117, 246, 54, 130, 408, 83, 130, 177, 178, 506, + 146, 146, 360, 165, 133, 192, 192, 133, 99, 223, + 223, 61, 135, 97, 224, 224, 136, 137, 430, 182, + 180, 190, 191, 37, 38, 39, 54, 141, 142, 54, + 177, 178, 54, 156, 229, 165, 144, 229, 117, 449, + 400, 189, 159, 188, 160, 402, 454, 455, 544, 198, + 199, 229, 229, 200, 105, 54, 115, 289, 289, 289, + 203, 114, 192, 214, 103, 554, 104, 105, 286, 115, + 295, 287, 292, 476, 114, 303, 297, 103, 298, 104, + 304, 309, 412, 319, 567, 487, 229, 412, 289, 154, + 157, 157, 157, 157, 157, 157, 130, 63, 64, 65, + 66, 67, 336, 228, 343, 345, 228, 54, 117, 351, + 356, 508, 61, 510, 289, 359, 157, 374, 229, 375, + 228, 228, 378, 380, 388, 61, 54, 389, 289, 289, + 289, 391, 412, 190, 191, 146, 146, 146, 146, 146, + 146, 394, 235, 157, 411, 235, 401, 106, 235, 412, + 395, 396, 399, 405, 409, 228, 410, 117, 414, 412, + 106, 146, 235, 235, 417, 235, 415, 235, 416, 418, + 157, 157, 157, 157, 419, 428, 157, 559, 431, 438, + 62, 63, 64, 65, 66, 67, 440, 228, 146, 432, + 157, 157, 157, 157, 441, 157, 157, 235, 235, 442, + 157, 157, 157, 157, 157, 444, 451, 452, 456, 459, + 460, 225, 225, 468, 461, 146, 146, 146, 146, 475, + 68, 146, 478, 479, 482, 483, 481, 188, 235, 235, + 484, 489, 157, 157, 493, 146, 146, 146, 146, 490, + 146, 146, 496, 509, 512, 146, 192, 146, 146, 146, + 13, 187, 176, 520, 518, 521, 185, 183, 527, 184, + 157, 186, 166, 528, 531, 166, 538, 226, 226, 227, + 227, 543, 230, 542, 179, 230, 181, 146, 146, 166, + 166, 145, 63, 64, 65, 66, 67, 545, 550, 230, + 230, 552, 557, 560, 145, 63, 64, 65, 66, 67, + 563, 568, 570, 385, 11, 146, 30, 10, 383, 381, + 572, 382, 14, 384, 166, 182, 180, 190, 191, 205, + 10, 28, 161, 165, 230, 41, 177, 178, 14, 15, + 16, 17, 18, 19, 110, 20, 231, 199, 40, 231, + 189, 276, 161, 277, 200, 278, 166, 110, 165, 98, + 161, 21, 57, 231, 231, 51, 230, 165, 81, 197, + 82, 113, 320, 321, 322, 161, 78, 109, 134, 80, + 79, 136, 137, 27, 113, 320, 321, 322, 101, 23, + 109, 323, 324, 325, 326, 100, 327, 328, 231, 77, + 346, 329, 386, 330, 323, 324, 325, 326, 494, 327, + 328, 472, 53, 497, 329, 52, 330, 229, 229, 17, + 17, 134, 17, 17, 17, 17, 17, 17, 271, 17, + 231, 477, 488, 107, 108, 525, 551, 526, 221, 222, + 17, 17, 17, 17, 17, 17, 107, 108, 355, 14, + 15, 16, 207, 18, 19, 282, 20, 350, 204, 279, + 279, 331, 279, 279, 279, 279, 279, 279, 278, 279, + 40, 0, 21, 17, 331, 17, 17, 0, 0, 0, + 279, 279, 0, 279, 279, 279, 228, 228, 0, 0, + 0, 0, 232, 0, 0, 232, 0, 0, 0, 0, + 0, 0, 0, 208, 0, 17, 17, 17, 17, 232, + 232, 0, 0, 279, 0, 279, 279, 0, 235, 235, + 235, 235, 235, 0, 0, 235, 235, 0, 235, 235, + 235, 235, 235, 235, 0, 0, 188, 0, 0, 0, + 0, 0, 0, 0, 232, 279, 279, 279, 279, 0, + 0, 0, 0, 0, 0, 192, 205, 205, 0, 0, + 205, 205, 205, 205, 205, 0, 205, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 232, 205, 205, 205, + 205, 205, 205, 268, 268, 0, 0, 268, 268, 268, + 268, 268, 268, 268, 0, 0, 0, 241, 0, 0, + 241, 0, 0, 0, 268, 268, 268, 268, 268, 268, + 205, 0, 205, 205, 241, 241, 0, 0, 0, 0, + 0, 0, 0, 0, 182, 180, 190, 191, 0, 0, + 0, 0, 0, 0, 0, 177, 178, 268, 0, 268, + 268, 0, 17, 205, 205, 205, 0, 242, 0, 241, + 242, 0, 0, 0, 0, 230, 230, 0, 0, 0, + 0, 0, 0, 2, 242, 242, 0, 0, 0, 0, + 268, 268, 268, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 279, 243, 0, 0, 243, 0, 243, 243, + 243, 0, 17, 17, 17, 0, 0, 0, 0, 242, + 0, 0, 17, 243, 243, 243, 243, 243, 243, 0, + 0, 0, 17, 17, 17, 0, 0, 0, 0, 231, + 231, 0, 17, 250, 0, 0, 250, 0, 0, 250, + 0, 242, 279, 279, 279, 0, 0, 0, 243, 243, + 0, 0, 279, 250, 250, 0, 250, 0, 250, 0, + 0, 0, 279, 279, 279, 0, 0, 0, 0, 0, + 0, 0, 279, 191, 0, 0, 191, 0, 0, 243, + 243, 0, 0, 0, 0, 0, 0, 0, 250, 250, + 191, 191, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 0, 17, 17, 17, 0, 17, 17, 17, 17, + 17, 17, 0, 0, 0, 0, 297, 0, 0, 250, + 250, 0, 0, 0, 0, 191, 0, 0, 0, 0, + 0, 0, 279, 279, 279, 279, 279, 279, 279, 279, + 279, 205, 0, 279, 279, 0, 279, 279, 279, 279, + 279, 279, 0, 0, 0, 0, 0, 191, 0, 0, + 205, 0, 2, 2, 2, 2, 2, 2, 268, 2, + 0, 251, 0, 0, 251, 232, 232, 0, 0, 0, + 0, 0, 2, 2, 2, 0, 2, 268, 251, 251, + 0, 251, 0, 251, 0, 172, 172, 0, 0, 172, + 172, 172, 172, 172, 172, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 172, 172, 172, 172, + 172, 172, 0, 251, 251, 0, 0, 0, 0, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 0, 17, + 205, 205, 0, 205, 205, 205, 205, 205, 205, 172, + 0, 172, 172, 0, 251, 251, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 5, 0, 268, 268, 0, + 268, 268, 268, 268, 268, 268, 0, 0, 0, 0, + 241, 241, 172, 172, 172, 297, 0, 0, 0, 13, + 0, 0, 32, 32, 0, 0, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 297, 297, 297, 297, 297, + 297, 297, 297, 32, 32, 32, 32, 32, 32, 87, + 87, 0, 0, 87, 87, 87, 87, 87, 297, 87, + 242, 242, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 87, 87, 87, 87, 0, 32, 0, 32, 32, + 0, 0, 0, 0, 0, 243, 243, 0, 0, 243, + 243, 243, 243, 243, 0, 0, 243, 243, 0, 243, + 243, 243, 243, 243, 243, 87, 87, 0, 0, 32, + 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, + 250, 250, 250, 250, 0, 0, 87, 87, 87, 250, + 250, 250, 250, 250, 250, 6, 262, 262, 0, 0, + 262, 262, 262, 262, 262, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 262, 262, + 262, 262, 262, 264, 264, 0, 191, 264, 264, 264, + 264, 264, 0, 264, 5, 5, 5, 5, 5, 5, + 0, 5, 0, 0, 264, 264, 264, 264, 264, 264, + 172, 0, 262, 262, 5, 5, 5, 5, 14, 15, + 16, 17, 18, 19, 0, 20, 0, 0, 0, 172, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 264, + 264, 21, 0, 262, 262, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, - 0, 0, 0, 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 176, 0, 0, - 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, - 257, 0, 0, 0, 0, 0, 0, 0, 375, 179, - 163, 181, 173, 0, 0, 0, 0, 0, 0, 0, - 256, 256, 0, 0, 256, 256, 256, 256, 256, 258, - 0, 256, 256, 0, 256, 256, 256, 256, 256, 256, - 0, 0, 0, 175, 0, 0, 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, 174, 0, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 397, 0, 257, 257, - 0, 0, 257, 257, 257, 257, 257, 0, 0, 257, - 257, 0, 257, 257, 257, 257, 257, 257, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 258, 258, 0, - 0, 258, 258, 258, 258, 258, 247, 0, 258, 258, - 0, 258, 258, 258, 258, 258, 258, 0, 442, 0, - 0, 0, 0, 0, 0, 449, 0, 0, 0, 0, - 187, 176, 0, 188, 435, 185, 183, 0, 184, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 179, 163, 181, 173, 187, 176, 0, - 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, - 179, 163, 181, 173, 497, 0, 0, 175, 0, 0, - 0, 0, 504, 0, 247, 247, 0, 0, 247, 247, - 247, 247, 247, 512, 0, 247, 247, 0, 247, 247, - 247, 247, 247, 247, 175, 0, 0, 174, 0, 189, - 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, - 538, 0, 177, 178, 0, 161, 162, 168, 171, 170, - 172, 188, 0, 0, 174, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 555, 0, 0, - 192, 0, 0, 0, 0, 187, 176, 0, 0, 479, - 185, 183, 0, 184, 565, 186, 0, 0, 0, 568, - 0, 0, 0, 0, 570, 0, 0, 0, 179, 163, - 181, 173, 187, 176, 0, 0, 484, 185, 183, 0, - 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, - 0, 0, 175, 0, 0, 0, 0, 0, 0, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, - 177, 178, 0, 161, 162, 168, 171, 170, 172, 175, + 264, 264, 264, 0, 251, 251, 251, 251, 251, 0, + 0, 0, 0, 0, 251, 251, 251, 251, 251, 251, + 0, 0, 0, 0, 0, 0, 13, 0, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 32, 0, 172, + 172, 0, 172, 172, 172, 172, 172, 172, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 209, 205, 205, 0, 87, 0, 205, 205, 205, 205, + 0, 205, 0, 0, 6, 6, 6, 6, 6, 6, + 0, 6, 87, 87, 205, 205, 205, 205, 0, 0, + 0, 0, 87, 0, 6, 6, 6, 6, 187, 0, + 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, + 0, 0, 0, 0, 0, 205, 0, 205, 205, 0, + 0, 179, 0, 181, 0, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 0, 0, 32, 32, 0, 32, + 32, 32, 32, 32, 32, 0, 0, 0, 205, 0, + 205, 0, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 262, 0, 87, 87, 0, 87, 87, 87, 87, + 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 0, 0, 0, 212, 212, 189, 264, 0, + 212, 212, 212, 212, 212, 212, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 264, 212, 212, + 212, 212, 0, 0, 0, 14, 15, 16, 207, 18, + 19, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 212, + 0, 212, 212, 0, 0, 0, 0, 0, 0, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 0, 0, + 262, 262, 0, 262, 262, 262, 262, 262, 262, 208, + 0, 0, 212, 0, 212, 0, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 0, 0, 264, 264, 0, + 264, 264, 264, 264, 264, 264, 256, 256, 0, 0, + 256, 256, 256, 256, 256, 0, 256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 256, 256, 256, + 256, 256, 256, 257, 257, 0, 0, 257, 257, 257, + 257, 257, 0, 257, 0, 0, 205, 0, 0, 0, + 0, 0, 0, 0, 257, 257, 257, 257, 257, 257, + 0, 0, 256, 256, 0, 205, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 188, 255, 0, 0, 0, 0, 257, + 257, 0, 0, 256, 256, 255, 255, 255, 255, 255, + 255, 0, 192, 258, 258, 0, 0, 258, 258, 258, + 258, 258, 0, 258, 0, 0, 0, 0, 0, 0, + 257, 257, 0, 0, 258, 258, 258, 258, 258, 258, + 255, 255, 0, 0, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 0, 17, 205, 205, 0, 205, 205, + 205, 205, 205, 205, 0, 0, 0, 0, 0, 258, + 258, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 212, 182, 180, 190, 191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, + 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, + 259, 259, 0, 0, 259, 259, 259, 259, 259, 0, + 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 259, 259, 259, 259, 259, 259, 248, 248, 0, + 0, 248, 248, 248, 248, 248, 0, 248, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, + 248, 248, 248, 248, 0, 0, 259, 259, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 0, 0, 212, + 212, 0, 212, 212, 212, 212, 212, 212, 0, 0, + 0, 256, 0, 248, 248, 0, 0, 259, 259, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, + 0, 0, 0, 0, 248, 248, 0, 0, 0, 0, + 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 187, 176, 0, 0, 227, + 185, 183, 0, 184, 0, 186, 0, 0, 0, 255, + 0, 0, 0, 0, 0, 0, 0, 435, 179, 163, + 181, 173, 0, 0, 0, 0, 0, 0, 0, 256, + 256, 0, 0, 256, 256, 256, 256, 256, 258, 0, + 256, 256, 0, 256, 256, 256, 256, 256, 256, 0, + 0, 0, 175, 0, 0, 0, 257, 257, 0, 0, + 257, 257, 257, 257, 257, 0, 0, 257, 257, 0, + 257, 257, 257, 257, 257, 257, 0, 0, 0, 0, 0, 0, 174, 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, 174, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 187, - 176, 0, 0, 485, 185, 183, 0, 184, 0, 186, - 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, - 0, 0, 179, 163, 181, 173, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 0, 0, 187, - 176, 0, 188, 528, 185, 183, 0, 184, 0, 186, - 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, - 0, 192, 179, 163, 181, 173, 187, 176, 0, 0, - 529, 185, 183, 0, 184, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 0, 189, 179, - 163, 181, 173, 0, 0, 0, 175, 0, 0, 0, - 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, - 167, 169, 0, 0, 177, 178, 0, 161, 162, 168, - 171, 170, 172, 175, 0, 0, 174, 0, 189, 0, - 182, 180, 190, 191, 164, 165, 166, 167, 169, 0, - 0, 177, 178, 0, 161, 162, 168, 171, 170, 172, + 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 258, 258, 0, 0, + 258, 258, 258, 258, 258, 259, 0, 258, 258, 0, + 258, 258, 258, 258, 258, 258, 14, 15, 16, 207, + 18, 19, 0, 20, 0, 0, 0, 0, 187, 176, + 0, 0, 248, 185, 183, 0, 184, 0, 186, 21, + 0, 0, 14, 15, 16, 207, 18, 19, 0, 20, + 376, 179, 163, 181, 173, 0, 187, 176, 0, 0, + 436, 185, 183, 0, 184, 21, 186, 0, 0, 0, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 163, 181, 173, 0, 0, 175, 0, 0, 0, 0, + 0, 0, 0, 259, 259, 0, 208, 259, 259, 259, + 259, 259, 0, 0, 259, 259, 0, 259, 259, 259, + 259, 259, 259, 175, 0, 174, 0, 189, 0, 0, + 248, 248, 0, 0, 248, 248, 248, 248, 248, 0, + 0, 248, 248, 0, 248, 248, 248, 248, 248, 248, 188, 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 0, 0, 0, 0, 187, 176, 0, 188, 0, 185, + 0, 0, 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 564, 192, 179, 163, 181, - 173, 0, 253, 253, 0, 0, 253, 253, 253, 253, - 253, 0, 253, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 253, 253, 253, 253, 253, 253, 0, + 0, 0, 0, 0, 0, 0, 447, 179, 163, 181, + 173, 187, 176, 0, 0, 480, 185, 183, 0, 184, + 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 179, 163, 181, 173, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 253, 253, - 0, 174, 0, 189, 0, 182, 180, 190, 191, 164, - 165, 166, 167, 169, 188, 0, 177, 178, 0, 161, - 162, 168, 171, 170, 172, 0, 0, 0, 0, 253, - 253, 0, 0, 192, 0, 244, 244, 0, 0, 244, - 244, 244, 244, 244, 0, 244, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 0, 244, 244, 244, 244, - 244, 244, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 192, 115, 0, 0, 0, 0, 114, - 0, 188, 103, 0, 104, 0, 0, 0, 0, 0, - 0, 244, 244, 0, 0, 0, 0, 0, 0, 255, - 192, 0, 182, 180, 190, 191, 164, 165, 166, 167, - 169, 0, 0, 177, 178, 0, 161, 162, 168, 171, - 170, 172, 244, 244, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 182, 180, 190, 191, 164, 165, 166, 167, - 169, 0, 0, 177, 178, 0, 161, 162, 168, 171, - 170, 172, 0, 0, 0, 106, 0, 0, 0, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, + 178, 0, 161, 162, 168, 171, 170, 172, 175, 0, + 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 187, 176, + 0, 0, 485, 185, 183, 0, 184, 0, 186, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 179, 163, 181, 173, 0, 443, 0, 0, 0, + 0, 0, 192, 450, 0, 0, 0, 0, 187, 176, + 0, 188, 486, 185, 183, 0, 184, 0, 186, 0, + 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, + 192, 179, 163, 181, 173, 187, 176, 0, 0, 529, + 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 0, 189, 179, 163, + 181, 173, 498, 0, 0, 175, 0, 0, 0, 0, + 505, 182, 180, 190, 191, 164, 165, 166, 167, 169, + 0, 513, 177, 178, 0, 161, 162, 168, 171, 170, + 172, 0, 175, 0, 0, 174, 0, 189, 0, 182, + 180, 190, 191, 164, 165, 166, 167, 169, 539, 0, 177, 178, 0, 161, 162, 168, 171, 170, 172, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, - 245, 0, 0, 245, 245, 245, 245, 245, 192, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 245, 245, 245, 245, 245, 245, 0, 0, 0, 0, + 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 556, 0, 0, 192, 0, + 0, 0, 0, 187, 176, 0, 188, 530, 185, 183, + 0, 184, 566, 186, 0, 0, 0, 569, 0, 0, + 0, 0, 571, 0, 0, 192, 179, 163, 181, 173, + 187, 176, 0, 0, 0, 185, 183, 0, 184, 0, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 565, 0, 179, 163, 181, 173, 0, 0, 0, + 175, 0, 0, 0, 0, 0, 0, 182, 180, 190, + 191, 164, 165, 166, 167, 169, 0, 0, 177, 178, + 0, 161, 162, 168, 171, 170, 172, 175, 0, 0, + 174, 0, 189, 0, 182, 180, 190, 191, 164, 165, + 166, 167, 169, 188, 0, 177, 178, 0, 161, 162, + 168, 171, 170, 172, 0, 0, 0, 174, 0, 189, + 0, 0, 192, 0, 254, 254, 0, 0, 254, 254, + 254, 254, 254, 0, 254, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 0, 254, 254, 254, 254, 254, + 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 254, 0, 0, 0, 0, 0, 0, 0, 192, + 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, + 0, 0, 177, 178, 0, 161, 162, 168, 171, 170, + 172, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 246, 246, 0, 0, 246, 246, 246, 246, 246, - 0, 246, 0, 0, 0, 245, 245, 0, 0, 0, - 0, 0, 246, 246, 246, 246, 246, 246, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, - 191, 164, 165, 166, 167, 169, 245, 245, 177, 178, - 0, 161, 162, 168, 171, 170, 172, 246, 246, 145, - 63, 64, 65, 66, 67, 253, 253, 0, 0, 253, - 253, 253, 253, 253, 0, 0, 253, 253, 0, 253, - 253, 253, 253, 253, 253, 10, 0, 0, 246, 246, - 0, 187, 176, 0, 0, 0, 185, 183, 0, 184, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 110, 0, 179, 163, 181, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 176, 0, 0, - 0, 185, 183, 0, 184, 0, 186, 0, 0, 113, - 0, 0, 0, 0, 0, 109, 0, 0, 175, 179, - 163, 181, 173, 0, 0, 0, 0, 0, 244, 244, - 0, 0, 244, 244, 244, 244, 244, 0, 0, 244, - 244, 0, 244, 244, 244, 244, 244, 244, 174, 0, - 189, 0, 0, 175, 0, 0, 0, 0, 0, 0, + 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, + 0, 0, 177, 178, 0, 161, 162, 168, 171, 170, + 172, 0, 0, 0, 0, 0, 0, 0, 182, 180, + 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, + 178, 0, 161, 162, 168, 171, 170, 172, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 245, + 0, 0, 245, 245, 245, 245, 245, 192, 245, 0, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 245, + 245, 245, 245, 245, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, + 246, 246, 0, 0, 246, 246, 246, 246, 246, 0, + 246, 0, 0, 0, 245, 245, 0, 0, 0, 0, + 0, 246, 246, 246, 246, 246, 246, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 180, 190, 191, + 164, 165, 166, 167, 169, 245, 245, 177, 178, 0, + 161, 162, 168, 171, 170, 172, 246, 246, 0, 0, + 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, + 167, 169, 0, 0, 177, 178, 0, 161, 162, 168, + 171, 170, 172, 0, 0, 0, 0, 246, 246, 0, + 247, 247, 0, 0, 247, 247, 247, 247, 247, 0, + 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 247, 247, 247, 247, 247, 247, 0, 0, 0, + 0, 0, 0, 0, 0, 187, 176, 0, 0, 0, + 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 247, 247, 179, 163, + 181, 173, 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, 247, 247, 0, + 187, 176, 175, 0, 0, 185, 183, 0, 184, 0, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 179, 163, 181, 173, 0, 0, 0, + 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, + 184, 0, 186, 0, 0, 0, 0, 175, 0, 0, + 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 256, 107, 108, 0, 187, 176, 0, 0, 0, 185, - 183, 0, 184, 174, 186, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 163, 181, - 173, 243, 0, 0, 243, 0, 243, 243, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 244, 189, + 0, 244, 0, 244, 244, 244, 0, 0, 0, 175, + 0, 0, 0, 0, 0, 0, 0, 0, 244, 244, + 244, 244, 244, 244, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 245, 245, 244, 244, 245, 245, 245, 245, 245, + 0, 0, 245, 245, 0, 245, 245, 245, 245, 245, + 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 244, 244, 0, 0, 0, 0, + 0, 0, 0, 246, 246, 0, 0, 246, 246, 246, + 246, 246, 0, 0, 246, 246, 0, 246, 246, 246, + 246, 246, 246, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 237, 0, 0, 237, 0, 0, 0, 0, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 237, 0, 237, 0, 237, 0, 0, 0, 0, 192, + 0, 0, 0, 0, 0, 0, 236, 0, 0, 236, + 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 237, 237, 236, 236, 0, 236, + 0, 236, 0, 247, 247, 188, 0, 247, 247, 247, + 247, 247, 0, 0, 247, 247, 0, 247, 247, 247, + 247, 247, 247, 0, 192, 237, 237, 0, 0, 0, + 0, 236, 236, 0, 0, 0, 0, 0, 182, 180, + 190, 191, 164, 165, 166, 167, 169, 188, 0, 177, + 178, 0, 161, 162, 168, 171, 170, 172, 238, 0, + 0, 238, 236, 236, 238, 0, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 238, 238, + 0, 238, 0, 238, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, + 167, 169, 0, 0, 177, 178, 0, 0, 162, 168, + 171, 170, 172, 238, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 243, 243, 243, 243, 243, 234, 0, 0, - 234, 175, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 234, 234, 0, - 234, 0, 234, 0, 0, 0, 243, 243, 0, 0, - 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, + 165, 166, 167, 169, 238, 238, 177, 178, 0, 0, + 0, 168, 171, 170, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 234, 234, 0, 0, 0, 243, 243, 0, - 0, 0, 245, 245, 0, 0, 245, 245, 245, 245, - 245, 0, 0, 245, 245, 0, 245, 245, 245, 245, - 245, 245, 0, 234, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 246, 246, 188, 0, 246, 246, - 246, 246, 246, 0, 0, 246, 246, 0, 246, 246, - 246, 246, 246, 246, 0, 192, 0, 0, 236, 0, - 0, 236, 0, 0, 236, 0, 0, 0, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 236, 236, - 0, 236, 0, 236, 0, 0, 0, 0, 0, 0, - 192, 0, 0, 0, 0, 235, 0, 0, 235, 0, - 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 236, 236, 235, 235, 0, 235, 0, - 235, 0, 0, 0, 182, 180, 190, 191, 164, 165, - 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, - 168, 171, 170, 172, 236, 236, 0, 0, 0, 188, - 235, 235, 0, 0, 0, 0, 0, 0, 0, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 192, 0, - 177, 178, 0, 0, 162, 168, 171, 170, 172, 0, - 0, 235, 235, 0, 0, 0, 0, 0, 0, 0, + 244, 244, 0, 0, 244, 244, 244, 244, 244, 0, + 0, 244, 244, 0, 244, 244, 244, 244, 244, 244, + 253, 0, 0, 253, 0, 0, 253, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 234, 0, 0, 234, + 253, 253, 234, 253, 0, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 234, 234, 0, 234, + 252, 234, 0, 252, 0, 0, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 253, 0, 0, 0, + 252, 252, 0, 252, 0, 252, 0, 0, 0, 0, + 0, 234, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 253, 253, 0, 0, + 0, 0, 0, 0, 0, 252, 252, 0, 0, 0, + 0, 0, 234, 234, 0, 237, 237, 237, 237, 237, + 0, 0, 237, 237, 0, 237, 237, 237, 237, 237, + 237, 0, 0, 0, 0, 0, 252, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 237, 0, 0, 237, 0, + 0, 0, 236, 236, 236, 236, 236, 0, 0, 236, + 236, 0, 236, 236, 236, 236, 236, 236, 233, 0, + 0, 233, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 239, 0, 0, 239, 233, 233, + 239, 233, 0, 233, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 239, 239, 0, 239, 240, 239, + 0, 240, 0, 0, 240, 0, 0, 0, 0, 0, + 0, 0, 0, 233, 233, 0, 0, 0, 240, 240, + 0, 240, 0, 240, 238, 238, 238, 238, 238, 239, + 239, 238, 238, 0, 238, 238, 238, 238, 238, 238, + 0, 0, 0, 0, 233, 233, 249, 0, 0, 249, + 0, 0, 0, 240, 240, 0, 0, 0, 0, 0, + 239, 239, 0, 249, 249, 0, 249, 0, 249, 190, + 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 240, 190, 190, 0, 190, + 0, 190, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 237, 0, 237, 0, 237, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, - 191, 164, 165, 166, 167, 169, 0, 0, 177, 178, - 0, 0, 0, 168, 171, 170, 172, 237, 237, 0, - 0, 0, 0, 243, 243, 0, 0, 243, 243, 243, - 243, 243, 0, 0, 243, 243, 0, 243, 243, 243, - 243, 243, 243, 0, 0, 0, 0, 0, 237, 237, - 0, 0, 0, 234, 234, 234, 234, 234, 0, 0, - 234, 234, 0, 234, 234, 234, 234, 234, 234, 252, - 0, 0, 252, 0, 0, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 233, 0, 0, 233, 252, - 252, 233, 252, 0, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 233, 233, 0, 233, 0, - 233, 0, 0, 0, 251, 0, 0, 251, 0, 0, - 251, 0, 0, 0, 252, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 251, 251, 0, 251, 187, 251, - 233, 233, 0, 185, 183, 0, 184, 0, 186, 0, - 0, 0, 0, 0, 232, 252, 252, 232, 0, 0, - 232, 179, 0, 181, 0, 0, 0, 0, 0, 251, - 251, 233, 233, 0, 232, 232, 0, 232, 0, 232, - 0, 0, 0, 0, 236, 236, 236, 236, 236, 0, - 0, 236, 236, 0, 236, 236, 236, 236, 236, 236, - 251, 251, 0, 0, 0, 0, 0, 0, 0, 232, - 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 235, 235, 235, 235, 235, 0, 189, 235, 235, - 0, 235, 235, 235, 235, 235, 235, 0, 0, 238, - 232, 232, 238, 0, 0, 238, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, - 238, 0, 238, 239, 238, 0, 239, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 248, 239, 239, 248, 239, 0, 239, 0, - 0, 0, 0, 0, 238, 238, 0, 0, 0, 248, - 248, 0, 248, 0, 248, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 239, 239, - 0, 0, 0, 0, 0, 238, 238, 0, 237, 237, - 237, 237, 237, 0, 248, 237, 237, 0, 237, 237, - 237, 237, 237, 237, 0, 0, 0, 0, 0, 239, - 239, 0, 0, 0, 0, 0, 189, 0, 0, 189, - 0, 0, 0, 0, 0, 248, 248, 0, 0, 0, - 0, 0, 0, 189, 189, 0, 189, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 176, 0, - 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, - 179, 0, 181, 188, 0, 0, 0, 0, 0, 0, + 0, 190, 0, 0, 0, 0, 0, 0, 0, 249, + 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 0, 0, 252, 252, 252, 252, 252, - 189, 0, 252, 252, 175, 252, 252, 252, 252, 252, - 252, 233, 233, 233, 233, 233, 0, 0, 233, 233, - 0, 233, 233, 233, 233, 233, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, - 251, 251, 251, 251, 251, 0, 0, 251, 251, 0, - 251, 251, 251, 251, 251, 251, 0, 0, 0, 0, - 0, 182, 180, 190, 191, 0, 0, 0, 0, 0, - 0, 0, 177, 178, 0, 0, 0, 0, 0, 0, - 232, 232, 232, 232, 232, 0, 0, 232, 232, 0, - 232, 232, 232, 232, 232, 232, 0, 0, 0, 0, - 0, 105, 0, 115, 0, 0, 0, 0, 114, 0, + 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 253, 253, 253, 253, + 253, 0, 0, 253, 253, 0, 253, 253, 253, 253, + 253, 253, 234, 234, 234, 234, 234, 0, 0, 234, + 234, 0, 234, 234, 234, 234, 234, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 252, 252, 252, 252, + 252, 0, 0, 252, 252, 0, 252, 252, 252, 252, + 252, 252, 105, 0, 115, 0, 0, 0, 0, 114, + 0, 0, 103, 0, 104, 0, 105, 0, 115, 0, + 0, 0, 0, 114, 0, 0, 103, 0, 104, 255, + 0, 0, 105, 0, 115, 0, 0, 0, 0, 114, + 0, 0, 103, 0, 104, 259, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 0, 115, 61, 0, 0, 0, 114, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 0, 0, 0, 0, 0, 0, 105, 0, 115, - 0, 0, 0, 0, 114, 0, 0, 103, 0, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 0, 102, 0, 0, 238, 238, 238, 238, 238, - 0, 0, 0, 0, 0, 238, 238, 238, 238, 238, - 238, 0, 0, 0, 0, 0, 0, 0, 0, 239, - 239, 239, 239, 239, 106, 61, 0, 0, 0, 239, - 239, 239, 239, 239, 239, 248, 248, 248, 248, 248, - 0, 0, 0, 0, 0, 248, 248, 248, 248, 248, - 248, 0, 188, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 0, 0, 0, 105, 0, 115, 0, 0, - 0, 0, 114, 0, 0, 103, 105, 104, 115, 0, - 0, 0, 0, 114, 0, 105, 103, 115, 104, 0, - 0, 0, 114, 251, 0, 103, 0, 104, 0, 189, - 189, 189, 189, 189, 253, 0, 0, 0, 0, 189, - 189, 189, 189, 189, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 182, 180, 190, 191, 61, 0, 0, 0, 0, 0, - 0, 177, 178, 61, 0, 0, 0, 0, 145, 63, - 64, 65, 66, 67, 0, 0, 0, 0, 106, 0, + 61, 0, 0, 0, 0, 106, 0, 0, 0, 251, + 0, 0, 0, 0, 233, 233, 233, 233, 233, 106, + 0, 233, 233, 0, 233, 233, 233, 233, 233, 233, + 239, 239, 239, 239, 239, 106, 0, 0, 0, 61, + 239, 239, 239, 239, 239, 239, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 240, 240, 240, 240, 0, + 0, 0, 0, 0, 240, 240, 240, 240, 240, 240, + 0, 0, 0, 105, 106, 115, 0, 0, 0, 0, + 114, 0, 0, 103, 0, 104, 0, 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, 0, 0, 0, 0, 0, + 0, 0, 190, 190, 190, 190, 190, 0, 0, 0, + 0, 61, 190, 190, 190, 190, 190, 190, 0, 145, + 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 63, 64, 65, 66, 67, 0, + 0, 0, 0, 352, 0, 10, 106, 0, 0, 111, + 112, 64, 65, 66, 67, 0, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 0, 105, 0, 115, 0, + 0, 0, 110, 114, 0, 10, 103, 0, 104, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 145, 63, + 64, 65, 66, 67, 253, 0, 0, 0, 0, 113, + 0, 0, 110, 0, 0, 109, 0, 0, 105, 0, + 115, 0, 0, 113, 10, 114, 0, 0, 103, 109, + 104, 0, 0, 0, 61, 0, 0, 0, 0, 113, + 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 0, 0, 0, 10, 351, 0, 0, 106, 0, - 0, 0, 0, 0, 111, 112, 64, 65, 66, 67, - 105, 0, 115, 0, 0, 0, 0, 114, 0, 0, - 103, 110, 104, 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, 113, 0, - 0, 0, 0, 0, 109, 0, 0, 110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 256, 107, 108, 0, 0, 0, 61, 0, 113, 0, + 0, 0, 0, 260, 109, 107, 108, 0, 0, 0, + 145, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 106, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 108, 0, 110, 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, + 113, 0, 0, 0, 0, 0, 109, 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, 113, 0, 0, 0, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 0, 0, 0, 260, 0, - 107, 108, 145, 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, 145, 63, 64, 65, 66, 67, 0, - 0, 0, 145, 63, 64, 65, 66, 67, 10, 0, - 0, 0, 0, 0, 0, 0, 107, 108, 0, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 113, 0, 0, 0, 0, 0, 109, 0, - 0, 0, 0, 113, 0, 0, 0, 0, 0, 109, - 0, 0, 113, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 145, 63, 64, - 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 107, 108, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 107, 108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 63, 64, 65, 66, + 67, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 113, 0, 0, 0, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, + 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 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, 107, - 108, + 0, 0, 0, 0, 0, 0, 0, 107, 108, ); protected static $yyCheck = array(4, - 47, 48, 49, 95, 123, 141, 91, 58, 198, 126, - 125, 157, 40, 303, 40, 51, 91, 125, 46, 387, - 125, 91, 125, 28, 29, 44, 73, 40, 75, 34, - 44, 37, 38, 41, 124, 41, 42, 43, 44, 45, - 59, 47, 47, 48, 49, 81, 82, 260, 95, 126, - 142, 59, 58, 59, 60, 61, 62, 63, 41, 59, - 41, 44, 60, 44, 304, 59, 283, 72, 73, 286, - 75, 42, 44, 286, 220, 58, 59, 58, 59, 93, - 91, 227, 272, 46, 393, 93, 41, 93, 94, 44, - 95, 41, 460, 91, 44, 142, 41, 123, 41, 44, - 44, 44, 44, 58, 59, 152, 125, 63, 58, 59, - 93, 125, 93, 58, 59, 58, 59, 125, 124, 125, - 59, 93, 59, 123, 41, 44, 435, 44, 260, 123, - 135, 136, 91, 138, 91, 91, 46, 142, 93, 80, - 426, 188, 125, 93, 125, 260, 260, 152, 93, 93, - 93, 93, 260, 125, 159, 59, 41, 93, 294, 44, - 91, 307, 103, 104, 105, 106, 107, 108, 300, 110, - 125, 361, 286, 114, 93, 125, 93, 463, 286, 260, - 125, 125, 125, 188, 123, 260, 123, 192, 330, 125, - 260, 37, 311, 260, 261, 312, 42, 43, 340, 45, - 41, 47, 37, 44, 350, 210, 342, 42, 340, 260, - 261, 286, 47, 154, 331, 156, 286, 58, 59, 300, + 47, 48, 49, 95, 37, 51, 125, 91, 141, 42, + 43, 125, 45, 126, 47, 91, 60, 91, 123, 91, + 91, 125, 91, 28, 29, 125, 73, 303, 75, 34, + 80, 40, 198, 72, 42, 81, 82, 124, 40, 394, + 304, 44, 47, 48, 49, 126, 41, 91, 95, 44, + 142, 388, 44, 37, 38, 44, 59, 44, 42, 43, + 58, 45, 41, 47, 59, 44, 41, 72, 73, 44, + 75, 41, 260, 46, 44, 62, 60, 44, 62, 58, + 59, 436, 46, 58, 59, 59, 37, 38, 58, 59, + 95, 42, 43, 126, 45, 142, 47, 136, 93, 138, + 63, 93, 59, 480, 93, 152, 272, 427, 485, 60, + 94, 62, 300, 152, 93, 157, 41, 59, 93, 44, + 159, 123, 125, 93, 461, 44, 93, 41, 91, 59, + 135, 136, 260, 138, 59, 519, 125, 142, 330, 80, + 124, 188, 126, 94, 464, 59, 125, 152, 340, 123, + 125, 260, 340, 530, 159, 125, 260, 541, 125, 46, + 260, 294, 103, 104, 105, 106, 107, 108, 93, 110, + 547, 210, 300, 114, 93, 126, 260, 286, 220, 93, + 557, 123, 286, 188, 91, 227, 260, 192, 260, 260, + 40, 260, 44, 123, 44, 496, 362, 64, 37, 312, + 125, 260, 286, 42, 91, 210, 311, 59, 47, 59, + 343, 125, 286, 154, 286, 156, 260, 286, 331, 520, 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, 260, 189, 260, - 340, 33, 93, 35, 331, 340, 41, 198, 40, 44, - 63, 43, 260, 45, 41, 340, 46, 44, 373, 374, - 373, 374, 495, 58, 59, 286, 41, 518, 64, 44, - 126, 58, 59, 224, 125, 402, 403, 300, 91, 260, - 260, 126, 438, 58, 59, 33, 519, 35, 303, 540, - 46, 260, 40, 260, 260, 43, 312, 45, 93, 91, - 251, 91, 253, 40, 255, 256, 93, 60, 259, 260, - 41, 332, 320, 44, 310, 402, 403, 286, 93, 260, - 286, 272, 41, 41, 332, 44, 44, 58, 59, 40, - 125, 377, 340, 125, 126, 46, 44, 44, 125, 58, - 59, 364, 40, 91, 295, 286, 297, 58, 46, 44, - 125, 302, 310, 320, 62, 62, 91, 308, 93, 300, - 301, 302, 93, 378, 59, 332, 317, 41, 41, 46, - 44, 44, 387, 340, 93, 373, 374, 125, 126, 41, - 41, 59, 44, 44, 400, 401, 41, 489, 404, 405, - 406, 407, 408, 344, 125, 411, 412, 59, 414, 415, - 416, 417, 418, 419, 355, 33, 125, 35, 61, 360, - 361, 426, 40, 364, 61, 43, 91, 45, 33, 311, - 35, 414, 415, 414, 415, 40, 344, 345, 43, 123, - 45, 93, 489, 37, 300, 301, 302, 388, 42, 43, - 310, 45, 58, 47, 41, 460, 91, 44, 463, 414, - 415, 466, 123, 44, 414, 415, 312, 408, 409, 414, - 415, 414, 415, 91, 123, 416, 417, 312, 260, 261, - 262, 263, 264, 265, 489, 331, 91, 37, 38, 300, - 301, 302, 42, 43, 541, 45, 331, 47, 41, 58, - 91, 44, 443, 123, 286, 123, 44, 91, 126, 410, - 60, 93, 62, 560, 455, 58, 59, 41, 44, 93, - 44, 126, 260, 261, 262, 263, 264, 265, 260, 260, - 123, 313, 126, 125, 58, 59, 541, 478, 40, 257, - 481, 125, 483, 123, 94, 123, 224, 58, 286, 44, - 93, 40, 58, 260, 123, 560, 402, 403, 340, 341, - 342, 343, 41, 40, 346, 40, 93, 402, 403, 93, - 40, 125, 40, 414, 124, 313, 126, 61, 360, 361, - 362, 363, 125, 365, 366, 61, 527, 91, 370, 371, - 372, 373, 374, 123, 91, 260, 261, 262, 263, 264, - 265, 125, 340, 341, 342, 343, 547, 41, 346, 125, - 125, 125, 41, 479, 340, 40, 40, 295, 484, 297, - 402, 403, 360, 361, 362, 363, 40, 365, 366, 414, - 415, 59, 370, 59, 372, 373, 374, 414, 415, 317, - 40, 40, 260, 261, 262, 263, 264, 265, 430, 414, - 415, 91, 72, 340, 40, 260, 261, 262, 263, 264, - 265, 59, 260, 529, 402, 403, 125, 41, 286, 260, - 261, 262, 263, 264, 265, 41, 59, 355, 361, 61, - 546, 286, 360, 40, 340, 125, 61, 44, 91, 59, - 556, 41, 430, 414, 415, 313, 280, 281, 282, 283, - 284, 285, 59, 287, 44, 414, 415, 125, 313, 300, - 280, 281, 282, 283, 284, 285, 136, 287, 138, 303, - 93, 123, 340, 341, 342, 343, 59, 40, 346, 125, - 408, 364, 152, 303, 44, 340, 341, 342, 343, 159, - 46, 346, 360, 361, 362, 363, 123, 365, 366, 321, - 334, 41, 370, 41, 372, 360, 361, 362, 363, 123, - 365, 366, 312, 260, 340, 370, 123, 372, 125, 340, - 37, 38, 125, 40, 41, 42, 43, 44, 45, 125, - 47, 331, 59, 371, 402, 403, 125, 91, 40, 286, - 210, 58, 59, 60, 61, 62, 63, 402, 403, 123, - 478, 59, 125, 300, 301, 302, 125, 41, 58, 125, - 37, 38, 430, 40, 41, 42, 43, 44, 45, 91, - 47, 125, 41, 123, 91, 430, 93, 94, 125, 260, - 123, 58, 59, 59, 61, 62, 63, 41, 123, 93, - 280, 281, 282, 283, 284, 285, 125, 287, 257, 527, - 400, 401, 402, 403, 125, 333, 123, 124, 125, 126, - 58, 411, 412, 303, 91, 41, 93, 94, 91, 91, - 41, 414, 415, 44, 91, 93, 257, 280, 281, 282, - 283, 284, 285, 303, 287, 125, 125, 58, 59, 367, - 414, 415, 123, 59, 334, 125, 123, 124, 125, 126, - 303, 41, 59, 41, 44, 59, 41, 37, 38, 41, - 364, 41, 42, 43, 44, 45, 41, 47, 41, 59, - 41, 44, 93, 125, 125, 7, 78, 6, 58, 59, - 60, 61, 62, 63, 37, 38, 59, 57, 41, 42, - 43, 44, 45, 46, 47, 293, 77, 432, 466, 462, - 46, 45, 444, 93, 125, 58, 59, 60, 61, 62, - 63, 91, 84, 93, 94, 456, 501, 192, 535, 501, - 93, 152, 152, 298, 303, 138, 280, 281, 282, 283, - 284, 285, 197, 287, 200, 125, 25, -1, 91, -1, - 93, 94, -1, 260, 124, 125, 126, -1, -1, 303, - -1, 479, 125, -1, -1, -1, 484, -1, 280, 281, - 282, 283, 284, 285, 91, 287, -1, -1, -1, -1, - -1, 124, 125, 126, -1, -1, -1, -1, -1, -1, - 334, 303, -1, 260, 38, -1, -1, 41, -1, 43, - 44, 45, -1, 310, 311, 312, -1, -1, -1, -1, - -1, 529, -1, 320, 58, 59, 60, 61, 62, 63, - -1, -1, 334, 330, 331, 332, -1, -1, 546, -1, - -1, -1, -1, 340, 38, -1, -1, 41, 556, -1, - 44, -1, -1, 310, 311, 312, -1, -1, -1, 93, - 94, -1, -1, 320, 58, 59, -1, 61, -1, 63, - -1, -1, -1, 330, 331, 332, -1, -1, -1, -1, - -1, -1, -1, 340, -1, -1, -1, -1, -1, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, 93, - 94, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, 91, -1, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, 91, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, 280, 281, 282, 283, 284, 285, 312, - 287, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 302, -1, 304, 331, 58, - 59, -1, 61, -1, 63, -1, 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, 93, 94, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 91, -1, 93, 94, -1, 124, 125, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 91, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 260, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, 280, 281, 282, 283, - 284, 285, 286, 287, 58, 59, 60, 61, 62, 63, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 303, - 47, -1, 280, 281, 282, 283, 284, 285, -1, 287, - -1, 58, 59, 60, 61, 62, -1, 91, -1, 93, - 94, -1, 300, 301, 302, 303, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 93, 94, -1, -1, + 181, 182, 183, 184, 185, 186, 187, 297, 189, 320, + 331, 260, 260, 340, 373, 374, 340, 198, 332, 373, + 374, 332, 260, 261, 340, 304, 308, 46, 41, 340, + 59, 44, 93, 123, 44, 125, 320, 46, 41, 312, + 63, 44, 40, 224, 44, 58, 59, 126, 332, 402, + 403, 300, 62, 33, 60, 35, 340, 260, 331, 304, + 40, 260, 261, 43, 125, 45, 310, 40, 91, 351, + 251, 260, 253, 46, 255, 256, 344, 345, 259, 260, + 93, 402, 403, 286, 41, 58, 41, 44, 312, 44, + 93, 272, 378, 93, 123, 59, 283, 286, 33, 286, + 35, 58, 59, 58, 59, 40, 311, 331, 43, 91, + 45, 91, 125, 260, 295, 364, 297, 91, 40, 409, + 41, 312, 303, 44, 46, 125, 334, 40, 309, 402, + 403, 310, 41, 46, 379, 44, 93, 318, 93, 286, + 331, 41, 37, 388, 44, 125, 126, 42, 43, 91, + 45, 93, 47, 300, 301, 302, 91, 439, 490, 59, + 368, 373, 374, 41, 345, 60, 44, 62, 125, 295, + 125, 41, 61, 61, 44, 356, 400, 401, 402, 403, + 361, 362, 427, 41, 365, 41, 44, 411, 412, 479, + 125, 126, 318, 93, 41, 414, 415, 44, 123, 414, + 415, 91, 310, 490, 414, 415, 58, 91, 389, 400, + 401, 402, 403, 300, 301, 302, 461, 123, 44, 464, + 411, 412, 467, 58, 41, 125, 123, 44, 409, 410, + 356, 126, 123, 312, 410, 361, 417, 418, 528, 44, + 93, 58, 59, 44, 33, 490, 35, 300, 301, 302, + 93, 40, 331, 260, 43, 542, 45, 33, 123, 35, + 40, 260, 125, 444, 40, 257, 123, 43, 123, 45, + 44, 58, 480, 40, 561, 456, 93, 485, 260, 58, + 260, 261, 262, 263, 264, 265, 260, 261, 262, 263, + 264, 265, 260, 41, 123, 40, 44, 542, 479, 41, + 40, 482, 91, 484, 286, 93, 286, 40, 125, 125, + 58, 59, 61, 40, 91, 91, 561, 61, 300, 301, + 302, 123, 530, 402, 403, 260, 261, 262, 263, 264, + 265, 41, 38, 313, 123, 41, 41, 126, 44, 547, + 125, 125, 125, 340, 40, 93, 40, 528, 40, 557, + 126, 286, 58, 59, 40, 61, 59, 63, 59, 40, + 340, 341, 342, 343, 340, 40, 346, 548, 59, 125, + 260, 261, 262, 263, 264, 265, 41, 125, 313, 260, + 360, 361, 362, 363, 41, 365, 366, 93, 94, 59, + 370, 371, 372, 373, 374, 61, 361, 340, 61, 59, + 41, 414, 415, 93, 44, 340, 341, 342, 343, 125, + 300, 346, 123, 59, 40, 44, 125, 312, 124, 125, + 364, 123, 402, 403, 46, 360, 361, 362, 363, 321, + 365, 366, 41, 340, 123, 370, 331, 372, 373, 374, + 91, 37, 38, 41, 340, 125, 42, 43, 125, 45, + 430, 47, 41, 59, 371, 44, 125, 414, 415, 414, + 415, 123, 41, 40, 60, 44, 62, 402, 403, 58, + 59, 260, 261, 262, 263, 264, 265, 59, 125, 58, + 59, 125, 41, 58, 260, 261, 262, 263, 264, 265, + 125, 41, 123, 37, 260, 430, 123, 286, 42, 43, + 125, 45, 59, 47, 93, 400, 401, 402, 403, 41, + 286, 123, 93, 58, 93, 125, 411, 412, 280, 281, + 282, 283, 284, 285, 313, 287, 41, 257, 125, 44, + 126, 91, 41, 91, 257, 91, 125, 313, 93, 125, + 125, 303, 59, 58, 59, 123, 125, 59, 41, 125, + 41, 340, 341, 342, 343, 59, 41, 346, 364, 41, + 41, 125, 125, 7, 340, 341, 342, 343, 78, 6, + 346, 360, 361, 362, 363, 77, 365, 366, 93, 57, + 293, 370, 126, 372, 360, 361, 362, 363, 463, 365, + 366, 433, 46, 467, 370, 45, 372, 414, 415, 37, + 38, 84, 40, 41, 42, 43, 44, 45, 192, 47, + 125, 445, 457, 402, 403, 502, 536, 502, 152, 152, + 58, 59, 60, 61, 62, 63, 402, 403, 304, 280, + 281, 282, 283, 284, 285, 200, 287, 298, 138, 37, + 38, 430, 40, 41, 42, 43, 44, 45, 197, 47, + 25, -1, 303, 91, 430, 93, 94, -1, -1, -1, + 58, 59, -1, 61, 62, 63, 414, 415, -1, -1, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, 334, -1, 123, 124, 125, 126, 58, + 59, -1, -1, 91, -1, 93, 94, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, -1, 312, -1, -1, -1, + -1, -1, -1, -1, 93, 123, 124, 125, 126, -1, + -1, -1, -1, -1, -1, 331, 37, 38, -1, -1, + 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, 58, 59, 60, + 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, 41, -1, -1, + 44, -1, -1, -1, 58, 59, 60, 61, 62, 63, + 91, -1, 93, 94, 58, 59, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, -1, -1, + -1, -1, -1, -1, -1, 411, 412, 91, -1, 93, + 94, -1, 260, 124, 125, 126, -1, 41, -1, 93, + 44, -1, -1, -1, -1, 414, 415, -1, -1, -1, + -1, -1, -1, 91, 58, 59, -1, -1, -1, -1, 124, 125, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 124, 125, 126, - 414, 415, 416, 417, 418, 419, -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, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, 280, 281, 282, 283, 284, - 285, -1, 287, -1, -1, 58, 59, 60, 61, 62, - 63, 312, -1, 93, 94, 300, 301, 302, 303, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, 124, 125, 126, -1, -1, -1, + -1, 125, 260, 38, -1, -1, 41, -1, 43, 44, + 45, -1, 310, 311, 312, -1, -1, -1, -1, 93, + -1, -1, 320, 58, 59, 60, 61, 62, 63, -1, + -1, -1, 330, 331, 332, -1, -1, -1, -1, 414, + 415, -1, 340, 38, -1, -1, 41, -1, -1, 44, + -1, 125, 310, 311, 312, -1, -1, -1, 93, 94, + -1, -1, 320, 58, 59, -1, 61, -1, 63, -1, + -1, -1, 330, 331, 332, -1, -1, -1, -1, -1, + -1, -1, 340, 41, -1, -1, 44, -1, -1, 124, + 125, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 58, 59, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, 91, -1, -1, 124, + 125, -1, -1, -1, -1, 93, -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, -1, -1, -1, -1, 125, -1, -1, + 331, -1, 280, 281, 282, 283, 284, 285, 312, 287, + -1, 41, -1, -1, 44, 414, 415, -1, -1, -1, + -1, -1, 300, 301, 302, -1, 304, 331, 58, 59, + -1, 61, -1, 63, -1, 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, 93, 94, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, 410, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 91, + -1, 93, 94, -1, 124, 125, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 91, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, + 414, 415, 124, 125, 126, 260, -1, -1, -1, 91, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 46, 47, -1, -1, 280, 281, 282, 283, 284, + 285, 286, 287, 58, 59, 60, 61, 62, 63, 37, + 38, -1, -1, 41, 42, 43, 44, 45, 303, 47, + 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 60, 61, 62, -1, 91, -1, 93, 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, 93, 94, -1, -1, 124, + 125, 126, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 124, 125, 126, 414, + 415, 416, 417, 418, 419, 91, 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, 37, 38, -1, 414, 41, 42, 43, + 44, 45, -1, 47, 280, 281, 282, 283, 284, 285, + -1, 287, -1, -1, 58, 59, 60, 61, 62, 63, + 312, -1, 93, 94, 300, 301, 302, 303, 280, 281, + 282, 283, 284, 285, -1, 287, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 303, -1, 124, 125, 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, 124, 125, 126, -1, 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, 402, 403, 404, 405, 406, 407, 408, 312, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, - -1, -1, 37, 38, -1, 312, -1, 42, 43, 44, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 330, 331, 60, 61, 62, 63, -1, - -1, -1, -1, 340, -1, -1, -1, -1, -1, 37, - 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, - -1, -1, -1, -1, -1, -1, 91, -1, 93, 94, - -1, -1, 60, -1, 62, -1, 400, 401, 402, 403, + 124, 125, 126, -1, 404, 405, 406, 407, 408, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + -1, -1, -1, -1, -1, -1, 91, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, + -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, + 125, 37, 38, -1, 312, -1, 42, 43, 44, 45, + -1, 47, -1, -1, 280, 281, 282, 283, 284, 285, + -1, 287, 330, 331, 60, 61, 62, 63, -1, -1, + -1, -1, 340, -1, 300, 301, 302, 303, 37, -1, + -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, + -1, -1, -1, -1, -1, 91, -1, 93, 94, -1, + -1, 60, -1, 62, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, -1, -1, 124, -1, + 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 312, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, + 331, -1, -1, -1, -1, 37, 38, 126, 312, -1, + 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 331, 60, 61, + 62, 63, -1, -1, -1, 280, 281, 282, 283, 284, + 285, -1, 287, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 303, 91, + -1, 93, 94, -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, 334, + -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, -1, -1, 124, - -1, 126, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 37, -1, -1, -1, -1, 42, - 43, 331, 45, -1, 47, -1, 37, 38, 126, 312, - -1, 42, 43, 44, 45, 46, 47, 60, -1, 62, - -1, -1, -1, -1, -1, -1, -1, -1, 331, 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, -1, -1, -1, -1, - 91, -1, 93, 94, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 126, 414, 415, 416, 417, 418, 419, - -1, -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, 37, 38, -1, + 414, 415, 416, 417, 418, 419, 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, 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, 93, 94, -1, 331, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 312, 47, -1, -1, -1, -1, 93, + 94, -1, -1, 124, 125, 58, 59, 60, 61, 62, + 63, -1, 331, 37, 38, -1, -1, 41, 42, 43, + 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, + 124, 125, -1, -1, 58, 59, 60, 61, 62, 63, + 93, 94, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, -1, -1, -1, -1, 93, + 94, 124, 125, -1, -1, -1, -1, -1, -1, -1, + 312, 400, 401, 402, 403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, + 124, 125, -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, -1, -1, + -1, 58, 59, 60, 61, 62, 63, 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, 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, 93, 94, -1, 331, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, 312, 47, -1, -1, -1, -1, - 93, 94, -1, -1, 124, 125, 58, 59, 60, 61, - 62, 63, -1, 331, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, 58, 59, 60, 61, 62, - 63, 93, 94, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, -1, -1, -1, 312, - 93, 94, 124, 125, -1, -1, -1, -1, -1, -1, - -1, 312, 400, 401, 402, 403, -1, -1, 331, -1, - -1, -1, -1, 411, 412, -1, -1, -1, -1, -1, - 331, 124, 125, -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, -1, - -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, - -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 60, 61, 62, 63, -1, -1, 93, 94, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 60, 61, 62, 63, -1, -1, 93, 94, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, + -1, 312, -1, 93, 94, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, + -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, + -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, -1, 45, -1, 47, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, 125, 60, 61, + 62, 63, -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, - -1, -1, 312, -1, -1, 94, -1, -1, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, - -1, -1, -1, -1, -1, 124, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, - -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, 59, 60, - 61, 62, 63, -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, -1, -1, 94, -1, -1, -1, 400, 401, -1, + -1, -1, 94, -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, -1, + -1, -1, 124, -1, 126, -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, -1, -1, - -1, -1, -1, 124, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 351, -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, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, 312, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 403, -1, - -1, -1, -1, -1, -1, 410, -1, -1, -1, -1, - 37, 38, -1, 312, 41, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 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, 469, -1, -1, 94, -1, -1, - -1, -1, 477, -1, 400, 401, -1, -1, 404, 405, - 406, 407, 408, 488, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 94, -1, -1, 124, -1, 126, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 515, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 312, -1, -1, 124, -1, 126, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 542, -1, -1, - 331, -1, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, -1, 45, 559, 47, -1, -1, -1, 564, - -1, -1, -1, -1, 569, -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, -1, - -1, -1, 94, -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, 94, - -1, -1, 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, 124, - -1, 126, -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, -1, -1, -1, - -1, -1, 60, 61, 62, 63, -1, -1, -1, -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, -1, 94, -1, -1, -1, - -1, 331, 60, 61, 62, 63, 37, 38, -1, -1, - 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, -1, 126, 60, - 61, 62, 63, -1, -1, -1, 94, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + -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, 280, 281, 282, 283, + 284, 285, -1, 287, -1, -1, -1, -1, 37, 38, + -1, -1, 312, 42, 43, -1, 45, -1, 47, 303, + -1, -1, 280, 281, 282, 283, 284, 285, -1, 287, + 59, 60, 61, 62, 63, -1, 37, 38, -1, -1, + 41, 42, 43, -1, 45, 303, 47, -1, -1, -1, + 334, -1, -1, -1, -1, -1, -1, -1, -1, 60, + 61, 62, 63, -1, -1, 94, -1, -1, -1, -1, + -1, -1, -1, 400, 401, -1, 334, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 94, -1, -1, 124, -1, 126, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + 417, 418, 419, 94, -1, 124, -1, 126, -1, -1, + 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 312, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, 37, 38, -1, 312, -1, 42, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 331, 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, -1, -1, -1, -1, -1, 59, 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, -1, -1, -1, 94, -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, 93, 94, - -1, 124, -1, 126, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 312, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, -1, -1, -1, 124, - 125, -1, -1, 331, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 33, 331, 35, -1, -1, -1, -1, 40, - -1, 312, 43, -1, 45, -1, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, 60, - 331, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 124, 125, -1, -1, -1, -1, -1, -1, - 91, -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, -1, -1, 126, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 412, -1, 414, 415, 416, 417, 418, 419, 94, -1, + -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 352, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, + 126, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, -1, 404, -1, -1, -1, + -1, -1, 331, 411, -1, -1, -1, -1, 37, 38, + -1, 312, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, + 331, 60, 61, 62, 63, 37, 38, -1, -1, 41, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 124, -1, 126, 60, 61, + 62, 63, 470, -1, -1, 94, -1, -1, -1, -1, + 478, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, 489, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 94, -1, -1, 124, -1, 126, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 516, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 312, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, -1, 41, 42, 43, 44, 45, 331, 47, + -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 543, -1, -1, 331, -1, + -1, -1, -1, 37, 38, -1, 312, 41, 42, 43, + -1, 45, 560, 47, -1, -1, -1, 565, -1, -1, + -1, -1, 570, -1, -1, 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, 58, -1, 60, 61, 62, 63, -1, -1, -1, + 94, -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, 94, -1, -1, + 124, -1, 126, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, -1, -1, 124, -1, 126, + -1, -1, 331, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -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, 124, 125, -1, -1, -1, -1, -1, -1, -1, -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, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -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, 312, -1, + -1, -1, -1, -1, -1, -1, -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, + 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 124, 125, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 93, 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, -1, -1, -1, 124, 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, -1, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 60, 61, + 62, 63, -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, + 37, 38, 94, -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, 124, -1, 126, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, 94, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, -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, 93, 94, -1, -1, -1, - -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 124, 125, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 93, 94, 260, - 261, 262, 263, 264, 265, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 286, -1, -1, 124, 125, - -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 313, -1, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, - -1, 42, 43, -1, 45, -1, 47, -1, -1, 340, - -1, -1, -1, -1, -1, 346, -1, -1, 94, 60, - 61, 62, 63, -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, -1, - 126, -1, -1, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 38, 126, + -1, 41, -1, 43, 44, 45, -1, -1, -1, 94, + -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, 124, + -1, 126, -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, -1, -1, + -1, -1, -1, -1, 124, 125, -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, -1, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + 312, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, 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, 400, 401, 312, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 331, 124, 125, -1, -1, -1, + -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, 38, -1, + -1, 41, 124, 125, 44, -1, 331, -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, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, -1, 415, 416, + 417, 418, 419, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 401, 402, 403, -1, 37, 38, -1, -1, -1, 42, - 43, -1, 45, 124, 47, 126, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 38, -1, -1, 41, -1, 43, 44, 45, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 124, 125, 411, 412, -1, -1, + -1, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, 38, -1, -1, - 41, 94, -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, -1, - -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, -1, -1, -1, 124, 125, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 124, 125, -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, -1, 124, 125, -1, -1, + -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, + -1, -1, 124, 125, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -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, 331, -1, -1, 38, -1, + -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, 312, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, - 331, -1, -1, -1, -1, 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, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 124, 125, -1, -1, -1, 312, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 331, -1, - 411, 412, -1, -1, 415, 416, 417, 418, 419, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -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, 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, 41, -1, -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, -1, -1, -1, + -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, + -1, 63, -1, -1, -1, -1, -1, -1, 93, -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, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, -1, -1, 416, 417, 418, 419, 93, 94, -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, -1, -1, 124, 125, - -1, -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, -1, - 63, -1, -1, -1, 38, -1, -1, 41, -1, -1, - 44, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 61, 37, 63, - 93, 94, -1, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, -1, 38, 124, 125, 41, -1, -1, - 44, 60, -1, 62, -1, -1, -1, -1, -1, 93, - 94, 124, 125, -1, 58, 59, -1, 61, -1, 63, - -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, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, 126, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, -1, 38, - 124, 125, 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, 41, 58, 59, 44, 61, -1, 63, -1, - -1, -1, -1, -1, 93, 94, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - -1, -1, -1, -1, -1, 124, 125, -1, 404, 405, - 406, 407, 408, -1, 93, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, -1, -1, -1, 124, - 125, -1, -1, -1, -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, 37, 38, -1, - -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - 60, -1, 62, 312, -1, -1, -1, -1, -1, -1, + -1, 93, -1, -1, -1, -1, -1, -1, -1, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, 404, 405, 406, 407, 408, - 125, -1, 411, 412, 94, 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, -1, -1, -1, -1, -1, 126, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - -1, 400, 401, 402, 403, -1, -1, -1, -1, -1, - -1, -1, 411, 412, -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, 33, -1, 35, -1, -1, -1, -1, 40, -1, + -1, -1, -1, 125, -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, 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, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 33, -1, 35, -1, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, 33, -1, 35, -1, + -1, -1, -1, 40, -1, -1, 43, -1, 45, 60, + -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, + -1, -1, 43, -1, 45, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, 35, 91, -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, -1, -1, 33, -1, 35, - -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - -1, -1, 58, -1, -1, 404, 405, 406, 407, 408, - -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, -1, -1, -1, 404, - 405, 406, 407, 408, 126, 91, -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, 312, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -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, 61, -1, 43, -1, 45, -1, 404, - 405, 406, 407, 408, 61, -1, -1, -1, -1, 414, + 91, -1, -1, -1, -1, 126, -1, -1, -1, 61, + -1, -1, -1, -1, 404, 405, 406, 407, 408, 126, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 404, 405, 406, 407, 408, 126, -1, -1, -1, 91, + 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, -1, 33, 126, 35, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -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, -1, -1, -1, -1, -1, - -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 91, -1, -1, -1, -1, -1, - -1, 411, 412, 91, -1, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, -1, 126, -1, + -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, + -1, 91, 414, 415, 416, 417, 418, 419, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, -1, 123, -1, 286, 126, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, 286, + -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, + -1, -1, 313, 40, -1, 286, 43, -1, 45, -1, + -1, -1, -1, -1, -1, -1, 313, -1, 260, 261, + 262, 263, 264, 265, 61, -1, -1, -1, -1, 340, + -1, -1, 313, -1, -1, 346, -1, -1, 33, -1, + 35, -1, -1, 340, 286, 40, -1, -1, 43, 346, + 45, -1, -1, -1, 91, -1, -1, -1, -1, 340, + -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, - -1, -1, -1, -1, 286, 123, -1, -1, 126, -1, - -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, - 33, -1, 35, -1, -1, -1, -1, 40, -1, -1, - 43, 313, 45, -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, 340, -1, - -1, -1, -1, -1, 346, -1, -1, 313, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, + 401, 402, 403, -1, -1, -1, 91, -1, 340, -1, + -1, -1, -1, 400, 346, 402, 403, -1, -1, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, + -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, + -1, 126, -1, -1, -1, -1, 286, -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, 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, -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, 126, -1, -1, -1, -1, 400, -1, - 402, 403, 260, 261, 262, 263, 264, 265, -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, 402, 403, -1, 286, - -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, - -1, -1, -1, -1, -1, 313, -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, -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, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, - -1, -1, -1, 286, -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, 286, + -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -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, 340, -1, -1, -1, -1, -1, 346, + -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, 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, 340, -1, -1, -1, -1, + -1, 346, -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, -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, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1968,37 +1982,37 @@ public function yyparse($yyLex) { case 90: #line 481 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 97: #line 500 "grammar/xp.jay" + case 98: #line 504 "grammar/xp.jay" { $yyVal= NULL; } break; - case 99: #line 505 "grammar/xp.jay" + case 100: #line 509 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 100: #line 506 "grammar/xp.jay" + case 101: #line 510 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 101: #line 510 "grammar/xp.jay" + case 102: #line 514 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 102: #line 510 "grammar/xp.jay" + case 103: #line 514 "grammar/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 103: #line 513 "grammar/xp.jay" + case 104: #line 517 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 104: #line 513 "grammar/xp.jay" + case 105: #line 517 "grammar/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 105: #line 518 "grammar/xp.jay" + case 106: #line 522 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 106: #line 518 "grammar/xp.jay" + case 107: #line 522 "grammar/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2010,168 +2024,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 107: #line 528 "grammar/xp.jay" + case 108: #line 532 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 108: #line 528 "grammar/xp.jay" + case 109: #line 532 "grammar/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 109: #line 533 "grammar/xp.jay" + case 110: #line 537 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 110: #line 533 "grammar/xp.jay" + case 111: #line 537 "grammar/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 111: #line 537 "grammar/xp.jay" + case 112: #line 541 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 112: #line 537 "grammar/xp.jay" + case 113: #line 541 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 113: #line 541 "grammar/xp.jay" + case 114: #line 545 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 114: #line 541 "grammar/xp.jay" + case 115: #line 545 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 115: #line 545 "grammar/xp.jay" + case 116: #line 549 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 117: #line 546 "grammar/xp.jay" + case 118: #line 550 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 119: #line 547 "grammar/xp.jay" + case 120: #line 551 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 120: #line 547 "grammar/xp.jay" + case 121: #line 551 "grammar/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 121: #line 550 "grammar/xp.jay" + case 122: #line 554 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 122: #line 550 "grammar/xp.jay" + case 123: #line 554 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 123: #line 555 "grammar/xp.jay" + case 124: #line 559 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 124: #line 558 "grammar/xp.jay" + case 125: #line 562 "grammar/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 126: #line 565 "grammar/xp.jay" + case 127: #line 569 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 127: #line 566 "grammar/xp.jay" + case 128: #line 570 "grammar/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 128: #line 570 "grammar/xp.jay" + case 129: #line 574 "grammar/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 129: #line 573 "grammar/xp.jay" + case 130: #line 577 "grammar/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 130: #line 580 "grammar/xp.jay" + case 131: #line 584 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 131: #line 581 "grammar/xp.jay" + case 132: #line 585 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 132: #line 585 "grammar/xp.jay" + case 133: #line 589 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 133: #line 591 "grammar/xp.jay" + case 134: #line 595 "grammar/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 134: #line 592 "grammar/xp.jay" + case 135: #line 596 "grammar/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 135: #line 596 "grammar/xp.jay" + case 136: #line 600 "grammar/xp.jay" { $yyVal= NULL; } break; - case 137: #line 601 "grammar/xp.jay" + case 138: #line 605 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 138: #line 602 "grammar/xp.jay" + case 139: #line 606 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 139: #line 606 "grammar/xp.jay" + case 140: #line 610 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 140: #line 606 "grammar/xp.jay" + case 141: #line 610 "grammar/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 141: #line 610 "grammar/xp.jay" + case 142: #line 614 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 142: #line 610 "grammar/xp.jay" + case 143: #line 614 "grammar/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 143: #line 616 "grammar/xp.jay" + case 144: #line 620 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 144: #line 617 "grammar/xp.jay" + case 145: #line 621 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 145: #line 621 "grammar/xp.jay" + case 146: #line 625 "grammar/xp.jay" { $yyVal= NULL; } break; - case 146: #line 622 "grammar/xp.jay" + case 147: #line 626 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 147: #line 622 "grammar/xp.jay" + case 148: #line 626 "grammar/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 148: #line 627 "grammar/xp.jay" + case 149: #line 631 "grammar/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 149: #line 628 "grammar/xp.jay" + case 150: #line 632 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 150: #line 632 "grammar/xp.jay" + case 151: #line 636 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 151: #line 633 "grammar/xp.jay" + case 152: #line 637 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 152: #line 637 "grammar/xp.jay" + case 153: #line 641 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 153: #line 637 "grammar/xp.jay" + case 154: #line 641 "grammar/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2184,36 +2198,36 @@ public function yyparse($yyLex) { } } break; - case 154: #line 651 "grammar/xp.jay" + case 155: #line 655 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 155: #line 652 "grammar/xp.jay" + case 156: #line 656 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 156: #line 656 "grammar/xp.jay" + case 157: #line 660 "grammar/xp.jay" { $yyVal= NULL; } break; - case 158: #line 661 "grammar/xp.jay" + case 159: #line 665 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 159: #line 661 "grammar/xp.jay" + case 160: #line 665 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 160: #line 669 "grammar/xp.jay" + case 161: #line 673 "grammar/xp.jay" { $yyVal= NULL; } break; - case 162: #line 674 "grammar/xp.jay" + case 163: #line 678 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 163: #line 675 "grammar/xp.jay" + case 164: #line 679 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 164: #line 679 "grammar/xp.jay" + case 165: #line 683 "grammar/xp.jay" { $yyVal= NULL; } break; - case 166: #line 684 "grammar/xp.jay" + case 167: #line 688 "grammar/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2221,44 +2235,44 @@ public function yyparse($yyLex) { $yyVals[0+$yyTop] && $yyVal->body= $yyVals[0+$yyTop]; } break; - case 167: #line 690 "grammar/xp.jay" + case 168: #line 694 "grammar/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 168: #line 695 "grammar/xp.jay" + case 169: #line 699 "grammar/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 169: #line 703 "grammar/xp.jay" + case 170: #line 707 "grammar/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 170: #line 706 "grammar/xp.jay" + case 171: #line 710 "grammar/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 171: #line 709 "grammar/xp.jay" + case 172: #line 713 "grammar/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 172: #line 712 "grammar/xp.jay" + case 173: #line 716 "grammar/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 173: #line 718 "grammar/xp.jay" + case 174: #line 722 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 174: #line 718 "grammar/xp.jay" + case 175: #line 722 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2266,7 +2280,7 @@ public function yyparse($yyLex) { } } break; - case 175: #line 724 "grammar/xp.jay" + case 176: #line 728 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2274,10 +2288,10 @@ public function yyparse($yyLex) { } } break; - case 176: #line 730 "grammar/xp.jay" + case 177: #line 734 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 177: #line 730 "grammar/xp.jay" + case 178: #line 734 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2288,10 +2302,10 @@ public function yyparse($yyLex) { } } break; - case 178: #line 739 "grammar/xp.jay" + case 179: #line 743 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 179: #line 739 "grammar/xp.jay" + case 180: #line 743 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2303,10 +2317,10 @@ public function yyparse($yyLex) { } } break; - case 180: #line 749 "grammar/xp.jay" + case 181: #line 753 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 181: #line 749 "grammar/xp.jay" + case 182: #line 753 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2317,43 +2331,43 @@ public function yyparse($yyLex) { } } break; - case 182: #line 758 "grammar/xp.jay" + case 183: #line 762 "grammar/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 183: #line 761 "grammar/xp.jay" + case 184: #line 765 "grammar/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 184: #line 764 "grammar/xp.jay" + case 185: #line 768 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 185: #line 767 "grammar/xp.jay" + case 186: #line 771 "grammar/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 186: #line 770 "grammar/xp.jay" + case 187: #line 774 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 187: #line 773 "grammar/xp.jay" + case 188: #line 777 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 188: #line 776 "grammar/xp.jay" + case 189: #line 780 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 189: #line 780 "grammar/xp.jay" + case 190: #line 784 "grammar/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2361,7 +2375,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 190: #line 786 "grammar/xp.jay" + case 191: #line 790 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2369,7 +2383,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 191: #line 792 "grammar/xp.jay" + case 192: #line 796 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2377,17 +2391,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 192: #line 798 "grammar/xp.jay" + case 193: #line 802 "grammar/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 193: #line 803 "grammar/xp.jay" + case 194: #line 807 "grammar/xp.jay" { $yyVals[-5+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-3+$yyTop], $yyVals[-1+$yyTop])); } break; - case 194: #line 803 "grammar/xp.jay" + case 195: #line 807 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2395,7 +2409,7 @@ public function yyparse($yyLex) { } } break; - case 195: #line 809 "grammar/xp.jay" + case 196: #line 813 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2405,32 +2419,32 @@ public function yyparse($yyLex) { } } break; - case 196: #line 820 "grammar/xp.jay" + case 197: #line 824 "grammar/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 197: #line 823 "grammar/xp.jay" + case 198: #line 827 "grammar/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 198: #line 829 "grammar/xp.jay" + case 199: #line 833 "grammar/xp.jay" { $yyVal= array(); } break; - case 200: #line 834 "grammar/xp.jay" + case 201: #line 838 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 201: #line 835 "grammar/xp.jay" + case 202: #line 839 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 202: #line 839 "grammar/xp.jay" + case 203: #line 843 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 203: #line 840 "grammar/xp.jay" + case 204: #line 844 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 204: #line 844 "grammar/xp.jay" + case 205: #line 848 "grammar/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2438,273 +2452,273 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 205: #line 850 "grammar/xp.jay" + case 206: #line 854 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 206: #line 850 "grammar/xp.jay" + case 207: #line 854 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 207: #line 851 "grammar/xp.jay" + case 208: #line 855 "grammar/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 208: #line 852 "grammar/xp.jay" + case 209: #line 856 "grammar/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 209: #line 853 "grammar/xp.jay" + case 210: #line 857 "grammar/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 210: #line 854 "grammar/xp.jay" + case 211: #line 858 "grammar/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 211: #line 855 "grammar/xp.jay" + case 212: #line 859 "grammar/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 212: #line 859 "grammar/xp.jay" + case 213: #line 863 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 213: #line 862 "grammar/xp.jay" + case 214: #line 866 "grammar/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 214: #line 868 "grammar/xp.jay" + case 215: #line 872 "grammar/xp.jay" { $yyVal= NULL; } break; - case 216: #line 873 "grammar/xp.jay" + case 217: #line 877 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 217: #line 874 "grammar/xp.jay" + case 218: #line 878 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 218: #line 878 "grammar/xp.jay" + case 219: #line 882 "grammar/xp.jay" { $yyVal= NULL; } break; - case 220: #line 883 "grammar/xp.jay" + case 221: #line 887 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 221: #line 884 "grammar/xp.jay" + case 222: #line 888 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 222: #line 888 "grammar/xp.jay" + case 223: #line 892 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 223: #line 889 "grammar/xp.jay" + case 224: #line 893 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 224: #line 890 "grammar/xp.jay" + case 225: #line 894 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 225: #line 891 "grammar/xp.jay" + case 226: #line 895 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 226: #line 892 "grammar/xp.jay" + case 227: #line 896 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 227: #line 893 "grammar/xp.jay" + case 228: #line 897 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 228: #line 894 "grammar/xp.jay" + case 229: #line 898 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 229: #line 895 "grammar/xp.jay" + case 230: #line 899 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 230: #line 896 "grammar/xp.jay" + case 231: #line 900 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 231: #line 897 "grammar/xp.jay" + case 232: #line 901 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 232: #line 898 "grammar/xp.jay" + case 233: #line 902 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 233: #line 899 "grammar/xp.jay" + case 234: #line 903 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 234: #line 903 "grammar/xp.jay" + case 235: #line 907 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 235: #line 904 "grammar/xp.jay" + case 236: #line 908 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 236: #line 905 "grammar/xp.jay" + case 237: #line 909 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 237: #line 906 "grammar/xp.jay" + case 238: #line 910 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 238: #line 907 "grammar/xp.jay" + case 239: #line 911 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 239: #line 908 "grammar/xp.jay" + case 240: #line 912 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 240: #line 909 "grammar/xp.jay" + case 241: #line 913 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 241: #line 910 "grammar/xp.jay" + case 242: #line 914 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 242: #line 914 "grammar/xp.jay" + case 243: #line 918 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 243: #line 915 "grammar/xp.jay" + case 244: #line 919 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 916 "grammar/xp.jay" + case 245: #line 920 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 917 "grammar/xp.jay" + case 246: #line 921 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 918 "grammar/xp.jay" + case 247: #line 922 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 919 "grammar/xp.jay" + case 248: #line 923 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 920 "grammar/xp.jay" + case 249: #line 924 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 921 "grammar/xp.jay" + case 250: #line 925 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 922 "grammar/xp.jay" + case 251: #line 926 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 251: #line 923 "grammar/xp.jay" + case 252: #line 927 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 252: #line 924 "grammar/xp.jay" + case 253: #line 928 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 253: #line 928 "grammar/xp.jay" + case 254: #line 932 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 254: #line 929 "grammar/xp.jay" + case 255: #line 933 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 930 "grammar/xp.jay" + case 256: #line 934 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 931 "grammar/xp.jay" + case 257: #line 935 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 932 "grammar/xp.jay" + case 258: #line 936 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 933 "grammar/xp.jay" + case 259: #line 937 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 259: #line 937 "grammar/xp.jay" + case 260: #line 941 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 260: #line 938 "grammar/xp.jay" + case 261: #line 942 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 261: #line 943 "grammar/xp.jay" + case 262: #line 947 "grammar/xp.jay" { $yyVal= NULL; } break; - case 263: #line 948 "grammar/xp.jay" + case 264: #line 952 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 264: #line 949 "grammar/xp.jay" + case 265: #line 953 "grammar/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 265: #line 953 "grammar/xp.jay" + case 266: #line 957 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 266: #line 953 "grammar/xp.jay" + case 267: #line 957 "grammar/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 267: #line 956 "grammar/xp.jay" + case 268: #line 960 "grammar/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 268: #line 959 "grammar/xp.jay" + case 269: #line 963 "grammar/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 269: #line 959 "grammar/xp.jay" + case 270: #line 963 "grammar/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 270: #line 962 "grammar/xp.jay" + case 271: #line 966 "grammar/xp.jay" { $yyVals[-1+$yyTop]= $yyLex->create(new InstanceCallNode(NULL)); } break; - case 271: #line 962 "grammar/xp.jay" + case 272: #line 966 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 278: #line 982 "grammar/xp.jay" + case 279: #line 986 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 279: #line 983 "grammar/xp.jay" + case 280: #line 987 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 280: #line 987 "grammar/xp.jay" + case 281: #line 991 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 281: #line 991 "grammar/xp.jay" + case 282: #line 995 "grammar/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 282: #line 995 "grammar/xp.jay" + case 283: #line 999 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 283: #line 996 "grammar/xp.jay" + case 284: #line 1000 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 285: #line 1001 "grammar/xp.jay" + case 286: #line 1005 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 286: #line 1005 "grammar/xp.jay" + case 287: #line 1009 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 287: #line 1006 "grammar/xp.jay" + case 288: #line 1010 "grammar/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 288: #line 1012 "grammar/xp.jay" + case 289: #line 1016 "grammar/xp.jay" { $yyVal= 0; } break; - case 289: #line 1013 "grammar/xp.jay" + case 290: #line 1017 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 290: #line 1017 "grammar/xp.jay" + case 291: #line 1021 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 291: #line 1018 "grammar/xp.jay" + case 292: #line 1022 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 292: #line 1022 "grammar/xp.jay" + case 293: #line 1026 "grammar/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 293: #line 1023 "grammar/xp.jay" + case 294: #line 1027 "grammar/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 294: #line 1024 "grammar/xp.jay" + case 295: #line 1028 "grammar/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 295: #line 1025 "grammar/xp.jay" + case 296: #line 1029 "grammar/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 296: #line 1026 "grammar/xp.jay" + case 297: #line 1030 "grammar/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 297: #line 1027 "grammar/xp.jay" + case 298: #line 1031 "grammar/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 298: #line 1028 "grammar/xp.jay" + case 299: #line 1032 "grammar/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 299: #line 1029 "grammar/xp.jay" + case 300: #line 1033 "grammar/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 2708 "-" +#line 2722 "-" } $yyTop-= self::$yyLen[$yyN]; From e151618f1e7348b96d25c1b705ecd27e6e81afe4 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Thu, 7 Jun 2012 17:42:03 +0200 Subject: [PATCH 03/20] - Add syntactic support for named argument lists --- .../src/main/php/xp/compiler/grammar/xp.jay | 8 +- .../xp/compiler/syntax/xp/Parser.class.php | 2638 ++++++++--------- 2 files changed, 1315 insertions(+), 1331 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/grammar/xp.jay b/compiler/src/main/php/xp/compiler/grammar/xp.jay index 0b76854b5..d58862af1 100644 --- a/compiler/src/main/php/xp/compiler/grammar/xp.jay +++ b/compiler/src/main/php/xp/compiler/grammar/xp.jay @@ -482,7 +482,13 @@ throws_opt: ; arguments: - expressionlist_opt + expressionlist_opt + | mapliteral_opt { + $$= array(); + foreach ($1 as $pair) { + $$[$pair[0]->value]= $pair[1]; + } + } ; // }}} diff --git a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php index 1fbf01550..7a41ec6c7 100644 --- a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -168,27 +168,28 @@ 44, 25, 46, 25, 11, 11, 47, 47, 49, 49, 49, 50, 50, 51, 51, 42, 42, 39, 39, 39, 43, 43, 52, 52, 37, 37, 53, 53, 41, 41, - 54, 45, 45, 45, 45, 45, 45, 26, 26, 56, - 56, 59, 57, 60, 57, 63, 57, 64, 57, 66, - 57, 67, 57, 68, 57, 70, 57, 71, 57, 72, - 57, 73, 57, 57, 57, 57, 75, 75, 77, 77, - 76, 76, 78, 65, 65, 69, 69, 79, 79, 81, - 80, 82, 80, 61, 61, 62, 83, 62, 74, 74, - 84, 84, 88, 87, 89, 89, 85, 85, 90, 86, - 55, 55, 91, 91, 58, 58, 92, 92, 92, 96, - 96, 96, 96, 98, 31, 31, 99, 31, 100, 31, - 101, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 109, 31, 31, 108, 108, 107, 107, - 110, 110, 111, 111, 36, 113, 36, 36, 36, 36, - 36, 36, 112, 112, 95, 95, 114, 114, 116, 116, - 115, 115, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, - 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 105, 105, 105, 105, 105, 105, 106, - 106, 97, 97, 117, 117, 119, 118, 118, 121, 118, - 122, 118, 120, 120, 120, 32, 32, 32, 12, 12, - 93, 94, 123, 123, 124, 124, 21, 21, 48, 48, - 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, + 54, 54, 45, 45, 45, 45, 45, 45, 26, 26, + 57, 57, 60, 58, 61, 58, 64, 58, 65, 58, + 67, 58, 68, 58, 69, 58, 71, 58, 72, 58, + 73, 58, 74, 58, 58, 58, 58, 76, 76, 78, + 78, 77, 77, 79, 66, 66, 70, 70, 80, 80, + 82, 81, 83, 81, 62, 62, 63, 84, 63, 75, + 75, 85, 85, 89, 88, 90, 90, 86, 86, 91, + 87, 55, 55, 92, 92, 59, 59, 93, 93, 93, + 96, 96, 96, 96, 98, 31, 31, 99, 31, 100, + 31, 101, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 109, 31, 31, 108, 108, 107, + 107, 110, 110, 111, 111, 36, 113, 36, 36, 36, + 36, 36, 36, 112, 112, 56, 56, 114, 114, 116, + 116, 115, 115, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, + 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, + 106, 106, 97, 97, 117, 117, 119, 118, 118, 121, + 118, 122, 118, 120, 120, 120, 32, 32, 32, 12, + 12, 94, 95, 123, 123, 124, 124, 21, 21, 48, + 48, 125, 125, 126, 126, 126, 126, 126, 126, 126, + 126, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 0, 7, @@ -200,1231 +201,1200 @@ 0, 8, 0, 10, 4, 1, 1, 3, 2, 5, 5, 1, 3, 3, 3, 1, 3, 0, 2, 1, 0, 1, 1, 3, 3, 4, 1, 2, 0, 2, - 1, 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, 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, 4, - 3, 4, 1, 3, 1, 3, 1, 3, 0, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 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, 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, + 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, 9, 0, 0, 7, 0, 0, - 0, 0, 0, 293, 295, 294, 297, 299, 298, 300, - 296, 1, 0, 66, 0, 291, 8, 0, 0, 4, - 12, 13, 0, 0, 0, 67, 20, 24, 22, 292, + 0, 0, 0, 294, 296, 295, 298, 300, 299, 301, + 297, 1, 0, 66, 0, 292, 8, 0, 0, 4, + 12, 13, 0, 0, 0, 67, 20, 24, 22, 293, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 0, 0, 0, 0, 15, 0, 0, - 206, 0, 212, 208, 211, 209, 210, 0, 0, 0, + 207, 0, 213, 209, 212, 210, 211, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 70, 0, 71, 0, 0, 276, 0, 277, - 278, 0, 283, 27, 0, 0, 0, 31, 35, 0, - 16, 215, 0, 0, 0, 0, 0, 0, 177, 0, - 0, 0, 174, 0, 0, 0, 0, 0, 213, 0, - 214, 185, 186, 187, 188, 189, 0, 0, 217, 205, - 74, 75, 0, 73, 0, 0, 0, 0, 280, 29, + 0, 0, 70, 0, 71, 0, 0, 277, 0, 278, + 279, 0, 284, 27, 0, 0, 0, 31, 35, 0, + 16, 216, 0, 0, 0, 0, 0, 0, 178, 0, + 0, 0, 175, 0, 0, 0, 0, 0, 214, 215, + 0, 186, 187, 188, 189, 190, 0, 0, 218, 206, + 74, 75, 0, 73, 0, 0, 0, 0, 281, 29, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 183, 0, 181, 0, 0, 0, 0, 179, + 0, 0, 184, 0, 182, 0, 0, 0, 0, 180, 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, 260, - 261, 0, 266, 0, 176, 263, 0, 0, 207, 0, - 286, 0, 281, 284, 0, 288, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 262, 0, 267, 0, 177, 264, 0, 0, 208, 0, + 287, 0, 282, 285, 0, 289, 0, 0, 25, 0, 34, 36, 37, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 175, 0, 203, 0, 0, - 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 176, 0, 204, 0, 0, + 0, 202, 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, 193, 0, 0, - 184, 0, 273, 275, 274, 271, 0, 265, 164, 0, - 0, 220, 218, 282, 21, 0, 0, 0, 0, 0, - 0, 23, 0, 35, 0, 178, 0, 0, 0, 91, - 196, 204, 0, 0, 0, 173, 170, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 0, 0, 269, 102, - 0, 120, 106, 110, 112, 108, 116, 118, 104, 114, - 0, 0, 0, 0, 100, 0, 61, 0, 0, 0, - 0, 0, 35, 45, 0, 43, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 0, 180, 0, 267, 0, - 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 38, 126, 101, 0, 0, 59, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 0, 168, 169, 182, 0, 194, 0, - 272, 0, 0, 0, 0, 0, 127, 0, 0, 0, - 0, 144, 0, 0, 117, 119, 0, 0, 0, 0, - 131, 0, 83, 0, 0, 0, 0, 63, 0, 0, - 48, 0, 0, 53, 33, 0, 167, 198, 0, 171, - 270, 103, 0, 0, 0, 0, 121, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 55, 0, - 49, 54, 47, 195, 0, 0, 128, 0, 0, 0, - 145, 0, 0, 0, 0, 0, 0, 132, 0, 0, - 0, 84, 0, 85, 0, 0, 0, 0, 153, 159, - 123, 0, 150, 151, 0, 0, 111, 0, 135, 0, - 0, 0, 0, 90, 76, 0, 62, 86, 0, 0, - 56, 0, 0, 149, 158, 152, 124, 0, 0, 0, - 147, 105, 140, 142, 0, 0, 138, 125, 0, 60, - 0, 0, 0, 0, 113, 109, 0, 0, 0, 115, - 139, 77, 64, 155, 0, 0, 0, 148, 0, 0, - 0, 0, 160, 107, 0, 143, 156, 0, 141, 0, - 0, 154, + 0, 0, 0, 0, 0, 0, 0, 194, 0, 0, + 185, 0, 274, 276, 275, 272, 0, 266, 165, 0, + 0, 221, 219, 283, 21, 0, 0, 0, 0, 0, + 0, 23, 0, 35, 0, 179, 0, 0, 0, 91, + 92, 197, 205, 0, 0, 0, 174, 171, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 270, + 103, 0, 121, 107, 111, 113, 109, 117, 119, 105, + 115, 0, 0, 0, 0, 101, 0, 61, 0, 0, + 0, 0, 0, 35, 45, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 0, 181, 0, 268, + 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 127, 102, 0, 0, + 59, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 169, 170, 183, 0, 195, + 0, 273, 0, 0, 0, 0, 0, 128, 0, 0, + 0, 0, 145, 0, 0, 118, 120, 0, 0, 0, + 0, 132, 0, 83, 0, 0, 0, 0, 63, 0, + 0, 48, 0, 0, 53, 33, 0, 168, 199, 0, + 172, 271, 104, 0, 0, 0, 0, 122, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 55, + 0, 49, 54, 47, 196, 0, 0, 129, 0, 0, + 0, 146, 0, 0, 0, 0, 0, 0, 133, 0, + 0, 0, 84, 0, 85, 0, 0, 0, 0, 154, + 160, 124, 0, 151, 152, 0, 0, 112, 0, 136, + 0, 0, 0, 0, 90, 76, 0, 62, 86, 0, + 0, 56, 0, 0, 150, 159, 153, 125, 0, 0, + 0, 148, 106, 141, 143, 0, 0, 139, 126, 0, + 60, 0, 0, 0, 0, 114, 110, 0, 0, 0, + 116, 140, 77, 64, 156, 0, 0, 0, 149, 0, + 0, 0, 0, 161, 108, 0, 144, 157, 0, 142, + 0, 0, 155, ); protected static $yyDgoto= array(2, 3, 6, 22, 116, 4, 7, 8, 33, 12, 60, 210, 88, 47, 74, 96, 143, 49, 215, 48, 76, - 98, 344, 211, 212, 213, 332, 216, 217, 290, 291, - 333, 270, 390, 342, 433, 118, 423, 434, 465, 427, - 491, 517, 424, 379, 387, 467, 35, 24, 36, 70, - 71, 425, 426, 299, 300, 334, 335, 247, 362, 372, - 413, 532, 366, 369, 453, 367, 368, 373, 535, 370, - 371, 365, 404, 501, 406, 420, 407, 421, 536, 537, - 548, 549, 547, 502, 524, 503, 504, 522, 555, 523, - 120, 220, 90, 91, 121, 308, 195, 157, 152, 233, - 224, 122, 123, 124, 125, 126, 230, 354, 439, 231, + 98, 345, 211, 212, 213, 333, 216, 217, 290, 291, + 334, 270, 391, 343, 434, 118, 424, 435, 466, 428, + 492, 518, 425, 380, 388, 468, 35, 24, 36, 70, + 71, 426, 427, 299, 300, 301, 335, 336, 247, 363, + 373, 414, 533, 367, 370, 454, 368, 369, 374, 536, + 371, 372, 366, 405, 502, 407, 421, 408, 422, 537, + 538, 549, 550, 548, 503, 525, 504, 505, 523, 556, + 524, 121, 220, 90, 91, 309, 195, 157, 152, 233, + 224, 122, 123, 124, 125, 126, 230, 355, 440, 231, 232, 127, 80, 128, 129, 283, 196, 197, 272, 277, - 361, 318, 92, 93, 25, 26, + 362, 319, 92, 93, 25, 26, ); - protected static $yySindex = array( -275, - 0, 0, -263, -108, 0, 1309, -263, 0, 28, 37, - 44, 54, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 154, 0, 479, 0, 0, -108, -108, 0, - 0, 0, -58, -108, 9, 0, 0, 0, 0, 0, - 0, 0, 222, 243, 134, 479, -108, -108, -108, -7, - 351, 0, 0, 235, -3, 62, -3, 0, 232, 277, - 0, 352, 0, 0, 0, 0, 0, 353, 385, 320, - 0, 38, -108, 36, -108, 316, 36, -7, 0, 4260, - 267, 267, 0, -127, 0, 133, 389, 0, 357, 0, - 0, 14, 0, 0, -108, 335, 415, 0, 0, 344, - 0, 0, 4546, 4546, 4546, 4546, 4546, 4546, 0, 4546, - 268, 406, 0, 4546, 350, 65, 3279, 114, 0, 436, - 0, 0, 0, 0, 0, 0, 388, 440, 0, 0, - 0, 0, 352, 0, -108, -71, 398, 38, 0, 0, - 0, -108, 1576, 234, 319, -80, -80, -112, -80, -80, - -80, -71, 0, 4546, 0, 4546, 114, 2229, -83, 0, - 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, - 4546, 4546, 4546, 4546, 4546, 4546, 4299, 4504, 4230, 4546, - 4244, 4546, 4546, 4546, 4546, 4546, 4546, -108, 4546, 0, - 0, -71, 0, -8, 0, 0, 114, 4546, 0, 42, - 0, 299, 0, 0, 2137, 0, 376, 242, 0, -68, - 0, 0, 0, 0, 378, 149, 0, 461, 357, 114, - 384, 386, 3279, 4546, 3279, 0, 114, 0, -75, 249, - 467, 0, -187, 3334, 3376, 3376, 3376, 3376, 3376, 3376, - 3376, 3376, 3376, 3376, 3376, 3279, 454, 50, 645, 346, - 4546, 1702, 4546, 1702, 4546, 4546, -32, -32, 4546, 4546, - -32, -32, 162, 162, -112, -112, -112, 0, -80, 218, - 0, 4546, 0, 0, 0, 0, 474, 0, 0, 462, - 406, 0, 0, 0, 0, 465, 273, 328, -70, 412, - 496, 0, 234, 0, 4546, 0, 4546, 3, 499, 0, - 0, 0, 4391, -83, 501, 0, 0, 114, 4546, 3376, - 3376, -32, -32, -32, -32, 0, 453, 4546, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 425, 2392, 465, 0, 492, 0, 514, 697, 464, - 497, 439, 0, 0, 4546, 0, 590, 531, 456, 457, - 114, 465, 3279, 458, 0, 4546, 0, 17, 0, 536, - 4546, 4546, 0, 244, 4546, 545, 547, 452, 549, 538, - 540, 555, 560, 265, 0, 0, 0, 267, -71, 0, - 0, 0, 0, 0, 0, 0, 566, -71, 4546, 550, - 360, 2163, 2420, 412, 0, 0, 0, 485, 0, 576, - 0, 584, 571, 465, 575, 332, 0, 2528, 4546, 4546, - 465, 0, 276, 298, 0, 0, 4546, 4546, 578, 363, - 0, 581, 0, 600, 601, -191, -73, 0, 551, 3279, - 0, 27, -99, 0, 0, 412, 0, 0, 114, 0, - 0, 0, 525, 4546, 244, 530, 0, 595, 2555, 532, - 615, 612, 297, 2652, 2692, 4546, 265, 539, 0, 349, - -71, 619, 497, -71, 632, 601, -71, 0, 0, 465, - 0, 0, 0, 0, -27, 3279, 0, 465, 4546, 452, - 0, 4546, 334, 4546, 452, 552, 3279, 0, 465, -108, - 59, 0, 345, 0, 601, 349, 643, 561, 0, 0, - 0, -27, 0, 0, 564, 635, 0, 2719, 0, 2827, - 324, 29, 572, 0, 0, 465, 0, 0, 59, 349, - 0, 664, 579, 0, 0, 0, 0, 4546, 659, 452, - 0, 0, 0, 0, 594, 29, 0, 0, 597, 0, - 59, -108, 465, 682, 0, 0, 452, 4546, 666, 0, - 0, 0, 0, 0, -86, 606, 452, 0, 2854, 465, - -108, 691, 0, 0, 465, 0, 0, 610, 0, 465, - 616, 0, + protected static $yySindex = array( -202, + 0, 0, -169, -238, 0, 1247, -169, 0, 144, 154, + 161, -15, 227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 231, 0, 676, 0, 0, -238, -238, 0, + 0, 0, 57, -238, -11, 0, 0, 0, 0, 0, + 0, 0, 258, 293, 227, 676, -238, -238, -238, -10, + 678, 0, 0, 288, 50, 74, 50, 0, 323, 330, + 0, 342, 0, 0, 0, 0, 0, 344, 371, 355, + 0, 23, -238, 110, -238, 304, 110, -10, 0, 4247, + 66, 66, 0, -106, 0, 128, 382, 0, 372, 0, + 0, 135, 0, 0, -238, 350, 430, 0, 0, 354, + 0, 0, 4378, 4378, 4378, 4378, 4378, 4378, 0, 4378, + 325, 433, 0, 4378, 365, 86, 3049, 95, 0, 0, + 455, 0, 0, 0, 0, 0, 407, 458, 0, 0, + 0, 0, 342, 0, -238, -73, 417, 23, 0, 0, + 0, -238, 1221, 254, 59, -80, -80, -52, -80, -80, + -80, -73, 0, 4378, 0, 4378, 95, 1990, -83, 0, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4281, 4319, 4215, 4378, + 4175, 4378, 4378, 4378, 4378, 4378, 4378, -238, 4378, 0, + 0, -73, 0, -1, 0, 0, 95, 4378, 0, -248, + 0, 250, 0, 0, 1540, 0, 392, 261, 0, -71, + 0, 0, 0, 0, 393, 244, 0, 482, 372, 95, + 413, 419, 3049, 4247, 3049, 0, 95, 0, -75, 287, + 502, 0, 14, 3076, 3211, 3211, 3211, 3211, 3211, 3211, + 3211, 3211, 3211, 3211, 3211, 3049, 494, 3928, 3867, 4055, + 4378, 2660, 4378, 2660, 4378, 4378, 13, 13, 4378, 4378, + 13, 13, 46, 46, -52, -52, -52, 0, -80, 215, + 0, 4378, 0, 0, 0, 0, 514, 0, 0, 499, + 433, 0, 0, 0, 0, 32, 299, 340, -65, 437, + 525, 0, 254, 0, 4247, 0, 4378, -53, 527, 0, + 0, 0, 0, 4186, -83, 526, 0, 0, 95, 4378, + 3211, 3211, 13, 13, 13, 13, 0, 476, 4247, 0, + 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 530, 446, 2050, 32, 0, 512, 0, 536, 79, + 486, 529, 465, 0, 0, 4378, 0, 597, 571, 477, + 488, 95, 32, 3049, 490, 0, 4247, 0, 874, 0, + 573, 4247, 4378, 0, 279, 4378, 581, 582, 385, 589, + 575, 577, 592, 600, 301, 0, 0, 0, 66, -73, + 0, 0, 0, 0, 0, 0, 0, 604, -73, 4378, + 595, 401, 1661, 2188, 437, 0, 0, 0, 538, 0, + 623, 0, 624, 607, 32, 608, 369, 0, 2226, 4378, + 4378, 32, 0, 309, 332, 0, 0, 4378, 4378, 620, + 388, 0, 631, 0, 650, 648, -181, 82, 0, 601, + 3049, 0, -19, -108, 0, 0, 437, 0, 0, 95, + 0, 0, 0, 568, 4378, 279, 579, 0, 637, 2323, + 586, 667, 670, 352, 2377, 2435, 4378, 301, 594, 0, + 397, -73, 673, 529, -73, 680, 648, -73, 0, 0, + 32, 0, 0, 0, 0, 37, 3049, 0, 32, 4378, + 385, 0, 4378, 384, 4378, 385, 609, 3049, 0, 32, + -238, -5, 0, 394, 0, 648, 397, 696, 617, 0, + 0, 0, 37, 0, 0, 618, 693, 0, 2485, 0, + 2619, 383, 73, 628, 0, 0, 32, 0, 0, -5, + 397, 0, 716, 635, 0, 0, 0, 0, 4378, 700, + 385, 0, 0, 0, 0, 636, 73, 0, 0, 638, + 0, -5, -238, 32, 719, 0, 0, 385, 4378, 704, + 0, 0, 0, 0, 0, -51, 645, 385, 0, 2818, + 32, -238, 731, 0, 0, 32, 0, 0, 651, 0, + 32, 653, 0, ); - protected static $yyRindex= array( 993, - 0, 0, 1285, 0, 0, 188, 1435, 0, 803, 0, - 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, + protected static $yyRindex= array( 316, + 0, 0, 1026, 0, 0, 248, 1161, 0, 615, 0, + 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 0, 259, 0, 0, 0, 0, - 0, 0, 0, 843, -104, 614, -104, 0, 684, 0, - 0, 709, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 629, 0, 0, 629, 0, 0, 660, - 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, + 0, 0, 0, 15, 0, 519, 0, 0, 0, 0, + 0, 0, 0, 642, -112, 662, -112, 0, 733, 0, + 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 672, 0, 0, 672, 0, 0, 701, + 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, + 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1665, 1789, 0, 0, 0, 0, 76, 1490, 0, 87, - 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, + 1366, 1498, 0, 0, 0, 0, 410, 1195, 0, 0, + 44, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 52, 631, 940, 1900, 1927, 2948, 1968, 1997, - 2094, 0, 0, 0, 0, 0, 1490, 0, 511, 0, + 0, 0, 21, 681, 739, 1596, 1664, 2876, 1754, 1794, + 1892, 0, 0, 0, 0, 0, 1195, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 696, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1517, 341, 0, 12, - 0, 0, 0, 0, 52, 0, 1136, 0, 0, 0, - 0, 0, 0, 151, 0, 644, 0, 681, 0, 1490, - 683, 685, 34, 732, 241, 0, 1490, 0, 0, 0, - 518, 0, 0, 1143, 22, 26, 31, 228, 284, 286, - 424, 493, 662, 726, 872, 652, 0, 4046, 1241, 1106, - 0, 3977, 0, 4001, 0, 0, 535, 3542, 0, 0, - 3579, 3661, 1066, 3421, 3112, 3154, 3244, 0, 2121, 1393, - 0, 686, 0, 0, 0, 0, 967, 0, 0, 0, - 0, 0, 0, 0, 0, 655, 0, -43, 0, -2, - 0, 0, 0, 0, 732, 0, 656, 0, 0, 0, - 0, 0, 0, 0, 1269, 0, 0, 1490, 0, 977, - 1027, 3803, 3819, 3843, 3961, 0, 0, 732, 0, 0, + 0, 0, 0, 0, 0, 0, 1330, 460, 0, 294, + 0, 0, 0, 0, 21, 0, 1400, 0, 0, 0, + 0, 0, 0, 58, 0, 692, 0, 727, 0, 1195, + 732, 740, 318, 781, 416, 0, 1195, 0, 0, 0, + 583, 0, 0, 92, -6, 22, 51, 53, 160, 228, + 308, 454, 479, 671, 855, 20, 0, 431, 1454, 3746, + 0, 3770, 0, 3828, 0, 0, 3345, 3527, 0, 0, + 3543, 3597, 3103, 3145, 2915, 2952, 3010, 0, 1930, 1169, + 0, 741, 0, 0, 0, 0, 766, 0, 0, 0, + 0, 0, 0, 0, 0, 717, 0, -50, 0, -25, + 0, 0, 0, 0, 781, 0, 718, 0, 0, 0, + 0, 0, 0, 0, 0, 947, 0, 0, 1195, 0, + 1023, 1206, 3621, 3645, 3672, 3730, 0, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -118, 0, 0, 0, 663, 0, 0, - 724, 0, 0, 0, 0, 0, -103, 0, 0, 0, - 1490, 655, 665, 0, 0, 732, 0, 4069, 0, 0, - 732, 729, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 748, 0, + 0, 0, 0, 0, -111, 0, 0, 0, 721, 0, + 0, 782, 0, 0, 0, 0, 0, -104, 0, 0, + 0, 1195, 717, 726, 0, 0, 781, 0, 3786, 0, + 0, 781, 793, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 0, 1366, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 655, 371, 0, 0, 0, 737, 0, - 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 750, 0, 756, 0, 0, 6, - 0, 0, 0, 0, 0, -2, 0, 0, 1490, 0, + 0, 0, 21, 0, 1068, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 717, 398, 0, 0, 0, 795, + 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 814, 0, 817, 0, 0, + 400, 0, 0, 0, 0, 0, -25, 0, 0, 1195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 0, 0, 0, 0, 0, 0, 0, 212, - 0, 0, 238, 0, 0, 759, 748, 0, 0, 655, - 0, 0, 0, 0, 0, 383, 0, 655, 737, 0, - 0, 0, 0, 0, 0, 0, 394, 0, 655, 0, - 0, 0, 0, 0, 760, 212, 0, 0, 0, 0, - 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, - 306, 677, 0, 0, 0, 655, 0, 0, 0, 212, - 0, 0, 0, 0, 0, 0, 0, 732, 0, 0, - 0, 0, 0, 0, 0, 678, 0, 0, 0, 0, - 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, - 0, 0, 0, 0, -113, 0, 0, 0, 0, 655, - 0, 0, + 0, 0, 498, 0, 0, 0, 0, 0, 0, 0, + 214, 0, 0, 295, 0, 0, 826, 812, 0, 0, + 717, 0, 0, 0, 0, 0, 411, 0, 717, 795, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 717, + 0, 0, 0, 0, 0, 829, 214, 0, 0, 0, + 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 265, 746, 0, 0, 0, 717, 0, 0, 0, + 214, 0, 0, 0, 0, 0, 0, 0, 781, 0, + 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, + 0, 0, 0, 717, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -97, 0, 0, 0, 0, -97, 0, 0, 0, 0, + 717, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 797, 0, 0, 731, - 804, -46, 0, 763, 739, -132, 0, 0, 0, 0, - -91, -354, 0, 0, 0, 2313, 0, 528, 0, 0, - 60, -38, 366, 0, 0, -45, -336, 399, 0, 0, - -300, -383, 367, 0, 0, 0, 0, 787, 791, 0, - 758, -319, 657, 115, -49, 0, 33, -165, 0, 0, - -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 407, 396, 0, 321, - 0, 0, 0, 0, 0, 354, 356, 0, 0, 0, - 0, 0, 707, 708, 580, 0, -41, 0, 0, 0, + 0, 0, 0, -4, 0, 0, 866, 0, 0, 796, + 870, -46, 0, 828, 806, -132, 0, 0, 0, 0, + -91, -353, 0, 0, 0, 3899, 0, 593, 0, 0, + 60, 561, 423, 0, 0, -45, -319, 461, 0, 0, + -474, -218, 420, 0, 0, 0, 0, 843, 852, 0, + 819, -267, 706, -166, -49, -18, 0, 375, -183, 0, + 0, -356, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 459, 443, 0, + 367, 0, 0, 0, 0, 0, 404, 405, 0, 0, + 0, 0, 0, 757, 763, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 565, 0, 0, 0, 676, 0, 692, 0, 0, 0, - 0, 0, 0, 741, 0, 866, + 605, 0, 0, 0, 720, 0, 725, 0, 0, 0, + 0, 0, 0, 780, 0, 899, ); protected static $yyTable = array(11, - 55, 56, 57, 140, 187, 69, 99, 87, 205, 185, - 183, 98, 184, 189, 186, 137, 17, 87, 26, 87, - 137, 39, 87, 41, 42, 471, 94, 1, 97, 44, - 119, 276, 279, 89, 58, 131, 132, 561, 364, 437, - 5, 32, 54, 54, 54, 189, 58, 17, 97, 58, - 206, 429, 45, 187, 176, 219, 32, 138, 185, 183, - 102, 184, 192, 186, 58, 192, 223, 54, 54, 223, - 54, 224, 305, 28, 224, 139, 179, 221, 181, 192, - 192, 473, 29, 223, 223, 469, 187, 176, 224, 224, - 54, 185, 183, 189, 184, 97, 186, 202, 58, 89, - 86, 46, 30, 507, 219, 218, 317, 466, 511, 179, - 175, 181, 306, 219, 192, 226, 163, 515, 223, 163, - 229, 363, 32, 224, 492, 69, 221, 162, 87, 287, - 201, 54, 133, 54, 163, 540, 219, 54, 462, 117, - 174, 268, 189, 175, 495, 162, 192, 54, 463, 470, - 223, 9, 307, 546, 54, 224, 289, 553, 221, 194, - 432, 347, 146, 147, 148, 149, 150, 151, 163, 153, - 558, 289, 68, 158, 69, 189, 9, 10, 296, 162, - 564, 516, 289, 54, 290, 301, 9, 54, 9, 338, - 46, 288, 293, 287, 44, 519, 403, 34, 187, 188, - 163, 43, 10, 185, 193, 54, 26, 294, 186, 44, - 392, 162, 10, 223, 10, 225, 17, 10, 192, 541, + 55, 56, 57, 140, 102, 69, 365, 87, 205, 17, + 26, 280, 281, 100, 279, 137, 472, 87, 32, 87, + 39, 9, 520, 41, 42, 137, 94, 99, 97, 44, + 119, 58, 45, 32, 193, 131, 132, 193, 276, 470, + 17, 438, 54, 54, 54, 189, 542, 10, 97, 187, + 206, 193, 193, 516, 185, 183, 226, 184, 69, 186, + 167, 120, 224, 167, 105, 224, 115, 54, 54, 430, + 54, 114, 562, 189, 103, 217, 104, 167, 167, 224, + 224, 46, 187, 474, 163, 86, 193, 185, 318, 364, + 54, 225, 186, 226, 225, 97, 226, 46, 155, 32, + 1, 44, 163, 471, 28, 218, 288, 69, 225, 225, + 226, 226, 167, 87, 224, 386, 44, 517, 193, 296, + 384, 382, 61, 383, 508, 385, 302, 217, 349, 512, + 201, 54, 192, 54, 5, 192, 163, 54, 189, 117, + 194, 268, 493, 225, 167, 226, 224, 54, 463, 192, + 192, 433, 361, 133, 54, 290, 61, 106, 464, 217, + 467, 348, 146, 147, 148, 149, 150, 151, 163, 153, + 288, 189, 87, 158, 547, 225, 9, 226, 138, 404, + 44, 290, 44, 54, 192, 193, 9, 54, 288, 28, + 401, 559, 286, 68, 339, 403, 139, 496, 26, 29, + 227, 565, 10, 227, 387, 54, 280, 281, 358, 17, + 286, 393, 10, 223, 10, 225, 192, 227, 227, 30, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 254, 257, 258, - 261, 262, 263, 264, 265, 266, 267, 349, 269, 339, - 192, 273, 59, 562, 99, 99, 228, 246, 464, 98, - 98, 340, 280, 281, 302, 229, 357, 50, 225, 341, - 89, 225, 216, 44, 285, 44, 17, 78, 57, 188, - 316, 57, 51, 117, 222, 225, 225, 189, 17, 190, - 191, 274, 285, 157, 72, 157, 17, 9, 192, 54, - 157, 280, 281, 157, 216, 157, 73, 155, 137, 397, - 310, 289, 311, 28, 312, 313, 499, 500, 314, 315, - 225, 190, 191, 10, 226, 154, 227, 226, 188, 227, - 57, 246, 422, 222, 89, 79, 31, 289, 146, 32, - 146, 226, 226, 227, 227, 146, 95, 192, 146, 289, - 146, 157, 225, 290, 117, 275, 117, 61, 155, 448, - 85, 188, 353, 84, 28, 222, 377, 337, 358, 190, - 191, 75, 446, 28, 54, 445, 226, 117, 227, 290, - 192, 165, 187, 54, 165, 157, 157, 185, 183, 137, - 184, 284, 186, 290, 290, 290, 146, 474, 514, 165, - 412, 533, 534, 458, 393, 179, 457, 181, 226, 348, - 227, 129, 81, 82, 129, 117, 182, 180, 190, 191, - 117, 246, 54, 130, 408, 83, 130, 177, 178, 506, - 146, 146, 360, 165, 133, 192, 192, 133, 99, 223, - 223, 61, 135, 97, 224, 224, 136, 137, 430, 182, - 180, 190, 191, 37, 38, 39, 54, 141, 142, 54, - 177, 178, 54, 156, 229, 165, 144, 229, 117, 449, - 400, 189, 159, 188, 160, 402, 454, 455, 544, 198, - 199, 229, 229, 200, 105, 54, 115, 289, 289, 289, - 203, 114, 192, 214, 103, 554, 104, 105, 286, 115, - 295, 287, 292, 476, 114, 303, 297, 103, 298, 104, - 304, 309, 412, 319, 567, 487, 229, 412, 289, 154, - 157, 157, 157, 157, 157, 157, 130, 63, 64, 65, - 66, 67, 336, 228, 343, 345, 228, 54, 117, 351, - 356, 508, 61, 510, 289, 359, 157, 374, 229, 375, - 228, 228, 378, 380, 388, 61, 54, 389, 289, 289, - 289, 391, 412, 190, 191, 146, 146, 146, 146, 146, - 146, 394, 235, 157, 411, 235, 401, 106, 235, 412, - 395, 396, 399, 405, 409, 228, 410, 117, 414, 412, - 106, 146, 235, 235, 417, 235, 415, 235, 416, 418, - 157, 157, 157, 157, 419, 428, 157, 559, 431, 438, - 62, 63, 64, 65, 66, 67, 440, 228, 146, 432, - 157, 157, 157, 157, 441, 157, 157, 235, 235, 442, - 157, 157, 157, 157, 157, 444, 451, 452, 456, 459, - 460, 225, 225, 468, 461, 146, 146, 146, 146, 475, - 68, 146, 478, 479, 482, 483, 481, 188, 235, 235, - 484, 489, 157, 157, 493, 146, 146, 146, 146, 490, - 146, 146, 496, 509, 512, 146, 192, 146, 146, 146, - 13, 187, 176, 520, 518, 521, 185, 183, 527, 184, - 157, 186, 166, 528, 531, 166, 538, 226, 226, 227, - 227, 543, 230, 542, 179, 230, 181, 146, 146, 166, - 166, 145, 63, 64, 65, 66, 67, 545, 550, 230, - 230, 552, 557, 560, 145, 63, 64, 65, 66, 67, - 563, 568, 570, 385, 11, 146, 30, 10, 383, 381, - 572, 382, 14, 384, 166, 182, 180, 190, 191, 205, - 10, 28, 161, 165, 230, 41, 177, 178, 14, 15, - 16, 17, 18, 19, 110, 20, 231, 199, 40, 231, - 189, 276, 161, 277, 200, 278, 166, 110, 165, 98, - 161, 21, 57, 231, 231, 51, 230, 165, 81, 197, - 82, 113, 320, 321, 322, 161, 78, 109, 134, 80, - 79, 136, 137, 27, 113, 320, 321, 322, 101, 23, - 109, 323, 324, 325, 326, 100, 327, 328, 231, 77, - 346, 329, 386, 330, 323, 324, 325, 326, 494, 327, - 328, 472, 53, 497, 329, 52, 330, 229, 229, 17, - 17, 134, 17, 17, 17, 17, 17, 17, 271, 17, - 231, 477, 488, 107, 108, 525, 551, 526, 221, 222, - 17, 17, 17, 17, 17, 17, 107, 108, 355, 14, - 15, 16, 207, 18, 19, 282, 20, 350, 204, 279, - 279, 331, 279, 279, 279, 279, 279, 279, 278, 279, - 40, 0, 21, 17, 331, 17, 17, 0, 0, 0, - 279, 279, 0, 279, 279, 279, 228, 228, 0, 0, - 0, 0, 232, 0, 0, 232, 0, 0, 0, 0, - 0, 0, 0, 208, 0, 17, 17, 17, 17, 232, - 232, 0, 0, 279, 0, 279, 279, 0, 235, 235, - 235, 235, 235, 0, 0, 235, 235, 0, 235, 235, - 235, 235, 235, 235, 0, 0, 188, 0, 0, 0, - 0, 0, 0, 0, 232, 279, 279, 279, 279, 0, - 0, 0, 0, 0, 0, 192, 205, 205, 0, 0, - 205, 205, 205, 205, 205, 0, 205, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 232, 205, 205, 205, - 205, 205, 205, 268, 268, 0, 0, 268, 268, 268, - 268, 268, 268, 268, 0, 0, 0, 241, 0, 0, - 241, 0, 0, 0, 268, 268, 268, 268, 268, 268, - 205, 0, 205, 205, 241, 241, 0, 0, 0, 0, - 0, 0, 0, 0, 182, 180, 190, 191, 0, 0, - 0, 0, 0, 0, 0, 177, 178, 268, 0, 268, - 268, 0, 17, 205, 205, 205, 0, 242, 0, 241, - 242, 0, 0, 0, 0, 230, 230, 0, 0, 0, - 0, 0, 0, 2, 242, 242, 0, 0, 0, 0, - 268, 268, 268, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 279, 243, 0, 0, 243, 0, 243, 243, - 243, 0, 17, 17, 17, 0, 0, 0, 0, 242, - 0, 0, 17, 243, 243, 243, 243, 243, 243, 0, - 0, 0, 17, 17, 17, 0, 0, 0, 0, 231, - 231, 0, 17, 250, 0, 0, 250, 0, 0, 250, - 0, 242, 279, 279, 279, 0, 0, 0, 243, 243, - 0, 0, 279, 250, 250, 0, 250, 0, 250, 0, - 0, 0, 279, 279, 279, 0, 0, 0, 0, 0, - 0, 0, 279, 191, 0, 0, 191, 0, 0, 243, - 243, 0, 0, 0, 0, 0, 0, 0, 250, 250, - 191, 191, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 17, 17, 17, 0, 17, 17, 17, 17, - 17, 17, 0, 0, 0, 0, 297, 0, 0, 250, - 250, 0, 0, 0, 0, 191, 0, 0, 0, 0, - 0, 0, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 205, 0, 279, 279, 0, 279, 279, 279, 279, - 279, 279, 0, 0, 0, 0, 0, 191, 0, 0, - 205, 0, 2, 2, 2, 2, 2, 2, 268, 2, - 0, 251, 0, 0, 251, 232, 232, 0, 0, 0, - 0, 0, 2, 2, 2, 0, 2, 268, 251, 251, - 0, 251, 0, 251, 0, 172, 172, 0, 0, 172, - 172, 172, 172, 172, 172, 172, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 172, 172, 172, 172, - 172, 172, 0, 251, 251, 0, 0, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 0, 17, - 205, 205, 0, 205, 205, 205, 205, 205, 205, 172, - 0, 172, 172, 0, 251, 251, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 5, 0, 268, 268, 0, - 268, 268, 268, 268, 268, 268, 0, 0, 0, 0, - 241, 241, 172, 172, 172, 297, 0, 0, 0, 13, - 0, 0, 32, 32, 0, 0, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 297, 297, 297, 297, 297, - 297, 297, 297, 32, 32, 32, 32, 32, 32, 87, - 87, 0, 0, 87, 87, 87, 87, 87, 297, 87, - 242, 242, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 87, 87, 87, 87, 0, 32, 0, 32, 32, - 0, 0, 0, 0, 0, 243, 243, 0, 0, 243, - 243, 243, 243, 243, 0, 0, 243, 243, 0, 243, - 243, 243, 243, 243, 243, 87, 87, 0, 0, 32, - 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, - 250, 250, 250, 250, 0, 0, 87, 87, 87, 250, - 250, 250, 250, 250, 250, 6, 262, 262, 0, 0, - 262, 262, 262, 262, 262, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 262, 262, - 262, 262, 262, 264, 264, 0, 191, 264, 264, 264, - 264, 264, 0, 264, 5, 5, 5, 5, 5, 5, - 0, 5, 0, 0, 264, 264, 264, 264, 264, 264, - 172, 0, 262, 262, 5, 5, 5, 5, 14, 15, - 16, 17, 18, 19, 0, 20, 0, 0, 0, 172, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 264, - 264, 21, 0, 262, 262, 262, 0, 0, 0, 0, + 261, 262, 263, 264, 265, 266, 267, 350, 269, 59, + 192, 398, 227, 158, 340, 158, 228, 246, 273, 188, + 158, 100, 100, 158, 303, 158, 341, 31, 228, 17, + 32, 228, 89, 306, 342, 99, 99, 317, 192, 351, + 290, 17, 9, 117, 227, 228, 228, 293, 563, 17, + 34, 145, 63, 64, 65, 66, 67, 147, 274, 147, + 54, 541, 294, 50, 147, 137, 290, 147, 10, 147, + 311, 158, 312, 307, 313, 314, 43, 10, 315, 316, + 228, 190, 191, 554, 188, 130, 63, 64, 65, 66, + 67, 246, 51, 423, 220, 57, 89, 220, 57, 475, + 137, 9, 284, 192, 110, 158, 158, 72, 230, 190, + 191, 230, 228, 308, 117, 147, 117, 188, 222, 73, + 449, 222, 275, 354, 155, 230, 230, 10, 78, 359, + 28, 113, 321, 322, 323, 54, 192, 109, 117, 338, + 500, 501, 154, 75, 54, 28, 220, 57, 79, 147, + 147, 324, 325, 326, 327, 85, 328, 329, 84, 515, + 230, 330, 81, 331, 82, 394, 2, 193, 193, 447, + 222, 83, 446, 465, 190, 191, 117, 105, 220, 115, + 95, 117, 246, 54, 114, 409, 99, 103, 459, 104, + 507, 458, 230, 107, 108, 224, 224, 135, 130, 136, + 58, 130, 222, 58, 97, 534, 535, 190, 191, 431, + 164, 131, 134, 164, 131, 134, 223, 54, 58, 223, + 54, 332, 137, 54, 225, 225, 226, 226, 164, 117, + 450, 250, 141, 142, 250, 61, 144, 455, 456, 545, + 158, 158, 158, 158, 158, 158, 54, 159, 250, 250, + 156, 250, 58, 250, 229, 160, 555, 229, 198, 199, + 166, 200, 164, 166, 477, 192, 158, 412, 223, 203, + 106, 229, 229, 214, 286, 568, 488, 292, 166, 231, + 287, 295, 231, 250, 147, 147, 147, 147, 147, 147, + 37, 38, 39, 158, 164, 297, 231, 231, 54, 117, + 223, 298, 509, 304, 511, 305, 229, 290, 290, 290, + 147, 310, 166, 320, 250, 250, 154, 54, 337, 344, + 158, 158, 158, 158, 346, 357, 158, 352, 360, 375, + 376, 231, 379, 227, 227, 381, 389, 147, 229, 291, + 158, 158, 158, 158, 166, 158, 158, 392, 117, 390, + 158, 158, 158, 158, 158, 2, 2, 2, 2, 2, + 2, 396, 2, 231, 147, 147, 147, 147, 560, 290, + 147, 395, 397, 402, 400, 2, 2, 2, 406, 2, + 410, 411, 158, 158, 147, 147, 147, 147, 415, 147, + 147, 418, 89, 416, 147, 417, 147, 147, 147, 419, + 420, 228, 228, 429, 145, 63, 64, 65, 66, 67, + 158, 17, 17, 432, 17, 17, 17, 17, 17, 17, + 433, 17, 439, 441, 442, 443, 147, 147, 445, 452, + 10, 453, 17, 17, 17, 17, 17, 17, 280, 280, + 457, 280, 280, 280, 280, 280, 280, 13, 280, 460, + 461, 462, 476, 469, 147, 480, 202, 110, 89, 280, + 280, 479, 280, 280, 280, 17, 483, 17, 17, 378, + 482, 232, 219, 484, 232, 485, 490, 491, 494, 229, + 497, 230, 230, 510, 113, 321, 322, 323, 232, 232, + 109, 513, 280, 519, 280, 280, 521, 17, 17, 17, + 17, 522, 528, 413, 324, 325, 326, 327, 291, 328, + 329, 529, 539, 532, 330, 543, 331, 544, 546, 558, + 551, 561, 553, 232, 280, 280, 280, 280, 61, 564, + 289, 569, 11, 571, 291, 206, 206, 573, 290, 206, + 206, 206, 206, 206, 30, 206, 107, 108, 291, 291, + 291, 14, 206, 162, 28, 232, 206, 206, 206, 206, + 206, 206, 269, 269, 290, 41, 269, 269, 269, 269, + 269, 269, 269, 200, 332, 166, 40, 277, 290, 290, + 290, 162, 278, 269, 269, 269, 269, 269, 269, 206, + 279, 206, 206, 166, 250, 250, 250, 250, 250, 201, + 57, 99, 162, 51, 250, 250, 250, 250, 250, 250, + 198, 166, 81, 162, 82, 413, 269, 78, 269, 269, + 413, 135, 206, 206, 206, 229, 80, 229, 229, 79, + 137, 138, 27, 101, 17, 23, 14, 15, 16, 207, + 18, 19, 100, 20, 77, 347, 495, 498, 53, 269, + 269, 269, 231, 231, 473, 233, 52, 271, 233, 21, + 489, 280, 134, 552, 478, 413, 526, 527, 221, 356, + 187, 176, 233, 233, 222, 185, 183, 204, 184, 282, + 186, 278, 413, 40, 17, 17, 17, 0, 0, 0, + 208, 0, 413, 179, 17, 181, 0, 62, 63, 64, + 65, 66, 67, 0, 17, 17, 17, 233, 0, 0, + 0, 280, 280, 280, 17, 14, 15, 16, 17, 18, + 19, 280, 20, 0, 0, 0, 0, 175, 0, 0, + 0, 280, 280, 280, 0, 0, 0, 68, 21, 233, + 0, 280, 0, 173, 173, 0, 0, 173, 173, 173, + 173, 173, 173, 173, 0, 0, 0, 174, 0, 189, + 0, 0, 0, 0, 173, 173, 173, 173, 173, 173, + 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, 0, 0, 173, 0, 173, + 173, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 206, 0, 280, 280, 0, 280, 280, 280, 280, 280, + 280, 0, 0, 242, 0, 0, 242, 0, 0, 206, + 173, 173, 173, 0, 0, 0, 0, 269, 0, 0, + 242, 242, 0, 0, 232, 232, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, + 0, 0, 0, 0, 32, 32, 0, 0, 32, 32, + 32, 32, 32, 32, 32, 242, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, + 32, 0, 0, 0, 0, 0, 0, 0, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 242, 17, 206, + 206, 0, 206, 206, 206, 206, 206, 206, 32, 0, + 32, 32, 0, 0, 0, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 0, 0, 269, 269, 0, 269, + 269, 269, 269, 269, 269, 188, 0, 0, 0, 0, + 0, 32, 32, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 87, 87, 0, 0, 87, + 87, 87, 87, 87, 0, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 87, 87, 87, 87, + 87, 263, 263, 0, 0, 263, 263, 263, 263, 263, + 0, 263, 0, 0, 0, 0, 243, 0, 0, 243, + 0, 6, 263, 263, 263, 263, 263, 263, 173, 0, + 0, 87, 87, 243, 243, 0, 0, 0, 233, 233, + 0, 0, 0, 182, 180, 190, 191, 173, 0, 0, + 0, 0, 0, 0, 177, 178, 0, 263, 263, 0, + 0, 0, 87, 87, 87, 0, 0, 0, 243, 0, + 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, + 5, 13, 5, 0, 0, 0, 0, 0, 263, 263, + 263, 0, 0, 0, 0, 5, 5, 5, 5, 0, + 243, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 209, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 0, 0, 173, 173, 0, + 173, 173, 173, 173, 173, 173, 265, 265, 0, 0, + 265, 265, 265, 265, 265, 0, 265, 0, 0, 32, + 0, 0, 0, 0, 0, 0, 0, 265, 265, 265, + 265, 265, 265, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 206, 206, 0, 0, 206, 206, 206, 206, + 206, 0, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 265, 265, 0, 206, 206, 206, 206, 0, + 0, 0, 0, 0, 0, 0, 242, 242, 0, 0, + 6, 6, 6, 6, 6, 6, 0, 6, 0, 0, + 0, 0, 0, 265, 265, 265, 206, 0, 206, 206, + 6, 6, 6, 6, 0, 0, 0, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 0, 0, 32, 32, + 87, 32, 32, 32, 32, 32, 32, 0, 0, 206, + 298, 206, 0, 0, 252, 0, 0, 252, 87, 87, + 14, 15, 16, 207, 18, 19, 263, 20, 87, 0, + 0, 252, 252, 0, 252, 0, 252, 0, 0, 0, + 0, 0, 0, 21, 0, 263, 14, 15, 16, 17, + 18, 19, 0, 20, 213, 213, 0, 0, 213, 213, + 213, 213, 213, 213, 213, 0, 252, 252, 0, 21, + 0, 0, 0, 0, 208, 0, 0, 213, 213, 213, + 213, 0, 0, 0, 0, 0, 0, 0, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 252, 252, 87, + 87, 0, 87, 87, 87, 87, 87, 87, 213, 0, + 213, 213, 0, 0, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 0, 0, 263, 263, 0, 263, 263, + 263, 263, 263, 263, 0, 0, 0, 0, 0, 243, + 243, 213, 0, 213, 0, 0, 0, 0, 0, 0, + 13, 0, 257, 257, 0, 0, 257, 257, 257, 257, + 257, 265, 257, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 257, 257, 257, 257, 257, 298, + 265, 0, 0, 0, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 206, 0, 298, + 298, 298, 298, 298, 298, 298, 298, 0, 257, 257, + 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, + 258, 258, 298, 0, 258, 258, 258, 258, 258, 0, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 257, 258, 258, 258, 258, 258, 258, 0, 0, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 0, 0, + 265, 265, 0, 265, 265, 265, 265, 265, 265, 0, + 0, 13, 0, 0, 0, 0, 258, 258, 0, 0, + 0, 0, 0, 0, 0, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 0, 17, 206, 206, 0, 206, + 206, 206, 206, 206, 206, 436, 0, 258, 258, 0, + 256, 256, 0, 0, 256, 256, 256, 256, 256, 0, + 256, 0, 0, 0, 0, 0, 0, 0, 0, 213, + 0, 256, 256, 256, 256, 256, 256, 0, 0, 14, + 15, 16, 207, 18, 19, 0, 20, 0, 213, 0, + 259, 259, 0, 0, 259, 259, 259, 259, 259, 0, + 259, 0, 21, 0, 0, 0, 256, 256, 0, 0, + 0, 259, 259, 259, 259, 259, 259, 252, 252, 252, + 252, 252, 0, 0, 0, 0, 0, 252, 252, 252, + 252, 252, 252, 208, 0, 0, 0, 256, 256, 0, + 0, 0, 0, 0, 0, 0, 259, 259, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 0, 257, 213, 213, + 0, 213, 213, 213, 213, 213, 213, 259, 259, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 260, 260, + 0, 0, 260, 260, 260, 260, 260, 0, 260, 0, + 14, 15, 16, 207, 18, 19, 0, 20, 0, 260, + 260, 260, 260, 260, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 21, 0, 0, 249, 249, 0, 0, + 249, 249, 249, 249, 249, 258, 249, 0, 0, 0, + 0, 0, 0, 0, 260, 260, 0, 249, 249, 249, + 249, 249, 249, 0, 208, 257, 257, 0, 0, 257, + 257, 257, 257, 257, 0, 0, 257, 257, 0, 257, + 257, 257, 257, 257, 257, 260, 260, 0, 0, 0, + 0, 0, 249, 249, 0, 0, 187, 176, 0, 0, + 227, 185, 183, 0, 184, 0, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 163, 181, 173, 249, 249, 0, 0, 0, 0, 0, + 0, 0, 0, 258, 258, 256, 0, 258, 258, 258, + 258, 258, 0, 0, 258, 258, 0, 258, 258, 258, + 258, 258, 258, 175, 0, 0, 187, 176, 0, 0, + 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 259, 0, 0, 377, 179, + 163, 181, 173, 174, 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, - 264, 264, 264, 0, 251, 251, 251, 251, 251, 0, - 0, 0, 0, 0, 251, 251, 251, 251, 251, 251, - 0, 0, 0, 0, 0, 0, 13, 0, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 32, 0, 172, - 172, 0, 172, 172, 172, 172, 172, 172, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 209, 205, 205, 0, 87, 0, 205, 205, 205, 205, - 0, 205, 0, 0, 6, 6, 6, 6, 6, 6, - 0, 6, 87, 87, 205, 205, 205, 205, 0, 0, - 0, 0, 87, 0, 6, 6, 6, 6, 187, 0, - 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, - 0, 0, 0, 0, 0, 205, 0, 205, 205, 0, - 0, 179, 0, 181, 0, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 0, 0, 32, 32, 0, 32, - 32, 32, 32, 32, 32, 0, 0, 0, 205, 0, - 205, 0, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 262, 0, 87, 87, 0, 87, 87, 87, 87, - 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 0, 0, 0, 212, 212, 189, 264, 0, - 212, 212, 212, 212, 212, 212, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 264, 212, 212, - 212, 212, 0, 0, 0, 14, 15, 16, 207, 18, - 19, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 212, - 0, 212, 212, 0, 0, 0, 0, 0, 0, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 0, 0, - 262, 262, 0, 262, 262, 262, 262, 262, 262, 208, - 0, 0, 212, 0, 212, 0, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 0, 0, 264, 264, 0, - 264, 264, 264, 264, 264, 264, 256, 256, 0, 0, - 256, 256, 256, 256, 256, 0, 256, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 256, 256, 256, - 256, 256, 256, 257, 257, 0, 0, 257, 257, 257, - 257, 257, 0, 257, 0, 0, 205, 0, 0, 0, - 0, 0, 0, 0, 257, 257, 257, 257, 257, 257, - 0, 0, 256, 256, 0, 205, 0, 0, 0, 0, - 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, - 255, 255, 255, 188, 255, 0, 0, 0, 0, 257, - 257, 0, 0, 256, 256, 255, 255, 255, 255, 255, - 255, 0, 192, 258, 258, 0, 0, 258, 258, 258, - 258, 258, 0, 258, 0, 0, 0, 0, 0, 0, - 257, 257, 0, 0, 258, 258, 258, 258, 258, 258, - 255, 255, 0, 0, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 0, 17, 205, 205, 0, 205, 205, - 205, 205, 205, 205, 0, 0, 0, 0, 0, 258, - 258, 255, 255, 0, 0, 0, 0, 0, 0, 0, - 212, 182, 180, 190, 191, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, - 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 259, 0, 0, 259, 259, 259, 259, 259, 0, - 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 259, 259, 259, 259, 259, 259, 248, 248, 0, - 0, 248, 248, 248, 248, 248, 0, 248, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, - 248, 248, 248, 248, 0, 0, 259, 259, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 0, 0, 212, - 212, 0, 212, 212, 212, 212, 212, 212, 0, 0, - 0, 256, 0, 248, 248, 0, 0, 259, 259, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 0, 0, 248, 248, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 285, 0, 0, 0, 187, 176, 0, 0, 227, - 185, 183, 0, 184, 0, 186, 0, 0, 0, 255, - 0, 0, 0, 0, 0, 0, 0, 435, 179, 163, - 181, 173, 0, 0, 0, 0, 0, 0, 0, 256, - 256, 0, 0, 256, 256, 256, 256, 256, 258, 0, - 256, 256, 0, 256, 256, 256, 256, 256, 256, 0, - 0, 0, 175, 0, 0, 0, 257, 257, 0, 0, - 257, 257, 257, 257, 257, 0, 0, 257, 257, 0, - 257, 257, 257, 257, 257, 257, 0, 0, 0, 0, - 0, 0, 174, 0, 189, 0, 0, 0, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 258, 258, 0, 0, - 258, 258, 258, 258, 258, 259, 0, 258, 258, 0, - 258, 258, 258, 258, 258, 258, 14, 15, 16, 207, - 18, 19, 0, 20, 0, 0, 0, 0, 187, 176, - 0, 0, 248, 185, 183, 0, 184, 0, 186, 21, - 0, 0, 14, 15, 16, 207, 18, 19, 0, 20, - 376, 179, 163, 181, 173, 0, 187, 176, 0, 0, - 436, 185, 183, 0, 184, 21, 186, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 0, 0, 179, - 163, 181, 173, 0, 0, 175, 0, 0, 0, 0, - 0, 0, 0, 259, 259, 0, 208, 259, 259, 259, - 259, 259, 0, 0, 259, 259, 0, 259, 259, 259, - 259, 259, 259, 175, 0, 174, 0, 189, 0, 0, - 248, 248, 0, 0, 248, 248, 248, 248, 248, 0, - 0, 248, 248, 0, 248, 248, 248, 248, 248, 248, - 188, 0, 0, 174, 0, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 0, 0, 0, 0, 187, 176, 0, 0, 0, 185, + 0, 0, 0, 175, 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, 174, 0, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 259, 259, 0, 0, 259, 259, 259, + 259, 259, 0, 260, 259, 259, 0, 259, 259, 259, + 259, 259, 259, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 176, 0, 0, 437, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 447, 179, 163, 181, - 173, 187, 176, 0, 0, 480, 185, 183, 0, 184, + 0, 249, 0, 0, 0, 0, 0, 179, 163, 181, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, + 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 175, 0, 0, 448, 179, 163, 181, 173, 0, + 0, 260, 260, 0, 0, 260, 260, 260, 260, 260, + 0, 188, 260, 260, 0, 260, 260, 260, 260, 260, + 260, 174, 0, 189, 0, 0, 0, 0, 0, 175, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 249, + 249, 0, 0, 249, 249, 249, 249, 249, 0, 0, + 249, 249, 0, 249, 249, 249, 249, 249, 249, 174, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 187, + 176, 188, 0, 481, 185, 183, 0, 184, 0, 186, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 0, 179, 163, 181, 173, 0, 0, 0, 182, + 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, + 177, 178, 0, 161, 162, 168, 171, 170, 172, 0, + 0, 0, 0, 187, 176, 0, 175, 486, 185, 183, + 0, 184, 0, 186, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 163, 181, 173, + 0, 0, 0, 0, 0, 0, 174, 0, 189, 182, + 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, + 177, 178, 0, 161, 162, 168, 171, 170, 172, 0, + 175, 187, 176, 0, 0, 487, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 179, 163, 181, 173, 0, 188, + 174, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 187, 176, 0, 0, 530, 185, 183, 175, 184, + 0, 186, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, 0, - 0, 175, 0, 0, 0, 0, 0, 0, 182, 180, - 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 175, 0, - 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 187, 176, - 0, 0, 485, 185, 183, 0, 184, 0, 186, 0, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 179, 163, 181, 173, 0, 443, 0, 0, 0, - 0, 0, 192, 450, 0, 0, 0, 0, 187, 176, - 0, 188, 486, 185, 183, 0, 184, 0, 186, 0, - 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, - 192, 179, 163, 181, 173, 187, 176, 0, 0, 529, - 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 189, 179, 163, - 181, 173, 498, 0, 0, 175, 0, 0, 0, 0, - 505, 182, 180, 190, 191, 164, 165, 166, 167, 169, - 0, 513, 177, 178, 0, 161, 162, 168, 171, 170, - 172, 0, 175, 0, 0, 174, 0, 189, 0, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 539, 0, - 177, 178, 0, 161, 162, 168, 171, 170, 172, 188, - 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 556, 0, 0, 192, 0, - 0, 0, 0, 187, 176, 0, 188, 530, 185, 183, - 0, 184, 566, 186, 0, 0, 0, 569, 0, 0, - 0, 0, 571, 0, 0, 192, 179, 163, 181, 173, - 187, 176, 0, 0, 0, 185, 183, 0, 184, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 565, 0, 179, 163, 181, 173, 0, 0, 0, - 175, 0, 0, 0, 0, 0, 0, 182, 180, 190, + 0, 0, 0, 0, 0, 0, 192, 0, 174, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, 178, - 0, 161, 162, 168, 171, 170, 172, 175, 0, 0, - 174, 0, 189, 0, 182, 180, 190, 191, 164, 165, - 166, 167, 169, 188, 0, 177, 178, 0, 161, 162, - 168, 171, 170, 172, 0, 0, 0, 174, 0, 189, - 0, 0, 192, 0, 254, 254, 0, 0, 254, 254, - 254, 254, 254, 0, 254, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 0, 254, 254, 254, 254, 254, - 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 254, 254, 0, 0, 0, 0, 0, 0, 0, 192, - 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, - 0, 0, 177, 178, 0, 161, 162, 168, 171, 170, - 172, 254, 254, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 162, 168, 171, 170, 172, 0, 174, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, + 165, 166, 167, 169, 188, 0, 177, 178, 0, 161, + 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 187, 176, 0, 0, 531, + 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 179, 163, + 181, 173, 0, 0, 0, 0, 0, 0, 188, 0, + 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, + 0, 185, 183, 0, 184, 0, 186, 192, 0, 0, + 0, 0, 175, 0, 0, 0, 0, 0, 0, 179, + 0, 181, 182, 180, 190, 191, 164, 165, 166, 167, + 169, 0, 0, 177, 178, 0, 161, 162, 168, 171, + 170, 172, 174, 0, 189, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 182, 180, 190, 191, 164, 165, 166, 167, 169, - 0, 0, 177, 178, 0, 161, 162, 168, 171, 170, - 172, 0, 0, 0, 0, 0, 0, 0, 182, 180, - 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 245, 245, - 0, 0, 245, 245, 245, 245, 245, 192, 245, 0, - 0, 0, 0, 0, 0, 188, 0, 0, 0, 245, - 245, 245, 245, 245, 245, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, - 246, 246, 0, 0, 246, 246, 246, 246, 246, 0, - 246, 0, 0, 0, 245, 245, 0, 0, 0, 0, - 0, 246, 246, 246, 246, 246, 246, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, 191, - 164, 165, 166, 167, 169, 245, 245, 177, 178, 0, - 161, 162, 168, 171, 170, 172, 246, 246, 0, 0, - 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, - 167, 169, 0, 0, 177, 178, 0, 161, 162, 168, - 171, 170, 172, 0, 0, 0, 0, 246, 246, 0, - 247, 247, 0, 0, 247, 247, 247, 247, 247, 0, - 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 247, 247, 247, 247, 247, 0, 0, 0, + 164, 165, 166, 167, 169, 189, 0, 177, 178, 0, + 161, 162, 168, 171, 170, 172, 188, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 182, 180, 190, 191, 164, 165, + 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, + 168, 171, 170, 172, 187, 176, 0, 0, 0, 185, + 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 566, 0, 179, 163, 181, + 173, 0, 0, 0, 182, 180, 190, 191, 164, 165, + 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, + 168, 171, 170, 172, 0, 0, 0, 0, 0, 0, + 0, 175, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 188, 0, 0, 255, 255, 255, 255, 255, 255, 0, + 0, 174, 0, 189, 0, 0, 0, 0, 0, 192, + 0, 246, 246, 0, 0, 246, 246, 246, 246, 246, + 0, 246, 0, 0, 0, 0, 0, 0, 255, 255, + 0, 188, 246, 246, 246, 246, 246, 246, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, + 192, 0, 247, 247, 247, 247, 247, 0, 247, 255, + 255, 0, 0, 0, 0, 0, 0, 246, 246, 247, + 247, 247, 247, 247, 247, 0, 0, 0, 182, 180, + 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, + 178, 0, 161, 162, 168, 171, 170, 172, 246, 246, + 0, 0, 0, 0, 247, 247, 248, 248, 0, 0, + 248, 248, 248, 248, 248, 0, 248, 0, 0, 182, + 180, 190, 191, 0, 0, 0, 0, 248, 248, 248, + 248, 248, 248, 0, 0, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 247, 247, 179, 163, - 181, 173, 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, 247, 247, 0, - 187, 176, 175, 0, 0, 185, 183, 0, 184, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 179, 163, 181, 173, 0, 0, 0, + 0, 0, 248, 248, 0, 0, 0, 0, 179, 163, + 181, 173, 187, 176, 0, 0, 0, 185, 183, 0, + 184, 0, 186, 0, 0, 0, 0, 0, 0, 188, + 0, 0, 0, 248, 248, 179, 163, 181, 173, 0, + 244, 0, 175, 244, 0, 244, 244, 244, 192, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 244, 244, 244, 244, 244, 244, 0, 0, 0, 175, 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, - 184, 0, 186, 0, 0, 0, 0, 175, 0, 0, - 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, + 0, 0, 245, 0, 0, 245, 0, 245, 245, 245, + 0, 0, 0, 0, 0, 244, 244, 0, 0, 174, + 0, 189, 245, 245, 245, 245, 245, 245, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, + 191, 164, 165, 166, 167, 169, 244, 244, 177, 178, + 0, 161, 162, 168, 171, 170, 172, 245, 245, 0, + 0, 0, 0, 0, 0, 0, 0, 187, 176, 0, + 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 245, + 179, 163, 181, 173, 0, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 246, 246, 0, 0, 246, 246, + 246, 246, 246, 0, 0, 246, 246, 0, 246, 246, + 246, 246, 246, 246, 174, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 244, 189, - 0, 244, 0, 244, 244, 244, 0, 0, 0, 175, - 0, 0, 0, 0, 0, 0, 0, 0, 244, 244, - 244, 244, 244, 244, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 245, 245, 244, 244, 245, 245, 245, 245, 245, - 0, 0, 245, 245, 0, 245, 245, 245, 245, 245, - 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 244, 244, 0, 0, 0, 0, - 0, 0, 0, 246, 246, 0, 0, 246, 246, 246, - 246, 246, 0, 0, 246, 246, 0, 246, 246, 246, - 246, 246, 246, 0, 0, 0, 0, 0, 0, 237, - 0, 0, 237, 0, 0, 237, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 237, - 237, 0, 237, 0, 237, 0, 0, 0, 0, 192, - 0, 0, 0, 0, 0, 0, 236, 0, 0, 236, - 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 237, 236, 236, 0, 236, - 0, 236, 0, 247, 247, 188, 0, 247, 247, 247, - 247, 247, 0, 0, 247, 247, 0, 247, 247, 247, - 247, 247, 247, 0, 192, 237, 237, 0, 0, 0, - 0, 236, 236, 0, 0, 0, 0, 0, 182, 180, - 190, 191, 164, 165, 166, 167, 169, 188, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 238, 0, - 0, 238, 236, 236, 238, 0, 192, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 238, 238, - 0, 238, 0, 238, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 180, 190, 191, 164, 165, 166, - 167, 169, 0, 0, 177, 178, 0, 0, 162, 168, - 171, 170, 172, 238, 238, 0, 0, 0, 0, 0, + 0, 247, 247, 0, 0, 247, 247, 247, 247, 247, + 188, 0, 247, 247, 0, 247, 247, 247, 247, 247, + 247, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 0, 0, 236, 0, 0, 236, 0, 188, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 236, 236, 0, 236, 192, 236, 0, 248, + 248, 0, 0, 248, 248, 248, 248, 248, 0, 0, + 248, 248, 0, 248, 248, 248, 248, 248, 248, 0, + 0, 0, 0, 0, 0, 0, 0, 236, 236, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 180, + 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, + 178, 0, 161, 162, 168, 171, 170, 172, 236, 236, 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, - 165, 166, 167, 169, 238, 238, 177, 178, 0, 0, - 0, 168, 171, 170, 172, 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, - 244, 244, 0, 0, 244, 244, 244, 244, 244, 0, - 0, 244, 244, 0, 244, 244, 244, 244, 244, 244, - 253, 0, 0, 253, 0, 0, 253, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 234, 0, 0, 234, - 253, 253, 234, 253, 0, 253, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 234, 234, 0, 234, - 252, 234, 0, 252, 0, 0, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 253, 253, 0, 0, 0, - 252, 252, 0, 252, 0, 252, 0, 0, 0, 0, - 0, 234, 234, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 253, 0, 0, - 0, 0, 0, 0, 0, 252, 252, 0, 0, 0, - 0, 0, 234, 234, 0, 237, 237, 237, 237, 237, - 0, 0, 237, 237, 0, 237, 237, 237, 237, 237, - 237, 0, 0, 0, 0, 0, 252, 252, 0, 0, + 165, 166, 167, 169, 0, 0, 177, 178, 0, 0, + 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, + 0, 0, 244, 244, 0, 0, 244, 244, 244, 244, + 244, 0, 0, 244, 244, 0, 244, 244, 244, 244, + 244, 244, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 236, 236, 236, 236, 236, 0, 0, 236, - 236, 0, 236, 236, 236, 236, 236, 236, 233, 0, - 0, 233, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 239, 0, 0, 239, 233, 233, - 239, 233, 0, 233, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 239, 239, 0, 239, 240, 239, - 0, 240, 0, 0, 240, 0, 0, 0, 0, 0, - 0, 0, 0, 233, 233, 0, 0, 0, 240, 240, - 0, 240, 0, 240, 238, 238, 238, 238, 238, 239, - 239, 238, 238, 0, 238, 238, 238, 238, 238, 238, - 0, 0, 0, 0, 233, 233, 249, 0, 0, 249, - 0, 0, 0, 240, 240, 0, 0, 0, 0, 0, - 239, 239, 0, 249, 249, 0, 249, 0, 249, 190, - 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 240, 240, 190, 190, 0, 190, - 0, 190, 0, 0, 0, 0, 0, 0, 249, 0, + 0, 192, 0, 0, 245, 245, 0, 0, 245, 245, + 245, 245, 245, 0, 0, 245, 245, 0, 245, 245, + 245, 245, 245, 245, 238, 0, 0, 238, 0, 0, + 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 237, 0, 0, 237, 238, 238, 237, 238, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 0, 0, 0, 0, 0, 0, 0, 249, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 253, 253, 253, - 253, 0, 0, 253, 253, 0, 253, 253, 253, 253, - 253, 253, 234, 234, 234, 234, 234, 0, 0, 234, - 234, 0, 234, 234, 234, 234, 234, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 252, 252, 252, 252, - 252, 0, 0, 252, 252, 0, 252, 252, 252, 252, - 252, 252, 105, 0, 115, 0, 0, 0, 0, 114, - 0, 0, 103, 0, 104, 0, 105, 0, 115, 0, - 0, 0, 0, 114, 0, 0, 103, 0, 104, 255, - 0, 0, 105, 0, 115, 0, 0, 0, 0, 114, - 0, 0, 103, 0, 104, 259, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 115, 61, 0, 0, 0, 114, 0, - 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 106, 0, 0, 0, 251, - 0, 0, 0, 0, 233, 233, 233, 233, 233, 106, - 0, 233, 233, 0, 233, 233, 233, 233, 233, 233, - 239, 239, 239, 239, 239, 106, 0, 0, 0, 61, + 237, 237, 0, 237, 0, 237, 0, 0, 0, 0, + 182, 180, 190, 191, 164, 165, 166, 167, 169, 238, + 238, 177, 178, 0, 0, 0, 168, 171, 170, 172, + 0, 0, 0, 0, 239, 237, 237, 239, 0, 0, + 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 238, 238, 0, 0, 239, 239, 0, 239, 254, 239, + 0, 254, 0, 0, 254, 0, 237, 237, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, + 0, 254, 235, 254, 0, 235, 0, 0, 235, 239, + 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 235, 235, 0, 235, 0, 235, 0, 253, + 0, 0, 253, 254, 254, 253, 0, 0, 0, 0, + 239, 239, 0, 0, 0, 0, 0, 0, 0, 253, + 253, 0, 253, 0, 253, 0, 0, 235, 235, 0, + 0, 0, 0, 0, 254, 254, 0, 0, 236, 236, + 236, 236, 236, 0, 0, 236, 236, 0, 236, 236, + 236, 236, 236, 236, 253, 253, 0, 234, 235, 235, + 234, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 251, 0, 0, 251, 234, 234, 251, + 234, 0, 234, 0, 0, 253, 253, 0, 0, 0, + 0, 0, 0, 251, 251, 0, 251, 240, 251, 0, + 240, 0, 0, 240, 0, 0, 0, 0, 0, 0, + 0, 0, 234, 234, 0, 0, 191, 240, 240, 191, + 240, 0, 240, 0, 0, 0, 0, 0, 251, 251, + 0, 0, 0, 191, 191, 0, 191, 0, 191, 0, + 0, 0, 0, 234, 234, 0, 0, 0, 0, 0, + 0, 0, 240, 240, 0, 241, 0, 0, 241, 251, + 251, 241, 0, 0, 0, 0, 0, 0, 191, 0, + 0, 0, 0, 0, 0, 241, 241, 0, 241, 0, + 241, 0, 0, 240, 240, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 176, 0, 0, 0, 185, 183, + 191, 184, 0, 186, 0, 0, 0, 0, 0, 0, + 241, 241, 0, 0, 0, 0, 179, 0, 181, 0, + 238, 238, 238, 238, 238, 0, 0, 238, 238, 0, + 238, 238, 238, 238, 238, 238, 237, 237, 237, 237, + 237, 241, 241, 237, 237, 0, 237, 237, 237, 237, + 237, 237, 0, 0, 187, 176, 0, 0, 0, 185, + 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 179, 0, 181, + 0, 0, 189, 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, 240, 240, 240, 240, 240, 0, - 0, 0, 0, 0, 240, 240, 240, 240, 240, 240, - 0, 0, 0, 105, 106, 115, 0, 0, 0, 0, - 114, 0, 0, 103, 0, 104, 0, 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, 0, 0, 0, 0, 0, - 0, 0, 190, 190, 190, 190, 190, 0, 0, 0, - 0, 61, 190, 190, 190, 190, 190, 190, 0, 145, - 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, - 0, 0, 0, 145, 63, 64, 65, 66, 67, 0, - 0, 0, 0, 352, 0, 10, 106, 0, 0, 111, - 112, 64, 65, 66, 67, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 0, 105, 0, 115, 0, - 0, 0, 110, 114, 0, 10, 103, 0, 104, 0, - 0, 0, 0, 0, 0, 0, 110, 0, 145, 63, - 64, 65, 66, 67, 253, 0, 0, 0, 0, 113, - 0, 0, 110, 0, 0, 109, 0, 0, 105, 0, - 115, 0, 0, 113, 10, 114, 0, 0, 103, 109, - 104, 0, 0, 0, 61, 0, 0, 0, 0, 113, - 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, - 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 256, 107, 108, 0, 0, 0, 61, 0, 113, 0, - 0, 0, 0, 260, 109, 107, 108, 0, 0, 0, - 145, 63, 64, 65, 66, 67, 0, 0, 0, 0, - 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 106, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 0, 110, 0, 0, 0, 0, 0, 0, + 0, 175, 0, 0, 254, 254, 254, 254, 254, 0, + 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, + 0, 0, 0, 0, 0, 0, 0, 0, 235, 235, + 235, 235, 235, 189, 0, 235, 235, 0, 235, 235, + 235, 235, 235, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 253, 253, 253, 253, + 0, 0, 253, 253, 0, 253, 253, 253, 253, 253, + 253, 187, 0, 0, 0, 0, 185, 183, 0, 184, + 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 179, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 234, 234, 234, 234, 234, 0, 0, + 234, 234, 0, 234, 234, 234, 234, 234, 234, 251, + 251, 251, 251, 251, 0, 0, 0, 0, 0, 251, + 251, 251, 251, 251, 251, 0, 0, 0, 0, 0, + 0, 0, 0, 240, 240, 240, 240, 240, 188, 0, + 189, 0, 0, 240, 240, 240, 240, 240, 240, 191, + 191, 191, 191, 191, 0, 0, 0, 192, 0, 191, + 191, 191, 191, 191, 191, 0, 0, 105, 0, 115, + 0, 0, 0, 0, 114, 0, 0, 103, 105, 104, + 115, 0, 0, 0, 0, 114, 0, 0, 103, 0, + 104, 241, 241, 241, 241, 241, 259, 0, 0, 188, + 0, 241, 241, 241, 241, 241, 241, 105, 0, 115, + 0, 399, 0, 0, 114, 0, 0, 103, 192, 104, + 0, 0, 0, 0, 0, 61, 182, 180, 190, 191, + 0, 0, 0, 0, 255, 0, 61, 177, 178, 105, + 0, 115, 0, 0, 0, 0, 114, 0, 0, 103, + 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 0, 444, 102, 61, 0, 0, 353, 0, + 451, 106, 0, 105, 0, 115, 0, 0, 0, 0, + 114, 0, 0, 103, 0, 104, 0, 182, 180, 190, + 191, 0, 0, 0, 0, 0, 0, 61, 177, 178, + 106, 251, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 0, 115, 0, 0, 0, 0, 114, 0, + 0, 103, 0, 104, 0, 0, 188, 0, 0, 499, + 0, 61, 106, 0, 0, 0, 0, 506, 0, 253, + 0, 0, 0, 0, 0, 192, 0, 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 0, 61, + 105, 0, 115, 0, 0, 540, 0, 114, 0, 0, + 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 63, 64, 65, 66, 67, + 0, 0, 557, 0, 106, 145, 63, 64, 65, 66, + 67, 0, 0, 0, 182, 180, 190, 191, 0, 567, + 10, 0, 0, 0, 570, 177, 178, 0, 61, 572, + 0, 10, 0, 0, 145, 63, 64, 65, 66, 67, + 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, + 10, 0, 0, 106, 0, 0, 111, 112, 64, 65, + 66, 67, 0, 0, 113, 0, 0, 0, 0, 0, + 109, 0, 0, 0, 0, 113, 0, 110, 0, 0, + 0, 109, 10, 0, 0, 0, 0, 0, 0, 0, + 145, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 0, 0, 0, 110, + 109, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 260, 0, 107, 108, 145, 63, + 64, 65, 66, 67, 0, 0, 113, 107, 108, 0, + 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 107, 108, 0, 0, 113, 0, 0, 0, 0, 0, 109, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 0, 145, 63, 64, + 65, 66, 67, 0, 0, 0, 0, 0, 107, 108, + 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, + 0, 0, 0, 10, 109, 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, 145, 63, 64, 65, 66, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 63, 64, 65, 66, - 67, 0, 0, 0, 0, 0, 110, 0, 0, 0, + 110, 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, 0, 0, 113, 0, 0, 0, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, + 107, 108, 0, 109, 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, 113, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 108, 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, 107, 108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 108, ); protected static $yyCheck = array(4, - 47, 48, 49, 95, 37, 51, 125, 91, 141, 42, - 43, 125, 45, 126, 47, 91, 60, 91, 123, 91, - 91, 125, 91, 28, 29, 125, 73, 303, 75, 34, - 80, 40, 198, 72, 42, 81, 82, 124, 40, 394, - 304, 44, 47, 48, 49, 126, 41, 91, 95, 44, - 142, 388, 44, 37, 38, 44, 59, 44, 42, 43, - 58, 45, 41, 47, 59, 44, 41, 72, 73, 44, - 75, 41, 260, 46, 44, 62, 60, 44, 62, 58, - 59, 436, 46, 58, 59, 59, 37, 38, 58, 59, - 95, 42, 43, 126, 45, 142, 47, 136, 93, 138, - 63, 93, 59, 480, 93, 152, 272, 427, 485, 60, - 94, 62, 300, 152, 93, 157, 41, 59, 93, 44, - 159, 123, 125, 93, 461, 44, 93, 41, 91, 59, - 135, 136, 260, 138, 59, 519, 125, 142, 330, 80, - 124, 188, 126, 94, 464, 59, 125, 152, 340, 123, - 125, 260, 340, 530, 159, 125, 260, 541, 125, 46, - 260, 294, 103, 104, 105, 106, 107, 108, 93, 110, - 547, 210, 300, 114, 93, 126, 260, 286, 220, 93, - 557, 123, 286, 188, 91, 227, 260, 192, 260, 260, - 40, 260, 44, 123, 44, 496, 362, 64, 37, 312, - 125, 260, 286, 42, 91, 210, 311, 59, 47, 59, - 343, 125, 286, 154, 286, 156, 260, 286, 331, 520, + 47, 48, 49, 95, 58, 51, 40, 91, 141, 60, + 123, 260, 261, 125, 198, 91, 125, 91, 44, 91, + 125, 260, 497, 28, 29, 91, 73, 125, 75, 34, + 80, 42, 44, 59, 41, 81, 82, 44, 40, 59, + 91, 395, 47, 48, 49, 126, 521, 286, 95, 37, + 142, 58, 59, 59, 42, 43, 157, 45, 44, 47, + 41, 80, 41, 44, 33, 44, 35, 72, 73, 389, + 75, 40, 124, 126, 43, 41, 45, 58, 59, 58, + 59, 93, 37, 437, 41, 63, 93, 42, 272, 123, + 95, 41, 47, 41, 44, 142, 44, 40, 40, 125, + 303, 44, 59, 123, 46, 152, 59, 93, 58, 59, + 58, 59, 93, 91, 93, 37, 59, 123, 125, 220, + 42, 43, 91, 45, 481, 47, 227, 93, 295, 486, + 135, 136, 41, 138, 304, 44, 93, 142, 126, 80, + 46, 188, 462, 93, 125, 93, 125, 152, 330, 58, + 59, 260, 319, 260, 159, 260, 91, 126, 340, 125, + 428, 294, 103, 104, 105, 106, 107, 108, 125, 110, + 123, 126, 91, 114, 531, 125, 260, 125, 44, 363, + 123, 286, 125, 188, 93, 91, 260, 192, 260, 46, + 357, 548, 44, 300, 260, 362, 62, 465, 311, 46, + 41, 558, 286, 44, 126, 210, 260, 261, 309, 260, + 62, 344, 286, 154, 286, 156, 125, 58, 59, 59, 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, 297, 189, 320, - 331, 260, 260, 340, 373, 374, 340, 198, 332, 373, - 374, 332, 260, 261, 340, 304, 308, 46, 41, 340, - 59, 44, 93, 123, 44, 125, 320, 46, 41, 312, - 63, 44, 40, 224, 44, 58, 59, 126, 332, 402, - 403, 300, 62, 33, 60, 35, 340, 260, 331, 304, - 40, 260, 261, 43, 125, 45, 310, 40, 91, 351, - 251, 260, 253, 46, 255, 256, 344, 345, 259, 260, - 93, 402, 403, 286, 41, 58, 41, 44, 312, 44, - 93, 272, 378, 93, 123, 59, 283, 286, 33, 286, - 35, 58, 59, 58, 59, 40, 311, 331, 43, 91, - 45, 91, 125, 260, 295, 364, 297, 91, 40, 409, - 41, 312, 303, 44, 46, 125, 334, 40, 309, 402, - 403, 310, 41, 46, 379, 44, 93, 318, 93, 286, - 331, 41, 37, 388, 44, 125, 126, 42, 43, 91, - 45, 93, 47, 300, 301, 302, 91, 439, 490, 59, - 368, 373, 374, 41, 345, 60, 44, 62, 125, 295, - 125, 41, 61, 61, 44, 356, 400, 401, 402, 403, - 361, 362, 427, 41, 365, 41, 44, 411, 412, 479, - 125, 126, 318, 93, 41, 414, 415, 44, 123, 414, - 415, 91, 310, 490, 414, 415, 58, 91, 389, 400, - 401, 402, 403, 300, 301, 302, 461, 123, 44, 464, - 411, 412, 467, 58, 41, 125, 123, 44, 409, 410, - 356, 126, 123, 312, 410, 361, 417, 418, 528, 44, - 93, 58, 59, 44, 33, 490, 35, 300, 301, 302, - 93, 40, 331, 260, 43, 542, 45, 33, 123, 35, - 40, 260, 125, 444, 40, 257, 123, 43, 123, 45, - 44, 58, 480, 40, 561, 456, 93, 485, 260, 58, - 260, 261, 262, 263, 264, 265, 260, 261, 262, 263, - 264, 265, 260, 41, 123, 40, 44, 542, 479, 41, - 40, 482, 91, 484, 286, 93, 286, 40, 125, 125, - 58, 59, 61, 40, 91, 91, 561, 61, 300, 301, - 302, 123, 530, 402, 403, 260, 261, 262, 263, 264, - 265, 41, 38, 313, 123, 41, 41, 126, 44, 547, - 125, 125, 125, 340, 40, 93, 40, 528, 40, 557, - 126, 286, 58, 59, 40, 61, 59, 63, 59, 40, - 340, 341, 342, 343, 340, 40, 346, 548, 59, 125, - 260, 261, 262, 263, 264, 265, 41, 125, 313, 260, - 360, 361, 362, 363, 41, 365, 366, 93, 94, 59, - 370, 371, 372, 373, 374, 61, 361, 340, 61, 59, - 41, 414, 415, 93, 44, 340, 341, 342, 343, 125, - 300, 346, 123, 59, 40, 44, 125, 312, 124, 125, - 364, 123, 402, 403, 46, 360, 361, 362, 363, 321, - 365, 366, 41, 340, 123, 370, 331, 372, 373, 374, - 91, 37, 38, 41, 340, 125, 42, 43, 125, 45, - 430, 47, 41, 59, 371, 44, 125, 414, 415, 414, - 415, 123, 41, 40, 60, 44, 62, 402, 403, 58, - 59, 260, 261, 262, 263, 264, 265, 59, 125, 58, - 59, 125, 41, 58, 260, 261, 262, 263, 264, 265, - 125, 41, 123, 37, 260, 430, 123, 286, 42, 43, - 125, 45, 59, 47, 93, 400, 401, 402, 403, 41, - 286, 123, 93, 58, 93, 125, 411, 412, 280, 281, - 282, 283, 284, 285, 313, 287, 41, 257, 125, 44, - 126, 91, 41, 91, 257, 91, 125, 313, 93, 125, - 125, 303, 59, 58, 59, 123, 125, 59, 41, 125, - 41, 340, 341, 342, 343, 59, 41, 346, 364, 41, - 41, 125, 125, 7, 340, 341, 342, 343, 78, 6, - 346, 360, 361, 362, 363, 77, 365, 366, 93, 57, - 293, 370, 126, 372, 360, 361, 362, 363, 463, 365, - 366, 433, 46, 467, 370, 45, 372, 414, 415, 37, - 38, 84, 40, 41, 42, 43, 44, 45, 192, 47, - 125, 445, 457, 402, 403, 502, 536, 502, 152, 152, - 58, 59, 60, 61, 62, 63, 402, 403, 304, 280, - 281, 282, 283, 284, 285, 200, 287, 298, 138, 37, - 38, 430, 40, 41, 42, 43, 44, 45, 197, 47, - 25, -1, 303, 91, 430, 93, 94, -1, -1, -1, - 58, 59, -1, 61, 62, 63, 414, 415, -1, -1, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, 334, -1, 123, 124, 125, 126, 58, - 59, -1, -1, 91, -1, 93, 94, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, 312, -1, -1, -1, - -1, -1, -1, -1, 93, 123, 124, 125, 126, -1, - -1, -1, -1, -1, -1, 331, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 125, 58, 59, 60, - 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, -1, 41, -1, -1, - 44, -1, -1, -1, 58, 59, 60, 61, 62, 63, - 91, -1, 93, 94, 58, 59, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, -1, -1, - -1, -1, -1, -1, -1, 411, 412, 91, -1, 93, - 94, -1, 260, 124, 125, 126, -1, 41, -1, 93, - 44, -1, -1, -1, -1, 414, 415, -1, -1, -1, - -1, -1, -1, 91, 58, 59, -1, -1, -1, -1, - 124, 125, 126, -1, -1, -1, -1, -1, -1, -1, - -1, 125, 260, 38, -1, -1, 41, -1, 43, 44, - 45, -1, 310, 311, 312, -1, -1, -1, -1, 93, - -1, -1, 320, 58, 59, 60, 61, 62, 63, -1, - -1, -1, 330, 331, 332, -1, -1, -1, -1, 414, - 415, -1, 340, 38, -1, -1, 41, -1, -1, 44, - -1, 125, 310, 311, 312, -1, -1, -1, 93, 94, - -1, -1, 320, 58, 59, -1, 61, -1, 63, -1, - -1, -1, 330, 331, 332, -1, -1, -1, -1, -1, - -1, -1, 340, 41, -1, -1, 44, -1, -1, 124, - 125, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 58, 59, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, 91, -1, -1, 124, - 125, -1, -1, -1, -1, 93, -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, -1, -1, -1, -1, 125, -1, -1, - 331, -1, 280, 281, 282, 283, 284, 285, 312, 287, - -1, 41, -1, -1, 44, 414, 415, -1, -1, -1, - -1, -1, 300, 301, 302, -1, 304, 331, 58, 59, - -1, 61, -1, 63, -1, 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, 93, 94, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, 410, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 91, - -1, 93, 94, -1, 124, 125, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 91, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - 414, 415, 124, 125, 126, 260, -1, -1, -1, 91, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 46, 47, -1, -1, 280, 281, 282, 283, 284, - 285, 286, 287, 58, 59, 60, 61, 62, 63, 37, - 38, -1, -1, 41, 42, 43, 44, 45, 303, 47, - 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, -1, 91, -1, 93, 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, 93, 94, -1, -1, 124, - 125, 126, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 124, 125, 126, 414, - 415, 416, 417, 418, 419, 91, 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, 37, 38, -1, 414, 41, 42, 43, - 44, 45, -1, 47, 280, 281, 282, 283, 284, 285, - -1, 287, -1, -1, 58, 59, 60, 61, 62, 63, - 312, -1, 93, 94, 300, 301, 302, 303, 280, 281, - 282, 283, 284, 285, -1, 287, -1, -1, -1, 331, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, - 94, 303, -1, 124, 125, 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, - 124, 125, 126, -1, 404, 405, 406, 407, 408, -1, - -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, - -1, -1, -1, -1, -1, -1, 91, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, + 181, 182, 183, 184, 185, 186, 187, 297, 189, 260, + 331, 352, 93, 33, 320, 35, 340, 198, 260, 312, + 40, 373, 374, 43, 340, 45, 332, 283, 41, 320, + 286, 44, 59, 260, 340, 373, 374, 63, 331, 298, + 260, 332, 260, 224, 125, 58, 59, 44, 340, 340, + 64, 260, 261, 262, 263, 264, 265, 33, 300, 35, + 305, 520, 59, 46, 40, 91, 286, 43, 286, 45, + 251, 91, 253, 300, 255, 256, 260, 286, 259, 260, + 93, 402, 403, 542, 312, 260, 261, 262, 263, 264, + 265, 272, 40, 379, 41, 41, 123, 44, 44, 440, + 91, 260, 93, 331, 313, 125, 126, 60, 41, 402, + 403, 44, 125, 340, 295, 91, 297, 312, 41, 310, + 410, 44, 364, 304, 40, 58, 59, 286, 46, 310, + 46, 340, 341, 342, 343, 380, 331, 346, 319, 40, + 344, 345, 58, 310, 389, 46, 93, 93, 59, 125, + 126, 360, 361, 362, 363, 41, 365, 366, 44, 491, + 93, 370, 61, 372, 61, 346, 91, 414, 415, 41, + 93, 41, 44, 332, 402, 403, 357, 33, 125, 35, + 311, 362, 363, 428, 40, 366, 123, 43, 41, 45, + 480, 44, 125, 402, 403, 414, 415, 310, 41, 58, + 41, 44, 125, 44, 491, 373, 374, 402, 403, 390, + 41, 41, 41, 44, 44, 44, 41, 462, 59, 44, + 465, 430, 91, 468, 414, 415, 414, 415, 59, 410, + 411, 41, 123, 44, 44, 91, 123, 418, 419, 529, + 260, 261, 262, 263, 264, 265, 491, 123, 58, 59, + 58, 61, 93, 63, 41, 410, 543, 44, 44, 93, + 41, 44, 93, 44, 445, 414, 286, 123, 93, 93, + 126, 58, 59, 260, 123, 562, 457, 125, 59, 41, + 260, 40, 44, 93, 260, 261, 262, 263, 264, 265, + 300, 301, 302, 313, 125, 123, 58, 59, 543, 480, + 125, 123, 483, 257, 485, 44, 93, 300, 301, 302, + 286, 58, 93, 40, 124, 125, 58, 562, 260, 123, + 340, 341, 342, 343, 40, 40, 346, 41, 93, 40, + 125, 93, 61, 414, 415, 40, 91, 313, 125, 91, + 360, 361, 362, 363, 125, 365, 366, 123, 529, 61, + 370, 371, 372, 373, 374, 280, 281, 282, 283, 284, + 285, 125, 287, 125, 340, 341, 342, 343, 549, 91, + 346, 41, 125, 41, 125, 300, 301, 302, 340, 304, + 40, 40, 402, 403, 360, 361, 362, 363, 40, 365, + 366, 40, 72, 59, 370, 59, 372, 373, 374, 40, + 340, 414, 415, 40, 260, 261, 262, 263, 264, 265, + 430, 37, 38, 59, 40, 41, 42, 43, 44, 45, + 260, 47, 125, 41, 41, 59, 402, 403, 61, 361, + 286, 340, 58, 59, 60, 61, 62, 63, 37, 38, + 61, 40, 41, 42, 43, 44, 45, 91, 47, 59, + 41, 44, 125, 93, 430, 59, 136, 313, 138, 58, + 59, 123, 61, 62, 63, 91, 40, 93, 94, 335, + 125, 41, 152, 44, 44, 364, 123, 321, 46, 159, + 41, 414, 415, 340, 340, 341, 342, 343, 58, 59, + 346, 123, 91, 340, 93, 94, 41, 123, 124, 125, + 126, 125, 125, 369, 360, 361, 362, 363, 260, 365, + 366, 59, 125, 371, 370, 40, 372, 123, 59, 41, + 125, 58, 125, 93, 123, 124, 125, 126, 91, 125, + 210, 41, 260, 123, 286, 37, 38, 125, 260, 41, + 42, 43, 44, 45, 123, 47, 402, 403, 300, 301, + 302, 59, 41, 93, 123, 125, 58, 59, 60, 61, + 62, 63, 37, 38, 286, 125, 41, 42, 43, 44, + 45, 46, 47, 257, 430, 58, 125, 91, 300, 301, + 302, 41, 91, 58, 59, 60, 61, 62, 63, 91, + 91, 93, 94, 93, 404, 405, 406, 407, 408, 257, + 59, 125, 125, 123, 414, 415, 416, 417, 418, 419, + 125, 59, 41, 59, 41, 481, 91, 41, 93, 94, + 486, 364, 124, 125, 126, 305, 41, 414, 415, 41, + 125, 125, 7, 78, 260, 6, 280, 281, 282, 283, + 284, 285, 77, 287, 57, 293, 464, 468, 46, 124, + 125, 126, 414, 415, 434, 41, 45, 192, 44, 303, + 458, 260, 84, 537, 446, 531, 503, 503, 152, 305, + 37, 38, 58, 59, 152, 42, 43, 138, 45, 200, + 47, 197, 548, 25, 310, 311, 312, -1, -1, -1, + 334, -1, 558, 60, 320, 62, -1, 260, 261, 262, + 263, 264, 265, -1, 330, 331, 332, 93, -1, -1, + -1, 310, 311, 312, 340, 280, 281, 282, 283, 284, + 285, 320, 287, -1, -1, -1, -1, 94, -1, -1, + -1, 330, 331, 332, -1, -1, -1, 300, 303, 125, + -1, 340, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, 124, -1, 126, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + -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, -1, -1, 91, -1, 93, + 94, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, 41, -1, -1, 44, -1, -1, 331, + 124, 125, 126, -1, -1, -1, -1, 312, -1, -1, + 58, 59, -1, -1, 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - 125, 37, 38, -1, 312, -1, 42, 43, 44, 45, - -1, 47, -1, -1, 280, 281, 282, 283, 284, 285, - -1, 287, 330, 331, 60, 61, 62, 63, -1, -1, - -1, -1, 340, -1, 300, 301, 302, 303, 37, -1, - -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, 91, -1, 93, 94, -1, - -1, 60, -1, 62, -1, 400, 401, 402, 403, 404, + -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 46, 47, 93, 91, -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, 125, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 91, -1, + 93, 94, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, -1, -1, 124, -1, - 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 312, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, - 331, -1, -1, -1, -1, 37, 38, 126, 312, -1, - 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, 60, 61, - 62, 63, -1, -1, -1, 280, 281, 282, 283, 284, - 285, -1, 287, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 303, 91, - -1, 93, 94, -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, 334, - -1, -1, 124, -1, 126, -1, 400, 401, 402, 403, + 415, 416, 417, 418, 419, 312, -1, -1, -1, -1, + -1, 124, 125, 126, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 331, 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, -1, -1, 41, -1, -1, 44, + -1, 91, 58, 59, 60, 61, 62, 63, 312, -1, + -1, 93, 94, 58, 59, -1, -1, -1, 414, 415, + -1, -1, -1, 400, 401, 402, 403, 331, -1, -1, + -1, -1, -1, -1, 411, 412, -1, 93, 94, -1, + -1, -1, 124, 125, 126, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, 280, 281, 282, 283, 284, + 285, 91, 287, -1, -1, -1, -1, -1, 124, 125, + 126, -1, -1, -1, -1, 300, 301, 302, 303, -1, + 125, -1, -1, -1, -1, -1, -1, 91, -1, -1, + -1, -1, -1, -1, -1, 125, 400, 401, 402, 403, 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, -1, -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, 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, 93, 94, -1, 331, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 312, 47, -1, -1, -1, -1, 93, - 94, -1, -1, 124, 125, 58, 59, 60, 61, 62, - 63, -1, 331, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - 124, 125, -1, -1, 58, 59, 60, 61, 62, 63, + 61, 62, 63, -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, 93, 94, -1, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, 414, 415, -1, -1, + 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, + -1, -1, -1, 124, 125, 126, 91, -1, 93, 94, + 300, 301, 302, 303, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 312, 414, 415, 416, 417, 418, 419, -1, -1, 124, + 91, 126, -1, -1, 41, -1, -1, 44, 330, 331, + 280, 281, 282, 283, 284, 285, 312, 287, 340, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + -1, -1, -1, 303, -1, 331, 280, 281, 282, 283, + 284, 285, -1, 287, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 46, 47, -1, 93, 94, -1, 303, + -1, -1, -1, -1, 334, -1, -1, 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, 414, 415, 416, 417, 418, 419, 91, -1, 93, 94, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, -1, -1, -1, 93, - 94, 124, 125, -1, -1, -1, -1, -1, -1, -1, - 312, 400, 401, 402, 403, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - 124, 125, -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, -1, -1, - -1, 58, 59, 60, 61, 62, 63, 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, 93, 94, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, - -1, 312, -1, 93, 94, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, - -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, - -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, - -1, 125, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, -1, 45, -1, 47, -1, -1, -1, 312, - -1, -1, -1, -1, -1, -1, -1, 125, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 312, -1, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, -1, -1, -1, -1, 414, + 415, 124, -1, 126, -1, -1, -1, -1, -1, -1, + 91, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 312, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, 260, + 331, -1, -1, -1, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 312, -1, 280, + 281, 282, 283, 284, 285, 286, 287, -1, 93, 94, + -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, + 37, 38, 303, -1, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 124, + 125, 58, 59, 60, 61, 62, 63, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, 94, -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, -1, - -1, -1, 124, -1, 126, -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, -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, 280, 281, 282, 283, - 284, 285, -1, 287, -1, -1, -1, -1, 37, 38, - -1, -1, 312, 42, 43, -1, 45, -1, 47, 303, - -1, -1, 280, 281, 282, 283, 284, 285, -1, 287, - 59, 60, 61, 62, 63, -1, 37, 38, -1, -1, - 41, 42, 43, -1, 45, 303, 47, -1, -1, -1, - 334, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, -1, -1, 94, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, 334, 404, 405, 406, + -1, 91, -1, -1, -1, -1, 93, 94, -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, 125, -1, 124, 125, -1, + 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, -1, -1, 280, + 281, 282, 283, 284, 285, -1, 287, -1, 331, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, + 47, -1, 303, -1, -1, -1, 93, 94, -1, -1, + -1, 58, 59, 60, 61, 62, 63, 404, 405, 406, + 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, + 417, 418, 419, 334, -1, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, 312, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, + 280, 281, 282, 283, 284, 285, -1, 287, -1, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, 303, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 312, 47, -1, -1, -1, + -1, -1, -1, -1, 93, 94, -1, 58, 59, 60, + 61, 62, 63, -1, 334, 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, 93, 94, -1, -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, 124, 125, -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, 94, -1, 124, -1, 126, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 312, -1, -1, 124, -1, 126, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, + 417, 418, 419, 94, -1, -1, 37, 38, -1, -1, + -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, 312, -1, -1, 59, 60, + 61, 62, 63, 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, 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, -1, 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, 312, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -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, - -1, -1, -1, -1, -1, -1, 59, 60, 61, 62, - 63, 37, 38, -1, -1, 41, 42, 43, -1, 45, + -1, 312, -1, -1, -1, -1, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 94, -1, -1, 59, 60, 61, 62, 63, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, 312, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 124, -1, 126, -1, -1, -1, -1, -1, 94, + 331, -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, + -1, 126, -1, -1, -1, -1, -1, -1, -1, 37, + 38, 312, -1, 41, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 331, -1, 60, 61, 62, 63, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + -1, -1, -1, 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, -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, + 94, 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, 312, + 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, 37, 38, -1, -1, 41, 42, 43, 94, 45, + -1, 47, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, -1, - -1, 94, -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, 94, -1, - -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 352, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, - 126, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, -1, 404, -1, -1, -1, - -1, -1, 331, 411, -1, -1, -1, -1, 37, 38, - -1, 312, 41, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, - 331, 60, 61, 62, 63, 37, 38, -1, -1, 41, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, -1, 126, 60, 61, - 62, 63, 470, -1, -1, 94, -1, -1, -1, -1, - 478, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, 489, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 94, -1, -1, 124, -1, 126, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 516, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 312, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 543, -1, -1, 331, -1, - -1, -1, -1, 37, 38, -1, 312, 41, 42, 43, - -1, 45, 560, 47, -1, -1, -1, 565, -1, -1, - -1, -1, 570, -1, -1, 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, 58, -1, 60, 61, 62, 63, -1, -1, -1, - 94, -1, -1, -1, -1, -1, -1, 400, 401, 402, + -1, -1, -1, -1, -1, -1, 331, -1, 124, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 94, -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, 94, -1, -1, - 124, -1, 126, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, -1, -1, 124, -1, 126, - -1, -1, 331, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, -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, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, -1, 124, -1, + 126, -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, -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, -1, -1, 312, -1, + -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, + -1, 42, 43, -1, 45, -1, 47, 331, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, 60, + -1, 62, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 124, -1, 126, -1, 312, -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, -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, 312, -1, - -1, -1, -1, -1, -1, -1, -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, - 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 124, 125, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 93, 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, -1, -1, -1, 124, 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, + 404, 405, 406, 407, 408, 126, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 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, -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, 37, 38, -1, -1, -1, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, -1, 60, 61, 62, + 63, -1, -1, -1, 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, 94, 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, 124, -1, 126, -1, -1, -1, -1, -1, 331, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, -1, 93, 94, + -1, 312, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + 331, -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, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 124, 125, + -1, -1, -1, -1, 93, 94, 37, 38, -1, -1, + 41, 42, 43, 44, 45, -1, 47, -1, -1, 400, + 401, 402, 403, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 60, 61, - 62, 63, -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, - 37, 38, 94, -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, 93, 94, -1, -1, -1, -1, 60, 61, + 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, -1, -1, 312, + -1, -1, -1, 124, 125, 60, 61, 62, 63, -1, + 38, -1, 94, 41, -1, 43, 44, 45, 331, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, 94, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, + -1, -1, 38, -1, -1, 41, -1, 43, 44, 45, + -1, -1, -1, -1, -1, 93, 94, -1, -1, 124, + -1, 126, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 124, 125, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 93, 94, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, + 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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 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, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 38, 126, - -1, 41, -1, 43, 44, 45, -1, -1, -1, 94, - -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, 124, - -1, 126, -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, -1, -1, - -1, -1, -1, -1, 124, 125, -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, -1, -1, -1, 38, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, 331, - -1, -1, -1, -1, -1, -1, 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, 400, 401, 312, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 331, 124, 125, -1, -1, -1, - -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, 38, -1, - -1, 41, 124, 125, 44, -1, 331, -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, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, -1, 415, 416, - 417, 418, 419, 93, 94, -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, -1, -1, -1, -1, -1, -1, -1, 331, + -1, -1, 38, -1, -1, 41, -1, 312, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 61, 331, 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, -1, -1, 93, 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, 125, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 124, 125, 411, 412, -1, -1, - -1, 416, 417, 418, 419, -1, -1, -1, -1, -1, + 405, 406, 407, 408, -1, -1, 411, 412, -1, -1, + 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, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -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, - 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, -1, 124, 125, -1, -1, - -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, - -1, -1, 124, 125, -1, 404, 405, 406, 407, 408, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 93, + 94, 411, 412, -1, -1, -1, 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, -1, 58, 59, -1, 61, 38, 63, + -1, 41, -1, -1, 44, -1, 124, 125, -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, -1, 63, -1, 38, + -1, -1, 41, 93, 94, 44, -1, -1, -1, -1, + 124, 125, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, -1, 93, 94, -1, + -1, -1, -1, -1, 124, 125, -1, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 93, 94, -1, 38, 124, 125, + 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, 124, 125, -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, 41, 58, 59, 44, + 61, -1, 63, -1, -1, -1, -1, -1, 93, 94, + -1, -1, -1, 58, 59, -1, 61, -1, 63, -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, 93, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, + 63, -1, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, + 125, 45, -1, 47, -1, -1, -1, -1, -1, -1, + 93, 94, -1, -1, -1, -1, 60, -1, 62, -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, -1, 37, 38, -1, -1, -1, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, + -1, -1, 126, -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, 94, -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, 126, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -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, 124, 125, -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, 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, 41, -1, -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, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, - -1, 63, -1, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, -1, 124, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 419, 37, -1, -1, -1, -1, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 125, -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, 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, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 33, -1, 35, -1, -1, -1, -1, 40, - -1, -1, 43, -1, 45, -1, 33, -1, 35, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, 60, - -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, - -1, -1, 43, -1, 45, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, - 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, 35, 91, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - 91, -1, -1, -1, -1, 126, -1, -1, -1, 61, - -1, -1, -1, -1, 404, 405, 406, 407, 408, 126, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 404, 405, 406, 407, 408, 126, -1, -1, -1, 91, - 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, -1, 33, 126, 35, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, - -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, - -1, 91, 414, 415, 416, 417, 418, 419, -1, 260, - 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, - -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, 123, -1, 286, 126, -1, -1, 260, - 261, 262, 263, 264, 265, -1, -1, -1, -1, 286, - -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, - -1, -1, 313, 40, -1, 286, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, 313, -1, 260, 261, - 262, 263, 264, 265, 61, -1, -1, -1, -1, 340, - -1, -1, 313, -1, -1, 346, -1, -1, 33, -1, - 35, -1, -1, 340, 286, 40, -1, -1, 43, 346, - 45, -1, -1, -1, 91, -1, -1, -1, -1, 340, - -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, - 401, 402, 403, -1, -1, -1, 91, -1, 340, -1, - -1, -1, -1, 400, 346, 402, 403, -1, -1, -1, - 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, - -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, - -1, 126, -1, -1, -1, -1, 286, -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, 313, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 404, 405, 406, 407, 408, 312, -1, + 126, -1, -1, 414, 415, 416, 417, 418, 419, 404, + 405, 406, 407, 408, -1, -1, -1, 331, -1, 414, + 415, 416, 417, 418, 419, -1, -1, 33, -1, 35, + -1, -1, -1, -1, 40, -1, -1, 43, 33, 45, + 35, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, 404, 405, 406, 407, 408, 62, -1, -1, 312, + -1, 414, 415, 416, 417, 418, 419, 33, -1, 35, + -1, 353, -1, -1, 40, -1, -1, 43, 331, 45, + -1, -1, -1, -1, -1, 91, 400, 401, 402, 403, + -1, -1, -1, -1, 60, -1, 91, 411, 412, 33, + -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 126, -1, -1, 405, 58, 91, -1, -1, 123, -1, + 412, 126, -1, 33, -1, 35, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, 400, 401, 402, + 403, -1, -1, -1, -1, -1, -1, 91, 411, 412, + 126, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, 312, -1, -1, 471, + -1, 91, 126, -1, -1, -1, -1, 479, -1, 61, + -1, -1, -1, -1, -1, 331, -1, -1, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 126, -1, -1, 91, + 33, -1, 35, -1, -1, 517, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, 544, -1, 126, 260, 261, 262, 263, 264, + 265, -1, -1, -1, 400, 401, 402, 403, -1, 561, + 286, -1, -1, -1, 566, 411, 412, -1, 91, 571, + -1, 286, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, + 286, -1, -1, 126, -1, -1, 260, 261, 262, 263, + 264, 265, -1, -1, 340, -1, -1, -1, -1, -1, + 346, -1, -1, -1, -1, 340, -1, 313, -1, -1, + -1, 346, 286, -1, -1, -1, -1, -1, -1, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, + -1, -1, -1, -1, 340, -1, -1, -1, -1, 313, + 346, -1, -1, -1, -1, -1, 286, -1, -1, -1, + -1, -1, -1, -1, 400, -1, 402, 403, 260, 261, + 262, 263, 264, 265, -1, -1, 340, 402, 403, -1, + -1, -1, 346, 313, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 401, 402, 403, -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, 260, 261, 262, + 263, 264, 265, -1, -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, + -1, -1, -1, 286, 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, 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, 402, 403, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, -1, -1, 313, -1, -1, -1, + 313, -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, -1, -1, 340, -1, -1, -1, -1, -1, 346, - -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, + -1, -1, -1, -1, -1, -1, -1, 340, -1, -1, + 402, 403, -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, 340, -1, -1, -1, -1, - -1, 346, -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, - -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, 402, + 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1982,37 +1952,45 @@ public function yyparse($yyLex) { case 90: #line 481 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 98: #line 504 "grammar/xp.jay" + case 92: #line 486 "grammar/xp.jay" + { + $yyVal= array(); + foreach ($yyVals[0+$yyTop] as $pair) { + $yyVal[$pair[0]->value]= $pair[1]; + } + } break; + + case 99: #line 510 "grammar/xp.jay" { $yyVal= NULL; } break; - case 100: #line 509 "grammar/xp.jay" + case 101: #line 515 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 101: #line 510 "grammar/xp.jay" + case 102: #line 516 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 102: #line 514 "grammar/xp.jay" + case 103: #line 520 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 103: #line 514 "grammar/xp.jay" + case 104: #line 520 "grammar/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 104: #line 517 "grammar/xp.jay" + case 105: #line 523 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 105: #line 517 "grammar/xp.jay" + case 106: #line 523 "grammar/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 106: #line 522 "grammar/xp.jay" + case 107: #line 528 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 107: #line 522 "grammar/xp.jay" + case 108: #line 528 "grammar/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2024,168 +2002,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 108: #line 532 "grammar/xp.jay" + case 109: #line 538 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 109: #line 532 "grammar/xp.jay" + case 110: #line 538 "grammar/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 110: #line 537 "grammar/xp.jay" + case 111: #line 543 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 111: #line 537 "grammar/xp.jay" + case 112: #line 543 "grammar/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 112: #line 541 "grammar/xp.jay" + case 113: #line 547 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 113: #line 541 "grammar/xp.jay" + case 114: #line 547 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 114: #line 545 "grammar/xp.jay" + case 115: #line 551 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 115: #line 545 "grammar/xp.jay" + case 116: #line 551 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 116: #line 549 "grammar/xp.jay" + case 117: #line 555 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 118: #line 550 "grammar/xp.jay" + case 119: #line 556 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 120: #line 551 "grammar/xp.jay" + case 121: #line 557 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 121: #line 551 "grammar/xp.jay" + case 122: #line 557 "grammar/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 122: #line 554 "grammar/xp.jay" + case 123: #line 560 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 123: #line 554 "grammar/xp.jay" + case 124: #line 560 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 124: #line 559 "grammar/xp.jay" + case 125: #line 565 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 125: #line 562 "grammar/xp.jay" + case 126: #line 568 "grammar/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 127: #line 569 "grammar/xp.jay" + case 128: #line 575 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 128: #line 570 "grammar/xp.jay" + case 129: #line 576 "grammar/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 129: #line 574 "grammar/xp.jay" + case 130: #line 580 "grammar/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 130: #line 577 "grammar/xp.jay" + case 131: #line 583 "grammar/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 131: #line 584 "grammar/xp.jay" + case 132: #line 590 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 132: #line 585 "grammar/xp.jay" + case 133: #line 591 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 133: #line 589 "grammar/xp.jay" + case 134: #line 595 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 134: #line 595 "grammar/xp.jay" + case 135: #line 601 "grammar/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 135: #line 596 "grammar/xp.jay" + case 136: #line 602 "grammar/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 136: #line 600 "grammar/xp.jay" + case 137: #line 606 "grammar/xp.jay" { $yyVal= NULL; } break; - case 138: #line 605 "grammar/xp.jay" + case 139: #line 611 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 139: #line 606 "grammar/xp.jay" + case 140: #line 612 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 140: #line 610 "grammar/xp.jay" + case 141: #line 616 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 141: #line 610 "grammar/xp.jay" + case 142: #line 616 "grammar/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 142: #line 614 "grammar/xp.jay" + case 143: #line 620 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 143: #line 614 "grammar/xp.jay" + case 144: #line 620 "grammar/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 144: #line 620 "grammar/xp.jay" + case 145: #line 626 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 145: #line 621 "grammar/xp.jay" + case 146: #line 627 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 146: #line 625 "grammar/xp.jay" + case 147: #line 631 "grammar/xp.jay" { $yyVal= NULL; } break; - case 147: #line 626 "grammar/xp.jay" + case 148: #line 632 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 148: #line 626 "grammar/xp.jay" + case 149: #line 632 "grammar/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 149: #line 631 "grammar/xp.jay" + case 150: #line 637 "grammar/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 150: #line 632 "grammar/xp.jay" + case 151: #line 638 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 151: #line 636 "grammar/xp.jay" + case 152: #line 642 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 152: #line 637 "grammar/xp.jay" + case 153: #line 643 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 153: #line 641 "grammar/xp.jay" + case 154: #line 647 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 154: #line 641 "grammar/xp.jay" + case 155: #line 647 "grammar/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2198,36 +2176,36 @@ public function yyparse($yyLex) { } } break; - case 155: #line 655 "grammar/xp.jay" + case 156: #line 661 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 156: #line 656 "grammar/xp.jay" + case 157: #line 662 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 157: #line 660 "grammar/xp.jay" + case 158: #line 666 "grammar/xp.jay" { $yyVal= NULL; } break; - case 159: #line 665 "grammar/xp.jay" + case 160: #line 671 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 160: #line 665 "grammar/xp.jay" + case 161: #line 671 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 161: #line 673 "grammar/xp.jay" + case 162: #line 679 "grammar/xp.jay" { $yyVal= NULL; } break; - case 163: #line 678 "grammar/xp.jay" + case 164: #line 684 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 164: #line 679 "grammar/xp.jay" + case 165: #line 685 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 165: #line 683 "grammar/xp.jay" + case 166: #line 689 "grammar/xp.jay" { $yyVal= NULL; } break; - case 167: #line 688 "grammar/xp.jay" + case 168: #line 694 "grammar/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2235,44 +2213,44 @@ public function yyparse($yyLex) { $yyVals[0+$yyTop] && $yyVal->body= $yyVals[0+$yyTop]; } break; - case 168: #line 694 "grammar/xp.jay" + case 169: #line 700 "grammar/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 169: #line 699 "grammar/xp.jay" + case 170: #line 705 "grammar/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 170: #line 707 "grammar/xp.jay" + case 171: #line 713 "grammar/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 171: #line 710 "grammar/xp.jay" + case 172: #line 716 "grammar/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 172: #line 713 "grammar/xp.jay" + case 173: #line 719 "grammar/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 173: #line 716 "grammar/xp.jay" + case 174: #line 722 "grammar/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 174: #line 722 "grammar/xp.jay" + case 175: #line 728 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 175: #line 722 "grammar/xp.jay" + case 176: #line 728 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2280,7 +2258,7 @@ public function yyparse($yyLex) { } } break; - case 176: #line 728 "grammar/xp.jay" + case 177: #line 734 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2288,10 +2266,10 @@ public function yyparse($yyLex) { } } break; - case 177: #line 734 "grammar/xp.jay" + case 178: #line 740 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 178: #line 734 "grammar/xp.jay" + case 179: #line 740 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2302,10 +2280,10 @@ public function yyparse($yyLex) { } } break; - case 179: #line 743 "grammar/xp.jay" + case 180: #line 749 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 180: #line 743 "grammar/xp.jay" + case 181: #line 749 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2317,10 +2295,10 @@ public function yyparse($yyLex) { } } break; - case 181: #line 753 "grammar/xp.jay" + case 182: #line 759 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 182: #line 753 "grammar/xp.jay" + case 183: #line 759 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2331,43 +2309,43 @@ public function yyparse($yyLex) { } } break; - case 183: #line 762 "grammar/xp.jay" + case 184: #line 768 "grammar/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 184: #line 765 "grammar/xp.jay" + case 185: #line 771 "grammar/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 185: #line 768 "grammar/xp.jay" + case 186: #line 774 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 186: #line 771 "grammar/xp.jay" + case 187: #line 777 "grammar/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 187: #line 774 "grammar/xp.jay" + case 188: #line 780 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 188: #line 777 "grammar/xp.jay" + case 189: #line 783 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 189: #line 780 "grammar/xp.jay" + case 190: #line 786 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 190: #line 784 "grammar/xp.jay" + case 191: #line 790 "grammar/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2375,7 +2353,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 191: #line 790 "grammar/xp.jay" + case 192: #line 796 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2383,7 +2361,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 192: #line 796 "grammar/xp.jay" + case 193: #line 802 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2391,17 +2369,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 193: #line 802 "grammar/xp.jay" + case 194: #line 808 "grammar/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 194: #line 807 "grammar/xp.jay" + case 195: #line 813 "grammar/xp.jay" { $yyVals[-5+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-3+$yyTop], $yyVals[-1+$yyTop])); } break; - case 195: #line 807 "grammar/xp.jay" + case 196: #line 813 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2409,7 +2387,7 @@ public function yyparse($yyLex) { } } break; - case 196: #line 813 "grammar/xp.jay" + case 197: #line 819 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2419,32 +2397,32 @@ public function yyparse($yyLex) { } } break; - case 197: #line 824 "grammar/xp.jay" + case 198: #line 830 "grammar/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 198: #line 827 "grammar/xp.jay" + case 199: #line 833 "grammar/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 199: #line 833 "grammar/xp.jay" + case 200: #line 839 "grammar/xp.jay" { $yyVal= array(); } break; - case 201: #line 838 "grammar/xp.jay" + case 202: #line 844 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 202: #line 839 "grammar/xp.jay" + case 203: #line 845 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 203: #line 843 "grammar/xp.jay" + case 204: #line 849 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 204: #line 844 "grammar/xp.jay" + case 205: #line 850 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 205: #line 848 "grammar/xp.jay" + case 206: #line 854 "grammar/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2452,273 +2430,273 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 206: #line 854 "grammar/xp.jay" + case 207: #line 860 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 207: #line 854 "grammar/xp.jay" + case 208: #line 860 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 208: #line 855 "grammar/xp.jay" + case 209: #line 861 "grammar/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 209: #line 856 "grammar/xp.jay" + case 210: #line 862 "grammar/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 210: #line 857 "grammar/xp.jay" + case 211: #line 863 "grammar/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 211: #line 858 "grammar/xp.jay" + case 212: #line 864 "grammar/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 212: #line 859 "grammar/xp.jay" + case 213: #line 865 "grammar/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 213: #line 863 "grammar/xp.jay" + case 214: #line 869 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 214: #line 866 "grammar/xp.jay" + case 215: #line 872 "grammar/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 215: #line 872 "grammar/xp.jay" + case 216: #line 878 "grammar/xp.jay" { $yyVal= NULL; } break; - case 217: #line 877 "grammar/xp.jay" + case 218: #line 883 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 218: #line 878 "grammar/xp.jay" + case 219: #line 884 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 219: #line 882 "grammar/xp.jay" + case 220: #line 888 "grammar/xp.jay" { $yyVal= NULL; } break; - case 221: #line 887 "grammar/xp.jay" + case 222: #line 893 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 222: #line 888 "grammar/xp.jay" + case 223: #line 894 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 223: #line 892 "grammar/xp.jay" + case 224: #line 898 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 224: #line 893 "grammar/xp.jay" + case 225: #line 899 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 225: #line 894 "grammar/xp.jay" + case 226: #line 900 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 226: #line 895 "grammar/xp.jay" + case 227: #line 901 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 227: #line 896 "grammar/xp.jay" + case 228: #line 902 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 228: #line 897 "grammar/xp.jay" + case 229: #line 903 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 229: #line 898 "grammar/xp.jay" + case 230: #line 904 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 230: #line 899 "grammar/xp.jay" + case 231: #line 905 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 231: #line 900 "grammar/xp.jay" + case 232: #line 906 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 232: #line 901 "grammar/xp.jay" + case 233: #line 907 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 233: #line 902 "grammar/xp.jay" + case 234: #line 908 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 234: #line 903 "grammar/xp.jay" + case 235: #line 909 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 235: #line 907 "grammar/xp.jay" + case 236: #line 913 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 236: #line 908 "grammar/xp.jay" + case 237: #line 914 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 237: #line 909 "grammar/xp.jay" + case 238: #line 915 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 238: #line 910 "grammar/xp.jay" + case 239: #line 916 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 239: #line 911 "grammar/xp.jay" + case 240: #line 917 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 240: #line 912 "grammar/xp.jay" + case 241: #line 918 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 241: #line 913 "grammar/xp.jay" + case 242: #line 919 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 242: #line 914 "grammar/xp.jay" + case 243: #line 920 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 243: #line 918 "grammar/xp.jay" + case 244: #line 924 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 919 "grammar/xp.jay" + case 245: #line 925 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 920 "grammar/xp.jay" + case 246: #line 926 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 921 "grammar/xp.jay" + case 247: #line 927 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 922 "grammar/xp.jay" + case 248: #line 928 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 923 "grammar/xp.jay" + case 249: #line 929 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 924 "grammar/xp.jay" + case 250: #line 930 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 925 "grammar/xp.jay" + case 251: #line 931 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 251: #line 926 "grammar/xp.jay" + case 252: #line 932 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 252: #line 927 "grammar/xp.jay" + case 253: #line 933 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 253: #line 928 "grammar/xp.jay" + case 254: #line 934 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 254: #line 932 "grammar/xp.jay" + case 255: #line 938 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 933 "grammar/xp.jay" + case 256: #line 939 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 934 "grammar/xp.jay" + case 257: #line 940 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 935 "grammar/xp.jay" + case 258: #line 941 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 936 "grammar/xp.jay" + case 259: #line 942 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 259: #line 937 "grammar/xp.jay" + case 260: #line 943 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 260: #line 941 "grammar/xp.jay" + case 261: #line 947 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 261: #line 942 "grammar/xp.jay" + case 262: #line 948 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 262: #line 947 "grammar/xp.jay" + case 263: #line 953 "grammar/xp.jay" { $yyVal= NULL; } break; - case 264: #line 952 "grammar/xp.jay" + case 265: #line 958 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 265: #line 953 "grammar/xp.jay" + case 266: #line 959 "grammar/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 266: #line 957 "grammar/xp.jay" + case 267: #line 963 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 267: #line 957 "grammar/xp.jay" + case 268: #line 963 "grammar/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 268: #line 960 "grammar/xp.jay" + case 269: #line 966 "grammar/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 269: #line 963 "grammar/xp.jay" + case 270: #line 969 "grammar/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 270: #line 963 "grammar/xp.jay" + case 271: #line 969 "grammar/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 271: #line 966 "grammar/xp.jay" + case 272: #line 972 "grammar/xp.jay" { $yyVals[-1+$yyTop]= $yyLex->create(new InstanceCallNode(NULL)); } break; - case 272: #line 966 "grammar/xp.jay" + case 273: #line 972 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 279: #line 986 "grammar/xp.jay" + case 280: #line 992 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 280: #line 987 "grammar/xp.jay" + case 281: #line 993 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 281: #line 991 "grammar/xp.jay" + case 282: #line 997 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 282: #line 995 "grammar/xp.jay" + case 283: #line 1001 "grammar/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 283: #line 999 "grammar/xp.jay" + case 284: #line 1005 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 284: #line 1000 "grammar/xp.jay" + case 285: #line 1006 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 286: #line 1005 "grammar/xp.jay" + case 287: #line 1011 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 287: #line 1009 "grammar/xp.jay" + case 288: #line 1015 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 288: #line 1010 "grammar/xp.jay" + case 289: #line 1016 "grammar/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 289: #line 1016 "grammar/xp.jay" + case 290: #line 1022 "grammar/xp.jay" { $yyVal= 0; } break; - case 290: #line 1017 "grammar/xp.jay" + case 291: #line 1023 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 291: #line 1021 "grammar/xp.jay" + case 292: #line 1027 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 292: #line 1022 "grammar/xp.jay" + case 293: #line 1028 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 293: #line 1026 "grammar/xp.jay" + case 294: #line 1032 "grammar/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 294: #line 1027 "grammar/xp.jay" + case 295: #line 1033 "grammar/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 295: #line 1028 "grammar/xp.jay" + case 296: #line 1034 "grammar/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 296: #line 1029 "grammar/xp.jay" + case 297: #line 1035 "grammar/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 297: #line 1030 "grammar/xp.jay" + case 298: #line 1036 "grammar/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 298: #line 1031 "grammar/xp.jay" + case 299: #line 1037 "grammar/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 299: #line 1032 "grammar/xp.jay" + case 300: #line 1038 "grammar/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 300: #line 1033 "grammar/xp.jay" + case 301: #line 1039 "grammar/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 2722 "-" +#line 2700 "-" } $yyTop-= self::$yyLen[$yyN]; From 31925d9a775c62993d901bc04ae5a40beb08dfd0 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Thu, 7 Jun 2012 17:42:28 +0200 Subject: [PATCH 04/20] - Fix up argument list emitting, params may also be a hashmap --- .../src/main/php/xp/compiler/emit/source/Emitter.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php index ccc636ed0..70260f95f 100644 --- a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php +++ b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php @@ -187,9 +187,10 @@ protected function emitUses($b, array $types) { protected function emitInvocationArguments($b, array $params, $brackets= TRUE) { $brackets && $b->append('('); $s= sizeof($params)- 1; - foreach ($params as $i => $param) { + $i= 0; + foreach ($params as $param) { $this->emitOne($b, $param); - $i < $s && $b->append(','); + $i++ < $s && $b->append(','); } $brackets && $b->append(')'); return sizeof($params); From 3c9fcca50a5be2881fd445e76baed836d2a202dc Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Fri, 8 Jun 2012 09:05:49 +0200 Subject: [PATCH 05/20] - Refactor method parameters to [:TypeName] with param names as keys --- .../main/php/xp/compiler/types/TypeDeclaration.class.php | 6 +++--- .../src/main/php/xp/compiler/types/TypeReflection.class.php | 4 ++-- .../net/xp_lang/tests/types/TypeDeclarationTest.class.php | 2 +- .../net/xp_lang/tests/types/TypeReflectionTest.class.php | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php index b8a96162b..542989830 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php @@ -134,13 +134,13 @@ public function getConstructor() { $c= new xp·compiler·types·Constructor(); $c->modifiers= $member->modifiers; foreach ($member->parameters as $p) { - $c->parameters[]= $p['type']; + $c->parameters[$p['name']]= $p['type']; } $c->holder= $this; return $c; } } - return $this->parent ? $this->parent->getMethod($name) : NULL; + return $this->parent ? $this->parent->getConstructor() : NULL; } /** @@ -170,7 +170,7 @@ public function getMethod($name) { $m->returns= $member->returns; $m->modifiers= $member->modifiers; foreach ((array)$member->parameters as $p) { - $m->parameters[]= $p['type']; + $m->parameters[$p['name']]= $p['type']; } $m->holder= $this; return $m; diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 300644a52..93d208dd3 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -163,7 +163,7 @@ public function getConstructor() { $c->modifiers= $constructor->getModifiers(); $c->parameters= array(); foreach ($constructor->getParameters() as $p) { - $c->parameters[]= $this->typeNameOf($p->getTypeName()); + $c->parameters[$p->getName()]= $this->typeNameOf($p->getTypeName()); } $c->holder= $this; return $c; @@ -196,7 +196,7 @@ public function getMethod($name) { $m->modifiers= $method->getModifiers(); $m->parameters= array(); foreach ($method->getParameters() as $p) { - $m->parameters[]= $this->typeNameOf($p->getTypeName()); + $m->parameters[$p->getName()]= $this->typeNameOf($p->getTypeName()); } $m->holder= $this; return $m; diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php index 91aca4b2f..1ef3fe3c6 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php @@ -306,7 +306,7 @@ public function stringClassSubstringMethod() { $method= $this->stringClass()->getMethod('substring'); $this->assertEquals(new TypeName('lang.types.String'), $method->returns); $this->assertEquals('substring', $method->name); - $this->assertEquals(array(new TypeName('int'), new TypeName('int')), $method->parameters); + $this->assertEquals(array('start' => new TypeName('int'), 'end' => new TypeName('int')), $method->parameters); $this->assertEquals(MODIFIER_PUBLIC, $method->modifiers); } diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php index 658fafd69..fd4f5be96 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php @@ -146,7 +146,7 @@ public function stringClassSubstringMethod() { $method= create(new TypeReflection(XPClass::forName('lang.types.String')))->getMethod('substring'); $this->assertEquals(new TypeName('lang.types.String'), $method->returns); $this->assertEquals('substring', $method->name); - $this->assertEquals(array(new TypeName('int'), new TypeName('int')), $method->parameters); + $this->assertEquals(array('start' => new TypeName('int'), 'length' => new TypeName('int')), $method->parameters); $this->assertEquals(MODIFIER_PUBLIC, $method->modifiers); } From 0e56627eec1d0ee67f4df52254ff9ed935c61da6 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Fri, 8 Jun 2012 09:08:18 +0200 Subject: [PATCH 06/20] - Make named arguments work even when passed in divergent order --- .../xp/compiler/emit/source/Emitter.class.php | 34 ++++++++++++------- .../execution/source/NamedArgsTest.class.php | 12 +++++++ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php index 70260f95f..599be50c0 100644 --- a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php +++ b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php @@ -180,17 +180,25 @@ protected function emitUses($b, array $types) { * Emit parameters * * @param xp.compiler.emit.Buffer b + * @param xp.compiler.types.Types * @param xp.compiler.ast.Node[] params * @param bool brackets * @return int */ - protected function emitInvocationArguments($b, array $params, $brackets= TRUE) { + protected function emitInvocationArguments($b, $ptr, array $params, $brackets= TRUE) { $brackets && $b->append('('); $s= sizeof($params)- 1; $i= 0; - foreach ($params as $param) { - $this->emitOne($b, $param); - $i++ < $s && $b->append(','); + if (is_string(key($params))) { // Named + foreach ($ptr->parameters as $name => $param) { + isset($params[$name]) ? $this->emitOne($b, $params[$name]) : $b->append('NULL'); + $i++ < $s && $b->append(','); + } + } else { // Ordered + foreach ($params as $param) { + $this->emitOne($b, $param); + $i++ < $s && $b->append(','); + } } $brackets && $b->append(')'); return sizeof($params); @@ -215,11 +223,11 @@ protected function emitInvocation($b, $inv) { // Static method call vs. function call if (TRUE === $ptr) { $b->append($inv->name); - $this->emitInvocationArguments($b, (array)$inv->arguments); + $this->emitInvocationArguments($b, NULL, (array)$inv->arguments); $this->scope[0]->setType($inv, TypeName::$VAR); } else { $b->append($ptr->holder->literal().'::'.$ptr->name()); - $this->emitInvocationArguments($b, (array)$inv->arguments); + $this->emitInvocationArguments($b, $ptr, (array)$inv->arguments); $this->scope[0]->setType($inv, $ptr->returns); } } @@ -423,7 +431,7 @@ public function emitDynamicMemberAccess($b, $access) { public function emitStaticMethodCall($b, $call) { $ptr= $this->resolveType($call->type); $b->append($ptr->literal().'::'.$call->name); - $this->emitInvocationArguments($b, (array)$call->arguments); + $this->emitInvocationArguments($b, $ptr->getMethod($call->name), (array)$call->arguments); // Record type $this->scope[0]->setType($call, $ptr->hasMethod($call->name) ? $ptr->getMethod($call->name)->returns : TypeName::$VAR); @@ -440,7 +448,7 @@ public function emitInstanceCall($b, $call) { $this->emitOne($b, $call->target); if ($call->arguments) { $b->append(', '); - $this->emitInvocationArguments($b, $call->arguments, FALSE); + $this->emitInvocationArguments($b, NULL, $call->arguments, FALSE); } $b->append(')'); } @@ -461,7 +469,7 @@ public function emitMethodCall($b, $call) { $b->insert($ext->holder->literal().'::'.$call->name.'(', $mark); if ($call->arguments) { $b->append(', '); - $this->emitInvocationArguments($b, $call->arguments, FALSE); + $this->emitInvocationArguments($b, $ext, $call->arguments, FALSE); } $b->append(')'); $this->scope[0]->setType($call, $ext->returns); @@ -487,7 +495,7 @@ public function emitMethodCall($b, $call) { } $b->append('->'.$call->name); - $this->emitInvocationArguments($b, (array)$call->arguments); + $this->emitInvocationArguments($b, $ptr->getMethod($call->name), (array)$call->arguments); // Record type $this->scope[0]->setType($call, $ptr->hasMethod($call->name) ? $ptr->getMethod($call->name)->returns : TypeName::$VAR); @@ -1129,7 +1137,7 @@ protected function emitFinally($b, $finally) { */ protected function emitDynamicInstanceCreation($b, $new) { $b->append('new ')->append('$')->append($new->variable); - $this->emitInvocationArguments($b, (array)$new->parameters); + $this->emitInvocationArguments($b, NULL, (array)$new->parameters); $this->scope[0]->setType($new, new TypeName('lang.Object')); } @@ -1198,12 +1206,12 @@ protected function emitInstanceCreation($b, $new) { $b->append('>\''); if ($new->parameters) { $b->append(','); - $this->emitInvocationArguments($b, (array)$new->parameters, FALSE); + $this->emitInvocationArguments($b, $ptr->getConstructor(), (array)$new->parameters, FALSE); } $b->append(')'); } else { $b->append('new '.$ptr->literal()); - $this->emitInvocationArguments($b, (array)$new->parameters); + $this->emitInvocationArguments($b, $ptr->getConstructor(), (array)$new->parameters); } } diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php index 74a548d12..a59862c3d 100755 --- a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -56,5 +56,17 @@ public function pass_all_with_names() { $this->pass('url: "/", params: [ a: "b" ], headers: [ X: "Y"]') ); } + + /** + * Test + * + */ + #[@test] + public function pass_all_with_names_divergent_order() { + $this->assertEquals( + array('url' => '/', 'params' => array('a' => 'b'), 'headers' => array('X' => 'Y')), + $this->pass('url: "/", headers: [ X: "Y"], params: [ a: "b" ]') + ); + } } ?> From 2702346707ec62b12482ac09c5dfff518b67e831 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Fri, 8 Jun 2012 09:15:12 +0200 Subject: [PATCH 07/20] - Fix situations when parameters are omitted --- .../xp/compiler/emit/source/Emitter.class.php | 4 ++- .../execution/source/NamedArgsTest.class.php | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php index 599be50c0..b3dcf61bd 100644 --- a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php +++ b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php @@ -190,9 +190,11 @@ protected function emitInvocationArguments($b, $ptr, array $params, $brackets= T $s= sizeof($params)- 1; $i= 0; if (is_string(key($params))) { // Named + $p= sizeof($ptr->parameters)- 1; foreach ($ptr->parameters as $name => $param) { isset($params[$name]) ? $this->emitOne($b, $params[$name]) : $b->append('NULL'); - $i++ < $s && $b->append(','); + if ($i >= $s) break; + $i++ < $p && $b->append(','); } } else { // Ordered foreach ($params as $param) { diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php index a59862c3d..2d5140a12 100755 --- a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -45,6 +45,18 @@ public function pass_all_without_names() { ); } + /** + * Test + * + */ + #[@test] + public function pass_first_without_name() { + $this->assertEquals( + array('url' => '/', 'params' => array(), 'headers' => array()), + $this->pass('"/"') + ); + } + /** * Test * @@ -68,5 +80,29 @@ public function pass_all_with_names_divergent_order() { $this->pass('url: "/", headers: [ X: "Y"], params: [ a: "b" ]') ); } + + /** + * Test + * + */ + #[@test] + public function pass_first_with_name() { + $this->assertEquals( + array('url' => '/', 'params' => array(), 'headers' => array()), + $this->pass('url: "/"') + ); + } + + /** + * Test + * + */ + #[@test] + public function pass_first_two_with_names() { + $this->assertEquals( + array('url' => '/', 'params' => array('a' => 'b'), 'headers' => array()), + $this->pass('url: "/", params: [ a: "b" ]') + ); + } } ?> From 3e61de608ccf785ca0ccabc7dd598aac7a249c77 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Fri, 8 Jun 2012 09:18:00 +0200 Subject: [PATCH 08/20] - Add reference to xp-framework/rfc#251 --- .../net/xp_lang/tests/execution/source/NamedArgsTest.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php index 2d5140a12..a073b3f27 100755 --- a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -11,6 +11,7 @@ /** * Tests named arguments * + * @see https://github.com/xp-framework/rfc/issues/251 */ class net·xp_lang·tests·execution·source·NamedArgsTest extends ExecutionTest { From 2d9d29641e2d198a30baef62a14f6ba0326a1446 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Fri, 8 Jun 2012 10:15:45 +0200 Subject: [PATCH 09/20] - Change arguments rule no longer to reuse expressionlist / mapliteral rules --- .../src/main/php/xp/compiler/grammar/xp.jay | 25 +- .../xp/compiler/syntax/xp/Parser.class.php | 2653 +++++++++-------- .../execution/source/NamedArgsTest.class.php | 12 + 3 files changed, 1384 insertions(+), 1306 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/grammar/xp.jay b/compiler/src/main/php/xp/compiler/grammar/xp.jay index d58862af1..a231801cc 100644 --- a/compiler/src/main/php/xp/compiler/grammar/xp.jay +++ b/compiler/src/main/php/xp/compiler/grammar/xp.jay @@ -482,13 +482,24 @@ throws_opt: ; arguments: - expressionlist_opt - | mapliteral_opt { - $$= array(); - foreach ($1 as $pair) { - $$[$pair[0]->value]= $pair[1]; - } - } + /* empty */ { $$= NULL; } + | argument_list +; + +argument_list: + argument + | argument_list ',' argument_opt { $$= array_merge($1, $3); } +; + +argument_opt: + /* empty */ { $$= array(); } + | argument +; + +argument: + T_WORD ':' expression { $$= array($1 => $3); } + | T_STRING ':' expression { $$= array($1 => $3); } + | expression { $$= array($1); } ; // }}} diff --git a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php index 7a41ec6c7..0e9224400 100644 --- a/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/compiler/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -168,28 +168,28 @@ 44, 25, 46, 25, 11, 11, 47, 47, 49, 49, 49, 50, 50, 51, 51, 42, 42, 39, 39, 39, 43, 43, 52, 52, 37, 37, 53, 53, 41, 41, - 54, 54, 45, 45, 45, 45, 45, 45, 26, 26, - 57, 57, 60, 58, 61, 58, 64, 58, 65, 58, - 67, 58, 68, 58, 69, 58, 71, 58, 72, 58, - 73, 58, 74, 58, 58, 58, 58, 76, 76, 78, - 78, 77, 77, 79, 66, 66, 70, 70, 80, 80, - 82, 81, 83, 81, 62, 62, 63, 84, 63, 75, - 75, 85, 85, 89, 88, 90, 90, 86, 86, 91, - 87, 55, 55, 92, 92, 59, 59, 93, 93, 93, - 96, 96, 96, 96, 98, 31, 31, 99, 31, 100, - 31, 101, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 109, 31, 31, 108, 108, 107, - 107, 110, 110, 111, 111, 36, 113, 36, 36, 36, - 36, 36, 36, 112, 112, 56, 56, 114, 114, 116, - 116, 115, 115, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, - 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, - 106, 106, 97, 97, 117, 117, 119, 118, 118, 121, - 118, 122, 118, 120, 120, 120, 32, 32, 32, 12, - 12, 94, 95, 123, 123, 124, 124, 21, 21, 48, - 48, 125, 125, 126, 126, 126, 126, 126, 126, 126, - 126, + 54, 54, 55, 55, 57, 57, 56, 56, 56, 45, + 45, 45, 45, 45, 45, 26, 26, 58, 58, 61, + 59, 62, 59, 65, 59, 67, 59, 69, 59, 70, + 59, 71, 59, 73, 59, 74, 59, 75, 59, 76, + 59, 59, 59, 59, 78, 78, 80, 80, 79, 79, + 81, 68, 68, 72, 72, 82, 82, 84, 83, 85, + 83, 63, 63, 64, 86, 64, 77, 77, 87, 87, + 91, 90, 92, 92, 88, 88, 93, 89, 66, 66, + 94, 94, 60, 60, 95, 95, 95, 99, 99, 99, + 99, 101, 31, 31, 102, 31, 103, 31, 104, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 112, 31, 31, 111, 111, 110, 110, 113, 113, + 114, 114, 36, 116, 36, 36, 36, 36, 36, 36, + 115, 115, 98, 98, 117, 117, 119, 119, 118, 118, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 106, 106, 106, 106, 106, 106, 106, 106, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 108, 108, 108, 108, 108, 108, 109, 109, 100, + 100, 120, 120, 122, 121, 121, 124, 121, 125, 121, + 123, 123, 123, 32, 32, 32, 12, 12, 96, 97, + 126, 126, 127, 127, 21, 21, 48, 48, 128, 128, + 129, 129, 129, 129, 129, 129, 129, 129, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 0, 7, @@ -201,1200 +201,1245 @@ 0, 8, 0, 10, 4, 1, 1, 3, 2, 5, 5, 1, 3, 3, 3, 1, 3, 0, 2, 1, 0, 1, 1, 3, 3, 4, 1, 2, 0, 2, - 1, 1, 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, 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, - 4, 3, 4, 1, 3, 1, 3, 1, 3, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, + 0, 1, 1, 3, 0, 1, 3, 3, 1, 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, 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, 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, 9, 0, 0, 7, 0, 0, - 0, 0, 0, 294, 296, 295, 298, 300, 299, 301, - 297, 1, 0, 66, 0, 292, 8, 0, 0, 4, - 12, 13, 0, 0, 0, 67, 20, 24, 22, 293, + 0, 0, 0, 301, 303, 302, 305, 307, 306, 308, + 304, 1, 0, 66, 0, 299, 8, 0, 0, 4, + 12, 13, 0, 0, 0, 67, 20, 24, 22, 300, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 0, 0, 0, 0, 15, 0, 0, - 207, 0, 213, 209, 212, 210, 211, 0, 0, 0, + 214, 0, 220, 216, 219, 217, 218, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 70, 0, 71, 0, 0, 277, 0, 278, - 279, 0, 284, 27, 0, 0, 0, 31, 35, 0, - 16, 216, 0, 0, 0, 0, 0, 0, 178, 0, - 0, 0, 175, 0, 0, 0, 0, 0, 214, 215, - 0, 186, 187, 188, 189, 190, 0, 0, 218, 206, - 74, 75, 0, 73, 0, 0, 0, 0, 281, 29, + 0, 0, 70, 0, 71, 0, 0, 284, 0, 285, + 286, 0, 291, 27, 0, 0, 0, 31, 35, 0, + 16, 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, 213, + 74, 75, 0, 73, 0, 0, 0, 0, 288, 29, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 184, 0, 182, 0, 0, 0, 0, 180, + 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 262, 0, 267, 0, 177, 264, 0, 0, 208, 0, - 287, 0, 282, 285, 0, 289, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, + 269, 0, 274, 0, 184, 271, 0, 0, 215, 0, + 294, 0, 289, 292, 0, 296, 0, 0, 25, 0, 34, 36, 37, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 176, 0, 204, 0, 0, - 0, 202, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 0, 0, - 185, 0, 274, 276, 275, 272, 0, 266, 165, 0, - 0, 221, 219, 283, 21, 0, 0, 0, 0, 0, - 0, 23, 0, 35, 0, 179, 0, 0, 0, 91, - 92, 197, 205, 0, 0, 0, 174, 171, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 0, 0, 270, - 103, 0, 121, 107, 111, 113, 109, 117, 119, 105, - 115, 0, 0, 0, 0, 101, 0, 61, 0, 0, - 0, 0, 0, 35, 45, 0, 43, 0, 0, 0, - 0, 0, 0, 0, 0, 203, 0, 181, 0, 268, - 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 127, 102, 0, 0, - 59, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 169, 170, 183, 0, 195, - 0, 273, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 145, 0, 0, 118, 120, 0, 0, 0, - 0, 132, 0, 83, 0, 0, 0, 0, 63, 0, - 0, 48, 0, 0, 53, 33, 0, 168, 199, 0, - 172, 271, 104, 0, 0, 0, 0, 122, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, + 192, 0, 281, 283, 282, 279, 0, 273, 172, 0, + 0, 228, 226, 290, 21, 0, 0, 0, 0, 0, + 0, 23, 0, 35, 0, 186, 0, 0, 0, 0, + 0, 0, 0, 93, 204, 212, 0, 0, 0, 181, + 178, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 277, 110, 0, 128, 114, 118, 120, 116, + 124, 126, 112, 122, 0, 0, 0, 0, 108, 0, + 61, 0, 0, 0, 0, 0, 35, 45, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 0, 188, 0, 275, 0, 0, 0, 130, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 134, 109, 0, 0, 59, 100, 101, 102, + 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, + 0, 176, 177, 0, 0, 190, 96, 94, 0, 202, + 0, 280, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 152, 0, 0, 125, 127, 0, 0, 0, + 0, 139, 0, 83, 0, 0, 0, 0, 63, 0, + 0, 48, 0, 0, 53, 33, 0, 175, 206, 0, + 179, 278, 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, 52, 55, - 0, 49, 54, 47, 196, 0, 0, 129, 0, 0, - 0, 146, 0, 0, 0, 0, 0, 0, 133, 0, - 0, 0, 84, 0, 85, 0, 0, 0, 0, 154, - 160, 124, 0, 151, 152, 0, 0, 112, 0, 136, + 0, 49, 54, 47, 203, 0, 0, 136, 0, 0, + 0, 153, 0, 0, 0, 0, 0, 0, 140, 0, + 0, 0, 84, 0, 85, 0, 0, 0, 0, 161, + 167, 131, 0, 158, 159, 0, 0, 119, 0, 143, 0, 0, 0, 0, 90, 76, 0, 62, 86, 0, - 0, 56, 0, 0, 150, 159, 153, 125, 0, 0, - 0, 148, 106, 141, 143, 0, 0, 139, 126, 0, - 60, 0, 0, 0, 0, 114, 110, 0, 0, 0, - 116, 140, 77, 64, 156, 0, 0, 0, 149, 0, - 0, 0, 0, 161, 108, 0, 144, 157, 0, 142, - 0, 0, 155, + 0, 56, 0, 0, 157, 166, 160, 132, 0, 0, + 0, 155, 113, 148, 150, 0, 0, 146, 133, 0, + 60, 0, 0, 0, 0, 121, 117, 0, 0, 0, + 123, 147, 77, 64, 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, 22, 116, 4, 7, 8, 33, 12, 60, 210, 88, 47, 74, 96, 143, 49, 215, 48, 76, - 98, 345, 211, 212, 213, 333, 216, 217, 290, 291, - 334, 270, 391, 343, 434, 118, 424, 435, 466, 428, - 492, 518, 425, 380, 388, 468, 35, 24, 36, 70, - 71, 426, 427, 299, 300, 301, 335, 336, 247, 363, - 373, 414, 533, 367, 370, 454, 368, 369, 374, 536, - 371, 372, 366, 405, 502, 407, 421, 408, 422, 537, - 538, 549, 550, 548, 503, 525, 504, 505, 523, 556, - 524, 121, 220, 90, 91, 309, 195, 157, 152, 233, - 224, 122, 123, 124, 125, 126, 230, 355, 440, 231, - 232, 127, 80, 128, 129, 283, 196, 197, 272, 277, - 362, 319, 92, 93, 25, 26, + 98, 348, 211, 212, 213, 336, 216, 217, 290, 291, + 337, 270, 397, 346, 444, 118, 434, 445, 476, 438, + 502, 528, 435, 386, 394, 478, 35, 24, 36, 70, + 71, 436, 437, 302, 303, 304, 408, 338, 339, 247, + 369, 379, 424, 543, 373, 119, 376, 464, 374, 375, + 380, 546, 377, 378, 372, 415, 512, 417, 431, 418, + 432, 547, 548, 559, 560, 558, 513, 535, 514, 515, + 533, 566, 534, 120, 220, 90, 91, 121, 312, 195, + 157, 152, 233, 224, 122, 123, 124, 125, 126, 230, + 361, 450, 231, 232, 127, 80, 128, 129, 283, 196, + 197, 272, 277, 368, 322, 92, 93, 25, 26, ); - protected static $yySindex = array( -202, - 0, 0, -169, -238, 0, 1247, -169, 0, 144, 154, - 161, -15, 227, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 676, 0, 0, -238, -238, 0, - 0, 0, 57, -238, -11, 0, 0, 0, 0, 0, - 0, 0, 258, 293, 227, 676, -238, -238, -238, -10, - 678, 0, 0, 288, 50, 74, 50, 0, 323, 330, - 0, 342, 0, 0, 0, 0, 0, 344, 371, 355, - 0, 23, -238, 110, -238, 304, 110, -10, 0, 4247, - 66, 66, 0, -106, 0, 128, 382, 0, 372, 0, - 0, 135, 0, 0, -238, 350, 430, 0, 0, 354, - 0, 0, 4378, 4378, 4378, 4378, 4378, 4378, 0, 4378, - 325, 433, 0, 4378, 365, 86, 3049, 95, 0, 0, - 455, 0, 0, 0, 0, 0, 407, 458, 0, 0, - 0, 0, 342, 0, -238, -73, 417, 23, 0, 0, - 0, -238, 1221, 254, 59, -80, -80, -52, -80, -80, - -80, -73, 0, 4378, 0, 4378, 95, 1990, -83, 0, - 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, - 4378, 4378, 4378, 4378, 4378, 4378, 4281, 4319, 4215, 4378, - 4175, 4378, 4378, 4378, 4378, 4378, 4378, -238, 4378, 0, - 0, -73, 0, -1, 0, 0, 95, 4378, 0, -248, - 0, 250, 0, 0, 1540, 0, 392, 261, 0, -71, - 0, 0, 0, 0, 393, 244, 0, 482, 372, 95, - 413, 419, 3049, 4247, 3049, 0, 95, 0, -75, 287, - 502, 0, 14, 3076, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 3049, 494, 3928, 3867, 4055, - 4378, 2660, 4378, 2660, 4378, 4378, 13, 13, 4378, 4378, - 13, 13, 46, 46, -52, -52, -52, 0, -80, 215, - 0, 4378, 0, 0, 0, 0, 514, 0, 0, 499, - 433, 0, 0, 0, 0, 32, 299, 340, -65, 437, - 525, 0, 254, 0, 4247, 0, 4378, -53, 527, 0, - 0, 0, 0, 4186, -83, 526, 0, 0, 95, 4378, - 3211, 3211, 13, 13, 13, 13, 0, 476, 4247, 0, - 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 530, 446, 2050, 32, 0, 512, 0, 536, 79, - 486, 529, 465, 0, 0, 4378, 0, 597, 571, 477, - 488, 95, 32, 3049, 490, 0, 4247, 0, 874, 0, - 573, 4247, 4378, 0, 279, 4378, 581, 582, 385, 589, - 575, 577, 592, 600, 301, 0, 0, 0, 66, -73, - 0, 0, 0, 0, 0, 0, 0, 604, -73, 4378, - 595, 401, 1661, 2188, 437, 0, 0, 0, 538, 0, - 623, 0, 624, 607, 32, 608, 369, 0, 2226, 4378, - 4378, 32, 0, 309, 332, 0, 0, 4378, 4378, 620, - 388, 0, 631, 0, 650, 648, -181, 82, 0, 601, - 3049, 0, -19, -108, 0, 0, 437, 0, 0, 95, - 0, 0, 0, 568, 4378, 279, 579, 0, 637, 2323, - 586, 667, 670, 352, 2377, 2435, 4378, 301, 594, 0, - 397, -73, 673, 529, -73, 680, 648, -73, 0, 0, - 32, 0, 0, 0, 0, 37, 3049, 0, 32, 4378, - 385, 0, 4378, 384, 4378, 385, 609, 3049, 0, 32, - -238, -5, 0, 394, 0, 648, 397, 696, 617, 0, - 0, 0, 37, 0, 0, 618, 693, 0, 2485, 0, - 2619, 383, 73, 628, 0, 0, 32, 0, 0, -5, - 397, 0, 716, 635, 0, 0, 0, 0, 4378, 700, - 385, 0, 0, 0, 0, 636, 73, 0, 0, 638, - 0, -5, -238, 32, 719, 0, 0, 385, 4378, 704, - 0, 0, 0, 0, 0, -51, 645, 385, 0, 2818, - 32, -238, 731, 0, 0, 32, 0, 0, 651, 0, - 32, 653, 0, + protected static $yySindex = array( -284, + 0, 0, -258, -73, 0, 699, -258, 0, 4, 8, + 121, 6, -6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 794, 0, 0, -73, -73, 0, + 0, 0, -197, -73, -28, 0, 0, 0, 0, 0, + 0, 0, 74, 76, -6, 794, -73, -73, -73, -5, + 958, 0, 0, 137, -109, -11, -109, 0, 267, 266, + 0, 259, 0, 0, 0, 0, 0, 290, 294, 289, + 0, -8, -73, 42, -73, 238, 42, -5, 0, 4425, + 274, 274, 0, -96, 0, 68, 334, 0, 310, 0, + 0, 150, 0, 0, -73, 273, 359, 0, 0, 283, + 0, 0, 4553, 4553, 4553, 4553, 4553, 4553, 0, 4553, + 261, 350, 0, 4553, 333, 10, 3266, 61, 0, 375, + 0, 0, 0, 0, 0, 0, 338, 414, 0, 0, + 0, 0, 259, 0, -73, -71, 380, -8, 0, 0, + 0, -73, 880, 218, 256, -86, -86, -44, -86, -86, + -86, -71, 0, 4553, 0, 4553, 61, 2289, -81, 0, + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, + 4553, 4553, 4553, 4553, 4553, 4553, 4461, 4492, 4169, 4553, + 4299, 4553, 4553, 4553, 4553, 4553, 4553, -73, 4553, 0, + 0, -71, 0, -17, 0, 0, 61, 4553, 0, -133, + 0, 48, 0, 0, 1253, 0, 373, 241, 0, 7, + 0, 0, 0, 0, 377, 155, 0, 468, 310, 61, + 390, 391, 3266, 4592, 3266, 0, 61, 0, -83, 271, + 474, 0, -149, 3307, 3437, 3437, 3437, 3437, 3437, 3437, + 3437, 3437, 3437, 3437, 3437, 3266, 482, 14, 130, 635, + 4553, 2540, 4553, 2540, 4553, 4553, 541, 541, 4553, 4553, + 541, 541, 637, 637, -44, -44, -44, 0, -86, 221, + 0, 4553, 0, 0, 0, 0, 483, 0, 0, 488, + 350, 0, 0, 0, 0, 484, 292, 278, -74, 441, + 527, 0, 218, 0, 4592, 0, 4553, 37, 308, 511, + 3266, 536, 535, 0, 0, 0, 4533, -81, 545, 0, + 0, 61, 4553, 3437, 3437, 541, 541, 541, 541, 0, + 494, 4592, 0, 0, -14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 549, 480, 2318, 484, 0, 546, + 0, 566, 669, 517, 550, 489, 0, 0, 4553, 0, + 407, 572, 491, 492, 4553, 4553, 61, 4592, 484, 3266, + 493, 0, 4592, 0, 243, 0, 578, 4592, 4553, 0, + 281, 4553, 588, 589, 362, 591, 576, 581, 601, 610, + 311, 0, 0, 0, 274, -71, 0, 0, 0, 0, + 0, 0, 0, 612, -71, 4553, 594, 403, 1319, 2415, + 441, 0, 0, 3266, 3266, 0, 0, 0, 539, 0, + 624, 0, 630, 614, 484, 615, 339, 0, 2473, 4553, + 4553, 484, 0, 320, 345, 0, 0, 4553, 4553, 632, + 388, 0, 648, 0, 655, 665, -58, -78, 0, 625, + 3266, 0, -45, -114, 0, 0, 441, 0, 0, 61, + 0, 0, 0, 592, 4553, 281, 598, 0, 670, 2551, + 608, 696, 693, 374, 2590, 2618, 4553, 311, 616, 0, + 419, -71, 697, 550, -71, 701, 665, -71, 0, 0, + 484, 0, 0, 0, 0, -1, 3266, 0, 484, 4553, + 362, 0, 4553, 412, 4553, 362, 636, 3266, 0, 484, + -73, -38, 0, 422, 0, 665, 419, 725, 643, 0, + 0, 0, -1, 0, 0, 644, 720, 0, 2715, 0, + 2856, 415, 12, 663, 0, 0, 484, 0, 0, -38, + 419, 0, 753, 671, 0, 0, 0, 0, 4553, 741, + 362, 0, 0, 0, 0, 692, 12, 0, 0, 694, + 0, -38, -73, 484, 777, 0, 0, 362, 4553, 762, + 0, 0, 0, 0, 0, -76, 703, 362, 0, 3011, + 484, -73, 780, 0, 0, 484, 0, 0, 706, 0, + 484, 710, 0, ); - protected static $yyRindex= array( 316, - 0, 0, 1026, 0, 0, 248, 1161, 0, 615, 0, - 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 489, 0, 0, 0, 0, 0, + protected static $yyRindex= array( 1124, + 0, 0, 1329, 0, 0, 297, 1684, 0, 713, 0, + 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 519, 0, 0, 0, 0, - 0, 0, 0, 642, -112, 662, -112, 0, 733, 0, - 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 672, 0, 0, 672, 0, 0, 701, - 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 57, 0, 203, 0, 0, 0, 0, + 0, 0, 0, 740, -118, 728, -118, 0, 789, 0, + 0, 811, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 732, 0, 0, 732, 0, 0, 766, + 0, 0, 0, 0, 0, 0, 0, 0, 247, 0, + 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1366, 1498, 0, 0, 0, 0, 410, 1195, 0, 0, - 44, 0, 0, 0, 0, 0, 0, 35, 0, 0, + 1464, 1596, 0, 0, 0, 0, 340, 1293, 0, 78, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 681, 739, 1596, 1664, 2876, 1754, 1794, - 1892, 0, 0, 0, 0, 0, 1195, 0, 557, 0, + 0, 0, 9, 735, 837, 1858, 1895, 3048, 1992, 2021, + 2089, 0, 0, 0, 0, 0, 1293, 0, 604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1330, 460, 0, 294, - 0, 0, 0, 0, 21, 0, 1400, 0, 0, 0, - 0, 0, 0, 58, 0, 692, 0, 727, 0, 1195, - 732, 740, 318, 781, 416, 0, 1195, 0, 0, 0, - 583, 0, 0, 92, -6, 22, 51, 53, 160, 228, - 308, 454, 479, 671, 855, 20, 0, 431, 1454, 3746, - 0, 3770, 0, 3828, 0, 0, 3345, 3527, 0, 0, - 3543, 3597, 3103, 3145, 2915, 2952, 3010, 0, 1930, 1169, - 0, 741, 0, 0, 0, 0, 766, 0, 0, 0, - 0, 0, 0, 0, 0, 717, 0, -50, 0, -25, - 0, 0, 0, 0, 781, 0, 718, 0, 0, 0, - 0, 0, 0, 0, 0, 947, 0, 0, 1195, 0, - 1023, 1206, 3621, 3645, 3672, 3730, 0, 0, 781, 0, + 0, 0, 0, 0, 0, 0, 1428, 826, 0, -13, + 0, 0, 0, 0, 9, 0, 529, 0, 0, 0, + 0, 0, 0, 590, 0, 744, 0, 782, 0, 1293, + 785, 786, 20, 830, 207, 0, 1293, 0, 0, 0, + 626, 0, 0, 56, -26, 29, 85, 305, 316, 428, + 522, 642, 764, 874, 901, 335, 0, 2803, 4004, 3988, + 0, 4033, 0, 4073, 0, 0, 3347, 3733, 0, 0, + 3757, 3773, 3524, 3566, 3102, 3141, 3239, 0, 2157, 1267, + 0, 795, 0, 0, 0, 0, 864, 0, 0, 0, + 0, 0, 0, 0, 0, 765, 0, 2, 0, 22, + 0, 0, 0, 0, 830, 0, 767, 0, 1694, 1761, + 413, 0, 850, 0, 0, 0, 0, 0, 1045, 0, + 0, 1293, 0, 934, 970, 3827, 3851, 3948, 3964, 0, + 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -113, 0, 0, + 0, 770, 0, 0, 835, 0, 0, 0, 0, 0, + -103, 0, 0, 0, 0, 0, 1293, 423, 765, 778, + 0, 0, 830, 0, 31, 0, 0, 830, 845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -111, 0, 0, 0, 721, 0, - 0, 782, 0, 0, 0, 0, 0, -104, 0, 0, - 0, 1195, 717, 726, 0, 0, 781, 0, 3786, 0, - 0, 781, 793, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 812, + 0, 0, 0, 0, 0, 871, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, + 1166, 0, 0, 465, 471, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 765, 503, 0, 0, 0, 854, + 0, 765, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 875, 0, 876, 0, 0, + 418, 0, 0, 0, 0, 0, 22, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 0, 1068, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 717, 398, 0, 0, 0, 795, - 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 814, 0, 817, 0, 0, - 400, 0, 0, 0, 0, 0, -25, 0, 0, 1195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 498, 0, 0, 0, 0, 0, 0, 0, - 214, 0, 0, 295, 0, 0, 826, 812, 0, 0, - 717, 0, 0, 0, 0, 0, 411, 0, 717, 795, - 0, 0, 0, 0, 0, 0, 0, 412, 0, 717, - 0, 0, 0, 0, 0, 829, 214, 0, 0, 0, - 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 746, 0, 0, 0, 717, 0, 0, 0, - 214, 0, 0, 0, 0, 0, 0, 0, 781, 0, - 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, - 0, 0, 0, 717, 0, 0, 0, 0, 0, 0, + 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, + -18, 0, 0, 92, 0, 0, 888, 871, 0, 0, + 765, 0, 0, 0, 0, 0, 510, 0, 765, 854, + 0, 0, 0, 0, 0, 0, 0, 521, 0, 765, + 0, 0, 0, 0, 0, 893, -18, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 296, 796, 0, 0, 0, 765, 0, 0, 0, + -18, 0, 0, 0, 0, 0, 0, 0, 894, 0, + 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, + 0, 0, 0, 765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, -97, 0, 0, 0, 0, - 717, 0, 0, + 765, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 866, 0, 0, 796, - 870, -46, 0, 828, 806, -132, 0, 0, 0, 0, - -91, -353, 0, 0, 0, 3899, 0, 593, 0, 0, - 60, 561, 423, 0, 0, -45, -319, 461, 0, 0, - -474, -218, 420, 0, 0, 0, 0, 843, 852, 0, - 819, -267, 706, -166, -49, -18, 0, 375, -183, 0, - 0, -356, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 459, 443, 0, - 367, 0, 0, 0, 0, 0, 404, 405, 0, 0, - 0, 0, 0, 757, 763, 0, -100, 0, 0, 0, + 0, 0, 0, -4, 0, 0, 932, 0, 0, 862, + 935, -46, 0, 889, 873, -99, 0, 0, 0, 0, + -89, -324, 0, 0, 0, 2958, 0, 659, 0, 0, + 55, -34, 479, 0, 0, -47, -386, 504, 0, 0, + -471, -356, 476, 0, 0, 0, 0, 910, 919, 0, + 881, -354, 784, 157, 0, 611, 0, 0, -168, -119, + 0, 0, 300, 0, 0, -290, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, + 506, 0, 425, 0, 0, 0, 0, 0, 464, 472, + 0, 0, 0, 0, 0, 839, 843, 689, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 0, 0, 0, 720, 0, 725, 0, 0, 0, - 0, 0, 0, 780, 0, 899, + 0, 0, 0, 688, 0, 0, 0, 797, 0, 801, + 0, 0, 0, 0, 0, 0, 863, 0, 978, ); protected static $yyTable = array(11, - 55, 56, 57, 140, 102, 69, 365, 87, 205, 17, - 26, 280, 281, 100, 279, 137, 472, 87, 32, 87, - 39, 9, 520, 41, 42, 137, 94, 99, 97, 44, - 119, 58, 45, 32, 193, 131, 132, 193, 276, 470, - 17, 438, 54, 54, 54, 189, 542, 10, 97, 187, - 206, 193, 193, 516, 185, 183, 226, 184, 69, 186, - 167, 120, 224, 167, 105, 224, 115, 54, 54, 430, - 54, 114, 562, 189, 103, 217, 104, 167, 167, 224, - 224, 46, 187, 474, 163, 86, 193, 185, 318, 364, - 54, 225, 186, 226, 225, 97, 226, 46, 155, 32, - 1, 44, 163, 471, 28, 218, 288, 69, 225, 225, - 226, 226, 167, 87, 224, 386, 44, 517, 193, 296, - 384, 382, 61, 383, 508, 385, 302, 217, 349, 512, - 201, 54, 192, 54, 5, 192, 163, 54, 189, 117, - 194, 268, 493, 225, 167, 226, 224, 54, 463, 192, - 192, 433, 361, 133, 54, 290, 61, 106, 464, 217, - 467, 348, 146, 147, 148, 149, 150, 151, 163, 153, - 288, 189, 87, 158, 547, 225, 9, 226, 138, 404, - 44, 290, 44, 54, 192, 193, 9, 54, 288, 28, - 401, 559, 286, 68, 339, 403, 139, 496, 26, 29, - 227, 565, 10, 227, 387, 54, 280, 281, 358, 17, - 286, 393, 10, 223, 10, 225, 192, 227, 227, 30, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 248, 249, 250, 252, 254, 257, 258, - 261, 262, 263, 264, 265, 266, 267, 350, 269, 59, - 192, 398, 227, 158, 340, 158, 228, 246, 273, 188, - 158, 100, 100, 158, 303, 158, 341, 31, 228, 17, - 32, 228, 89, 306, 342, 99, 99, 317, 192, 351, - 290, 17, 9, 117, 227, 228, 228, 293, 563, 17, - 34, 145, 63, 64, 65, 66, 67, 147, 274, 147, - 54, 541, 294, 50, 147, 137, 290, 147, 10, 147, - 311, 158, 312, 307, 313, 314, 43, 10, 315, 316, - 228, 190, 191, 554, 188, 130, 63, 64, 65, 66, - 67, 246, 51, 423, 220, 57, 89, 220, 57, 475, - 137, 9, 284, 192, 110, 158, 158, 72, 230, 190, - 191, 230, 228, 308, 117, 147, 117, 188, 222, 73, - 449, 222, 275, 354, 155, 230, 230, 10, 78, 359, - 28, 113, 321, 322, 323, 54, 192, 109, 117, 338, - 500, 501, 154, 75, 54, 28, 220, 57, 79, 147, - 147, 324, 325, 326, 327, 85, 328, 329, 84, 515, - 230, 330, 81, 331, 82, 394, 2, 193, 193, 447, - 222, 83, 446, 465, 190, 191, 117, 105, 220, 115, - 95, 117, 246, 54, 114, 409, 99, 103, 459, 104, - 507, 458, 230, 107, 108, 224, 224, 135, 130, 136, - 58, 130, 222, 58, 97, 534, 535, 190, 191, 431, - 164, 131, 134, 164, 131, 134, 223, 54, 58, 223, - 54, 332, 137, 54, 225, 225, 226, 226, 164, 117, - 450, 250, 141, 142, 250, 61, 144, 455, 456, 545, - 158, 158, 158, 158, 158, 158, 54, 159, 250, 250, - 156, 250, 58, 250, 229, 160, 555, 229, 198, 199, - 166, 200, 164, 166, 477, 192, 158, 412, 223, 203, - 106, 229, 229, 214, 286, 568, 488, 292, 166, 231, - 287, 295, 231, 250, 147, 147, 147, 147, 147, 147, - 37, 38, 39, 158, 164, 297, 231, 231, 54, 117, - 223, 298, 509, 304, 511, 305, 229, 290, 290, 290, - 147, 310, 166, 320, 250, 250, 154, 54, 337, 344, - 158, 158, 158, 158, 346, 357, 158, 352, 360, 375, - 376, 231, 379, 227, 227, 381, 389, 147, 229, 291, - 158, 158, 158, 158, 166, 158, 158, 392, 117, 390, - 158, 158, 158, 158, 158, 2, 2, 2, 2, 2, - 2, 396, 2, 231, 147, 147, 147, 147, 560, 290, - 147, 395, 397, 402, 400, 2, 2, 2, 406, 2, - 410, 411, 158, 158, 147, 147, 147, 147, 415, 147, - 147, 418, 89, 416, 147, 417, 147, 147, 147, 419, - 420, 228, 228, 429, 145, 63, 64, 65, 66, 67, - 158, 17, 17, 432, 17, 17, 17, 17, 17, 17, - 433, 17, 439, 441, 442, 443, 147, 147, 445, 452, - 10, 453, 17, 17, 17, 17, 17, 17, 280, 280, - 457, 280, 280, 280, 280, 280, 280, 13, 280, 460, - 461, 462, 476, 469, 147, 480, 202, 110, 89, 280, - 280, 479, 280, 280, 280, 17, 483, 17, 17, 378, - 482, 232, 219, 484, 232, 485, 490, 491, 494, 229, - 497, 230, 230, 510, 113, 321, 322, 323, 232, 232, - 109, 513, 280, 519, 280, 280, 521, 17, 17, 17, - 17, 522, 528, 413, 324, 325, 326, 327, 291, 328, - 329, 529, 539, 532, 330, 543, 331, 544, 546, 558, - 551, 561, 553, 232, 280, 280, 280, 280, 61, 564, - 289, 569, 11, 571, 291, 206, 206, 573, 290, 206, - 206, 206, 206, 206, 30, 206, 107, 108, 291, 291, - 291, 14, 206, 162, 28, 232, 206, 206, 206, 206, - 206, 206, 269, 269, 290, 41, 269, 269, 269, 269, - 269, 269, 269, 200, 332, 166, 40, 277, 290, 290, - 290, 162, 278, 269, 269, 269, 269, 269, 269, 206, - 279, 206, 206, 166, 250, 250, 250, 250, 250, 201, - 57, 99, 162, 51, 250, 250, 250, 250, 250, 250, - 198, 166, 81, 162, 82, 413, 269, 78, 269, 269, - 413, 135, 206, 206, 206, 229, 80, 229, 229, 79, - 137, 138, 27, 101, 17, 23, 14, 15, 16, 207, - 18, 19, 100, 20, 77, 347, 495, 498, 53, 269, - 269, 269, 231, 231, 473, 233, 52, 271, 233, 21, - 489, 280, 134, 552, 478, 413, 526, 527, 221, 356, - 187, 176, 233, 233, 222, 185, 183, 204, 184, 282, - 186, 278, 413, 40, 17, 17, 17, 0, 0, 0, - 208, 0, 413, 179, 17, 181, 0, 62, 63, 64, - 65, 66, 67, 0, 17, 17, 17, 233, 0, 0, - 0, 280, 280, 280, 17, 14, 15, 16, 17, 18, - 19, 280, 20, 0, 0, 0, 0, 175, 0, 0, - 0, 280, 280, 280, 0, 0, 0, 68, 21, 233, - 0, 280, 0, 173, 173, 0, 0, 173, 173, 173, - 173, 173, 173, 173, 0, 0, 0, 174, 0, 189, - 0, 0, 0, 0, 173, 173, 173, 173, 173, 173, - 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, 0, 0, 173, 0, 173, - 173, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 206, 0, 280, 280, 0, 280, 280, 280, 280, 280, - 280, 0, 0, 242, 0, 0, 242, 0, 0, 206, - 173, 173, 173, 0, 0, 0, 0, 269, 0, 0, - 242, 242, 0, 0, 232, 232, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, - 0, 0, 0, 0, 32, 32, 0, 0, 32, 32, - 32, 32, 32, 32, 32, 242, 5, 0, 0, 0, + 55, 56, 57, 69, 26, 140, 353, 137, 440, 87, + 482, 107, 87, 480, 200, 45, 137, 200, 1, 87, + 526, 39, 276, 41, 42, 371, 94, 106, 97, 44, + 227, 200, 200, 131, 132, 530, 58, 89, 295, 189, + 89, 205, 54, 54, 54, 5, 226, 572, 97, 28, + 187, 176, 206, 29, 86, 185, 183, 34, 184, 552, + 186, 17, 43, 229, 46, 32, 200, 54, 54, 231, + 54, 198, 231, 179, 198, 181, 448, 481, 279, 227, + 32, 189, 87, 477, 527, 503, 231, 231, 198, 198, + 54, 198, 17, 198, 102, 97, 199, 87, 200, 199, + 69, 202, 295, 89, 89, 218, 194, 175, 370, 296, + 309, 227, 229, 199, 199, 51, 305, 219, 170, 50, + 506, 231, 484, 198, 229, 232, 280, 281, 232, 459, + 201, 54, 57, 54, 117, 57, 170, 54, 137, 189, + 284, 268, 232, 232, 229, 443, 32, 54, 199, 69, + 310, 193, 321, 231, 54, 198, 297, 146, 147, 148, + 149, 150, 151, 133, 153, 224, 187, 176, 158, 384, + 170, 185, 183, 551, 184, 289, 186, 232, 9, 30, + 199, 9, 297, 54, 57, 342, 9, 54, 9, 179, + 311, 181, 26, 138, 351, 564, 72, 224, 293, 517, + 73, 364, 170, 68, 10, 54, 423, 10, 223, 232, + 225, 139, 10, 294, 10, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, + 250, 252, 254, 257, 258, 261, 262, 263, 264, 265, + 266, 267, 273, 269, 192, 343, 406, 399, 555, 414, + 230, 9, 246, 475, 59, 189, 306, 344, 228, 107, + 107, 17, 165, 573, 165, 345, 288, 188, 297, 165, + 298, 473, 165, 229, 165, 106, 106, 10, 301, 187, + 176, 474, 274, 320, 185, 183, 192, 184, 31, 186, + 293, 32, 10, 297, 297, 155, 280, 281, 75, 230, + 155, 28, 179, 54, 181, 314, 28, 315, 293, 316, + 317, 137, 78, 318, 319, 190, 191, 341, 154, 81, + 165, 17, 423, 28, 79, 188, 246, 423, 154, 85, + 154, 230, 84, 17, 83, 154, 175, 433, 154, 485, + 154, 17, 510, 511, 192, 233, 275, 155, 233, 301, + 82, 117, 95, 28, 165, 165, 234, 190, 191, 234, + 99, 360, 233, 233, 61, 355, 174, 365, 189, 37, + 38, 39, 423, 234, 234, 174, 301, 135, 174, 457, + 171, 54, 456, 171, 544, 545, 154, 200, 200, 423, + 54, 136, 174, 174, 105, 141, 115, 233, 171, 423, + 137, 114, 142, 400, 103, 144, 104, 156, 234, 404, + 405, 525, 301, 182, 180, 190, 191, 301, 198, 160, + 154, 154, 301, 246, 177, 178, 419, 174, 469, 233, + 199, 468, 171, 54, 198, 198, 198, 198, 198, 298, + 234, 188, 231, 231, 198, 198, 198, 198, 198, 198, + 441, 352, 61, 99, 97, 159, 99, 200, 58, 174, + 192, 58, 297, 95, 171, 298, 95, 54, 235, 199, + 54, 235, 203, 54, 117, 460, 58, 214, 367, 298, + 298, 298, 465, 466, 422, 235, 235, 106, 297, 165, + 165, 165, 165, 165, 165, 286, 54, 13, 232, 232, + 287, 292, 297, 297, 297, 97, 565, 295, 97, 487, + 58, 98, 297, 298, 98, 165, 105, 308, 115, 411, + 235, 498, 323, 114, 413, 578, 103, 307, 104, 182, + 180, 190, 191, 130, 63, 64, 65, 66, 67, 313, + 177, 178, 165, 137, 117, 154, 137, 519, 54, 521, + 138, 340, 235, 138, 188, 154, 154, 154, 154, 154, + 154, 141, 237, 347, 141, 237, 349, 54, 356, 165, + 165, 165, 165, 192, 61, 165, 357, 187, 358, 237, + 237, 154, 185, 183, 363, 184, 366, 186, 381, 165, + 165, 165, 165, 117, 165, 165, 297, 297, 297, 165, + 165, 165, 165, 165, 382, 387, 385, 395, 154, 106, + 396, 398, 401, 570, 237, 402, 403, 410, 412, 305, + 416, 145, 63, 64, 65, 66, 67, 420, 421, 46, + 425, 165, 165, 44, 426, 154, 154, 154, 154, 427, + 428, 154, 182, 180, 190, 191, 237, 10, 44, 429, + 430, 439, 442, 177, 178, 154, 154, 154, 154, 165, + 154, 154, 443, 449, 451, 154, 189, 154, 154, 154, + 452, 187, 453, 187, 110, 455, 185, 183, 185, 184, + 462, 186, 236, 186, 463, 236, 14, 15, 16, 207, + 18, 19, 467, 20, 179, 471, 181, 154, 154, 236, + 236, 113, 324, 325, 326, 392, 470, 109, 472, 21, + 390, 388, 44, 389, 44, 391, 486, 479, 233, 233, + 489, 327, 328, 329, 330, 154, 331, 332, 490, 234, + 234, 333, 492, 334, 236, 493, 494, 495, 500, 501, + 208, 507, 504, 145, 63, 64, 65, 66, 67, 17, + 17, 520, 17, 17, 17, 17, 17, 17, 523, 17, + 189, 529, 189, 107, 108, 531, 236, 532, 538, 10, + 17, 17, 17, 17, 17, 17, 287, 287, 539, 287, + 287, 287, 287, 287, 287, 542, 287, 549, 305, 13, + 518, 335, 553, 554, 393, 522, 110, 287, 287, 556, + 287, 287, 287, 17, 238, 17, 17, 238, 305, 305, + 305, 305, 305, 305, 305, 305, 561, 568, 563, 571, + 579, 238, 238, 113, 324, 325, 326, 574, 581, 109, + 287, 305, 287, 287, 583, 17, 17, 17, 17, 11, + 557, 235, 235, 327, 328, 329, 330, 14, 331, 332, + 30, 213, 188, 333, 28, 334, 238, 569, 169, 41, + 207, 173, 287, 287, 287, 287, 173, 575, 40, 173, + 91, 192, 284, 213, 213, 285, 286, 213, 213, 213, + 213, 213, 208, 213, 173, 107, 108, 173, 238, 106, + 92, 169, 51, 57, 213, 213, 213, 213, 213, 213, + 276, 276, 205, 173, 276, 276, 276, 276, 276, 276, + 276, 81, 169, 335, 239, 82, 78, 239, 173, 142, + 144, 276, 276, 276, 276, 276, 276, 213, 80, 213, + 213, 239, 239, 79, 169, 237, 237, 145, 27, 101, + 23, 240, 190, 191, 240, 77, 188, 483, 188, 100, + 173, 350, 505, 508, 276, 53, 276, 276, 240, 240, + 213, 213, 213, 52, 134, 192, 239, 192, 407, 488, + 13, 562, 17, 499, 249, 271, 536, 249, 14, 15, + 16, 17, 18, 19, 537, 20, 354, 276, 276, 276, + 221, 249, 249, 240, 222, 362, 282, 278, 239, 287, + 204, 21, 40, 0, 209, 0, 0, 0, 0, 0, + 250, 0, 0, 250, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 17, 17, 240, 249, 250, 250, 0, + 0, 0, 17, 0, 182, 180, 190, 191, 190, 191, + 0, 0, 17, 17, 17, 177, 178, 0, 61, 287, + 287, 287, 17, 0, 0, 236, 236, 0, 249, 287, + 0, 0, 250, 0, 0, 0, 0, 0, 0, 287, + 287, 287, 0, 14, 15, 16, 17, 18, 19, 287, + 20, 180, 180, 0, 0, 180, 180, 180, 180, 180, + 180, 180, 0, 0, 250, 0, 21, 0, 0, 0, + 0, 0, 180, 180, 180, 180, 180, 180, 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, 0, 0, 180, 0, 180, 180, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 213, 0, + 287, 287, 0, 287, 287, 287, 287, 287, 287, 14, + 15, 16, 207, 18, 19, 0, 20, 213, 180, 180, + 180, 0, 0, 0, 0, 276, 0, 238, 238, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, + 0, 0, 32, 32, 0, 0, 32, 32, 32, 32, + 32, 32, 32, 208, 2, 0, 0, 62, 63, 64, + 65, 66, 67, 32, 32, 32, 32, 32, 32, 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, 32, 68, 32, 32, + 0, 0, 0, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 0, 0, 276, 276, 0, 276, 276, 276, + 276, 276, 276, 0, 0, 0, 0, 239, 239, 32, + 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 87, 87, 0, 0, 87, 87, 87, + 87, 87, 0, 87, 240, 240, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 87, 87, 87, 87, 270, + 270, 0, 0, 270, 270, 270, 270, 270, 0, 270, + 0, 0, 0, 13, 0, 0, 0, 249, 249, 0, + 270, 270, 270, 270, 270, 270, 180, 0, 0, 87, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 180, 0, 285, 0, 0, + 0, 0, 0, 250, 250, 270, 270, 0, 0, 0, + 87, 87, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 2, 2, 2, 13, + 2, 0, 0, 0, 0, 0, 270, 270, 270, 5, + 0, 0, 0, 2, 2, 2, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 0, 0, 180, 180, 0, 180, 180, + 180, 180, 180, 180, 272, 272, 0, 0, 272, 272, + 272, 272, 272, 0, 272, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 272, 272, 272, 272, 272, + 272, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 213, 213, 0, 0, 0, 213, 213, 213, 213, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 272, 272, 0, 213, 213, 213, 213, 0, 0, 0, + 0, 0, 14, 15, 16, 207, 18, 19, 0, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 272, 272, 272, 213, 21, 213, 213, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, - 32, 0, 0, 0, 0, 0, 0, 0, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 242, 17, 206, - 206, 0, 206, 206, 206, 206, 206, 206, 32, 0, - 32, 32, 0, 0, 0, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 0, 0, 269, 269, 0, 269, - 269, 269, 269, 269, 269, 188, 0, 0, 0, 0, - 0, 32, 32, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 87, 87, 0, 0, 87, - 87, 87, 87, 87, 0, 87, 0, 0, 0, 0, + 32, 32, 32, 32, 0, 0, 32, 32, 87, 32, + 32, 32, 32, 32, 32, 0, 208, 213, 0, 213, + 0, 0, 0, 0, 0, 0, 87, 87, 14, 15, + 16, 207, 18, 19, 270, 20, 87, 0, 5, 5, + 5, 5, 5, 5, 0, 5, 0, 0, 0, 0, + 0, 21, 0, 270, 0, 0, 0, 0, 5, 5, + 5, 5, 220, 220, 0, 0, 0, 220, 220, 220, + 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 208, 0, 0, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 87, - 87, 263, 263, 0, 0, 263, 263, 263, 263, 263, - 0, 263, 0, 0, 0, 0, 243, 0, 0, 243, - 0, 6, 263, 263, 263, 263, 263, 263, 173, 0, - 0, 87, 87, 243, 243, 0, 0, 0, 233, 233, - 0, 0, 0, 182, 180, 190, 191, 173, 0, 0, - 0, 0, 0, 0, 177, 178, 0, 263, 263, 0, - 0, 0, 87, 87, 87, 0, 0, 0, 243, 0, - 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, - 5, 13, 5, 0, 0, 0, 0, 0, 263, 263, - 263, 0, 0, 0, 0, 5, 5, 5, 5, 0, - 243, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 209, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 0, 0, 173, 173, 0, - 173, 173, 173, 173, 173, 173, 265, 265, 0, 0, - 265, 265, 265, 265, 265, 0, 265, 0, 0, 32, - 0, 0, 0, 0, 0, 0, 0, 265, 265, 265, - 265, 265, 265, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 206, 206, 0, 0, 206, 206, 206, 206, - 206, 0, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 265, 0, 206, 206, 206, 206, 0, - 0, 0, 0, 0, 0, 0, 242, 242, 0, 0, - 6, 6, 6, 6, 6, 6, 0, 6, 0, 0, - 0, 0, 0, 265, 265, 265, 206, 0, 206, 206, - 6, 6, 6, 6, 0, 0, 0, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 0, 0, 32, 32, - 87, 32, 32, 32, 32, 32, 32, 0, 0, 206, - 298, 206, 0, 0, 252, 0, 0, 252, 87, 87, - 14, 15, 16, 207, 18, 19, 263, 20, 87, 0, - 0, 252, 252, 0, 252, 0, 252, 0, 0, 0, - 0, 0, 0, 21, 0, 263, 14, 15, 16, 17, - 18, 19, 0, 20, 213, 213, 0, 0, 213, 213, - 213, 213, 213, 213, 213, 0, 252, 252, 0, 21, - 0, 0, 0, 0, 208, 0, 0, 213, 213, 213, - 213, 0, 0, 0, 0, 0, 0, 0, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 252, 252, 87, - 87, 0, 87, 87, 87, 87, 87, 87, 213, 0, - 213, 213, 0, 0, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 0, 0, 263, 263, 0, 263, 263, - 263, 263, 263, 263, 0, 0, 0, 0, 0, 243, - 243, 213, 0, 213, 0, 0, 0, 0, 0, 0, - 13, 0, 257, 257, 0, 0, 257, 257, 257, 257, - 257, 265, 257, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 257, 257, 257, 257, 257, 298, - 265, 0, 0, 0, 285, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 0, 298, - 298, 298, 298, 298, 298, 298, 298, 0, 257, 257, - 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, - 258, 258, 298, 0, 258, 258, 258, 258, 258, 0, - 258, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 257, 258, 258, 258, 258, 258, 258, 0, 0, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 0, 0, - 265, 265, 0, 265, 265, 265, 265, 265, 265, 0, - 0, 13, 0, 0, 0, 0, 258, 258, 0, 0, - 0, 0, 0, 0, 0, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 0, 17, 206, 206, 0, 206, - 206, 206, 206, 206, 206, 436, 0, 258, 258, 0, - 256, 256, 0, 0, 256, 256, 256, 256, 256, 0, - 256, 0, 0, 0, 0, 0, 0, 0, 0, 213, - 0, 256, 256, 256, 256, 256, 256, 0, 0, 14, - 15, 16, 207, 18, 19, 0, 20, 0, 213, 0, - 259, 259, 0, 0, 259, 259, 259, 259, 259, 0, - 259, 0, 21, 0, 0, 0, 256, 256, 0, 0, - 0, 259, 259, 259, 259, 259, 259, 252, 252, 252, - 252, 252, 0, 0, 0, 0, 0, 252, 252, 252, - 252, 252, 252, 208, 0, 0, 0, 256, 256, 0, - 0, 0, 0, 0, 0, 0, 259, 259, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 0, 257, 213, 213, - 0, 213, 213, 213, 213, 213, 213, 259, 259, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 260, 260, - 0, 0, 260, 260, 260, 260, 260, 0, 260, 0, - 14, 15, 16, 207, 18, 19, 0, 20, 0, 260, - 260, 260, 260, 260, 260, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 0, 0, 249, 249, 0, 0, - 249, 249, 249, 249, 249, 258, 249, 0, 0, 0, - 0, 0, 0, 0, 260, 260, 0, 249, 249, 249, - 249, 249, 249, 0, 208, 257, 257, 0, 0, 257, - 257, 257, 257, 257, 0, 0, 257, 257, 0, 257, - 257, 257, 257, 257, 257, 260, 260, 0, 0, 0, - 0, 0, 249, 249, 0, 0, 187, 176, 0, 0, - 227, 185, 183, 0, 184, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, - 163, 181, 173, 249, 249, 0, 0, 0, 0, 0, - 0, 0, 0, 258, 258, 256, 0, 258, 258, 258, - 258, 258, 0, 0, 258, 258, 0, 258, 258, 258, - 258, 258, 258, 175, 0, 0, 187, 176, 0, 0, - 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 259, 0, 0, 377, 179, - 163, 181, 173, 174, 0, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 87, 87, 87, 87, 0, 0, 87, 87, 0, + 87, 87, 87, 87, 87, 87, 220, 0, 220, 220, + 0, 0, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 0, 0, 270, 270, 0, 270, 270, 270, 270, + 270, 270, 0, 0, 0, 0, 0, 0, 0, 220, + 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, + 213, 213, 0, 0, 213, 213, 213, 213, 213, 272, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 213, 213, 213, 213, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 213, 0, 0, 0, 0, + 0, 0, 0, 0, 213, 0, 0, 213, 0, 0, + 0, 0, 0, 0, 213, 0, 0, 220, 220, 0, + 0, 220, 220, 220, 220, 220, 220, 220, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 213, 0, 213, + 220, 220, 220, 220, 0, 0, 0, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 0, 0, 272, 272, + 0, 272, 272, 272, 272, 272, 272, 0, 0, 0, + 0, 220, 0, 0, 220, 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, 0, 220, 0, 220, 0, 0, 0, + 0, 0, 0, 0, 264, 264, 0, 0, 264, 264, + 264, 264, 264, 0, 264, 0, 0, 220, 0, 0, + 0, 0, 0, 0, 0, 264, 264, 264, 264, 264, + 264, 0, 0, 0, 0, 0, 220, 0, 0, 0, + 0, 265, 265, 0, 0, 265, 265, 265, 265, 265, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 264, 264, 265, 265, 265, 265, 265, 265, 0, 0, + 0, 0, 0, 6, 6, 6, 6, 6, 6, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 264, 264, 6, 6, 6, 6, 265, 265, 0, + 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 0, 213, 220, 220, 0, 220, + 220, 220, 220, 220, 220, 0, 0, 0, 265, 265, + 0, 0, 0, 0, 213, 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, 266, 266, 0, + 0, 266, 266, 266, 266, 266, 0, 266, 0, 0, + 0, 0, 220, 0, 0, 0, 0, 0, 266, 266, + 266, 266, 266, 266, 263, 263, 0, 0, 0, 0, + 0, 220, 0, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 0, 17, 213, 213, 0, 213, 213, 213, + 213, 213, 213, 266, 266, 263, 263, 0, 0, 0, + 0, 0, 0, 0, 0, 267, 267, 0, 0, 267, + 267, 267, 267, 267, 0, 267, 0, 0, 0, 0, + 0, 0, 0, 0, 266, 266, 267, 267, 267, 267, + 267, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 264, + 0, 220, 220, 0, 220, 220, 220, 220, 220, 220, + 0, 267, 267, 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, 174, 0, 189, 0, 0, 0, 0, + 256, 256, 0, 256, 0, 0, 265, 0, 0, 0, + 0, 0, 267, 267, 256, 256, 256, 256, 256, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 259, 259, 0, 0, 259, 259, 259, - 259, 259, 0, 260, 259, 259, 0, 259, 259, 259, - 259, 259, 259, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 176, 0, 0, 437, 185, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 256, 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, 0, 0, + 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 265, 265, 0, 0, 265, 265, + 265, 265, 265, 263, 0, 265, 265, 0, 265, 265, + 265, 265, 265, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 187, 176, 0, 0, 227, + 185, 183, 266, 184, 0, 186, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 179, 163, + 181, 173, 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, - 0, 249, 0, 0, 0, 0, 0, 179, 163, 181, - 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 176, 0, 0, 0, 185, 183, 0, - 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, - 0, 175, 0, 0, 448, 179, 163, 181, 173, 0, - 0, 260, 260, 0, 0, 260, 260, 260, 260, 260, - 0, 188, 260, 260, 0, 260, 260, 260, 260, 260, - 260, 174, 0, 189, 0, 0, 0, 0, 0, 175, - 192, 0, 0, 0, 0, 0, 0, 0, 0, 249, - 249, 0, 0, 249, 249, 249, 249, 249, 0, 0, - 249, 249, 0, 249, 249, 249, 249, 249, 249, 174, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 187, - 176, 188, 0, 481, 185, 183, 0, 184, 0, 186, + 0, 0, 0, 0, 0, 0, 383, 179, 163, 181, + 173, 0, 175, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 263, 0, 0, 263, 263, 263, 263, 263, + 267, 0, 263, 263, 0, 263, 263, 263, 263, 263, + 263, 175, 174, 0, 189, 0, 0, 0, 0, 0, + 266, 266, 0, 0, 266, 266, 266, 266, 266, 0, + 0, 266, 266, 0, 266, 266, 266, 266, 266, 266, + 0, 174, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 187, 176, 0, 0, 447, 185, 183, 0, 184, + 0, 186, 0, 0, 0, 0, 0, 0, 256, 0, + 0, 0, 0, 0, 179, 163, 181, 173, 0, 0, + 0, 0, 0, 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, 175, 187, + 176, 0, 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 0, 179, 163, 181, 173, 0, 0, 0, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, - 177, 178, 0, 161, 162, 168, 171, 170, 172, 0, - 0, 0, 0, 187, 176, 0, 175, 486, 185, 183, - 0, 184, 0, 186, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 179, 163, 181, 173, - 0, 0, 0, 0, 0, 0, 174, 0, 189, 182, - 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, - 177, 178, 0, 161, 162, 168, 171, 170, 172, 0, - 175, 187, 176, 0, 0, 487, 185, 183, 0, 184, + 0, 458, 179, 163, 181, 173, 0, 0, 174, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 256, 0, 0, + 256, 256, 256, 256, 256, 0, 175, 256, 256, 0, + 256, 256, 256, 256, 256, 256, 187, 0, 0, 0, + 0, 185, 183, 0, 184, 0, 186, 187, 176, 0, + 0, 491, 185, 183, 0, 184, 174, 186, 189, 179, + 188, 181, 0, 0, 0, 0, 0, 0, 0, 0, + 179, 163, 181, 173, 0, 0, 0, 0, 0, 192, + 0, 0, 0, 0, 0, 0, 187, 176, 0, 188, + 496, 185, 183, 0, 184, 0, 186, 0, 0, 0, + 0, 0, 0, 0, 175, 0, 0, 0, 192, 179, + 163, 181, 173, 0, 187, 176, 0, 0, 497, 185, + 183, 0, 184, 0, 186, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 0, 189, 179, 163, 181, + 173, 0, 0, 175, 0, 0, 0, 0, 182, 180, + 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, + 178, 0, 161, 162, 168, 171, 170, 172, 0, 0, + 0, 175, 0, 174, 0, 189, 0, 182, 180, 190, + 191, 164, 165, 166, 167, 169, 188, 0, 177, 178, + 0, 161, 162, 168, 171, 170, 172, 0, 0, 0, + 0, 174, 0, 189, 0, 192, 0, 0, 0, 0, + 0, 187, 176, 0, 0, 540, 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 163, 181, 173, 0, 188, - 174, 0, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, - 0, 187, 176, 0, 0, 530, 185, 183, 175, 184, - 0, 186, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 0, 174, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 182, 180, 190, 191, 164, 165, + 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, + 168, 171, 170, 172, 0, 0, 0, 0, 174, 0, + 189, 0, 0, 257, 0, 0, 257, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 257, 188, 257, 0, 257, 0, 0, 0, 0, + 192, 0, 182, 180, 190, 191, 164, 165, 166, 167, + 169, 192, 0, 177, 178, 0, 161, 162, 168, 171, + 170, 172, 187, 176, 0, 257, 541, 185, 183, 0, + 184, 188, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 179, 163, 181, 173, 0, + 192, 0, 0, 0, 0, 0, 257, 257, 0, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 180, 190, 191, 0, 0, 0, 0, 0, 192, 175, + 182, 180, 190, 191, 164, 165, 166, 167, 169, 0, + 0, 177, 178, 0, 161, 162, 168, 171, 170, 172, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 182, + 180, 190, 191, 164, 165, 166, 167, 169, 0, 0, + 177, 178, 0, 161, 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, - 191, 164, 165, 166, 167, 169, 0, 0, 177, 178, - 0, 161, 162, 168, 171, 170, 172, 0, 174, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, - 165, 166, 167, 169, 188, 0, 177, 178, 0, 161, - 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 0, 187, 176, 0, 0, 531, - 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 179, 163, - 181, 173, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, - 0, 185, 183, 0, 184, 0, 186, 192, 0, 0, - 0, 0, 175, 0, 0, 0, 0, 0, 0, 179, - 0, 181, 182, 180, 190, 191, 164, 165, 166, 167, - 169, 0, 0, 177, 178, 0, 161, 162, 168, 171, - 170, 172, 174, 0, 189, 0, 188, 0, 0, 0, + 191, 164, 165, 166, 167, 169, 188, 0, 177, 178, + 0, 161, 162, 168, 171, 170, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 0, 187, 176, 0, + 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 576, 0, + 179, 163, 181, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 262, 0, 0, 262, 262, + 262, 262, 262, 0, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 175, 262, 262, 262, 262, 262, + 262, 0, 0, 0, 182, 180, 190, 191, 164, 165, + 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, + 168, 171, 170, 172, 174, 0, 189, 0, 253, 253, + 262, 262, 253, 253, 253, 253, 253, 0, 253, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, + 253, 253, 253, 253, 253, 0, 0, 188, 0, 0, + 0, 262, 262, 0, 0, 0, 0, 254, 254, 0, + 0, 254, 254, 254, 254, 254, 192, 254, 0, 0, + 0, 0, 0, 0, 253, 253, 0, 0, 254, 254, + 254, 254, 254, 254, 0, 0, 257, 257, 257, 257, + 257, 0, 0, 0, 0, 0, 257, 257, 257, 257, + 257, 257, 0, 0, 0, 253, 253, 0, 0, 0, + 0, 0, 0, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, + 165, 166, 167, 169, 254, 254, 177, 178, 0, 161, + 162, 168, 171, 170, 172, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 187, 176, 0, 0, 0, 185, 183, 0, + 184, 0, 186, 0, 0, 0, 409, 0, 0, 0, + 0, 0, 188, 0, 0, 179, 163, 181, 173, 0, + 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 0, 187, 176, 0, 0, 0, 185, 183, + 0, 184, 0, 186, 0, 0, 0, 0, 0, 175, + 0, 0, 255, 255, 0, 0, 179, 163, 181, 173, + 0, 0, 454, 0, 0, 0, 0, 0, 0, 461, + 0, 0, 0, 0, 243, 0, 0, 243, 0, 174, + 243, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 175, 0, 0, 0, 243, 243, 0, 243, 0, 243, + 182, 180, 190, 191, 164, 165, 166, 167, 169, 0, + 0, 177, 178, 0, 161, 162, 168, 171, 170, 172, + 174, 0, 189, 0, 0, 0, 0, 0, 509, 243, + 243, 0, 0, 0, 0, 0, 516, 262, 262, 0, + 0, 262, 262, 262, 262, 262, 0, 524, 262, 262, + 0, 262, 262, 262, 262, 262, 262, 0, 0, 0, + 243, 243, 0, 187, 176, 0, 0, 0, 185, 183, + 0, 184, 0, 186, 550, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 163, 181, 173, + 0, 253, 253, 0, 0, 253, 253, 253, 253, 253, + 0, 567, 253, 253, 0, 253, 253, 253, 253, 253, + 253, 0, 0, 0, 0, 0, 0, 0, 577, 0, + 175, 0, 0, 580, 0, 0, 0, 0, 582, 0, + 254, 254, 0, 0, 254, 254, 254, 254, 254, 0, + 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, + 174, 251, 189, 0, 251, 0, 251, 251, 251, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, + 0, 251, 251, 251, 251, 251, 251, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, + 0, 0, 0, 252, 0, 0, 252, 0, 252, 252, + 252, 0, 0, 0, 0, 0, 251, 251, 188, 0, + 0, 0, 0, 252, 252, 252, 252, 252, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 251, 251, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 252, 252, + 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, + 165, 166, 167, 169, 0, 0, 177, 178, 0, 161, + 162, 168, 171, 170, 172, 0, 0, 0, 0, 252, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, 191, - 164, 165, 166, 167, 169, 189, 0, 177, 178, 0, - 161, 162, 168, 171, 170, 172, 188, 0, 0, 0, + 164, 165, 166, 167, 169, 0, 0, 177, 178, 0, + 0, 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, + 243, 243, 243, 243, 243, 0, 0, 243, 243, 0, + 243, 243, 243, 243, 243, 243, 0, 192, 0, 0, + 245, 0, 0, 245, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 182, 180, 190, 191, 164, 165, - 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, - 168, 171, 170, 172, 187, 176, 0, 0, 0, 185, - 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 566, 0, 179, 163, 181, - 173, 0, 0, 0, 182, 180, 190, 191, 164, 165, - 166, 167, 169, 0, 0, 177, 178, 0, 161, 162, - 168, 171, 170, 172, 0, 0, 0, 0, 0, 0, - 0, 175, 255, 255, 0, 0, 255, 255, 255, 255, - 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 0, 255, 255, 255, 255, 255, 255, 0, - 0, 174, 0, 189, 0, 0, 0, 0, 0, 192, - 0, 246, 246, 0, 0, 246, 246, 246, 246, 246, - 0, 246, 0, 0, 0, 0, 0, 0, 255, 255, - 0, 188, 246, 246, 246, 246, 246, 246, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, - 192, 0, 247, 247, 247, 247, 247, 0, 247, 255, - 255, 0, 0, 0, 0, 0, 0, 246, 246, 247, - 247, 247, 247, 247, 247, 0, 0, 0, 182, 180, - 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 246, 246, - 0, 0, 0, 0, 247, 247, 248, 248, 0, 0, - 248, 248, 248, 248, 248, 0, 248, 0, 0, 182, - 180, 190, 191, 0, 0, 0, 0, 248, 248, 248, - 248, 248, 248, 0, 0, 247, 247, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 176, 0, 0, 0, - 185, 183, 0, 184, 0, 186, 0, 0, 0, 0, - 0, 0, 248, 248, 0, 0, 0, 0, 179, 163, - 181, 173, 187, 176, 0, 0, 0, 185, 183, 0, - 184, 0, 186, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 248, 248, 179, 163, 181, 173, 0, - 244, 0, 175, 244, 0, 244, 244, 244, 192, 0, + 245, 245, 0, 245, 244, 245, 0, 244, 0, 0, + 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 246, 0, 0, 246, 244, 244, 246, 244, 0, 244, + 0, 0, 0, 0, 0, 245, 245, 0, 0, 0, + 246, 246, 0, 246, 0, 246, 182, 180, 190, 191, + 164, 165, 166, 167, 169, 0, 0, 177, 178, 244, + 244, 0, 168, 171, 170, 172, 245, 245, 0, 0, + 0, 0, 0, 0, 261, 246, 246, 261, 0, 0, + 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 244, 244, 0, 0, 261, 261, 0, 261, 242, 261, + 0, 242, 0, 0, 242, 0, 246, 246, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 242, 242, + 0, 242, 0, 242, 0, 0, 0, 0, 0, 261, + 261, 0, 0, 251, 251, 0, 0, 251, 251, 251, + 251, 251, 0, 0, 251, 251, 0, 251, 251, 251, + 251, 251, 251, 242, 242, 0, 0, 0, 0, 0, + 261, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 252, 0, 0, 252, + 252, 252, 252, 252, 242, 242, 252, 252, 0, 252, + 252, 252, 252, 252, 252, 260, 0, 0, 260, 0, + 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 241, 260, 260, 241, 260, 0, + 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 241, 0, 241, 258, 241, 0, 258, 0, + 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, + 260, 260, 0, 0, 259, 258, 258, 259, 258, 0, + 258, 0, 0, 0, 0, 0, 241, 241, 0, 0, + 0, 259, 259, 0, 259, 0, 259, 0, 0, 0, + 247, 260, 260, 247, 0, 0, 247, 0, 0, 0, + 258, 258, 0, 0, 0, 0, 0, 241, 241, 0, + 247, 247, 0, 247, 0, 247, 259, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 244, 244, 244, 244, 244, 244, 0, 0, 0, 175, - 0, 0, 174, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 245, 0, 0, 245, 0, 245, 245, 245, - 0, 0, 0, 0, 0, 244, 244, 0, 0, 174, - 0, 189, 245, 245, 245, 245, 245, 245, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 182, 180, 190, - 191, 164, 165, 166, 167, 169, 244, 244, 177, 178, - 0, 161, 162, 168, 171, 170, 172, 245, 245, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 176, 0, - 0, 0, 185, 183, 0, 184, 0, 186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 245, 245, - 179, 163, 181, 173, 0, 255, 255, 0, 0, 255, - 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, - 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 246, 246, 0, 0, 246, 246, - 246, 246, 246, 0, 0, 246, 246, 0, 246, 246, - 246, 246, 246, 246, 174, 0, 189, 0, 0, 0, + 248, 258, 258, 248, 0, 0, 248, 0, 0, 0, + 0, 0, 0, 0, 0, 247, 247, 259, 259, 0, + 248, 248, 0, 248, 0, 248, 245, 245, 245, 245, + 245, 0, 0, 245, 245, 0, 245, 245, 245, 245, + 245, 245, 0, 0, 0, 0, 247, 247, 0, 0, + 244, 244, 244, 244, 244, 248, 248, 244, 244, 0, + 244, 244, 244, 244, 244, 244, 246, 246, 246, 246, + 246, 0, 0, 246, 246, 0, 246, 246, 246, 246, + 246, 246, 0, 0, 0, 0, 248, 248, 0, 0, + 0, 105, 0, 115, 0, 0, 0, 0, 114, 0, + 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, + 261, 261, 261, 261, 261, 0, 0, 261, 261, 0, + 261, 261, 261, 261, 261, 261, 0, 0, 0, 0, + 0, 0, 0, 0, 242, 242, 242, 242, 242, 61, + 0, 242, 242, 0, 242, 242, 242, 242, 242, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 247, 0, 0, 247, 247, 247, 247, 247, - 188, 0, 247, 247, 0, 247, 247, 247, 247, 247, - 247, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 0, 0, 236, 0, 0, 236, 0, 188, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 236, 236, 0, 236, 192, 236, 0, 248, - 248, 0, 0, 248, 248, 248, 248, 248, 0, 0, - 248, 248, 0, 248, 248, 248, 248, 248, 248, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 236, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 182, 180, - 190, 191, 164, 165, 166, 167, 169, 0, 0, 177, - 178, 0, 161, 162, 168, 171, 170, 172, 236, 236, - 0, 0, 0, 0, 0, 182, 180, 190, 191, 164, - 165, 166, 167, 169, 0, 0, 177, 178, 0, 0, - 162, 168, 171, 170, 172, 0, 0, 0, 0, 0, - 0, 0, 244, 244, 0, 0, 244, 244, 244, 244, - 244, 0, 0, 244, 244, 0, 244, 244, 244, 244, - 244, 244, 188, 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, 0, 0, - 0, 192, 0, 0, 245, 245, 0, 0, 245, 245, - 245, 245, 245, 0, 0, 245, 245, 0, 245, 245, - 245, 245, 245, 245, 238, 0, 0, 238, 0, 0, - 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 237, 238, 238, 237, 238, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 237, 0, 237, 0, 237, 0, 0, 0, 0, - 182, 180, 190, 191, 164, 165, 166, 167, 169, 238, - 238, 177, 178, 0, 0, 0, 168, 171, 170, 172, - 0, 0, 0, 0, 239, 237, 237, 239, 0, 0, - 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 238, 238, 0, 0, 239, 239, 0, 239, 254, 239, - 0, 254, 0, 0, 254, 0, 237, 237, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, - 0, 254, 235, 254, 0, 235, 0, 0, 235, 239, - 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 235, 235, 0, 235, 0, 235, 0, 253, - 0, 0, 253, 254, 254, 253, 0, 0, 0, 0, - 239, 239, 0, 0, 0, 0, 0, 0, 0, 253, - 253, 0, 253, 0, 253, 0, 0, 235, 235, 0, - 0, 0, 0, 0, 254, 254, 0, 0, 236, 236, - 236, 236, 236, 0, 0, 236, 236, 0, 236, 236, - 236, 236, 236, 236, 253, 253, 0, 234, 235, 235, - 234, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 251, 0, 0, 251, 234, 234, 251, - 234, 0, 234, 0, 0, 253, 253, 0, 0, 0, - 0, 0, 0, 251, 251, 0, 251, 240, 251, 0, - 240, 0, 0, 240, 0, 0, 0, 0, 0, 0, - 0, 0, 234, 234, 0, 0, 191, 240, 240, 191, - 240, 0, 240, 0, 0, 0, 0, 0, 251, 251, - 0, 0, 0, 191, 191, 0, 191, 0, 191, 0, - 0, 0, 0, 234, 234, 0, 0, 0, 0, 0, - 0, 0, 240, 240, 0, 241, 0, 0, 241, 251, - 251, 241, 0, 0, 0, 0, 0, 0, 191, 0, - 0, 0, 0, 0, 0, 241, 241, 0, 241, 0, - 241, 0, 0, 240, 240, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 176, 0, 0, 0, 185, 183, - 191, 184, 0, 186, 0, 0, 0, 0, 0, 0, - 241, 241, 0, 0, 0, 0, 179, 0, 181, 0, - 238, 238, 238, 238, 238, 0, 0, 238, 238, 0, - 238, 238, 238, 238, 238, 238, 237, 237, 237, 237, - 237, 241, 241, 237, 237, 0, 237, 237, 237, 237, - 237, 237, 0, 0, 187, 176, 0, 0, 0, 185, - 183, 0, 184, 0, 186, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 0, 181, - 0, 0, 189, 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, 175, 0, 0, 254, 254, 254, 254, 254, 0, - 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, - 0, 0, 0, 0, 0, 0, 0, 0, 235, 235, - 235, 235, 235, 189, 0, 235, 235, 0, 235, 235, - 235, 235, 235, 235, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 253, 253, 253, 253, 253, - 0, 0, 253, 253, 0, 253, 253, 253, 253, 253, - 253, 187, 0, 0, 0, 0, 185, 183, 0, 184, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 234, 234, 234, 234, 234, 0, 0, - 234, 234, 0, 234, 234, 234, 234, 234, 234, 251, - 251, 251, 251, 251, 0, 0, 0, 0, 0, 251, - 251, 251, 251, 251, 251, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 240, 240, 240, 240, 188, 0, - 189, 0, 0, 240, 240, 240, 240, 240, 240, 191, - 191, 191, 191, 191, 0, 0, 0, 192, 0, 191, - 191, 191, 191, 191, 191, 0, 0, 105, 0, 115, - 0, 0, 0, 0, 114, 0, 0, 103, 105, 104, - 115, 0, 0, 0, 0, 114, 0, 0, 103, 0, - 104, 241, 241, 241, 241, 241, 259, 0, 0, 188, - 0, 241, 241, 241, 241, 241, 241, 105, 0, 115, - 0, 399, 0, 0, 114, 0, 0, 103, 192, 104, - 0, 0, 0, 0, 0, 61, 182, 180, 190, 191, - 0, 0, 0, 0, 255, 0, 61, 177, 178, 105, - 0, 115, 0, 0, 0, 0, 114, 0, 0, 103, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 444, 102, 61, 0, 0, 353, 0, - 451, 106, 0, 105, 0, 115, 0, 0, 0, 0, - 114, 0, 0, 103, 0, 104, 0, 182, 180, 190, - 191, 0, 0, 0, 0, 0, 0, 61, 177, 178, - 106, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 115, 0, 0, 0, 0, 114, 0, - 0, 103, 0, 104, 0, 0, 188, 0, 0, 499, - 0, 61, 106, 0, 0, 0, 0, 506, 0, 253, - 0, 0, 0, 0, 0, 192, 0, 0, 514, 0, + 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, + 0, 260, 260, 260, 260, 260, 0, 0, 260, 260, + 259, 260, 260, 260, 260, 260, 260, 241, 241, 241, + 241, 241, 0, 0, 241, 241, 0, 241, 241, 241, + 241, 241, 241, 0, 0, 0, 0, 0, 0, 61, + 0, 258, 258, 258, 258, 258, 0, 0, 0, 0, + 0, 258, 258, 258, 258, 258, 258, 259, 259, 259, + 259, 259, 0, 0, 0, 0, 0, 259, 259, 259, + 259, 259, 259, 0, 106, 0, 0, 0, 145, 63, + 64, 65, 66, 67, 0, 0, 247, 247, 247, 247, + 247, 0, 0, 0, 0, 0, 247, 247, 247, 247, + 247, 247, 0, 0, 10, 0, 0, 105, 0, 115, + 0, 0, 0, 0, 114, 0, 0, 103, 0, 104, + 0, 0, 0, 0, 0, 0, 248, 248, 248, 248, + 248, 110, 102, 0, 0, 0, 248, 248, 248, 248, + 248, 248, 0, 105, 0, 115, 0, 0, 0, 0, + 114, 0, 0, 103, 0, 104, 0, 0, 113, 0, + 0, 0, 0, 0, 109, 61, 0, 0, 0, 0, + 0, 251, 0, 0, 105, 0, 115, 0, 0, 0, + 0, 114, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 0, 61, - 105, 0, 115, 0, 0, 540, 0, 114, 0, 0, - 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 145, 63, 64, 65, 66, 67, - 0, 0, 557, 0, 106, 145, 63, 64, 65, 66, - 67, 0, 0, 0, 182, 180, 190, 191, 0, 567, - 10, 0, 0, 0, 570, 177, 178, 0, 61, 572, - 0, 10, 0, 0, 145, 63, 64, 65, 66, 67, - 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, - 10, 0, 0, 106, 0, 0, 111, 112, 64, 65, - 66, 67, 0, 0, 113, 0, 0, 0, 0, 0, - 109, 0, 0, 0, 0, 113, 0, 110, 0, 0, - 0, 109, 10, 0, 0, 0, 0, 0, 0, 0, + 106, 61, 253, 0, 0, 0, 0, 0, 145, 63, + 64, 65, 66, 67, 0, 105, 0, 115, 0, 256, + 107, 108, 114, 0, 0, 103, 0, 104, 0, 0, + 0, 0, 61, 0, 10, 105, 106, 115, 0, 0, + 0, 0, 114, 0, 0, 103, 0, 104, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 0, 106, 0, 0, + 0, 0, 0, 61, 105, 0, 115, 0, 0, 0, + 0, 114, 0, 0, 103, 0, 104, 0, 113, 0, + 0, 0, 0, 61, 109, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 359, 0, 0, 106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, + 0, 0, 61, 0, 111, 112, 64, 65, 66, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 260, 0, + 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 106, 0, 0, 145, 63, 64, 65, 66, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 113, 0, 0, 0, 0, 110, - 109, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 260, 0, 107, 108, 145, 63, - 64, 65, 66, 67, 0, 0, 113, 107, 108, 0, - 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 107, 108, 0, 0, - 113, 0, 0, 0, 0, 0, 109, 0, 0, 0, - 0, 110, 0, 0, 0, 0, 0, 145, 63, 64, - 65, 66, 67, 0, 0, 0, 0, 0, 107, 108, - 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, - 0, 0, 0, 10, 109, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 145, 63, 64, 65, 66, 67, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, + 109, 0, 0, 110, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 145, 63, 64, 65, 66, 67, 0, 0, + 113, 0, 0, 0, 110, 0, 109, 0, 0, 0, + 0, 0, 145, 63, 64, 65, 66, 67, 10, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, + 0, 113, 0, 0, 0, 0, 0, 109, 10, 0, + 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 0, 299, 300, 64, 65, 66, 67, 0, 0, 0, + 0, 0, 107, 108, 0, 110, 0, 0, 0, 0, + 0, 0, 113, 0, 0, 0, 0, 10, 109, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 113, 107, 108, 0, 0, 0, 109, 0, + 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, - 110, 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, 113, 0, 0, - 107, 108, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 113, 0, 0, 107, 108, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 108, 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, 0, 107, - 108, + 0, 0, 0, 107, 108, ); protected static $yyCheck = array(4, - 47, 48, 49, 95, 58, 51, 40, 91, 141, 60, - 123, 260, 261, 125, 198, 91, 125, 91, 44, 91, - 125, 260, 497, 28, 29, 91, 73, 125, 75, 34, - 80, 42, 44, 59, 41, 81, 82, 44, 40, 59, - 91, 395, 47, 48, 49, 126, 521, 286, 95, 37, - 142, 58, 59, 59, 42, 43, 157, 45, 44, 47, - 41, 80, 41, 44, 33, 44, 35, 72, 73, 389, - 75, 40, 124, 126, 43, 41, 45, 58, 59, 58, - 59, 93, 37, 437, 41, 63, 93, 42, 272, 123, - 95, 41, 47, 41, 44, 142, 44, 40, 40, 125, - 303, 44, 59, 123, 46, 152, 59, 93, 58, 59, - 58, 59, 93, 91, 93, 37, 59, 123, 125, 220, - 42, 43, 91, 45, 481, 47, 227, 93, 295, 486, - 135, 136, 41, 138, 304, 44, 93, 142, 126, 80, - 46, 188, 462, 93, 125, 93, 125, 152, 330, 58, - 59, 260, 319, 260, 159, 260, 91, 126, 340, 125, - 428, 294, 103, 104, 105, 106, 107, 108, 125, 110, - 123, 126, 91, 114, 531, 125, 260, 125, 44, 363, - 123, 286, 125, 188, 93, 91, 260, 192, 260, 46, - 357, 548, 44, 300, 260, 362, 62, 465, 311, 46, - 41, 558, 286, 44, 126, 210, 260, 261, 309, 260, - 62, 344, 286, 154, 286, 156, 125, 58, 59, 59, - 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, 297, 189, 260, - 331, 352, 93, 33, 320, 35, 340, 198, 260, 312, - 40, 373, 374, 43, 340, 45, 332, 283, 41, 320, - 286, 44, 59, 260, 340, 373, 374, 63, 331, 298, - 260, 332, 260, 224, 125, 58, 59, 44, 340, 340, - 64, 260, 261, 262, 263, 264, 265, 33, 300, 35, - 305, 520, 59, 46, 40, 91, 286, 43, 286, 45, - 251, 91, 253, 300, 255, 256, 260, 286, 259, 260, - 93, 402, 403, 542, 312, 260, 261, 262, 263, 264, - 265, 272, 40, 379, 41, 41, 123, 44, 44, 440, - 91, 260, 93, 331, 313, 125, 126, 60, 41, 402, - 403, 44, 125, 340, 295, 91, 297, 312, 41, 310, - 410, 44, 364, 304, 40, 58, 59, 286, 46, 310, - 46, 340, 341, 342, 343, 380, 331, 346, 319, 40, - 344, 345, 58, 310, 389, 46, 93, 93, 59, 125, - 126, 360, 361, 362, 363, 41, 365, 366, 44, 491, - 93, 370, 61, 372, 61, 346, 91, 414, 415, 41, - 93, 41, 44, 332, 402, 403, 357, 33, 125, 35, - 311, 362, 363, 428, 40, 366, 123, 43, 41, 45, - 480, 44, 125, 402, 403, 414, 415, 310, 41, 58, - 41, 44, 125, 44, 491, 373, 374, 402, 403, 390, - 41, 41, 41, 44, 44, 44, 41, 462, 59, 44, - 465, 430, 91, 468, 414, 415, 414, 415, 59, 410, - 411, 41, 123, 44, 44, 91, 123, 418, 419, 529, - 260, 261, 262, 263, 264, 265, 491, 123, 58, 59, - 58, 61, 93, 63, 41, 410, 543, 44, 44, 93, - 41, 44, 93, 44, 445, 414, 286, 123, 93, 93, - 126, 58, 59, 260, 123, 562, 457, 125, 59, 41, - 260, 40, 44, 93, 260, 261, 262, 263, 264, 265, - 300, 301, 302, 313, 125, 123, 58, 59, 543, 480, - 125, 123, 483, 257, 485, 44, 93, 300, 301, 302, - 286, 58, 93, 40, 124, 125, 58, 562, 260, 123, - 340, 341, 342, 343, 40, 40, 346, 41, 93, 40, - 125, 93, 61, 414, 415, 40, 91, 313, 125, 91, - 360, 361, 362, 363, 125, 365, 366, 123, 529, 61, - 370, 371, 372, 373, 374, 280, 281, 282, 283, 284, - 285, 125, 287, 125, 340, 341, 342, 343, 549, 91, - 346, 41, 125, 41, 125, 300, 301, 302, 340, 304, - 40, 40, 402, 403, 360, 361, 362, 363, 40, 365, - 366, 40, 72, 59, 370, 59, 372, 373, 374, 40, - 340, 414, 415, 40, 260, 261, 262, 263, 264, 265, - 430, 37, 38, 59, 40, 41, 42, 43, 44, 45, - 260, 47, 125, 41, 41, 59, 402, 403, 61, 361, - 286, 340, 58, 59, 60, 61, 62, 63, 37, 38, - 61, 40, 41, 42, 43, 44, 45, 91, 47, 59, - 41, 44, 125, 93, 430, 59, 136, 313, 138, 58, - 59, 123, 61, 62, 63, 91, 40, 93, 94, 335, - 125, 41, 152, 44, 44, 364, 123, 321, 46, 159, - 41, 414, 415, 340, 340, 341, 342, 343, 58, 59, - 346, 123, 91, 340, 93, 94, 41, 123, 124, 125, - 126, 125, 125, 369, 360, 361, 362, 363, 260, 365, - 366, 59, 125, 371, 370, 40, 372, 123, 59, 41, - 125, 58, 125, 93, 123, 124, 125, 126, 91, 125, - 210, 41, 260, 123, 286, 37, 38, 125, 260, 41, - 42, 43, 44, 45, 123, 47, 402, 403, 300, 301, - 302, 59, 41, 93, 123, 125, 58, 59, 60, 61, - 62, 63, 37, 38, 286, 125, 41, 42, 43, 44, - 45, 46, 47, 257, 430, 58, 125, 91, 300, 301, - 302, 41, 91, 58, 59, 60, 61, 62, 63, 91, - 91, 93, 94, 93, 404, 405, 406, 407, 408, 257, - 59, 125, 125, 123, 414, 415, 416, 417, 418, 419, - 125, 59, 41, 59, 41, 481, 91, 41, 93, 94, - 486, 364, 124, 125, 126, 305, 41, 414, 415, 41, - 125, 125, 7, 78, 260, 6, 280, 281, 282, 283, - 284, 285, 77, 287, 57, 293, 464, 468, 46, 124, - 125, 126, 414, 415, 434, 41, 45, 192, 44, 303, - 458, 260, 84, 537, 446, 531, 503, 503, 152, 305, - 37, 38, 58, 59, 152, 42, 43, 138, 45, 200, - 47, 197, 548, 25, 310, 311, 312, -1, -1, -1, - 334, -1, 558, 60, 320, 62, -1, 260, 261, 262, - 263, 264, 265, -1, 330, 331, 332, 93, -1, -1, - -1, 310, 311, 312, 340, 280, 281, 282, 283, 284, - 285, 320, 287, -1, -1, -1, -1, 94, -1, -1, - -1, 330, 331, 332, -1, -1, -1, 300, 303, 125, - -1, 340, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, -1, 124, -1, 126, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - -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, -1, -1, 91, -1, 93, - 94, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, 41, -1, -1, 44, -1, -1, 331, - 124, 125, 126, -1, -1, -1, -1, 312, -1, -1, - 58, 59, -1, -1, 414, 415, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 46, 47, 93, 91, -1, -1, -1, + 47, 48, 49, 51, 123, 95, 297, 91, 395, 91, + 125, 125, 91, 59, 41, 44, 91, 44, 303, 91, + 59, 125, 40, 28, 29, 40, 73, 125, 75, 34, + 44, 58, 59, 81, 82, 507, 42, 72, 59, 126, + 59, 141, 47, 48, 49, 304, 157, 124, 95, 46, + 37, 38, 142, 46, 63, 42, 43, 64, 45, 531, + 47, 60, 260, 44, 93, 44, 93, 72, 73, 41, + 75, 41, 44, 60, 44, 62, 401, 123, 198, 93, + 59, 126, 91, 438, 123, 472, 58, 59, 58, 59, + 95, 61, 91, 63, 58, 142, 41, 91, 125, 44, + 44, 136, 123, 138, 123, 152, 46, 94, 123, 220, + 260, 125, 93, 58, 59, 40, 227, 152, 41, 46, + 475, 93, 447, 93, 159, 41, 260, 261, 44, 420, + 135, 136, 41, 138, 80, 44, 59, 142, 91, 126, + 93, 188, 58, 59, 125, 260, 125, 152, 93, 93, + 300, 91, 272, 125, 159, 125, 260, 103, 104, 105, + 106, 107, 108, 260, 110, 93, 37, 38, 114, 338, + 93, 42, 43, 530, 45, 210, 47, 93, 260, 59, + 125, 260, 286, 188, 93, 260, 260, 192, 260, 60, + 340, 62, 311, 44, 294, 552, 60, 125, 44, 490, + 310, 312, 125, 300, 286, 210, 375, 286, 154, 125, + 156, 62, 286, 59, 286, 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, 260, 189, 331, 320, 357, 347, 539, 369, + 44, 260, 198, 332, 260, 126, 340, 332, 340, 373, + 374, 260, 33, 340, 35, 340, 260, 312, 260, 40, + 91, 330, 43, 308, 45, 373, 374, 286, 224, 37, + 38, 340, 300, 63, 42, 43, 331, 45, 283, 47, + 44, 286, 286, 91, 286, 40, 260, 261, 310, 93, + 40, 46, 60, 308, 62, 251, 46, 253, 62, 255, + 256, 91, 46, 259, 260, 402, 403, 40, 58, 61, + 91, 320, 491, 46, 59, 312, 272, 496, 33, 41, + 35, 125, 44, 332, 41, 40, 94, 385, 43, 450, + 45, 340, 344, 345, 331, 41, 364, 40, 44, 295, + 61, 297, 311, 46, 125, 126, 41, 402, 403, 44, + 123, 307, 58, 59, 91, 58, 124, 313, 126, 300, + 301, 302, 541, 58, 59, 41, 322, 310, 44, 41, + 41, 386, 44, 44, 373, 374, 91, 414, 415, 558, + 395, 58, 58, 59, 33, 123, 35, 93, 59, 568, + 91, 40, 44, 349, 43, 123, 45, 58, 93, 355, + 356, 501, 358, 400, 401, 402, 403, 363, 44, 410, + 125, 126, 368, 369, 411, 412, 372, 93, 41, 125, + 93, 44, 93, 438, 404, 405, 406, 407, 408, 260, + 125, 312, 414, 415, 414, 415, 416, 417, 418, 419, + 396, 295, 91, 41, 501, 123, 44, 44, 41, 125, + 331, 44, 260, 41, 125, 286, 44, 472, 41, 414, + 475, 44, 93, 478, 420, 421, 59, 260, 322, 300, + 301, 302, 428, 429, 123, 58, 59, 126, 286, 260, + 261, 262, 263, 264, 265, 123, 501, 91, 414, 415, + 260, 125, 300, 301, 302, 41, 553, 40, 44, 455, + 93, 41, 123, 123, 44, 286, 33, 44, 35, 363, + 93, 467, 40, 40, 368, 572, 43, 257, 45, 400, + 401, 402, 403, 260, 261, 262, 263, 264, 265, 58, + 411, 412, 313, 41, 490, 58, 44, 493, 553, 495, + 41, 260, 125, 44, 312, 260, 261, 262, 263, 264, + 265, 41, 41, 123, 44, 44, 40, 572, 58, 340, + 341, 342, 343, 331, 91, 346, 41, 37, 44, 58, + 59, 286, 42, 43, 40, 45, 93, 47, 40, 360, + 361, 362, 363, 539, 365, 366, 300, 301, 302, 370, + 371, 372, 373, 374, 125, 40, 61, 91, 313, 126, + 61, 123, 41, 559, 93, 125, 125, 125, 41, 91, + 340, 260, 261, 262, 263, 264, 265, 40, 40, 40, + 40, 402, 403, 44, 59, 340, 341, 342, 343, 59, + 40, 346, 400, 401, 402, 403, 125, 286, 59, 40, + 340, 40, 59, 411, 412, 360, 361, 362, 363, 430, + 365, 366, 260, 125, 41, 370, 126, 372, 373, 374, + 41, 37, 59, 37, 313, 61, 42, 43, 42, 45, + 361, 47, 41, 47, 340, 44, 280, 281, 282, 283, + 284, 285, 61, 287, 60, 41, 62, 402, 403, 58, + 59, 340, 341, 342, 343, 37, 59, 346, 44, 303, + 42, 43, 123, 45, 125, 47, 125, 93, 414, 415, + 123, 360, 361, 362, 363, 430, 365, 366, 59, 414, + 415, 370, 125, 372, 93, 40, 44, 364, 123, 321, + 334, 41, 46, 260, 261, 262, 263, 264, 265, 37, + 38, 340, 40, 41, 42, 43, 44, 45, 123, 47, + 126, 340, 126, 402, 403, 41, 125, 125, 125, 286, + 58, 59, 60, 61, 62, 63, 37, 38, 59, 40, + 41, 42, 43, 44, 45, 371, 47, 125, 260, 91, + 491, 430, 40, 123, 126, 496, 313, 58, 59, 59, + 61, 62, 63, 91, 41, 93, 94, 44, 280, 281, + 282, 283, 284, 285, 286, 287, 125, 41, 125, 58, + 41, 58, 59, 340, 341, 342, 343, 125, 123, 346, + 91, 303, 93, 94, 125, 123, 124, 125, 126, 260, + 541, 414, 415, 360, 361, 362, 363, 59, 365, 366, + 123, 41, 312, 370, 123, 372, 93, 558, 93, 125, + 257, 58, 123, 124, 125, 126, 41, 568, 125, 44, + 41, 331, 91, 37, 38, 91, 91, 41, 42, 43, + 44, 45, 257, 47, 59, 402, 403, 93, 125, 125, + 41, 125, 123, 59, 58, 59, 60, 61, 62, 63, + 37, 38, 125, 59, 41, 42, 43, 44, 45, 46, + 47, 41, 59, 430, 41, 41, 41, 44, 93, 364, + 125, 58, 59, 60, 61, 62, 63, 91, 41, 93, + 94, 58, 59, 41, 41, 414, 415, 125, 7, 78, + 6, 41, 402, 403, 44, 57, 312, 444, 312, 77, + 125, 293, 474, 478, 91, 46, 93, 94, 58, 59, + 124, 125, 126, 45, 84, 331, 93, 331, 358, 456, + 91, 547, 260, 468, 41, 192, 513, 44, 280, 281, + 282, 283, 284, 285, 513, 287, 298, 124, 125, 126, + 152, 58, 59, 93, 152, 308, 200, 197, 125, 260, + 138, 303, 25, -1, 125, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, 310, 311, 312, 125, 93, 58, 59, -1, + -1, -1, 320, -1, 400, 401, 402, 403, 402, 403, + -1, -1, 330, 331, 332, 411, 412, -1, 91, 310, + 311, 312, 340, -1, -1, 414, 415, -1, 125, 320, + -1, -1, 93, -1, -1, -1, -1, -1, -1, 330, + 331, 332, -1, 280, 281, 282, 283, 284, 285, 340, + 287, 37, 38, -1, -1, 41, 42, 43, 44, 45, + 46, 47, -1, -1, 125, -1, 303, -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, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, 91, -1, 93, 94, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 280, + 281, 282, 283, 284, 285, -1, 287, 331, 124, 125, + 126, -1, -1, -1, -1, 312, -1, 414, 415, -1, + -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 46, 47, 334, 91, -1, -1, 260, 261, 262, + 263, 264, 265, 58, 59, 60, 61, 62, 63, -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, 91, 300, 93, 94, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, -1, -1, -1, 414, 415, 124, + 125, 126, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, -1, 47, 414, 415, -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, -1, 91, -1, -1, -1, 414, 415, -1, + 58, 59, 60, 61, 62, 63, 312, -1, -1, 93, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, 125, -1, -1, + -1, -1, -1, 414, 415, 93, 94, -1, -1, -1, + 124, 125, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 280, 281, 282, 283, 284, 285, 91, + 287, -1, -1, -1, -1, -1, 124, 125, 126, 91, + -1, -1, -1, 300, 301, 302, -1, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 125, 400, 401, 402, 403, 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, -1, -1, 312, -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, 125, 410, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 91, -1, - 93, 94, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 312, -1, -1, -1, -1, - -1, 124, 125, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 331, 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, -1, -1, 41, -1, -1, 44, - -1, 91, 58, 59, 60, 61, 62, 63, 312, -1, - -1, 93, 94, 58, 59, -1, -1, -1, 414, 415, - -1, -1, -1, 400, 401, 402, 403, 331, -1, -1, - -1, -1, -1, -1, 411, 412, -1, 93, 94, -1, - -1, -1, 124, 125, 126, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, 280, 281, 282, 283, 284, - 285, 91, 287, -1, -1, -1, -1, -1, 124, 125, - 126, -1, -1, -1, -1, 300, 301, 302, 303, -1, - 125, -1, -1, -1, -1, -1, -1, 91, -1, -1, - -1, -1, -1, -1, -1, 125, 400, 401, 402, 403, + 63, -1, -1, -1, -1, -1, 331, -1, -1, -1, + 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, 280, 281, 282, 283, 284, 285, -1, 287, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 126, 91, 303, 93, 94, -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, -1, 334, 124, -1, 126, + -1, -1, -1, -1, -1, -1, 330, 331, 280, 281, + 282, 283, 284, 285, 312, 287, 340, -1, 280, 281, + 282, 283, 284, 285, -1, 287, -1, -1, -1, -1, + -1, 303, -1, 331, -1, -1, -1, -1, 300, 301, + 302, 303, 37, 38, -1, -1, -1, 42, 43, 44, + 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 334, -1, -1, 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, 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, -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, 93, 94, -1, 60, 61, 62, 63, -1, - -1, -1, -1, -1, -1, -1, 414, 415, -1, -1, - 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, - -1, -1, -1, 124, 125, 126, 91, -1, 93, 94, - 300, 301, 302, 303, -1, -1, -1, 400, 401, 402, + 414, 415, 416, 417, 418, 419, 91, -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, -1, -1, -1, -1, -1, -1, 124, + -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 312, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, -1, 331, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, 312, -1, -1, -1, -1, + -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, + -1, -1, -1, -1, 331, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, -1, 126, + 60, 61, 62, 63, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 312, 414, 415, 416, 417, 418, 419, -1, -1, 124, - 91, 126, -1, -1, 41, -1, -1, 44, 330, 331, - 280, 281, 282, 283, 284, 285, 312, 287, 340, -1, - -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, - -1, -1, -1, 303, -1, 331, 280, 281, 282, 283, - 284, 285, -1, 287, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 46, 47, -1, 93, 94, -1, 303, - -1, -1, -1, -1, 334, -1, -1, 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, 414, 415, 416, 417, 418, 419, 91, -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, -1, -1, -1, -1, 414, - 415, 124, -1, 126, -1, -1, -1, -1, -1, -1, - 91, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 312, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, 260, - 331, -1, -1, -1, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 312, -1, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 93, 94, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - 37, 38, 303, -1, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 58, 59, 60, 61, 62, 63, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, 91, -1, -1, -1, -1, 93, 94, -1, -1, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, 91, -1, -1, 94, -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, -1, 124, -1, 126, -1, -1, -1, + -1, -1, -1, -1, 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, -1, -1, 331, -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, -1, -1, + -1, -1, -1, 280, 281, 282, 283, 284, 285, -1, + 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 300, 301, 302, 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, 125, -1, 124, 125, -1, - 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, -1, -1, 280, - 281, 282, 283, 284, 285, -1, 287, -1, 331, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, -1, 303, -1, -1, -1, 93, 94, -1, -1, - -1, 58, 59, 60, 61, 62, 63, 404, 405, 406, - 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, - 417, 418, 419, 334, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, 312, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + 405, 406, 407, 408, -1, 312, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, -1, -1, 124, 125, + -1, -1, -1, -1, 331, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, - 280, 281, 282, 283, 284, 285, -1, 287, -1, 58, - 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, - -1, -1, -1, 303, -1, -1, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 312, 47, -1, -1, -1, - -1, -1, -1, -1, 93, 94, -1, 58, 59, 60, - 61, 62, 63, -1, 334, 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, 93, 94, -1, -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, 124, 125, -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, 94, -1, -1, 37, 38, -1, -1, - -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, 312, -1, -1, 59, 60, - 61, 62, 63, 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, 58, + 59, 60, 61, 62, 63, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, + -1, -1, 312, -1, -1, -1, -1, -1, 58, 59, + 60, 61, 62, 63, 93, 94, -1, -1, -1, -1, + -1, 331, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 93, 94, 124, 125, -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, -1, 124, 125, 58, 59, 60, 61, + 62, 63, -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, + -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, -1, 312, -1, -1, -1, + -1, -1, 124, 125, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 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, -1, 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, 312, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, + -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, + 124, 125, -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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 312, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, + 62, 63, -1, -1, 37, 38, -1, -1, -1, 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, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 94, -1, -1, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, 59, 60, 61, 62, + 63, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, 312, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 124, -1, 126, -1, -1, -1, -1, -1, 94, - 331, -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, - -1, 126, -1, -1, -1, -1, -1, -1, -1, 37, - 38, 312, -1, 41, 42, 43, -1, 45, -1, 47, + 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 94, 124, -1, 126, -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, 124, -1, 126, -1, -1, -1, -1, -1, -1, + -1, 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, -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, 94, 37, + 38, -1, -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, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, -1, -1, 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, -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, - 94, 37, 38, -1, -1, 41, 42, 43, -1, 45, + -1, 59, 60, 61, 62, 63, -1, -1, 124, -1, + 126, -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, -1, -1, -1, + -1, 42, 43, -1, 45, -1, 47, 37, 38, -1, + -1, 41, 42, 43, -1, 45, 124, 47, 126, 60, + 312, 62, -1, -1, -1, -1, -1, -1, -1, -1, + 60, 61, 62, 63, -1, -1, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 312, + 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, 94, -1, -1, -1, 331, 60, + 61, 62, 63, -1, 37, 38, -1, -1, 41, 42, + 43, -1, 45, -1, 47, 126, -1, -1, -1, -1, + -1, -1, -1, -1, 124, -1, 126, 60, 61, 62, + 63, -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, -1, -1, + -1, 94, -1, 124, -1, 126, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, 124, -1, 126, -1, 331, -1, -1, -1, -1, + -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, 312, - 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - -1, 37, 38, -1, -1, 41, 42, 43, 94, 45, - -1, 47, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, 124, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 94, -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, 124, -1, - 126, -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, -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, -1, -1, 312, -1, - -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, - -1, 42, 43, -1, 45, -1, 47, 331, -1, -1, - -1, -1, 94, -1, -1, -1, -1, -1, -1, 60, - -1, 62, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 124, -1, 126, -1, 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, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 126, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 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, 312, -1, -1, -1, -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, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 37, 38, -1, -1, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, -1, 60, 61, 62, - 63, -1, -1, -1, 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, 94, 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, 124, -1, 126, -1, -1, -1, -1, -1, 331, - -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, 93, 94, - -1, 312, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - 331, -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, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 124, 125, - -1, -1, -1, -1, 93, 94, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, -1, 400, - 401, 402, 403, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, 93, 94, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, 312, - -1, -1, -1, 124, 125, 60, 61, 62, 63, -1, - 38, -1, 94, 41, -1, 43, 44, 45, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, 94, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, - -1, -1, 38, -1, -1, 41, -1, 43, 44, 45, - -1, -1, -1, -1, -1, 93, 94, -1, -1, 124, - -1, 126, 58, 59, 60, 61, 62, 63, -1, -1, + 416, 417, 418, 419, -1, -1, -1, -1, 124, -1, + 126, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 312, 61, -1, 63, -1, -1, -1, -1, + 331, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 331, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 37, 38, -1, 93, 41, 42, 43, -1, + 45, 312, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, + 331, -1, -1, -1, -1, -1, 124, 125, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 402, 403, -1, -1, -1, -1, -1, 331, 94, + 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, -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, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 124, 125, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 93, 94, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - 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, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, + -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, + 60, 61, 62, 63, -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, -1, -1, 94, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 124, -1, 126, -1, -1, -1, + 416, 417, 418, 419, 124, -1, 126, -1, 37, 38, + 93, 94, 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, 312, -1, -1, + -1, 124, 125, -1, -1, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 331, 47, -1, -1, + -1, -1, -1, -1, 93, 94, -1, -1, 58, 59, + 60, 61, 62, 63, -1, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, 124, 125, -1, -1, -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, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 124, 125, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 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, 37, 38, -1, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, 359, -1, -1, -1, + -1, -1, 312, -1, -1, 60, 61, 62, 63, -1, + -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, 37, 38, -1, -1, -1, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, -1, 94, + -1, -1, 124, 125, -1, -1, 60, 61, 62, 63, + -1, -1, 415, -1, -1, -1, -1, -1, -1, 422, + -1, -1, -1, -1, 38, -1, -1, 41, -1, 124, + 44, 126, -1, -1, -1, -1, -1, -1, -1, -1, + 94, -1, -1, -1, 58, 59, -1, 61, -1, 63, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 124, -1, 126, -1, -1, -1, -1, -1, 481, 93, + 94, -1, -1, -1, -1, -1, 489, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, 500, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + 124, 125, -1, 37, 38, -1, -1, -1, 42, 43, + -1, 45, -1, 47, 527, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, -1, 38, -1, -1, 41, -1, 312, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, 61, 331, 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, -1, -1, 93, 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, 125, + -1, 554, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, -1, -1, 571, -1, + 94, -1, -1, 576, -1, -1, -1, -1, 581, -1, + 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 124, 38, 126, -1, 41, -1, 43, 44, 45, -1, + -1, -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, 38, -1, -1, 41, -1, 43, 44, + 45, -1, -1, -1, -1, -1, 93, 94, 312, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, 331, 400, 401, + -1, -1, 404, 405, 406, 407, 408, 124, 125, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 93, 94, -1, -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, -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, 312, -1, -1, -1, -1, -1, -1, -1, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, -1, -1, -1, 124, + 125, -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, + -1, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -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, + -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, 331, -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, 38, 63, -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, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 93, - 94, 411, 412, -1, -1, -1, 416, 417, 418, 419, + -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, + 58, 59, -1, 61, -1, 63, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, 93, + 94, -1, 416, 417, 418, 419, 124, 125, -1, -1, -1, -1, -1, -1, 38, 93, 94, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, 58, 59, -1, 61, 38, 63, -1, 41, -1, -1, 44, -1, 124, 125, -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, -1, 63, -1, 38, - -1, -1, 41, 93, 94, 44, -1, -1, -1, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, 93, 94, -1, - -1, -1, -1, -1, 124, 125, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 93, 94, -1, 38, 124, 125, - 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, 124, 125, -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, 41, 58, 59, 44, - 61, -1, 63, -1, -1, -1, -1, -1, 93, 94, - -1, -1, -1, 58, 59, -1, 61, -1, 63, -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, 93, -1, - -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, - 63, -1, -1, 124, 125, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, - 125, 45, -1, 47, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, 60, -1, 62, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + -1, 61, -1, 63, -1, -1, -1, -1, -1, 93, + 94, -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, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, 124, 125, 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, 41, 58, 59, 44, 61, -1, + 63, -1, -1, -1, -1, -1, 93, 94, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -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, -1, 63, 93, 94, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, 124, 125, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, 124, 125, -1, + 58, 59, -1, 61, -1, 63, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, 124, 125, -1, -1, + 404, 405, 406, 407, 408, 93, 94, 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, -1, 37, 38, -1, -1, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, - -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, 124, 125, -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, 60, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - -1, 94, -1, -1, 404, 405, 406, 407, 408, -1, + -1, -1, -1, -1, 404, 405, 406, 407, 408, 91, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -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, -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, 37, -1, -1, -1, -1, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, -1, 62, -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, 404, - 405, 406, 407, 408, -1, -1, -1, -1, -1, 414, - 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, - -1, -1, -1, 404, 405, 406, 407, 408, 312, -1, - 126, -1, -1, 414, 415, 416, 417, 418, 419, 404, - 405, 406, 407, 408, -1, -1, -1, 331, -1, 414, - 415, 416, 417, 418, 419, -1, -1, 33, -1, 35, - -1, -1, -1, -1, 40, -1, -1, 43, 33, 45, - 35, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, 404, 405, 406, 407, 408, 62, -1, -1, 312, - -1, 414, 415, 416, 417, 418, 419, 33, -1, 35, - -1, 353, -1, -1, 40, -1, -1, 43, 331, 45, - -1, -1, -1, -1, -1, 91, 400, 401, 402, 403, - -1, -1, -1, -1, 60, -1, 91, 411, 412, 33, - -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, 405, 58, 91, -1, -1, 123, -1, - 412, 126, -1, 33, -1, 35, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, 400, 401, 402, - 403, -1, -1, -1, -1, -1, -1, 91, 411, 412, - 126, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, 312, -1, -1, 471, - -1, 91, 126, -1, -1, -1, -1, 479, -1, 61, - -1, -1, -1, -1, -1, 331, -1, -1, 490, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 62, 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, -1, -1, 91, + -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, 126, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, -1, 286, -1, -1, 33, -1, 35, + -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, 313, 58, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, 33, -1, 35, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, 340, -1, + -1, -1, -1, -1, 346, 91, -1, -1, -1, -1, + -1, 61, -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, -1, -1, -1, 126, -1, -1, 91, - 33, -1, 35, -1, -1, 517, -1, 40, -1, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, - -1, -1, 544, -1, 126, 260, 261, 262, 263, 264, - 265, -1, -1, -1, 400, 401, 402, 403, -1, 561, - 286, -1, -1, -1, 566, 411, 412, -1, 91, 571, - -1, 286, -1, -1, 260, 261, 262, 263, 264, 265, - -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, - 286, -1, -1, 126, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, 340, -1, -1, -1, -1, -1, - 346, -1, -1, -1, -1, 340, -1, 313, -1, -1, - -1, 346, 286, -1, -1, -1, -1, -1, -1, -1, + 126, 91, 61, -1, -1, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, 33, -1, 35, -1, 401, + 402, 403, 40, -1, -1, 43, -1, 45, -1, -1, + -1, -1, 91, -1, 286, 33, 126, 35, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, 126, -1, -1, + -1, -1, -1, 91, 33, -1, 35, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, 340, -1, + -1, -1, -1, 91, 346, -1, -1, -1, -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, -1, -1, -1, -1, 126, -1, + -1, -1, 91, -1, 260, 261, 262, 263, 264, 265, + -1, -1, -1, -1, -1, -1, -1, -1, 400, -1, + 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + 286, -1, -1, -1, -1, -1, -1, 126, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, - -1, -1, -1, -1, 340, -1, -1, -1, -1, 313, - 346, -1, -1, -1, -1, -1, 286, -1, -1, -1, - -1, -1, -1, -1, 400, -1, 402, 403, 260, 261, - 262, 263, 264, 265, -1, -1, 340, 402, 403, -1, - -1, -1, 346, 313, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 401, 402, 403, -1, -1, - 340, -1, -1, -1, -1, -1, 346, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, -1, 402, 403, - -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, 286, 346, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, + -1, -1, -1, -1, -1, -1, 286, -1, -1, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, + 346, -1, -1, 313, -1, -1, -1, 286, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + 340, -1, -1, -1, 313, -1, 346, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, 286, -1, + -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, + -1, 340, -1, -1, -1, -1, -1, 346, 286, -1, + -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, -1, 402, 403, -1, 313, -1, -1, -1, -1, + -1, -1, 340, -1, -1, -1, -1, 286, 346, -1, -1, -1, -1, -1, -1, -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, 340, 402, 403, -1, -1, -1, 346, -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, 340, -1, -1, - 402, 403, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 340, -1, -1, 402, 403, -1, 346, -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, -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, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1952,45 +1997,55 @@ public function yyparse($yyLex) { case 90: #line 481 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 92: #line 486 "grammar/xp.jay" - { - $yyVal= array(); - foreach ($yyVals[0+$yyTop] as $pair) { - $yyVal[$pair[0]->value]= $pair[1]; - } - } break; + case 91: #line 485 "grammar/xp.jay" + { $yyVal= NULL; } break; - case 99: #line 510 "grammar/xp.jay" + case 94: #line 491 "grammar/xp.jay" + { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; + + case 95: #line 495 "grammar/xp.jay" + { $yyVal= array(); } break; + + case 97: #line 500 "grammar/xp.jay" + { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; + + case 98: #line 501 "grammar/xp.jay" + { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; + + case 99: #line 502 "grammar/xp.jay" + { $yyVal= array($yyVals[0+$yyTop]); } break; + + case 106: #line 521 "grammar/xp.jay" { $yyVal= NULL; } break; - case 101: #line 515 "grammar/xp.jay" + case 108: #line 526 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 102: #line 516 "grammar/xp.jay" + case 109: #line 527 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 103: #line 520 "grammar/xp.jay" + case 110: #line 531 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 104: #line 520 "grammar/xp.jay" + case 111: #line 531 "grammar/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 105: #line 523 "grammar/xp.jay" + case 112: #line 534 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 106: #line 523 "grammar/xp.jay" + case 113: #line 534 "grammar/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 107: #line 528 "grammar/xp.jay" + case 114: #line 539 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 108: #line 528 "grammar/xp.jay" + case 115: #line 539 "grammar/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2002,168 +2057,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 109: #line 538 "grammar/xp.jay" + case 116: #line 549 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 110: #line 538 "grammar/xp.jay" + case 117: #line 549 "grammar/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 111: #line 543 "grammar/xp.jay" + case 118: #line 554 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 112: #line 543 "grammar/xp.jay" + case 119: #line 554 "grammar/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 113: #line 547 "grammar/xp.jay" + case 120: #line 558 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 114: #line 547 "grammar/xp.jay" + case 121: #line 558 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 115: #line 551 "grammar/xp.jay" + case 122: #line 562 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 116: #line 551 "grammar/xp.jay" + case 123: #line 562 "grammar/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 117: #line 555 "grammar/xp.jay" + case 124: #line 566 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 119: #line 556 "grammar/xp.jay" + case 126: #line 567 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 121: #line 557 "grammar/xp.jay" + case 128: #line 568 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 122: #line 557 "grammar/xp.jay" + case 129: #line 568 "grammar/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 123: #line 560 "grammar/xp.jay" + case 130: #line 571 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 124: #line 560 "grammar/xp.jay" + case 131: #line 571 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 125: #line 565 "grammar/xp.jay" + case 132: #line 576 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 126: #line 568 "grammar/xp.jay" + case 133: #line 579 "grammar/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 128: #line 575 "grammar/xp.jay" + case 135: #line 586 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 129: #line 576 "grammar/xp.jay" + case 136: #line 587 "grammar/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 130: #line 580 "grammar/xp.jay" + case 137: #line 591 "grammar/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 131: #line 583 "grammar/xp.jay" + case 138: #line 594 "grammar/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 132: #line 590 "grammar/xp.jay" + case 139: #line 601 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 133: #line 591 "grammar/xp.jay" + case 140: #line 602 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 134: #line 595 "grammar/xp.jay" + case 141: #line 606 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 135: #line 601 "grammar/xp.jay" + case 142: #line 612 "grammar/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 136: #line 602 "grammar/xp.jay" + case 143: #line 613 "grammar/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 137: #line 606 "grammar/xp.jay" + case 144: #line 617 "grammar/xp.jay" { $yyVal= NULL; } break; - case 139: #line 611 "grammar/xp.jay" + case 146: #line 622 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 140: #line 612 "grammar/xp.jay" + case 147: #line 623 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 141: #line 616 "grammar/xp.jay" + case 148: #line 627 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 142: #line 616 "grammar/xp.jay" + case 149: #line 627 "grammar/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 143: #line 620 "grammar/xp.jay" + case 150: #line 631 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 144: #line 620 "grammar/xp.jay" + case 151: #line 631 "grammar/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 145: #line 626 "grammar/xp.jay" + case 152: #line 637 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 146: #line 627 "grammar/xp.jay" + case 153: #line 638 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 147: #line 631 "grammar/xp.jay" + case 154: #line 642 "grammar/xp.jay" { $yyVal= NULL; } break; - case 148: #line 632 "grammar/xp.jay" + case 155: #line 643 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 149: #line 632 "grammar/xp.jay" + case 156: #line 643 "grammar/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 150: #line 637 "grammar/xp.jay" + case 157: #line 648 "grammar/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 151: #line 638 "grammar/xp.jay" + case 158: #line 649 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 152: #line 642 "grammar/xp.jay" + case 159: #line 653 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 153: #line 643 "grammar/xp.jay" + case 160: #line 654 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 154: #line 647 "grammar/xp.jay" + case 161: #line 658 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 155: #line 647 "grammar/xp.jay" + case 162: #line 658 "grammar/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2176,36 +2231,36 @@ public function yyparse($yyLex) { } } break; - case 156: #line 661 "grammar/xp.jay" + case 163: #line 672 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 157: #line 662 "grammar/xp.jay" + case 164: #line 673 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 158: #line 666 "grammar/xp.jay" + case 165: #line 677 "grammar/xp.jay" { $yyVal= NULL; } break; - case 160: #line 671 "grammar/xp.jay" + case 167: #line 682 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 161: #line 671 "grammar/xp.jay" + case 168: #line 682 "grammar/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 162: #line 679 "grammar/xp.jay" + case 169: #line 690 "grammar/xp.jay" { $yyVal= NULL; } break; - case 164: #line 684 "grammar/xp.jay" + case 171: #line 695 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 165: #line 685 "grammar/xp.jay" + case 172: #line 696 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 166: #line 689 "grammar/xp.jay" + case 173: #line 700 "grammar/xp.jay" { $yyVal= NULL; } break; - case 168: #line 694 "grammar/xp.jay" + case 175: #line 705 "grammar/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2213,44 +2268,44 @@ public function yyparse($yyLex) { $yyVals[0+$yyTop] && $yyVal->body= $yyVals[0+$yyTop]; } break; - case 169: #line 700 "grammar/xp.jay" + case 176: #line 711 "grammar/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 170: #line 705 "grammar/xp.jay" + case 177: #line 716 "grammar/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 171: #line 713 "grammar/xp.jay" + case 178: #line 724 "grammar/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 172: #line 716 "grammar/xp.jay" + case 179: #line 727 "grammar/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 173: #line 719 "grammar/xp.jay" + case 180: #line 730 "grammar/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 174: #line 722 "grammar/xp.jay" + case 181: #line 733 "grammar/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 175: #line 728 "grammar/xp.jay" + case 182: #line 739 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 176: #line 728 "grammar/xp.jay" + case 183: #line 739 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2258,7 +2313,7 @@ public function yyparse($yyLex) { } } break; - case 177: #line 734 "grammar/xp.jay" + case 184: #line 745 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2266,10 +2321,10 @@ public function yyparse($yyLex) { } } break; - case 178: #line 740 "grammar/xp.jay" + case 185: #line 751 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 179: #line 740 "grammar/xp.jay" + case 186: #line 751 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2280,10 +2335,10 @@ public function yyparse($yyLex) { } } break; - case 180: #line 749 "grammar/xp.jay" + case 187: #line 760 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 181: #line 749 "grammar/xp.jay" + case 188: #line 760 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2295,10 +2350,10 @@ public function yyparse($yyLex) { } } break; - case 182: #line 759 "grammar/xp.jay" + case 189: #line 770 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 183: #line 759 "grammar/xp.jay" + case 190: #line 770 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2309,43 +2364,43 @@ public function yyparse($yyLex) { } } break; - case 184: #line 768 "grammar/xp.jay" + case 191: #line 779 "grammar/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 185: #line 771 "grammar/xp.jay" + case 192: #line 782 "grammar/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 186: #line 774 "grammar/xp.jay" + case 193: #line 785 "grammar/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 187: #line 777 "grammar/xp.jay" + case 194: #line 788 "grammar/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 188: #line 780 "grammar/xp.jay" + case 195: #line 791 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 189: #line 783 "grammar/xp.jay" + case 196: #line 794 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 190: #line 786 "grammar/xp.jay" + case 197: #line 797 "grammar/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 191: #line 790 "grammar/xp.jay" + case 198: #line 801 "grammar/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2353,7 +2408,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 192: #line 796 "grammar/xp.jay" + case 199: #line 807 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2361,7 +2416,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 193: #line 802 "grammar/xp.jay" + case 200: #line 813 "grammar/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2369,17 +2424,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 194: #line 808 "grammar/xp.jay" + case 201: #line 819 "grammar/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 195: #line 813 "grammar/xp.jay" + case 202: #line 824 "grammar/xp.jay" { $yyVals[-5+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-3+$yyTop], $yyVals[-1+$yyTop])); } break; - case 196: #line 813 "grammar/xp.jay" + case 203: #line 824 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2387,7 +2442,7 @@ public function yyparse($yyLex) { } } break; - case 197: #line 819 "grammar/xp.jay" + case 204: #line 830 "grammar/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2397,32 +2452,32 @@ public function yyparse($yyLex) { } } break; - case 198: #line 830 "grammar/xp.jay" + case 205: #line 841 "grammar/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 199: #line 833 "grammar/xp.jay" + case 206: #line 844 "grammar/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 200: #line 839 "grammar/xp.jay" + case 207: #line 850 "grammar/xp.jay" { $yyVal= array(); } break; - case 202: #line 844 "grammar/xp.jay" + case 209: #line 855 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 203: #line 845 "grammar/xp.jay" + case 210: #line 856 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 204: #line 849 "grammar/xp.jay" + case 211: #line 860 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 205: #line 850 "grammar/xp.jay" + case 212: #line 861 "grammar/xp.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 206: #line 854 "grammar/xp.jay" + case 213: #line 865 "grammar/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2430,273 +2485,273 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 207: #line 860 "grammar/xp.jay" + case 214: #line 871 "grammar/xp.jay" { $p= $yyLex->position; } break; - case 208: #line 860 "grammar/xp.jay" + case 215: #line 871 "grammar/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 209: #line 861 "grammar/xp.jay" + case 216: #line 872 "grammar/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 210: #line 862 "grammar/xp.jay" + case 217: #line 873 "grammar/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 211: #line 863 "grammar/xp.jay" + case 218: #line 874 "grammar/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 212: #line 864 "grammar/xp.jay" + case 219: #line 875 "grammar/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 213: #line 865 "grammar/xp.jay" + case 220: #line 876 "grammar/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 214: #line 869 "grammar/xp.jay" + case 221: #line 880 "grammar/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 215: #line 872 "grammar/xp.jay" + case 222: #line 883 "grammar/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 216: #line 878 "grammar/xp.jay" + case 223: #line 889 "grammar/xp.jay" { $yyVal= NULL; } break; - case 218: #line 883 "grammar/xp.jay" + case 225: #line 894 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 219: #line 884 "grammar/xp.jay" + case 226: #line 895 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 220: #line 888 "grammar/xp.jay" + case 227: #line 899 "grammar/xp.jay" { $yyVal= NULL; } break; - case 222: #line 893 "grammar/xp.jay" + case 229: #line 904 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 223: #line 894 "grammar/xp.jay" + case 230: #line 905 "grammar/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 224: #line 898 "grammar/xp.jay" + case 231: #line 909 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 225: #line 899 "grammar/xp.jay" + case 232: #line 910 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 226: #line 900 "grammar/xp.jay" + case 233: #line 911 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 227: #line 901 "grammar/xp.jay" + case 234: #line 912 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 228: #line 902 "grammar/xp.jay" + case 235: #line 913 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 229: #line 903 "grammar/xp.jay" + case 236: #line 914 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 230: #line 904 "grammar/xp.jay" + case 237: #line 915 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 231: #line 905 "grammar/xp.jay" + case 238: #line 916 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 232: #line 906 "grammar/xp.jay" + case 239: #line 917 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 233: #line 907 "grammar/xp.jay" + case 240: #line 918 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 234: #line 908 "grammar/xp.jay" + case 241: #line 919 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 235: #line 909 "grammar/xp.jay" + case 242: #line 920 "grammar/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 236: #line 913 "grammar/xp.jay" + case 243: #line 924 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 237: #line 914 "grammar/xp.jay" + case 244: #line 925 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 238: #line 915 "grammar/xp.jay" + case 245: #line 926 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 239: #line 916 "grammar/xp.jay" + case 246: #line 927 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 240: #line 917 "grammar/xp.jay" + case 247: #line 928 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 241: #line 918 "grammar/xp.jay" + case 248: #line 929 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 242: #line 919 "grammar/xp.jay" + case 249: #line 930 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 243: #line 920 "grammar/xp.jay" + case 250: #line 931 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 244: #line 924 "grammar/xp.jay" + case 251: #line 935 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 925 "grammar/xp.jay" + case 252: #line 936 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 926 "grammar/xp.jay" + case 253: #line 937 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 927 "grammar/xp.jay" + case 254: #line 938 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 928 "grammar/xp.jay" + case 255: #line 939 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 929 "grammar/xp.jay" + case 256: #line 940 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 930 "grammar/xp.jay" + case 257: #line 941 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 251: #line 931 "grammar/xp.jay" + case 258: #line 942 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 252: #line 932 "grammar/xp.jay" + case 259: #line 943 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 253: #line 933 "grammar/xp.jay" + case 260: #line 944 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 254: #line 934 "grammar/xp.jay" + case 261: #line 945 "grammar/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 255: #line 938 "grammar/xp.jay" + case 262: #line 949 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 939 "grammar/xp.jay" + case 263: #line 950 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 940 "grammar/xp.jay" + case 264: #line 951 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 941 "grammar/xp.jay" + case 265: #line 952 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 259: #line 942 "grammar/xp.jay" + case 266: #line 953 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 260: #line 943 "grammar/xp.jay" + case 267: #line 954 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 261: #line 947 "grammar/xp.jay" + case 268: #line 958 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 262: #line 948 "grammar/xp.jay" + case 269: #line 959 "grammar/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 263: #line 953 "grammar/xp.jay" + case 270: #line 964 "grammar/xp.jay" { $yyVal= NULL; } break; - case 265: #line 958 "grammar/xp.jay" + case 272: #line 969 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 266: #line 959 "grammar/xp.jay" + case 273: #line 970 "grammar/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 267: #line 963 "grammar/xp.jay" + case 274: #line 974 "grammar/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 268: #line 963 "grammar/xp.jay" + case 275: #line 974 "grammar/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 269: #line 966 "grammar/xp.jay" + case 276: #line 977 "grammar/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 270: #line 969 "grammar/xp.jay" + case 277: #line 980 "grammar/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 271: #line 969 "grammar/xp.jay" + case 278: #line 980 "grammar/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 272: #line 972 "grammar/xp.jay" + case 279: #line 983 "grammar/xp.jay" { $yyVals[-1+$yyTop]= $yyLex->create(new InstanceCallNode(NULL)); } break; - case 273: #line 972 "grammar/xp.jay" + case 280: #line 983 "grammar/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 280: #line 992 "grammar/xp.jay" + case 287: #line 1003 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 281: #line 993 "grammar/xp.jay" + case 288: #line 1004 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 282: #line 997 "grammar/xp.jay" + case 289: #line 1008 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 283: #line 1001 "grammar/xp.jay" + case 290: #line 1012 "grammar/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 284: #line 1005 "grammar/xp.jay" + case 291: #line 1016 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 285: #line 1006 "grammar/xp.jay" + case 292: #line 1017 "grammar/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 287: #line 1011 "grammar/xp.jay" + case 294: #line 1022 "grammar/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 288: #line 1015 "grammar/xp.jay" + case 295: #line 1026 "grammar/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 289: #line 1016 "grammar/xp.jay" + case 296: #line 1027 "grammar/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 290: #line 1022 "grammar/xp.jay" + case 297: #line 1033 "grammar/xp.jay" { $yyVal= 0; } break; - case 291: #line 1023 "grammar/xp.jay" + case 298: #line 1034 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 292: #line 1027 "grammar/xp.jay" + case 299: #line 1038 "grammar/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 293: #line 1028 "grammar/xp.jay" + case 300: #line 1039 "grammar/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 294: #line 1032 "grammar/xp.jay" + case 301: #line 1043 "grammar/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 295: #line 1033 "grammar/xp.jay" + case 302: #line 1044 "grammar/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 296: #line 1034 "grammar/xp.jay" + case 303: #line 1045 "grammar/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 297: #line 1035 "grammar/xp.jay" + case 304: #line 1046 "grammar/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 298: #line 1036 "grammar/xp.jay" + case 305: #line 1047 "grammar/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 299: #line 1037 "grammar/xp.jay" + case 306: #line 1048 "grammar/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 300: #line 1038 "grammar/xp.jay" + case 307: #line 1049 "grammar/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 301: #line 1039 "grammar/xp.jay" + case 308: #line 1050 "grammar/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 2700 "-" +#line 2755 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php index a073b3f27..ca773bc36 100755 --- a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -94,6 +94,18 @@ public function pass_first_with_name() { ); } + /** + * Test + * + */ + #[@test] + public function pass_first_with_quoted_name() { + $this->assertEquals( + array('url' => '/', 'params' => array(), 'headers' => array()), + $this->pass('"url": "/"') + ); + } + /** * Test * From 137bfeb6e653f3ddafccf16e8c82514bf491bd2f Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sat, 9 Jun 2012 18:58:47 +0200 Subject: [PATCH 10/20] - Change params from [:TypeName] to [:X] where X = [ type: TypeName, default: Node ] # Step 1, default is always NULL # BC break! --- .../xp/compiler/emit/source/Emitter.class.php | 12 +++++++++--- .../xp/compiler/types/GenericType.class.php | 18 ++++++++++++------ .../compiler/types/TypeDeclaration.class.php | 6 +++--- .../xp/compiler/types/TypeReflection.class.php | 15 ++++++++++++--- .../execution/source/NamedArgsTest.class.php | 12 ++++++++++++ .../tests/types/GenericTypeTest.class.php | 10 ++++++++-- .../tests/types/TypeDeclarationTest.class.php | 8 +++++++- .../tests/types/TypeReflectionTest.class.php | 8 +++++++- 8 files changed, 70 insertions(+), 19 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php index b3dcf61bd..033a9aa54 100644 --- a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php +++ b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php @@ -192,7 +192,13 @@ protected function emitInvocationArguments($b, $ptr, array $params, $brackets= T if (is_string(key($params))) { // Named $p= sizeof($ptr->parameters)- 1; foreach ($ptr->parameters as $name => $param) { - isset($params[$name]) ? $this->emitOne($b, $params[$name]) : $b->append('NULL'); + if (isset($params[$name])) { + $this->emitOne($b, $params[$name]); + } else if ($param['default']) { + $this->emitOne($b, $param['default']); + } else { + $this->error('P404', 'Cannot omit '.$ptr->name.'()\'s parameter "'.$name.'"'); + } if ($i >= $s) break; $i++ < $p && $b->append(','); } @@ -2213,8 +2219,8 @@ protected function emitClass($b, $declaration) { $arguments= array(); $parameters= array(); if ($parentType->hasConstructor()) { - foreach ($parentType->getConstructor()->parameters as $i => $type) { - $parameters[]= array('name' => '··a'.$i, 'type' => $type); // TODO: default + foreach ($parentType->getConstructor()->parameters as $i => $param) { + $parameters[]= array('name' => '··a'.$i, 'type' => $param['type']); // TODO: default $arguments[]= new VariableNode('··a'.$i); } $body= array(new StaticMethodCallNode(new TypeName('parent'), '__construct', $arguments)); diff --git a/compiler/src/main/php/xp/compiler/types/GenericType.class.php b/compiler/src/main/php/xp/compiler/types/GenericType.class.php index 6ccfae54c..1fe604a20 100644 --- a/compiler/src/main/php/xp/compiler/types/GenericType.class.php +++ b/compiler/src/main/php/xp/compiler/types/GenericType.class.php @@ -186,7 +186,12 @@ public function hasConstructor() { * @return xp.compiler.types.Constructor */ public function getConstructor() { - return $this->definition->getConstructor(); + if (NULL === ($constructor= $this->definition->getConstructor())) return NULL; + + foreach ($constructor->parameters as $name => $param) { + $param['type'] && $constructor->parameters[$name]['type']= $this->rewrite($param['type']); + } + return $constructor; } /** @@ -222,12 +227,13 @@ protected function typeNameOf($t) { * @return xp.compiler.types.Method */ public function getMethod($name) { - if (NULL !== ($method= $this->definition->getMethod($name))) { - $method->returns= $method->returns ? $this->rewrite($method->returns) : NULL; - $method->parameters= $this->rewriteAll($method->parameters); - return $method; + if (NULL === ($method= $this->definition->getMethod($name))) return NULL; + + $method->returns= $method->returns ? $this->rewrite($method->returns) : NULL; + foreach ($method->parameters as $name => $param) { + $param['type'] && $method->parameters[$name]['type']= $this->rewrite($param['type']); } - return NULL; + return $method; } /** diff --git a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php index 542989830..5649d3f9d 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php @@ -134,7 +134,7 @@ public function getConstructor() { $c= new xp·compiler·types·Constructor(); $c->modifiers= $member->modifiers; foreach ($member->parameters as $p) { - $c->parameters[$p['name']]= $p['type']; + $c->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); } $c->holder= $this; return $c; @@ -170,7 +170,7 @@ public function getMethod($name) { $m->returns= $member->returns; $m->modifiers= $member->modifiers; foreach ((array)$member->parameters as $p) { - $m->parameters[$p['name']]= $p['type']; + $m->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); } $m->holder= $this; return $m; @@ -195,7 +195,7 @@ public function getExtensions() { $m->returns= $member->returns; $m->modifiers= $member->modifiers; foreach ((array)$member->parameters as $p) { - $m->parameters[]= $p['type']; + $m->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); } $m->holder= $this; diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 93d208dd3..3a0e8aee8 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -163,7 +163,10 @@ public function getConstructor() { $c->modifiers= $constructor->getModifiers(); $c->parameters= array(); foreach ($constructor->getParameters() as $p) { - $c->parameters[$p->getName()]= $this->typeNameOf($p->getTypeName()); + $c->parameters[$p->getName()]= array( + 'type' => $this->typeNameOf($p->getTypeName()), + 'default' => NULL + ); } $c->holder= $this; return $c; @@ -196,7 +199,10 @@ public function getMethod($name) { $m->modifiers= $method->getModifiers(); $m->parameters= array(); foreach ($method->getParameters() as $p) { - $m->parameters[$p->getName()]= $this->typeNameOf($p->getTypeName()); + $m->parameters[$p->getName()]= array( + 'type' => $this->typeNameOf($p->getTypeName()), + 'default' => NULL + ); } $m->holder= $this; return $m; @@ -287,7 +293,10 @@ public function getOperator($symbol) { $m->modifiers= $method->getModifiers(); $m->parameters= array(); foreach ($method->getParameters() as $p) { - $m->parameters[]= $this->typeNameOf($p->getTypeName()); + $m->parameters[$p->getName()]= array( + 'type' => $this->typeNameOf($p->getTypeName()), + 'default' => NULL + ); } $m->holder= $this; return $m; diff --git a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php index ca773bc36..332c895f8 100755 --- a/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/execution/source/NamedArgsTest.class.php @@ -117,5 +117,17 @@ public function pass_first_two_with_names() { $this->pass('url: "/", params: [ a: "b" ]') ); } + + /** + * Test + * + */ + #[@test] + public function omit_one_in_the_middle_with_names() { + $this->assertEquals( + array('url' => '/', 'params' => array(), 'headers' => array('X' => 'Y')), + $this->pass('url: "/", headers: [ X: "Y"]') + ); + } } ?> diff --git a/compiler/src/test/php/net/xp_lang/tests/types/GenericTypeTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/GenericTypeTest.class.php index 565648dca..c496c3824 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/GenericTypeTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/GenericTypeTest.class.php @@ -185,7 +185,10 @@ public function hashTableGetMethodType() { */ #[@test] public function hashTableGetMethodParameters() { - $this->assertEquals(array(new TypeName('string')), $this->newGenericHashTableType()->getMethod('get')->parameters); + $this->assertEquals( + array('key' => array('type' => new TypeName('string'), 'default' => NULL)), + $this->newGenericHashTableType()->getMethod('get')->parameters + ); } /** @@ -230,7 +233,10 @@ public function vectorGetMethodType() { */ #[@test] public function vectorGetMethodParameters() { - $this->assertEquals(array(new TypeName('int')), $this->newGenericVectorType()->getMethod('get')->parameters); + $this->assertEquals( + array('index' => array('type' => new TypeName('int'), 'default' => NULL)), + $this->newGenericVectorType()->getMethod('get')->parameters + ); } } ?> diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php index 1ef3fe3c6..15eae2063 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php @@ -306,7 +306,13 @@ public function stringClassSubstringMethod() { $method= $this->stringClass()->getMethod('substring'); $this->assertEquals(new TypeName('lang.types.String'), $method->returns); $this->assertEquals('substring', $method->name); - $this->assertEquals(array('start' => new TypeName('int'), 'end' => new TypeName('int')), $method->parameters); + $this->assertEquals( + array( + 'start' => array('type' => new TypeName('int'), 'default' => NULL), + 'end' => array('type' => new TypeName('int'), 'default' => NULL) + ), + $method->parameters + ); $this->assertEquals(MODIFIER_PUBLIC, $method->modifiers); } diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php index fd4f5be96..c8c76b511 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php @@ -146,7 +146,13 @@ public function stringClassSubstringMethod() { $method= create(new TypeReflection(XPClass::forName('lang.types.String')))->getMethod('substring'); $this->assertEquals(new TypeName('lang.types.String'), $method->returns); $this->assertEquals('substring', $method->name); - $this->assertEquals(array('start' => new TypeName('int'), 'length' => new TypeName('int')), $method->parameters); + $this->assertEquals( + array( + 'start' => array('type' => new TypeName('int'), 'default' => NULL), + 'length' => array('type' => new TypeName('int'), 'default' => NULL) + ), + $method->parameters + ); $this->assertEquals(MODIFIER_PUBLIC, $method->modifiers); } From a4acb971d14453b1b018e5aff0cdb819c5d101f1 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 13:25:59 +0200 Subject: [PATCH 11/20] - Change params from [:TypeName] to [:X] where X = [ type: TypeName, default: Node ] # Step 2, fill "default" for reflection --- .../compiler/types/TypeReflection.class.php | 40 +++++++++++++++++-- .../tests/types/TypeReflectionTest.class.php | 2 +- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 3a0e8aee8..8feaf4121 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -149,6 +149,40 @@ protected function typeNameOf($t) { public function hasConstructor() { return $this->class->hasConstructor(); } + + /** + * Maps default values + * + * @param var value + * @return xp.compiler.ast.Node + * @throws lang.IllegalArgumentException + */ + protected function nodeOfDefaultValue($value) { + + // Primitives + if (NULL === $value) { + return new NullNode(); + } else if (Primitive::$STRING->isInstance($value)) { + return new StringNode($value); + } else if (Primitive::$INT->isInstance($value)) { + return new IntegerNode($value); + } else if (Primitive::$DOUBLE->isInstance($value)) { + return new DecimalNode($value); + } else if (Primitive::$BOOL->isInstance($value)) { + return new BooleanNode($value); + } + + // Arrays and maps + $type= typeof($value); + if ($type instanceof ArrayType) { + return new ArrayNode($value); + } else if ($type instanceof MapType) { + return new MapType($value); + } + + // Other types of default values shouldn't appear here + throw new IllegalArgumentException('Cannot map '.$type->toString().' to a creation node'); + } /** * Returns the constructor @@ -165,7 +199,7 @@ public function getConstructor() { foreach ($constructor->getParameters() as $p) { $c->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => NULL + 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL ); } $c->holder= $this; @@ -201,7 +235,7 @@ public function getMethod($name) { foreach ($method->getParameters() as $p) { $m->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => NULL + 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL ); } $m->holder= $this; @@ -295,7 +329,7 @@ public function getOperator($symbol) { foreach ($method->getParameters() as $p) { $m->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => NULL + 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL ); } $m->holder= $this; diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php index c8c76b511..542542b3b 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php @@ -149,7 +149,7 @@ public function stringClassSubstringMethod() { $this->assertEquals( array( 'start' => array('type' => new TypeName('int'), 'default' => NULL), - 'length' => array('type' => new TypeName('int'), 'default' => NULL) + 'length' => array('type' => new TypeName('int'), 'default' => new IntegerNode(0)) ), $method->parameters ); From 0d37b70507f87c4a55f43198a589de02f46c10c9 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 13:26:21 +0200 Subject: [PATCH 12/20] - Change params from [:TypeName] to [:X] where X = [ type: TypeName, default: Node ] # Step 2, fill "default" for reflection --- .../src/main/php/xp/compiler/types/TypeDeclaration.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php index 5649d3f9d..9b4ae438c 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php @@ -169,6 +169,7 @@ public function getMethod($name) { $m->name= $member->name; $m->returns= $member->returns; $m->modifiers= $member->modifiers; + Console::writeLine($p); foreach ((array)$member->parameters as $p) { $m->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); } From 6e9517c2d512bc309d66c93bbf856c02afea051e Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 13:30:03 +0200 Subject: [PATCH 13/20] - Change params from [:TypeName] to [:X] where X = [ type: TypeName, default: Node ] # Step 3, fill "default" for declaration --- .../xp/compiler/types/TypeDeclaration.class.php | 16 ++++++++++++---- .../tests/types/TypeDeclarationTest.class.php | 15 ++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php index 9b4ae438c..17132f6d7 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeDeclaration.class.php @@ -134,7 +134,10 @@ public function getConstructor() { $c= new xp·compiler·types·Constructor(); $c->modifiers= $member->modifiers; foreach ($member->parameters as $p) { - $c->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); + $c->parameters[$p['name']]= array( + 'type' => $p['type'], + 'default' => isset($p['default']) ? $p['default'] : NULL + ); } $c->holder= $this; return $c; @@ -169,9 +172,11 @@ public function getMethod($name) { $m->name= $member->name; $m->returns= $member->returns; $m->modifiers= $member->modifiers; - Console::writeLine($p); foreach ((array)$member->parameters as $p) { - $m->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); + $m->parameters[$p['name']]= array( + 'type' => $p['type'], + 'default' => isset($p['default']) ? $p['default'] : NULL + ); } $m->holder= $this; return $m; @@ -196,7 +201,10 @@ public function getExtensions() { $m->returns= $member->returns; $m->modifiers= $member->modifiers; foreach ((array)$member->parameters as $p) { - $m->parameters[$p['name']]= array('type' => $p['type'], 'default' => NULL); + $m->parameters[$p['name']]= array( + 'type' => $p['type'], + 'default' => isset($p['default']) ? $p['default'] : NULL + ); } $m->holder= $this; diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php index 15eae2063..eab739ba9 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeDeclarationTest.class.php @@ -142,14 +142,15 @@ protected function stringClass() { 'modifiers' => MODIFIER_PUBLIC, 'parameters' => array( array( - 'name' => 'start', - 'type' => new TypeName('int'), - 'check' => TRUE + 'name' => 'start', + 'type' => new TypeName('int'), + 'check' => TRUE ), array( - 'name' => 'end', - 'type' => new TypeName('int'), - 'check' => TRUE + 'name' => 'end', + 'type' => new TypeName('int'), + 'check' => TRUE, + 'default' => new IntegerNode(0) ) ) )), @@ -309,7 +310,7 @@ public function stringClassSubstringMethod() { $this->assertEquals( array( 'start' => array('type' => new TypeName('int'), 'default' => NULL), - 'end' => array('type' => new TypeName('int'), 'default' => NULL) + 'end' => array('type' => new TypeName('int'), 'default' => new IntegerNode(0)) ), $method->parameters ); From 52268dca791c1c0e0925c8007edea529d25361a2 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 13:35:43 +0200 Subject: [PATCH 14/20] - First working implementation --- .../xp/compiler/emit/source/Emitter.class.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php index 033a9aa54..628291a00 100644 --- a/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php +++ b/compiler/src/main/php/xp/compiler/emit/source/Emitter.class.php @@ -181,35 +181,34 @@ protected function emitUses($b, array $types) { * * @param xp.compiler.emit.Buffer b * @param xp.compiler.types.Types - * @param xp.compiler.ast.Node[] params + * @param xp.compiler.ast.Node[] arguments * @param bool brackets * @return int */ - protected function emitInvocationArguments($b, $ptr, array $params, $brackets= TRUE) { + protected function emitInvocationArguments($b, $ptr, array $arguments, $brackets= TRUE) { $brackets && $b->append('('); - $s= sizeof($params)- 1; + $s= sizeof($arguments)- 1; $i= 0; - if (is_string(key($params))) { // Named + if (is_string(key($arguments))) { // Named $p= sizeof($ptr->parameters)- 1; foreach ($ptr->parameters as $name => $param) { - if (isset($params[$name])) { - $this->emitOne($b, $params[$name]); + if (isset($arguments[$name])) { + $this->emitOne($b, $arguments[$name]); } else if ($param['default']) { $this->emitOne($b, $param['default']); } else { $this->error('P404', 'Cannot omit '.$ptr->name.'()\'s parameter "'.$name.'"'); } - if ($i >= $s) break; $i++ < $p && $b->append(','); } } else { // Ordered - foreach ($params as $param) { + foreach ($arguments as $param) { $this->emitOne($b, $param); $i++ < $s && $b->append(','); } } $brackets && $b->append(')'); - return sizeof($params); + return sizeof($arguments); } /** From 0d517e98b5c67c14b57964fcce08752f425932b9 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 14:31:27 +0200 Subject: [PATCH 15/20] - Add xp.compiler.ast.[String, Integer, Decimal, Boolean, Null, Array & Map]Node to uses() --- .../php/xp/compiler/types/TypeReflection.class.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 8feaf4121..19ca5fa4c 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -4,7 +4,17 @@ * $Id$ */ - uses('xp.compiler.types.Types', 'xp.compiler.types.TypeName'); + uses( + 'xp.compiler.types.Types', + 'xp.compiler.types.TypeName', + 'xp.compiler.ast.StringNode', + 'xp.compiler.ast.IntegerNode', + 'xp.compiler.ast.DecimalNode', + 'xp.compiler.ast.BooleanNode', + 'xp.compiler.ast.NullNode', + 'xp.compiler.ast.ArrayNode', + 'xp.compiler.ast.MapNode' + ); /** * Represents a reflected type From d88362362dacb0b5a05545bb0882c67ab4da9b35 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 14:36:28 +0200 Subject: [PATCH 16/20] - Add tests for argument defaults --- .../tests/types/TypeReflectionTest.class.php | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php index 542542b3b..dfbbcb363 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php @@ -295,5 +295,117 @@ public function extensionMethod() { $this->assertEquals('lang.types.ArrayList', key($extensions)); $this->assertEquals('sorted', $extensions['lang.types.ArrayList'][0]->name()); } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentNullDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= NULL) {} + }')); + $this->assertEquals( + new NullNode(), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentStringDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= "a") {} + }')); + $this->assertEquals( + new StringNode('a'), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentIntegerDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= 0) {} + }')); + $this->assertEquals( + new IntegerNode(0), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentDoubleDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= 0.5) {} + }')); + $this->assertEquals( + new DecimalNode(0.5), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentBooleanDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= TRUE) {} + }')); + $this->assertEquals( + new BooleanNode(TRUE), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentNonEmptyArrayDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= array("a", "b", "c")) {} + }')); + $this->assertEquals( + new ArrayNode(array( + new StringNode('a'), + new StringNode('b'), + new StringNode('c') + )), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } + + /** + * Test default arguments reflection + * + */ + #[@test] + public function argumentNonEmptyMapDefault() { + $fixture= new TypeReflection(ClassLoader::defineClass($this->name.'Fixture', 'lang.Object', array(), '{ + public function fixture($a= array("a" => "b", "c" => "d")) {} + }')); + $this->assertEquals( + new MapNode(array( + array(new StringNode('a'), new StringNode('b')), // a => b + array(new StringNode('c'), new StringNode('d')), // c => d + )), + $fixture->getMethod('fixture')->parameters['a']['default'] + ); + } } ?> From 79b765a3e8d109def6f6e09fa954cc34aff3652f Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 14:42:45 +0200 Subject: [PATCH 17/20] - Fix parameter default reflection for arrays and maps --- .../php/xp/compiler/types/TypeReflection.class.php | 12 ++++++++++-- .../xp_lang/tests/types/TypeReflectionTest.class.php | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 19ca5fa4c..7706169a3 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -185,9 +185,17 @@ protected function nodeOfDefaultValue($value) { // Arrays and maps $type= typeof($value); if ($type instanceof ArrayType) { - return new ArrayNode($value); + $r= new ArrayNode(); + foreach ($value as $element) { + $r->values[]= $this->nodeOfDefaultValue($element); + } + return $r; } else if ($type instanceof MapType) { - return new MapType($value); + $r= new MapNode(); + foreach ($value as $key => $member) { + $r->elements[]= array($this->nodeOfDefaultValue($key), $this->nodeOfDefaultValue($member)); + } + return $r; } // Other types of default values shouldn't appear here diff --git a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php index dfbbcb363..da1d59075 100644 --- a/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php +++ b/compiler/src/test/php/net/xp_lang/tests/types/TypeReflectionTest.class.php @@ -381,11 +381,11 @@ public function argumentNonEmptyArrayDefault() { public function fixture($a= array("a", "b", "c")) {} }')); $this->assertEquals( - new ArrayNode(array( + new ArrayNode(array('values' => array( new StringNode('a'), new StringNode('b'), new StringNode('c') - )), + ))), $fixture->getMethod('fixture')->parameters['a']['default'] ); } @@ -400,10 +400,10 @@ public function argumentNonEmptyMapDefault() { public function fixture($a= array("a" => "b", "c" => "d")) {} }')); $this->assertEquals( - new MapNode(array( + new MapNode(array('elements' => array( array(new StringNode('a'), new StringNode('b')), // a => b array(new StringNode('c'), new StringNode('d')), // c => d - )), + ))), $fixture->getMethod('fixture')->parameters['a']['default'] ); } From 8931b8f949538e77efede1fa15cbb880e066595b Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 14:43:43 +0200 Subject: [PATCH 18/20] - Add `net.xp_lang.tests.execution.source.NamedArgsTest` --- compiler/src/resources/unittest/compiler.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/src/resources/unittest/compiler.ini b/compiler/src/resources/unittest/compiler.ini index 710866f37..6e3b5d7c0 100644 --- a/compiler/src/resources/unittest/compiler.ini +++ b/compiler/src/resources/unittest/compiler.ini @@ -99,6 +99,9 @@ class="net.xp_lang.tests.execution.source.ConcatTest" [execution.source.DefaultArgsTest] class="net.xp_lang.tests.execution.source.DefaultArgsTest" +[execution.source.NamedArgsTest] +class="net.xp_lang.tests.execution.source.NamedArgsTest" + [execution.source.EnumDeclarationTest] class="net.xp_lang.tests.execution.source.EnumDeclarationTest" From 741b7f97b188e96023a84bd4596273b722421d23 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 10 Jun 2012 14:45:06 +0200 Subject: [PATCH 19/20] - Refactor: Rename nodeOfDefaultValue() to nodeOf() --- .../php/xp/compiler/types/TypeReflection.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php index 7706169a3..315687de9 100644 --- a/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php +++ b/compiler/src/main/php/xp/compiler/types/TypeReflection.class.php @@ -167,7 +167,7 @@ public function hasConstructor() { * @return xp.compiler.ast.Node * @throws lang.IllegalArgumentException */ - protected function nodeOfDefaultValue($value) { + protected function nodeOf($value) { // Primitives if (NULL === $value) { @@ -187,13 +187,13 @@ protected function nodeOfDefaultValue($value) { if ($type instanceof ArrayType) { $r= new ArrayNode(); foreach ($value as $element) { - $r->values[]= $this->nodeOfDefaultValue($element); + $r->values[]= $this->nodeOf($element); } return $r; } else if ($type instanceof MapType) { $r= new MapNode(); foreach ($value as $key => $member) { - $r->elements[]= array($this->nodeOfDefaultValue($key), $this->nodeOfDefaultValue($member)); + $r->elements[]= array($this->nodeOf($key), $this->nodeOf($member)); } return $r; } @@ -217,7 +217,7 @@ public function getConstructor() { foreach ($constructor->getParameters() as $p) { $c->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL + 'default' => $p->isOptional() ? $this->nodeOf($p->getDefaultValue()) : NULL ); } $c->holder= $this; @@ -253,7 +253,7 @@ public function getMethod($name) { foreach ($method->getParameters() as $p) { $m->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL + 'default' => $p->isOptional() ? $this->nodeOf($p->getDefaultValue()) : NULL ); } $m->holder= $this; @@ -347,7 +347,7 @@ public function getOperator($symbol) { foreach ($method->getParameters() as $p) { $m->parameters[$p->getName()]= array( 'type' => $this->typeNameOf($p->getTypeName()), - 'default' => $p->isOptional() ? $this->nodeOfDefaultValue($p->getDefaultValue()) : NULL + 'default' => $p->isOptional() ? $this->nodeOf($p->getDefaultValue()) : NULL ); } $m->holder= $this; From 2356abc2b3db98e9794125fea8d77300a1c08064 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sat, 11 May 2013 17:34:02 +0200 Subject: [PATCH 20/20] - Add NamedArgsTest --- compiler/src/test/config/execution.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler/src/test/config/execution.ini b/compiler/src/test/config/execution.ini index 5fcf22828..71d2f1e11 100755 --- a/compiler/src/test/config/execution.ini +++ b/compiler/src/test/config/execution.ini @@ -110,3 +110,6 @@ class="net.xp_lang.tests.execution.source.CompactSyntaxTest" [source.NavigationOperatorTest] class="net.xp_lang.tests.execution.source.NavigationOperatorTest" + +[source.NamedArgsTest] +class="net.xp_lang.tests.execution.source.NamedArgsTest"