From 9c351be4137a934a02708c426ca63c2000fab31f Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 16:26:17 +0200 Subject: [PATCH] Make capturing explicit when using the PHP lambda form --- src/main/jay/grammars/php.jay | 9 +- .../php/xp/compiler/ast/LambdaNode.class.php | 5 +- .../xp/compiler/emit/php/V54Emitter.class.php | 31 +- .../xp/compiler/syntax/php/Parser.class.php | 2267 +++++++++-------- .../tests/syntax/php/LambdaTest.class.php | 37 +- 5 files changed, 1208 insertions(+), 1141 deletions(-) diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index 99dd60f27..e96b532a5 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -662,8 +662,8 @@ expression: | '@' expression { $$= $yyLex->create(new SilenceOperatorNode($2)); } - | T_FUNCTION '(' lambda_input ')' '{' statements_opt '}' { - $$= $yyLex->create(new LambdaNode($3, (array)$6)); + | T_FUNCTION '(' lambda_input ')' lambda_uses_opt '{' statements_opt '}' { + $$= $yyLex->create(new LambdaNode($3, (array)$7, $5)); } | '(' expression ')' chain_opt { if ($4) { @@ -689,6 +689,11 @@ lambda_input_parameter: T_VARIABLE { $$= new VariableNode($1); } ; +lambda_uses_opt: + /* empty */ { $$= array(); } + | T_USE '(' lambda_input_parameters ')' { $$= $3; } +; + literal: scalar | T_ARRAY '(' { $p= $yyLex->position; } map_or_list ')' { $4->position= $p; $4->type= NULL; $$= $4; } diff --git a/src/main/php/xp/compiler/ast/LambdaNode.class.php b/src/main/php/xp/compiler/ast/LambdaNode.class.php index 77a886b88..0222de628 100644 --- a/src/main/php/xp/compiler/ast/LambdaNode.class.php +++ b/src/main/php/xp/compiler/ast/LambdaNode.class.php @@ -6,15 +6,18 @@ class LambdaNode extends Node { public $parameters; public $statements; + public $uses; /** * Constructor * * @param xp.compiler.ast.Node[] parameters * @param xp.compiler.ast.Node[] statements + * @param xp.compiler.ast.Node[] uses */ - public function __construct(array $parameters, array $statements) { + public function __construct(array $parameters, array $statements, $uses= null) { $this->parameters= $parameters; $this->statements= $statements; + $this->uses= $uses; } } diff --git a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php index f665873d4..95f6b2f46 100644 --- a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php @@ -212,17 +212,6 @@ protected function emitArm($b, $arm) { */ protected function emitLambda($b, $lambda) { - // Capture all local variables and parameters of containing scope which - // are also used inside the lambda by value. - $finder= new \xp\compiler\ast\LocalVariableFinder(); - foreach ($finder->variablesIn((array)$this->scope[0]->routine->body) as $variable) { - $finder->including($variable); - } - foreach ($this->scope[0]->routine->parameters as $param) { - $finder->including($param['name']); - } - $finder->excluding('*'); - // Parameters $b->append('function('); $s= sizeof($lambda->parameters)- 1; @@ -236,8 +225,24 @@ protected function emitLambda($b, $lambda) { } $b->append(')'); - // Use variables - if ($capture= $finder->variablesIn($lambda->statements)) { + // If not explicitely stated: Capture all local variables and parameters of + // containing scope which are also used inside the lambda by value. + if (null === $lambda->uses) { + $finder= new \xp\compiler\ast\LocalVariableFinder(); + foreach ($finder->variablesIn((array)$this->scope[0]->routine->body) as $variable) { + $finder->including($variable); + } + foreach ($this->scope[0]->routine->parameters as $param) { + $finder->including($param['name']); + } + $finder->excluding('*'); + + // Use variables + if ($capture= $finder->variablesIn($lambda->statements)) { + $b->append(' use($')->append(implode(', $', $capture))->append(')'); + } + } else if ($lambda->uses) { + $capture= array_map(function($var) { return $var->name; }, $lambda->uses); $b->append(' use($')->append(implode(', $', $capture))->append(')'); } diff --git a/src/main/php/xp/compiler/syntax/php/Parser.class.php b/src/main/php/xp/compiler/syntax/php/Parser.class.php index 66893713d..13c4684ef 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -166,16 +166,16 @@ class Parser extends \text\parser\generic\AbstractParser { 72, 72, 26, 74, 26, 75, 26, 76, 26, 77, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 83, 83, 84, 84, 85, 38, 87, 38, 25, 25, - 25, 25, 25, 25, 86, 86, 86, 86, 88, 88, - 90, 90, 89, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, - 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, - 82, 82, 73, 73, 91, 91, 93, 92, 94, 92, - 92, 92, 92, 95, 92, 31, 31, 10, 96, 17, - 17, 33, 33, 97, 97, 98, 98, 98, 98, 98, - 98, + 83, 83, 85, 85, 86, 84, 84, 38, 88, 38, + 25, 25, 25, 25, 25, 25, 87, 87, 87, 87, + 89, 89, 91, 91, 90, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, + 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, + 81, 81, 82, 82, 73, 73, 92, 92, 94, 93, + 95, 93, 93, 93, 93, 96, 93, 31, 31, 10, + 97, 17, 17, 33, 33, 98, 98, 99, 99, 99, + 99, 99, 99, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -192,1146 +192,1195 @@ class Parser extends \text\parser\generic\AbstractParser { 9, 0, 1, 1, 3, 0, 1, 4, 4, 1, 4, 1, 2, 0, 3, 0, 3, 0, 5, 0, 6, 2, 1, 2, 4, 1, 1, 1, 1, 1, - 5, 3, 3, 3, 3, 4, 4, 2, 7, 4, - 0, 1, 1, 3, 1, 1, 0, 5, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 3, - 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 3, 3, 3, 3, 4, 4, 2, 8, 4, + 0, 1, 1, 3, 1, 0, 4, 1, 0, 5, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 3, 0, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, - 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 1, 1, 2, 0, 4, 0, 4, - 2, 2, 4, 0, 6, 1, 1, 1, 1, 1, - 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, - 1, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 1, 1, 2, 0, 4, + 0, 4, 2, 2, 4, 0, 6, 1, 1, 1, + 1, 1, 3, 0, 1, 1, 2, 1, 1, 1, + 1, 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 236, 238, 237, 239, 241, 240, 0, 1, 0, - 42, 233, 0, 8, 0, 4, 9, 0, 14, 16, - 235, 11, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 228, 0, 0, 13, 0, 41, 44, 0, - 0, 0, 0, 0, 0, 164, 160, 163, 161, 162, - 0, 0, 0, 156, 0, 0, 0, 52, 19, 0, - 0, 0, 23, 25, 0, 0, 0, 157, 0, 46, + 0, 238, 240, 239, 241, 243, 242, 0, 1, 0, + 42, 235, 0, 8, 0, 4, 9, 0, 14, 16, + 237, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 230, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 0, 0, 166, 162, 165, 163, 164, + 0, 0, 0, 158, 0, 0, 0, 52, 19, 0, + 0, 0, 23, 25, 0, 0, 0, 159, 0, 46, 47, 0, 21, 25, 0, 0, 0, 0, 50, 51, - 0, 54, 55, 0, 49, 0, 231, 0, 17, 0, + 0, 54, 55, 0, 49, 0, 233, 0, 17, 0, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 124, 0, 0, - 0, 0, 0, 136, 137, 138, 139, 140, 166, 0, - 0, 0, 0, 169, 15, 0, 27, 0, 0, 0, + 0, 0, 0, 136, 137, 138, 139, 140, 168, 0, + 0, 0, 0, 171, 15, 0, 27, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 148, 130, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 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, 212, 217, 0, 219, 123, 214, 0, 53, 0, - 0, 158, 0, 0, 0, 31, 0, 0, 33, 0, - 30, 0, 0, 0, 0, 229, 0, 226, 0, 127, - 227, 0, 155, 0, 0, 153, 125, 0, 0, 0, + 213, 214, 219, 0, 221, 123, 216, 0, 53, 0, + 0, 160, 0, 0, 0, 31, 0, 0, 33, 0, + 30, 0, 0, 0, 0, 231, 0, 228, 0, 127, + 229, 0, 155, 0, 0, 153, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 144, 0, 0, 222, 0, 0, - 216, 115, 0, 0, 172, 170, 159, 34, 32, 37, + 0, 0, 0, 145, 144, 0, 0, 224, 0, 0, + 218, 115, 0, 0, 174, 172, 161, 34, 32, 37, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, - 0, 120, 0, 0, 0, 0, 0, 0, 0, 224, - 0, 0, 0, 0, 0, 0, 0, 154, 0, 129, - 0, 218, 0, 223, 220, 0, 0, 0, 59, 0, - 119, 118, 131, 68, 0, 88, 72, 76, 78, 74, + 0, 120, 0, 0, 0, 0, 0, 0, 0, 226, + 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, + 129, 0, 220, 0, 225, 222, 0, 0, 0, 59, + 0, 119, 118, 131, 0, 0, 0, 0, 63, 0, + 0, 0, 0, 68, 0, 88, 72, 76, 78, 74, 84, 86, 70, 80, 91, 0, 0, 0, 65, 0, - 102, 0, 0, 63, 0, 0, 0, 0, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 149, 67, 121, 225, 0, 0, 62, 61, 0, 0, - 0, 0, 0, 0, 0, 85, 87, 0, 0, 103, - 40, 56, 0, 38, 69, 0, 89, 0, 0, 0, + 102, 121, 227, 0, 0, 62, 61, 157, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 57, 110, 83, 107, 0, 0, 77, 0, 0, - 0, 0, 0, 0, 109, 0, 0, 0, 0, 105, - 71, 98, 100, 0, 95, 0, 0, 0, 79, 93, - 75, 0, 0, 0, 81, 97, 0, 0, 106, 0, - 0, 0, 73, 0, 101, 0, 99, 0, 0, 111, + 90, 149, 67, 40, 56, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 85, 87, 0, 0, 103, 0, + 69, 0, 89, 0, 0, 0, 0, 0, 0, 57, + 0, 0, 0, 0, 0, 0, 0, 110, 83, 107, + 0, 0, 77, 0, 0, 0, 0, 0, 0, 109, + 0, 0, 0, 0, 105, 71, 98, 100, 0, 95, + 0, 0, 0, 79, 93, 75, 0, 0, 0, 81, + 97, 0, 0, 106, 0, 0, 0, 73, 0, 101, + 0, 99, 0, 0, 111, ); protected static $yyDgoto= array(2, 3, 6, 19, 10, 4, 7, 8, 119, 100, 218, 36, 51, 71, 86, 37, 53, 73, 101, 102, 137, - 103, 104, 138, 209, 64, 337, 317, 303, 366, 384, - 318, 34, 21, 35, 65, 66, 67, 121, 122, 338, - 319, 320, 339, 340, 341, 246, 348, 357, 421, 351, - 354, 411, 352, 353, 358, 424, 370, 404, 355, 356, - 350, 425, 426, 433, 434, 432, 405, 406, 414, 123, + 103, 104, 138, 209, 64, 347, 318, 303, 355, 377, + 319, 34, 21, 35, 65, 66, 67, 121, 122, 348, + 320, 321, 349, 350, 351, 246, 359, 368, 426, 362, + 365, 416, 363, 364, 369, 429, 379, 409, 366, 367, + 361, 430, 431, 438, 439, 437, 410, 411, 419, 123, 220, 293, 196, 158, 153, 228, 222, 124, 125, 126, - 127, 128, 224, 225, 226, 132, 91, 133, 134, 276, - 197, 198, 266, 270, 313, 221, 22, 23, + 127, 128, 224, 308, 225, 226, 132, 91, 133, 134, + 276, 197, 198, 266, 270, 314, 221, 22, 23, ); - protected static $yySindex = array( -282, - 0, 0, -228, -187, -187, 83, -228, 0, 6, 65, - 67, 0, 0, 0, 0, 0, 0, 55, 0, -229, - 0, 0, 129, 0, -187, 0, 0, 84, 0, 0, - 0, 0, -80, 66, 137, -80, -80, 0, -187, 132, - 129, 84, 0, -127, -93, 0, 585, 0, 0, -80, - -87, -80, 111, -80, 190, 0, 0, 0, 0, 0, - 213, 255, -167, 0, 265, 268, 269, 0, 0, -80, - 192, 278, 0, 0, 293, -64, -64, 0, -221, 0, - 0, -118, 0, 0, -80, 60, 4089, 0, 0, 0, - 3714, 0, 0, 190, 0, 594, 0, 77, 0, -213, - 0, 0, 0, 99, 4147, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 0, 4089, 4089, 298, 299, 0, -62, 2411, - -55, 305, 306, 0, 0, 0, 0, 0, 0, 1296, - 306, 311, 309, 0, 0, 296, 0, 174, 100, 300, - 83, 0, 182, 244, 1339, 1366, -82, -82, -248, -82, - -82, -82, -44, 0, 0, 0, 22, -55, 0, 4089, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 3908, 3995, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4034, 4059, 4089, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, -81, - 0, 0, 0, -98, 0, 0, 0, -55, 0, 4089, - 4089, 0, 4089, 240, 77, 0, 329, 4089, 0, 41, - 0, 4089, 4089, -55, 4089, 0, 356, 0, 358, 0, - 0, 4089, 0, 359, 355, 0, 0, -191, 2438, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 4089, 2465, 4089, - 2465, 2465, 2465, 2465, 2411, 345, 2700, 3204, 2956, 4089, - 128, 4089, 128, 4, 4, 4, 4, 4, 239, 239, - -248, -248, -248, 0, 0, 4089, 364, 0, 4089, 4089, - 0, 0, 2411, 1296, 0, 0, 0, 0, 0, 0, - 2411, 2411, 2411, 0, 3167, 4089, 4089, 367, 282, 22, - 375, 0, -55, 2465, 2465, 4089, 2465, 2465, 346, 0, - 1393, 1778, -10, 397, 400, -55, 3703, 0, 4089, 0, - 3167, 0, 4089, 0, 0, 300, 401, 112, 0, 421, - 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3703, 1805, 342, 0, 3703, - 0, 427, 428, 0, 422, 300, -10, 4089, 0, 4089, - 454, 455, 3703, 457, 433, 453, 474, 476, 392, 0, - 0, 0, 0, 0, -84, -32, 0, 0, 459, 3703, - 1832, 4089, 4089, 158, 4089, 0, 0, 4089, 4089, 0, - 0, 0, 3703, 0, 0, 395, 0, 462, 1875, 482, - 1929, 1902, 1972, 398, 180, 4089, 3703, 4089, 186, 3703, - 404, 0, 0, 0, 0, 180, 473, 0, 1999, 123, - 506, 177, -73, 510, 0, 4089, 490, 212, 3703, 0, - 0, 0, 0, 435, 0, -73, -80, 512, 0, 0, - 0, 3703, 4089, 503, 0, 0, 222, 3703, 0, 2026, - 3703, 522, 0, 3703, 0, 441, 0, 3703, 440, 0, + protected static $yySindex = array( -238, + 0, 0, -226, -136, -136, 3, -226, 0, 41, 92, + 96, 0, 0, 0, 0, 0, 0, 72, 0, -251, + 0, 0, 61, 0, -136, 0, 0, 126, 0, 0, + 0, 0, -84, 76, 176, -84, -84, 0, -136, 182, + 61, 126, 0, -69, -66, 0, 1682, 0, 0, -84, + -61, -84, 134, -84, 198, 0, 0, 0, 0, 0, + 201, 234, -128, 0, 248, 291, 262, 0, 0, -84, + 212, 292, 0, 0, 309, -90, -90, 0, -215, 0, + 0, -209, 0, 0, -84, -4, 4283, 0, 0, 0, + 4005, 0, 0, 198, 0, 13, 0, 94, 0, -268, + 0, 0, 0, 91, 4326, 4283, 4283, 4283, 4283, 4283, + 4283, 4283, 0, 4283, 4283, 311, 325, 0, -44, 2473, + -81, 326, 324, 0, 0, 0, 0, 0, 0, 1450, + 324, 328, 329, 0, 0, 316, 0, 100, 116, 320, + 3, 0, 102, 175, 1584, 1619, -164, -164, -286, -164, + -164, -164, -65, 0, 0, 0, 32, -81, 0, 4283, + 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 3996, 4116, + 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4239, 4261, 4283, + 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, -67, + 0, 0, 0, -15, 0, 0, 0, -81, 0, 4283, + 4283, 0, 4283, 149, 94, 0, 353, 4283, 0, 45, + 0, 4283, 4283, -81, 4283, 0, 356, 0, 358, 0, + 0, 4283, 0, 374, 381, 0, 0, -214, 277, 2558, + 2558, 2558, 2558, 2558, 2558, 2558, 2558, 4283, 2558, 4283, + 2558, 2558, 2558, 2558, 2473, 382, 85, 1704, 431, 4283, + 802, 4283, 802, 265, 265, 265, 265, 265, -8, -8, + -286, -286, -286, 0, 0, 4283, 425, 0, 4283, 4283, + 0, 0, 2473, 1450, 0, 0, 0, 0, 0, 0, + 2473, 2473, 2473, 0, 3058, 4283, 4283, 426, 145, 32, + 440, 0, -81, 2558, 2558, 4283, 2558, 2558, 389, 0, + 1748, 1845, -24, 442, 443, -81, 449, 367, 0, 4283, + 0, 3058, 0, 4283, 0, 0, 320, 451, 154, 0, + 464, 0, 0, 0, 32, 3873, 454, 468, 0, 459, + 320, -24, 112, 0, 395, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3873, 1873, 394, 0, 3873, + 0, 0, 0, -64, -23, 0, 0, 0, 4283, 0, + 4283, 482, 483, 3873, 484, 466, 467, 493, 494, 410, + 0, 0, 0, 0, 0, 3873, 0, 477, 3873, 1917, + 4283, 4283, 177, 4283, 0, 0, 4283, 4283, 0, 412, + 0, 424, 0, 491, 2034, 524, 2076, 2145, 2173, 0, + 221, 4283, 3873, 4283, 226, 3873, 453, 0, 0, 0, + 221, 532, 0, 2302, 179, 560, 231, -126, 565, 0, + 4283, 547, 274, 3873, 0, 0, 0, 0, 492, 0, + -126, -84, 577, 0, 0, 0, 3873, 4283, 561, 0, + 0, 280, 3873, 0, 2337, 3873, 592, 0, 3873, 0, + 518, 0, 3873, 517, 0, ); - protected static $yyRindex= array( 509, - 0, 0, 660, 0, 0, 11, 685, 0, 16, 0, + protected static $yyRindex= array( 79, + 0, 0, 220, 0, 0, 29, 315, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 0, 0, 0, 0, 1, - -36, 0, 0, -108, 443, 0, 0, 0, 0, 0, - 469, 0, 0, 0, -40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 552, 0, 0, 0, - 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -184, 563, -39, 0, 0, - 575, 0, 0, 0, 0, -184, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 0, 0, 0, 148, - 194, 0, 110, 0, 0, 0, 0, 0, 0, -15, - 581, 0, 582, 0, 0, 0, 0, 0, 0, 224, - 284, 0, 1269, 0, 0, 796, 593, 620, 759, 647, - 691, 718, 0, 0, 0, 0, 584, 194, 0, 0, + 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 550, 0, 0, 0, 0, 20, + 141, 0, 0, -88, 521, 0, 0, 0, 0, 0, + 522, 0, 0, 0, -40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 605, 0, 0, 0, + 0, 525, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -242, 606, -32, 0, 0, + 608, 0, 0, 0, 0, -242, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1286, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 0, 53, + 345, 0, 24, 0, 0, 0, 0, 0, 0, 153, + 609, 0, 617, 0, 0, 0, 0, 0, 0, 105, + 323, 0, 1413, 0, 0, -26, 566, 593, 987, 730, + 767, 895, 0, 0, 0, 0, 623, 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 496, 0, 258, - 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, - 0, 563, 0, 0, 586, 0, 0, 0, 2708, 94, - 204, 1418, 1445, 1475, 2050, 2077, 2592, 0, 3159, 0, - 3195, 3216, 3235, 3245, 266, 0, 3091, 452, 2663, 0, - 2710, 0, 3047, 2547, 2571, 2615, 2639, -28, 2493, 2520, - 1144, 1171, 1198, 0, 0, 535, 70, 0, 0, 0, - 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, - 290, 1406, 2039, 0, 3115, 563, 563, 0, 0, 0, - 167, 0, 194, 3254, 3258, 0, 3281, 3291, 0, 0, - 0, 0, 591, 0, 0, 194, 508, 0, 563, 0, - 3138, 0, 563, 0, 0, 264, 0, 0, 0, 602, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 508, 0, 0, 0, -107, - 0, 0, 0, 0, 24, 264, 0, 587, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 469, 0, 121, + 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 345, 0, 0, 0, 0, 0, 0, + 0, 606, 0, 0, 625, 0, 0, 0, 1246, 208, + 259, 809, 870, 1000, 1297, 1422, 1426, 0, 1595, 0, + 1675, 1719, 2010, 2415, 661, 0, 3322, 3284, 3166, 0, + 3193, 0, 3244, 2857, 2984, 3021, 3142, 2758, 2600, 2721, + 1028, 1152, 1195, 0, 0, 578, 140, 0, 0, 0, + 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, + 147, 2268, 2730, 0, 3413, 606, 606, 0, 552, 0, + 167, 0, 345, 2445, 2571, 0, 3005, 3154, 0, 0, + 0, 0, 629, 0, 0, 345, 0, 0, 0, 606, + 0, 3440, 0, 606, 0, 0, 196, 0, 0, 0, + 658, 0, 0, 0, 0, 576, 0, 0, 0, -12, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 576, 0, 0, 0, -120, + 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, - 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3554, 0, 0, 0, 603, - 0, 3648, 520, 0, 0, 563, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 576, 0, 0, 576, 0, + 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -102, 0, 0, -102, 0, 0, 0, 508, 0, 0, + 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, + 3713, 0, 0, 0, 666, 0, 3829, 583, 0, 0, + 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 584, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -102, 0, 0, -102, 0, + 0, 0, 576, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 181, 0, 0, 642, -33, 36, -30, - 0, 0, 0, 566, 0, 0, 209, 0, 518, 463, - 0, 0, 0, -224, 456, 4358, 0, 0, 0, 0, - -144, 627, 629, 0, 259, 589, 0, 23, 1065, -90, - 325, 0, 333, 539, 0, -75, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 703, -33, 5, -30, + 0, 0, 0, 627, 0, 0, 122, 0, 571, 508, + 0, 0, 0, -202, 510, 4589, 0, 0, 0, 0, + -137, 673, 675, 0, 281, 640, 0, -6, -68, 286, + 391, 0, 375, 297, 0, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 248, 0, 0, 0, 0, 270, 0, 0, 605, - 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 385, 0, 0, 0, 494, 0, - 500, 0, 0, 0, 0, 0, 676, 0, + 0, 293, 0, 0, 0, 0, 317, 0, 0, 635, + 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 402, 439, 0, 0, 0, 527, + 0, 533, 0, 0, 0, 0, 0, 710, 0, ); protected static $yyTable = array(40, - 159, 159, 43, 43, 159, 44, 45, 39, 219, 199, - 39, 39, 199, 63, 18, 199, 43, 66, 43, 69, - 43, 72, 64, 75, 269, 114, 382, 39, 114, 199, - 199, 199, 199, 199, 199, 193, 43, 1, 92, 72, - 189, 20, 63, 63, 45, 187, 185, 39, 186, 184, - 188, 43, 10, 10, 72, 10, 10, 10, 10, 10, - 10, 10, 10, 190, 199, 199, 227, 195, 291, 68, - 29, 30, 9, 10, 10, 10, 10, 10, 10, 159, - 159, 39, 39, 159, 159, 159, 159, 159, 159, 159, - 383, 344, 5, 45, 18, 199, 199, 25, 68, 68, - 159, 159, 159, 159, 159, 159, 221, 221, 10, 10, - 221, 221, 221, 221, 221, 221, 221, 18, 93, 43, - 139, 367, 284, 26, 272, 27, 140, 221, 221, 221, - 221, 221, 221, 159, 143, 159, 159, 143, 10, 10, - 10, 94, 141, 234, 234, 28, 39, 33, 292, 232, - 113, 143, 143, 191, 192, 232, 43, 142, 41, 265, - 221, 267, 221, 221, 189, 159, 159, 159, 113, 187, - 185, 47, 186, 184, 188, 38, 210, 234, 38, 38, - 42, 61, 50, 234, 99, 11, 143, 180, 114, 182, - 299, 114, 221, 221, 221, 88, 56, 57, 58, 59, - 60, 310, 18, 122, 122, 32, 114, 122, 122, 122, - 122, 122, 122, 122, 323, 38, 52, 205, 143, 46, - 381, 156, 212, 70, 122, 122, 122, 122, 122, 122, - 213, 213, 206, 74, 213, 213, 213, 213, 213, 213, - 213, 268, 79, 171, 174, 359, 171, 174, 216, 38, - 76, 213, 213, 213, 213, 213, 213, 122, 264, 122, - 122, 174, 174, 232, 232, 66, 66, 35, 62, 43, - 64, 64, 369, 77, 173, 189, 194, 173, 83, 386, - 187, 54, 35, 78, 213, 188, 213, 213, 216, 122, - 122, 122, 394, 97, 78, 217, 174, 232, 116, 422, - 423, 116, 199, 232, 35, 80, 117, 35, 81, 117, - 232, 232, 82, 43, 84, 190, 116, 213, 213, 191, - 192, 85, 216, 117, 117, 10, 10, 10, 174, 316, - 36, 43, 87, 36, 89, 90, 136, 156, 157, 12, - 13, 14, 15, 16, 17, 199, 10, 159, 36, 200, - 445, 202, 203, 447, 159, 10, 204, 449, 117, 207, - 208, 223, 12, 13, 14, 15, 16, 17, 280, 12, - 12, 199, 199, 159, 159, 199, 199, 199, 199, 199, - 140, 221, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 43, 98, 286, 437, 287, 290, 289, - 221, 221, 296, 300, 307, 191, 192, 306, 12, 13, - 14, 15, 16, 17, 309, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 143, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 321, 312, 190, - 322, 345, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 346, 12, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 347, 349, 361, 363, 364, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 122, 365, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 376, 202, 372, 373, 202, 375, 122, 122, 277, - 56, 57, 58, 59, 60, 213, 143, 143, 143, 202, - 202, 377, 202, 378, 202, 379, 380, 385, 390, 395, - 396, 398, 402, 403, 213, 410, 413, 183, 181, 191, - 192, 416, 215, 215, 174, 418, 215, 215, 215, 215, - 215, 215, 215, 2, 202, 202, 419, 420, 429, 427, - 190, 430, 438, 215, 215, 215, 215, 215, 215, 435, - 441, 442, 446, 448, 450, 22, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 202, 202, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 215, 215, - 43, 20, 48, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 230, 112, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 165, 174, 174, 174, 215, - 215, 167, 168, 232, 151, 116, 152, 116, 18, 207, - 207, 58, 64, 207, 207, 207, 207, 207, 207, 207, - 191, 192, 60, 92, 94, 116, 112, 96, 24, 96, - 207, 207, 207, 207, 207, 207, 208, 208, 211, 278, - 208, 208, 208, 208, 208, 208, 208, 279, 49, 48, - 95, 368, 362, 436, 308, 415, 39, 208, 208, 208, - 208, 208, 208, 206, 206, 207, 207, 206, 206, 206, - 206, 206, 206, 206, 5, 131, 275, 271, 31, 0, - 0, 0, 0, 0, 206, 206, 206, 206, 206, 206, - 0, 0, 208, 208, 0, 0, 207, 207, 135, 6, - 0, 0, 0, 0, 0, 0, 0, 209, 209, 0, - 0, 209, 209, 209, 209, 209, 209, 209, 0, 206, - 206, 0, 0, 208, 208, 0, 0, 0, 209, 209, - 209, 209, 209, 209, 210, 210, 0, 0, 210, 210, - 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, - 206, 206, 0, 0, 0, 210, 210, 210, 210, 210, - 210, 0, 202, 209, 209, 0, 0, 0, 2, 2, - 2, 2, 2, 2, 0, 205, 205, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 0, 215, 2, 2, - 210, 210, 0, 0, 209, 209, 205, 205, 205, 205, - 205, 205, 0, 0, 0, 0, 215, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 134, 0, 0, 134, - 0, 210, 210, 0, 55, 56, 57, 58, 59, 60, - 0, 205, 205, 134, 134, 202, 202, 202, 202, 202, - 0, 0, 0, 0, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 12, 13, 14, 15, 16, 17, 0, - 0, 0, 205, 205, 61, 0, 0, 0, 134, 0, - 0, 374, 0, 0, 0, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 207, 0, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 62, 0, 0, - 134, 0, 0, 207, 0, 0, 0, 0, 98, 0, - 54, 208, 0, 0, 0, 408, 0, 0, 412, 5, - 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 431, 206, 5, - 5, 0, 0, 0, 6, 6, 6, 6, 6, 6, - 439, 0, 0, 0, 0, 0, 443, 206, 0, 0, - 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, - 0, 0, 207, 207, 0, 0, 207, 207, 207, 207, - 207, 0, 209, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 0, 0, 0, 0, 0, 208, - 208, 209, 0, 208, 208, 208, 208, 208, 0, 210, + 161, 39, 43, 43, 66, 44, 45, 39, 161, 193, + 20, 161, 227, 63, 134, 219, 43, 134, 43, 69, + 43, 72, 64, 75, 39, 190, 39, 39, 189, 272, + 18, 134, 134, 187, 18, 375, 43, 18, 188, 72, + 68, 195, 63, 63, 92, 291, 39, 18, 29, 30, + 94, 43, 10, 10, 72, 10, 10, 10, 10, 10, + 10, 10, 10, 45, 113, 139, 134, 39, 284, 68, + 68, 140, 11, 10, 10, 10, 10, 10, 10, 161, + 161, 1, 113, 161, 161, 161, 161, 161, 161, 161, + 61, 234, 32, 114, 5, 299, 114, 234, 134, 376, + 161, 161, 161, 161, 161, 161, 46, 269, 10, 10, + 39, 114, 45, 2, 329, 191, 192, 236, 236, 43, + 99, 189, 177, 9, 93, 292, 187, 185, 356, 186, + 184, 188, 25, 161, 141, 161, 161, 135, 10, 10, + 10, 156, 212, 205, 180, 210, 182, 311, 35, 142, + 26, 236, 358, 288, 27, 290, 43, 236, 206, 265, + 324, 116, 28, 35, 116, 161, 161, 161, 41, 88, + 56, 57, 58, 59, 60, 38, 223, 223, 176, 116, + 223, 223, 223, 223, 223, 223, 223, 36, 378, 33, + 36, 83, 38, 114, 38, 38, 114, 223, 223, 223, + 223, 223, 223, 122, 122, 36, 97, 122, 122, 122, + 122, 122, 122, 122, 78, 213, 374, 304, 305, 42, + 173, 47, 18, 173, 122, 122, 122, 122, 122, 122, + 223, 175, 223, 223, 175, 38, 35, 191, 192, 35, + 50, 327, 62, 52, 267, 328, 427, 428, 143, 70, + 194, 143, 66, 66, 5, 54, 74, 122, 76, 122, + 122, 77, 223, 223, 223, 143, 143, 216, 216, 43, + 64, 64, 264, 78, 217, 12, 13, 14, 15, 16, + 17, 79, 12, 13, 14, 15, 16, 17, 80, 122, + 122, 122, 12, 13, 14, 15, 16, 17, 43, 176, + 143, 189, 176, 190, 134, 82, 187, 185, 216, 186, + 184, 188, 394, 189, 177, 317, 176, 176, 187, 185, + 43, 186, 184, 188, 268, 10, 10, 10, 234, 234, + 98, 81, 143, 412, 84, 85, 180, 162, 182, 174, + 12, 13, 14, 15, 16, 17, 10, 98, 87, 6, + 156, 176, 433, 136, 161, 10, 89, 90, 2, 2, + 2, 2, 2, 2, 157, 159, 199, 200, 202, 12, + 176, 223, 203, 161, 161, 207, 204, 12, 2, 2, + 208, 215, 215, 176, 140, 215, 215, 215, 215, 215, + 215, 215, 280, 191, 192, 286, 190, 287, 43, 2, + 175, 442, 215, 215, 215, 215, 215, 215, 277, 56, + 57, 58, 59, 60, 289, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 290, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 215, 215, 296, + 234, 234, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 223, 12, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 300, 307, 306, 189, 215, 215, + 223, 223, 187, 185, 234, 186, 184, 188, 122, 310, + 234, 313, 322, 323, 183, 181, 191, 192, 325, 326, + 180, 330, 182, 331, 352, 178, 179, 122, 122, 5, + 5, 5, 5, 5, 5, 217, 217, 332, 353, 217, + 217, 217, 217, 217, 217, 217, 354, 360, 372, 5, + 5, 381, 382, 384, 385, 386, 217, 217, 217, 217, + 217, 217, 387, 388, 389, 391, 400, 396, 143, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 401, 402, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 217, 217, 404, 408, 415, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 418, 190, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 190, 176, + 421, 423, 217, 217, 6, 6, 6, 6, 6, 6, + 424, 425, 209, 209, 432, 434, 209, 209, 209, 209, + 209, 209, 209, 435, 6, 6, 440, 443, 446, 447, + 143, 143, 143, 209, 209, 209, 209, 209, 209, 210, + 210, 370, 451, 210, 210, 210, 210, 210, 210, 210, + 453, 455, 43, 22, 20, 48, 112, 232, 167, 169, + 210, 210, 210, 210, 210, 210, 215, 170, 209, 209, + 383, 390, 234, 151, 392, 152, 191, 192, 116, 58, + 116, 176, 176, 176, 156, 215, 183, 181, 191, 192, + 163, 164, 165, 166, 168, 210, 210, 178, 179, 209, + 209, 161, 167, 172, 171, 173, 169, 170, 60, 413, + 64, 117, 417, 116, 117, 112, 92, 94, 96, 24, + 96, 211, 279, 278, 49, 48, 210, 210, 117, 117, + 436, 95, 357, 441, 373, 131, 333, 420, 309, 275, + 271, 450, 31, 444, 452, 0, 0, 0, 454, 448, + 0, 0, 190, 0, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 117, 0, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 208, 208, 0, 0, + 208, 208, 208, 208, 208, 208, 208, 0, 0, 0, + 217, 0, 0, 0, 0, 0, 0, 208, 208, 208, + 208, 208, 208, 0, 0, 0, 0, 0, 0, 217, + 0, 0, 0, 211, 211, 0, 0, 211, 211, 211, + 211, 211, 211, 211, 0, 0, 0, 0, 0, 0, + 0, 0, 208, 208, 211, 211, 211, 211, 211, 211, + 183, 181, 191, 192, 0, 0, 0, 0, 189, 0, + 0, 178, 179, 187, 185, 0, 186, 184, 188, 177, + 0, 0, 177, 208, 208, 0, 0, 0, 0, 211, + 211, 180, 0, 182, 0, 0, 177, 177, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 209, 0, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 211, 211, 0, 0, 0, 0, 209, 0, 0, 0, + 0, 177, 0, 0, 210, 0, 0, 0, 0, 0, + 178, 0, 0, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 0, 0, 0, 178, 178, 0, + 0, 212, 212, 177, 0, 212, 212, 212, 212, 212, + 212, 212, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 212, 212, 212, 212, 212, 212, 0, 0, + 0, 0, 178, 0, 0, 209, 209, 0, 0, 209, + 209, 209, 209, 209, 0, 0, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 212, 212, 0, + 0, 0, 210, 210, 178, 0, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 212, 212, + 0, 0, 0, 207, 207, 0, 0, 207, 207, 207, + 207, 207, 207, 207, 0, 0, 0, 0, 0, 0, + 179, 208, 0, 179, 207, 207, 207, 207, 207, 207, + 0, 0, 0, 0, 0, 0, 0, 179, 179, 0, + 208, 0, 0, 0, 198, 198, 0, 0, 198, 198, + 198, 198, 198, 198, 198, 0, 0, 0, 211, 207, + 207, 0, 0, 0, 0, 198, 198, 198, 198, 198, + 198, 0, 179, 0, 0, 0, 0, 211, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 207, 207, 0, 190, 0, 0, 0, 0, 0, 0, + 198, 198, 0, 0, 179, 0, 0, 0, 0, 208, + 208, 0, 0, 208, 208, 208, 208, 208, 0, 177, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 0, 0, 0, 0, 0, 206, 206, 210, 0, - 206, 206, 206, 206, 206, 0, 0, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 0, 0, + 208, 198, 198, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 211, 211, 0, 0, + 211, 211, 211, 211, 211, 0, 0, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 199, 199, + 0, 0, 199, 199, 199, 199, 199, 199, 199, 0, + 178, 183, 181, 191, 192, 0, 212, 0, 0, 199, + 199, 199, 199, 199, 199, 0, 0, 0, 0, 0, + 0, 177, 177, 177, 0, 212, 0, 0, 0, 0, + 0, 200, 200, 0, 0, 200, 200, 200, 200, 200, + 200, 200, 0, 0, 199, 199, 0, 0, 0, 0, + 0, 0, 200, 200, 200, 200, 200, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, - 209, 209, 0, 0, 209, 209, 209, 209, 209, 0, - 0, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 0, 0, 0, 0, 0, 210, 210, 0, - 0, 210, 210, 210, 210, 210, 134, 0, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 199, 199, 0, 0, 0, + 0, 0, 178, 178, 178, 0, 142, 200, 200, 142, + 0, 0, 0, 0, 212, 212, 0, 0, 212, 212, + 212, 212, 212, 142, 142, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 0, 207, 200, 200, + 0, 0, 133, 133, 0, 0, 133, 133, 0, 133, + 179, 133, 133, 0, 0, 0, 0, 180, 142, 0, + 180, 0, 0, 133, 133, 133, 133, 133, 133, 0, + 0, 0, 0, 0, 180, 180, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 205, 205, - 0, 0, 205, 205, 205, 205, 205, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 196, 196, 0, 0, 196, 196, 196, 196, 196, 196, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 196, 196, 196, 196, 196, 196, 197, 197, 0, - 0, 197, 197, 197, 197, 197, 197, 197, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 197, 197, - 197, 197, 197, 197, 198, 198, 196, 196, 198, 198, - 198, 198, 198, 198, 198, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, - 198, 0, 0, 197, 197, 0, 0, 196, 196, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, - 0, 0, 133, 133, 0, 133, 288, 133, 133, 0, - 198, 198, 0, 0, 197, 197, 0, 0, 0, 133, - 133, 133, 133, 133, 133, 159, 159, 0, 0, 0, - 159, 159, 0, 159, 159, 159, 0, 0, 0, 0, - 0, 198, 198, 0, 0, 0, 0, 0, 159, 159, - 159, 159, 189, 177, 133, 133, 0, 187, 185, 0, - 186, 184, 188, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 0, 0, 0, 180, 162, 182, 174, 159, - 0, 0, 159, 0, 0, 133, 133, 0, 0, 0, - 0, 0, 0, 342, 0, 189, 177, 343, 0, 214, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 176, - 0, 159, 159, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 189, 177, 0, 0, 0, 187, 185, 0, - 186, 184, 188, 0, 0, 0, 0, 0, 0, 175, - 0, 0, 0, 0, 0, 180, 162, 182, 174, 189, - 177, 0, 176, 0, 187, 185, 388, 186, 184, 188, - 0, 0, 0, 0, 0, 0, 146, 0, 0, 146, - 0, 0, 180, 162, 182, 174, 0, 0, 175, 176, - 407, 175, 175, 146, 146, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 196, 175, 175, 0, 0, 0, - 428, 0, 0, 0, 0, 176, 176, 0, 176, 175, + 142, 0, 0, 0, 0, 0, 0, 0, 133, 133, + 0, 0, 0, 0, 0, 0, 207, 207, 0, 180, + 207, 207, 207, 207, 207, 0, 0, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 0, 133, + 133, 0, 179, 179, 179, 0, 0, 0, 0, 0, + 0, 180, 0, 0, 0, 0, 0, 198, 198, 0, + 0, 198, 198, 198, 198, 198, 0, 0, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 161, + 161, 0, 0, 0, 161, 161, 0, 161, 161, 161, + 0, 0, 182, 0, 0, 182, 181, 0, 0, 181, + 0, 0, 161, 161, 161, 161, 0, 0, 0, 182, + 182, 0, 199, 181, 181, 0, 189, 177, 0, 0, + 0, 187, 185, 0, 186, 184, 188, 0, 0, 0, + 0, 0, 0, 161, 0, 0, 161, 0, 0, 180, + 162, 182, 174, 0, 182, 0, 0, 0, 181, 0, + 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 161, 161, 0, 0, 0, + 0, 0, 0, 176, 0, 0, 182, 0, 0, 0, + 181, 199, 199, 0, 0, 199, 199, 199, 199, 199, + 0, 0, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 175, 0, 0, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 200, 200, 0, 133, 200, 200, + 200, 200, 200, 0, 0, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 133, 0, 0, 0, + 189, 177, 0, 0, 214, 187, 185, 180, 186, 184, + 188, 0, 0, 0, 0, 205, 0, 0, 205, 0, + 0, 0, 0, 180, 162, 182, 174, 0, 0, 0, + 0, 0, 205, 205, 0, 189, 177, 0, 142, 142, + 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 176, 180, 162, + 182, 174, 0, 0, 0, 133, 133, 205, 0, 133, + 133, 133, 133, 133, 0, 0, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 175, 0, 180, + 180, 180, 176, 0, 0, 206, 0, 0, 206, 205, + 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, + 0, 0, 206, 206, 0, 0, 0, 0, 0, 0, + 189, 177, 175, 0, 161, 187, 185, 0, 186, 184, + 188, 0, 182, 0, 0, 0, 181, 0, 0, 183, + 0, 190, 183, 180, 0, 182, 0, 206, 0, 0, + 0, 0, 0, 39, 0, 0, 183, 183, 0, 0, + 0, 0, 0, 0, 189, 177, 0, 0, 0, 187, + 185, 0, 186, 184, 188, 0, 0, 0, 0, 206, + 0, 0, 0, 0, 0, 0, 0, 180, 162, 182, + 174, 183, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 0, 12, 161, 161, 0, 161, 161, 161, 161, + 161, 161, 161, 161, 182, 182, 182, 0, 181, 181, + 181, 176, 0, 183, 0, 0, 0, 0, 0, 183, + 181, 191, 192, 163, 164, 165, 166, 168, 0, 0, + 178, 179, 201, 160, 161, 167, 172, 171, 173, 169, + 170, 175, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 177, 0, 0, 0, 187, 185, 0, 186, + 184, 188, 0, 0, 0, 190, 0, 0, 0, 0, + 0, 0, 0, 0, 180, 162, 182, 174, 0, 189, + 177, 0, 0, 0, 187, 185, 0, 186, 184, 188, + 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, + 190, 371, 180, 162, 182, 174, 0, 0, 176, 0, + 0, 55, 56, 57, 58, 59, 60, 0, 0, 0, + 0, 0, 0, 189, 177, 0, 0, 0, 187, 185, + 0, 186, 184, 188, 0, 0, 176, 0, 175, 316, + 0, 0, 0, 0, 0, 393, 180, 162, 182, 174, + 0, 61, 0, 183, 181, 191, 192, 163, 164, 165, + 166, 168, 0, 0, 178, 179, 175, 160, 161, 167, + 172, 171, 173, 169, 170, 206, 0, 205, 205, 205, + 176, 0, 0, 0, 62, 190, 0, 0, 183, 181, + 191, 192, 163, 164, 165, 166, 168, 54, 0, 178, + 179, 215, 160, 161, 167, 172, 171, 173, 169, 170, + 175, 0, 0, 0, 0, 0, 0, 0, 0, 183, + 184, 0, 0, 184, 0, 0, 0, 0, 0, 190, + 0, 0, 0, 0, 0, 0, 0, 184, 184, 0, + 189, 177, 0, 0, 403, 187, 185, 0, 186, 184, + 188, 0, 0, 0, 0, 0, 0, 206, 206, 206, + 0, 0, 0, 180, 162, 182, 174, 0, 0, 0, + 0, 0, 184, 183, 181, 191, 192, 0, 0, 0, + 0, 0, 189, 177, 178, 179, 0, 187, 185, 0, + 186, 184, 188, 0, 0, 0, 0, 176, 0, 0, + 0, 183, 183, 183, 184, 180, 162, 182, 174, 0, + 0, 0, 0, 0, 0, 0, 0, 183, 181, 191, + 192, 163, 164, 165, 166, 168, 190, 175, 178, 179, + 0, 160, 161, 167, 172, 171, 173, 169, 170, 176, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 177, 0, 190, 406, 187, 185, 0, 186, + 184, 188, 0, 0, 0, 0, 0, 0, 0, 175, + 0, 0, 0, 0, 180, 162, 182, 174, 0, 189, + 177, 0, 0, 407, 187, 185, 0, 186, 184, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, + 0, 0, 180, 162, 182, 174, 0, 0, 176, 0, + 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, + 165, 166, 168, 0, 0, 178, 179, 0, 160, 161, + 167, 172, 171, 173, 169, 170, 176, 0, 175, 0, + 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, + 168, 0, 0, 178, 179, 0, 160, 161, 167, 172, + 171, 173, 169, 170, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, - 0, 197, 176, 176, 0, 0, 0, 0, 0, 0, - 175, 0, 0, 0, 0, 177, 175, 314, 177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, - 146, 0, 177, 177, 0, 0, 0, 176, 0, 0, - 0, 0, 175, 196, 196, 0, 0, 196, 196, 196, - 196, 196, 0, 133, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 0, 0, 177, 0, 176, - 197, 197, 133, 0, 197, 197, 197, 197, 197, 0, - 159, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 0, 0, 0, 0, 0, 198, 198, 177, - 159, 198, 198, 198, 198, 198, 0, 190, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 0, + 0, 146, 0, 0, 0, 0, 183, 181, 191, 192, + 163, 164, 165, 166, 168, 146, 146, 178, 179, 0, + 160, 161, 167, 172, 171, 173, 169, 170, 189, 177, + 184, 0, 422, 187, 185, 190, 186, 184, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 180, 162, 182, 174, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 177, 0, 0, 0, 187, 185, + 0, 186, 184, 188, 0, 0, 0, 190, 0, 0, + 0, 0, 146, 0, 449, 176, 180, 162, 182, 174, + 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 133, 0, 0, 133, 133, 133, 133, 133, - 190, 0, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 0, 0, 0, 0, 0, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 190, 12, 159, - 159, 0, 159, 159, 159, 159, 159, 159, 159, 159, - 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, - 164, 165, 166, 168, 190, 0, 178, 179, 201, 160, + 0, 0, 184, 184, 184, 175, 0, 0, 0, 0, + 176, 0, 0, 183, 181, 191, 192, 163, 164, 165, + 166, 168, 0, 0, 178, 179, 0, 160, 161, 167, + 172, 171, 173, 169, 170, 185, 190, 0, 185, 0, + 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 185, 185, 0, 183, 181, 191, 192, 163, + 164, 165, 166, 168, 190, 186, 178, 179, 186, 160, 161, 167, 172, 171, 173, 169, 170, 0, 0, 0, + 0, 0, 186, 186, 0, 0, 0, 185, 0, 189, + 177, 0, 0, 0, 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 146, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 0, 175, 178, - 179, 0, 160, 161, 167, 172, 171, 173, 169, 170, - 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, - 164, 165, 166, 168, 0, 176, 178, 179, 215, 160, - 161, 167, 172, 171, 173, 169, 170, 0, 0, 0, + 0, 0, 180, 162, 182, 174, 0, 186, 0, 185, + 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, + 165, 166, 168, 0, 0, 178, 179, 0, 160, 161, + 167, 172, 171, 173, 169, 170, 176, 0, 0, 186, 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, - 168, 0, 0, 178, 179, 177, 160, 161, 167, 172, - 171, 173, 169, 170, 189, 177, 0, 0, 146, 187, + 168, 0, 0, 178, 179, 0, 160, 161, 167, 172, + 171, 173, 169, 170, 189, 177, 175, 0, 146, 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, 0, - 175, 175, 175, 0, 0, 0, 0, 180, 162, 182, - 174, 189, 177, 0, 0, 0, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 0, 0, 176, 176, 176, - 0, 0, 0, 360, 180, 162, 182, 174, 189, 177, - 0, 176, 0, 187, 185, 0, 186, 184, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 177, 177, - 387, 180, 162, 182, 174, 0, 0, 0, 176, 0, - 0, 175, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 177, 0, 0, 397, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 176, 0, 0, 175, 0, - 0, 0, 0, 0, 180, 162, 182, 174, 189, 177, - 0, 0, 400, 187, 185, 0, 186, 184, 188, 0, - 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, - 0, 180, 162, 182, 174, 189, 177, 0, 176, 0, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 0, 0, 0, 176, 0, 0, 175, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 177, - 0, 0, 401, 187, 185, 0, 186, 184, 188, 0, - 0, 0, 176, 0, 0, 175, 0, 0, 0, 0, - 0, 180, 162, 182, 174, 189, 177, 0, 0, 417, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, - 0, 0, 175, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 189, 177, 0, 176, 0, 187, 185, 0, - 186, 184, 188, 0, 0, 0, 0, 0, 0, 147, - 0, 0, 147, 444, 0, 180, 162, 182, 174, 190, - 178, 0, 176, 178, 0, 175, 147, 147, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 178, 178, 0, - 0, 0, 0, 0, 0, 0, 190, 180, 0, 176, - 180, 0, 175, 0, 0, 0, 0, 0, 0, 0, - 0, 147, 0, 0, 180, 180, 0, 0, 0, 0, - 0, 0, 178, 190, 0, 0, 0, 0, 0, 175, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 180, - 0, 0, 0, 0, 178, 0, 0, 183, 181, 191, - 192, 163, 164, 165, 166, 168, 190, 0, 178, 179, - 0, 160, 161, 167, 172, 171, 173, 169, 170, 0, - 0, 180, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 190, 0, 178, 179, 0, 160, 161, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, - 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 190, 0, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 0, 0, 0, 0, 0, 0, 399, + 0, 187, 0, 190, 187, 0, 0, 180, 162, 182, + 174, 0, 0, 0, 0, 0, 0, 0, 187, 187, + 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, + 196, 0, 196, 196, 196, 196, 0, 0, 190, 0, + 0, 176, 0, 0, 0, 0, 0, 196, 196, 196, + 196, 196, 196, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 190, 0, 178, 179, 0, 160, 161, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, + 146, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 196, 196, 0, 187, 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 190, 0, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 0, 0, 0, 0, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 190, 0, 178, - 179, 0, 160, 161, 167, 172, 171, 173, 169, 170, + 0, 0, 178, 179, 0, 160, 161, 167, 172, 171, + 173, 169, 170, 196, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 183, 181, 191, 192, + 163, 164, 165, 166, 168, 185, 0, 178, 179, 0, + 160, 161, 167, 172, 171, 173, 169, 170, 197, 0, + 0, 197, 0, 197, 197, 197, 197, 0, 0, 0, + 147, 0, 0, 147, 0, 186, 0, 0, 197, 197, + 197, 197, 197, 197, 190, 0, 0, 147, 147, 0, + 0, 0, 0, 0, 0, 201, 0, 0, 201, 0, + 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 197, 197, 201, 201, 201, 201, 201, + 201, 0, 147, 0, 0, 0, 0, 185, 185, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, - 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 178, 0, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 0, 0, 0, 0, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 180, 0, 178, - 179, 0, 160, 161, 167, 172, 171, 173, 169, 170, - 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, - 164, 165, 166, 168, 0, 0, 178, 179, 0, 160, - 161, 167, 172, 171, 173, 169, 170, 189, 177, 0, - 0, 147, 187, 185, 0, 186, 184, 188, 0, 0, - 0, 0, 178, 178, 178, 0, 0, 0, 0, 0, - 180, 162, 182, 174, 189, 177, 0, 0, 0, 187, - 185, 0, 186, 184, 188, 0, 0, 0, 0, 180, - 180, 180, 0, 0, 0, 0, 0, 180, 162, 182, - 174, 189, 177, 0, 176, 0, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 180, 162, 182, 174, 0, 0, - 194, 176, 0, 194, 175, 194, 194, 194, 194, 0, + 0, 0, 0, 0, 197, 197, 0, 0, 0, 0, + 201, 201, 0, 0, 147, 0, 0, 186, 186, 186, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, + 168, 201, 201, 178, 179, 0, 160, 161, 167, 172, + 171, 173, 169, 170, 188, 0, 0, 188, 0, 0, + 188, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 188, 0, 188, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 194, 194, 194, 194, 194, 194, 0, 195, 176, 0, - 195, 175, 195, 195, 195, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 195, 195, - 195, 195, 195, 0, 186, 194, 194, 186, 175, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 186, 0, 186, 188, 186, - 0, 188, 195, 195, 188, 0, 194, 194, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, - 0, 188, 179, 188, 0, 179, 0, 0, 0, 186, - 186, 0, 0, 195, 195, 0, 0, 0, 0, 179, - 179, 0, 187, 0, 0, 187, 0, 0, 187, 0, - 0, 0, 0, 188, 188, 0, 0, 0, 0, 0, - 186, 186, 187, 187, 0, 187, 189, 187, 0, 189, - 0, 0, 189, 0, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 188, 189, 189, 0, 189, - 201, 189, 0, 201, 0, 0, 201, 187, 187, 0, - 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, - 201, 201, 190, 201, 0, 201, 0, 0, 0, 0, - 0, 189, 189, 0, 0, 0, 189, 177, 187, 187, - 0, 187, 185, 0, 186, 184, 188, 190, 142, 190, - 190, 142, 0, 190, 0, 201, 201, 0, 0, 180, - 0, 182, 189, 189, 0, 142, 142, 190, 190, 0, - 190, 0, 190, 0, 0, 0, 190, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 201, 201, 0, 0, - 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, - 142, 0, 190, 190, 0, 0, 0, 0, 0, 0, - 183, 181, 191, 192, 163, 164, 165, 166, 168, 0, - 0, 178, 179, 194, 160, 161, 167, 172, 171, 173, - 169, 170, 142, 190, 190, 0, 0, 183, 181, 191, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 188, 0, 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, 0, 0, 178, 179, - 195, 0, 161, 167, 172, 171, 173, 169, 170, 0, - 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 0, 0, 178, 179, 186, 0, 0, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, - 0, 0, 194, 194, 0, 0, 194, 194, 194, 194, - 194, 188, 0, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 0, 0, 0, 0, 0, 195, - 195, 0, 179, 195, 195, 195, 195, 195, 0, 0, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 0, 0, 0, 0, 187, 0, 0, 0, 0, - 186, 186, 186, 186, 186, 0, 0, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 0, 189, - 0, 0, 0, 0, 188, 188, 188, 188, 188, 0, - 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 189, 201, 0, 0, 0, 187, 185, 0, - 186, 184, 188, 0, 179, 179, 179, 0, 0, 0, - 0, 190, 0, 0, 0, 180, 0, 182, 187, 187, - 187, 187, 187, 0, 0, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 0, 0, 142, 0, - 190, 0, 189, 189, 189, 189, 189, 0, 0, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 0, 0, 0, 0, 0, 0, 201, 201, 201, 201, - 201, 0, 0, 0, 0, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 191, 0, 0, 191, 0, 0, - 191, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 181, 191, 192, 0, 191, 191, 0, 191, 0, 191, - 178, 179, 0, 190, 190, 190, 190, 190, 0, 0, - 142, 142, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 200, 0, 0, 200, 0, 0, 0, 0, 191, - 191, 0, 0, 0, 0, 0, 0, 0, 200, 200, - 0, 200, 0, 200, 0, 135, 0, 0, 135, 0, + 0, 0, 0, 167, 172, 171, 173, 169, 170, 0, + 188, 188, 0, 187, 187, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 196, 0, 0, 196, 196, 196, 196, 196, 0, 0, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 190, 0, 0, 190, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 191, 135, 135, 0, 135, 0, 135, 141, 0, - 0, 141, 0, 200, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 141, 141, 0, 141, 203, - 141, 0, 203, 189, 177, 0, 0, 135, 187, 185, - 0, 186, 184, 188, 200, 200, 203, 203, 0, 0, - 0, 0, 0, 0, 0, 0, 180, 0, 182, 0, - 141, 0, 0, 0, 0, 204, 0, 0, 204, 135, - 189, 177, 0, 0, 0, 187, 185, 0, 186, 184, - 188, 203, 204, 204, 0, 0, 181, 0, 0, 181, - 176, 0, 141, 180, 0, 182, 0, 190, 0, 0, - 0, 0, 0, 181, 181, 182, 0, 0, 182, 0, - 0, 0, 0, 203, 0, 183, 0, 204, 183, 0, - 175, 0, 182, 182, 184, 0, 0, 184, 185, 0, - 0, 185, 183, 183, 0, 0, 0, 0, 181, 0, - 0, 184, 184, 0, 0, 185, 185, 0, 0, 204, - 0, 192, 0, 0, 192, 0, 0, 182, 0, 0, - 0, 193, 0, 0, 193, 0, 0, 183, 192, 192, - 181, 0, 0, 0, 0, 0, 184, 0, 193, 193, - 185, 0, 0, 0, 0, 183, 181, 191, 192, 182, - 0, 0, 0, 0, 0, 0, 178, 179, 0, 183, - 0, 0, 0, 192, 0, 0, 0, 191, 184, 0, - 0, 0, 185, 193, 0, 0, 0, 0, 0, 0, + 0, 190, 190, 0, 190, 194, 190, 0, 194, 0, + 0, 197, 0, 0, 0, 0, 0, 0, 189, 0, + 147, 189, 194, 194, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 190, 189, 189, + 0, 189, 0, 189, 0, 0, 0, 0, 201, 0, + 0, 0, 0, 0, 189, 177, 0, 194, 0, 187, + 185, 0, 186, 184, 188, 0, 0, 190, 190, 0, + 0, 0, 0, 189, 189, 0, 0, 180, 0, 182, + 197, 197, 0, 0, 197, 197, 197, 197, 197, 194, + 0, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 147, 0, 189, 189, 0, 0, 0, 0, + 0, 176, 0, 0, 0, 0, 0, 201, 201, 0, + 0, 201, 201, 201, 201, 201, 0, 0, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 191, + 0, 175, 191, 0, 0, 191, 0, 188, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 195, 0, 191, + 191, 0, 191, 203, 191, 0, 203, 0, 0, 203, + 0, 195, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 203, 203, 0, 203, 0, 203, 0, + 192, 0, 0, 192, 191, 191, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 192, 192, 0, 192, 0, 192, 0, 0, 203, 203, + 188, 188, 188, 188, 188, 191, 191, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 195, 0, + 0, 193, 0, 0, 193, 192, 192, 193, 0, 203, + 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 193, 0, 193, 0, 193, 0, 0, 0, + 0, 0, 0, 0, 190, 0, 192, 192, 0, 0, + 0, 0, 0, 0, 204, 0, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 194, 193, 193, 0, 0, + 0, 204, 204, 0, 204, 0, 204, 0, 0, 0, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 202, 0, 0, 202, 0, 193, 193, 190, + 0, 0, 0, 0, 0, 0, 204, 204, 0, 202, + 202, 0, 202, 0, 202, 0, 0, 190, 190, 190, + 190, 190, 0, 0, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 0, 0, 204, 204, 0, + 0, 0, 0, 0, 202, 0, 0, 194, 194, 194, + 0, 0, 0, 0, 189, 189, 189, 189, 189, 0, + 0, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 0, 0, 0, 202, 202, 0, 0, 0, + 0, 0, 0, 135, 0, 0, 135, 183, 181, 191, + 192, 0, 0, 0, 0, 0, 0, 0, 178, 179, + 135, 135, 191, 135, 0, 135, 0, 0, 0, 0, + 141, 0, 0, 141, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 203, 141, 141, 0, + 141, 0, 141, 0, 0, 135, 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, 193, 0, 0, 0, 0, - 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 141, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 0, 191, 191, 191, 191, 191, + 0, 0, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 0, 141, 0, 195, 195, 195, 203, + 203, 203, 203, 203, 193, 0, 0, 0, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 192, 192, 192, + 192, 0, 0, 0, 0, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, - 191, 191, 191, 191, 191, 0, 0, 0, 0, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 141, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 0, 0, 0, 0, 200, 200, 200, 200, 200, 0, - 0, 0, 0, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 0, 0, 0, 190, 0, 0, 135, 135, - 135, 135, 135, 0, 0, 204, 0, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 0, 0, 0, 0, - 0, 141, 141, 141, 141, 141, 181, 0, 0, 0, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 0, - 0, 0, 0, 0, 0, 182, 183, 181, 191, 192, - 0, 203, 203, 203, 0, 183, 0, 178, 179, 0, - 0, 0, 0, 0, 184, 0, 108, 0, 185, 0, - 0, 0, 0, 108, 0, 0, 108, 0, 108, 0, - 0, 0, 0, 183, 181, 191, 192, 204, 204, 204, - 0, 192, 108, 0, 178, 179, 0, 108, 0, 0, - 0, 193, 0, 0, 0, 0, 0, 0, 181, 181, - 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 182, 182, 182, - 0, 0, 0, 0, 0, 0, 0, 183, 183, 183, - 0, 0, 0, 0, 0, 0, 184, 184, 184, 0, - 185, 185, 185, 0, 0, 0, 108, 0, 108, 108, - 104, 0, 0, 0, 0, 0, 0, 104, 0, 0, - 104, 0, 104, 192, 192, 192, 0, 0, 0, 0, - 0, 0, 0, 193, 193, 193, 104, 0, 0, 0, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 109, 0, 0, 0, 104, - 0, 0, 105, 0, 0, 107, 109, 108, 0, 0, - 0, 0, 0, 105, 0, 0, 107, 0, 108, 0, - 0, 335, 0, 0, 0, 0, 115, 0, 0, 0, - 104, 129, 104, 104, 0, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 193, 193, + 193, 193, 202, 0, 0, 0, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, - 0, 0, 0, 108, 108, 108, 108, 108, 108, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 204, 204, 204, + 204, 204, 0, 0, 0, 0, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 202, 202, 202, 202, + 0, 0, 0, 0, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 135, 0, 108, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 108, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, + 141, 108, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 108, 0, 0, - 0, 0, 0, 108, 108, 108, 108, 0, 0, 108, - 0, 0, 0, 0, 0, 0, 0, 104, 104, 104, - 104, 104, 104, 108, 108, 108, 108, 0, 108, 108, - 108, 0, 0, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 105, 0, 0, - 107, 0, 108, 0, 0, 108, 108, 0, 0, 0, - 104, 0, 116, 56, 57, 58, 59, 60, 238, 0, - 0, 115, 0, 116, 56, 57, 58, 59, 60, 0, - 104, 104, 0, 0, 0, 0, 0, 104, 104, 104, - 104, 0, 0, 104, 0, 0, 0, 0, 0, 39, - 0, 0, 0, 0, 0, 0, 0, 104, 104, 104, - 104, 0, 104, 104, 104, 114, 0, 104, 0, 104, - 104, 104, 0, 0, 0, 0, 114, 109, 0, 0, - 0, 0, 0, 110, 105, 62, 117, 107, 0, 108, - 0, 0, 118, 324, 325, 326, 62, 117, 113, 104, - 104, 0, 0, 118, 0, 240, 0, 0, 115, 113, - 0, 0, 327, 328, 329, 330, 109, 331, 332, 106, - 0, 0, 333, 105, 334, 0, 107, 0, 108, 0, - 106, 0, 0, 0, 0, 0, 39, 0, 0, 0, - 0, 109, 0, 0, 250, 0, 0, 115, 105, 0, - 0, 107, 0, 108, 111, 112, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 112, 0, 0, 252, - 110, 109, 115, 0, 0, 39, 0, 0, 105, 0, - 0, 107, 0, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 135, 135, 135, + 135, 0, 0, 0, 0, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 0, 108, 0, 108, 108, 0, + 0, 0, 0, 141, 141, 141, 141, 141, 0, 0, + 0, 0, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 104, 0, 0, 0, 0, 0, 0, 104, 0, + 0, 104, 0, 104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, + 0, 0, 105, 0, 0, 107, 0, 108, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 345, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 39, 0, 115, 0, 0, 0, 0, 0, 0, 110, - 0, 0, 0, 0, 0, 0, 0, 116, 56, 57, - 58, 59, 60, 0, 0, 0, 0, 0, 0, 109, - 39, 0, 0, 0, 110, 0, 105, 0, 0, 107, - 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 104, 0, 104, 104, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, + 0, 0, 108, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 115, 0, 0, 0, 110, 0, 0, 0, 0, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, - 62, 117, 0, 0, 0, 0, 0, 118, 0, 0, - 0, 0, 0, 113, 116, 56, 57, 58, 59, 60, + 0, 0, 0, 0, 0, 346, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 110, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 116, 56, 57, 58, 59, 60, 0, - 0, 0, 0, 0, 0, 0, 0, 114, 0, 111, - 112, 0, 0, 0, 0, 0, 0, 0, 116, 56, - 57, 58, 59, 60, 0, 0, 0, 62, 117, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, - 113, 0, 0, 0, 0, 0, 114, 0, 116, 56, - 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, - 0, 106, 0, 0, 0, 0, 62, 117, 0, 0, - 0, 114, 0, 118, 0, 0, 0, 0, 0, 113, + 0, 0, 0, 0, 0, 108, 0, 0, 109, 0, + 0, 0, 0, 0, 0, 105, 0, 109, 107, 0, + 108, 0, 0, 0, 105, 108, 108, 107, 0, 108, + 0, 0, 108, 108, 108, 108, 238, 0, 108, 115, + 0, 0, 129, 0, 0, 0, 0, 0, 115, 0, + 0, 0, 108, 108, 108, 108, 0, 108, 108, 108, + 0, 0, 108, 108, 108, 108, 108, 39, 104, 104, + 104, 104, 104, 104, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 108, 0, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 116, 56, 57, 58, 59, 60, 0, 0, + 0, 104, 0, 0, 0, 0, 0, 0, 109, 0, + 0, 0, 0, 0, 0, 105, 0, 0, 107, 0, + 108, 104, 104, 0, 0, 0, 0, 0, 104, 104, + 104, 104, 0, 0, 104, 0, 240, 0, 0, 115, + 0, 0, 0, 0, 0, 114, 0, 0, 104, 104, + 104, 104, 0, 104, 104, 104, 0, 0, 104, 0, + 104, 104, 104, 0, 0, 62, 117, 39, 0, 0, + 0, 0, 118, 334, 335, 336, 0, 0, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 104, 337, 338, 339, 340, 0, 341, 342, 106, + 0, 110, 343, 0, 344, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 56, 57, 58, 59, + 60, 0, 0, 0, 116, 56, 57, 58, 59, 60, + 0, 109, 0, 0, 111, 112, 0, 0, 105, 0, + 0, 107, 0, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 0, 0, 250, + 105, 0, 115, 107, 0, 108, 0, 0, 114, 0, + 0, 0, 0, 0, 0, 109, 0, 114, 0, 0, + 0, 252, 105, 0, 115, 107, 0, 108, 62, 117, + 39, 0, 0, 0, 0, 118, 0, 62, 117, 0, + 0, 113, 0, 0, 118, 0, 115, 0, 0, 0, + 113, 0, 39, 0, 0, 0, 0, 0, 109, 0, + 0, 0, 106, 0, 110, 105, 0, 0, 107, 0, + 108, 106, 0, 0, 39, 116, 56, 57, 58, 59, + 60, 0, 0, 0, 0, 0, 110, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, + 0, 0, 0, 0, 0, 0, 111, 112, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 117, 0, 0, 0, 111, 112, 118, 0, - 106, 114, 0, 0, 113, 0, 143, 56, 57, 58, - 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 117, 0, 0, 106, 0, 0, 118, 0, - 0, 0, 0, 0, 113, 111, 112, 0, 0, 0, - 0, 0, 0, 0, 120, 0, 0, 0, 130, 0, - 0, 0, 0, 0, 0, 106, 0, 0, 0, 114, - 111, 112, 145, 146, 147, 148, 149, 150, 151, 152, - 0, 154, 155, 0, 0, 0, 0, 0, 0, 144, - 117, 0, 0, 0, 0, 0, 118, 0, 0, 0, - 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 117, + 0, 110, 0, 0, 0, 118, 0, 0, 0, 0, + 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 0, 0, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 239, 241, 242, 243, - 244, 245, 247, 248, 249, 251, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 0, 111, 112, - 0, 0, 0, 0, 0, 0, 0, 245, 273, 0, - 274, 0, 0, 0, 0, 281, 0, 0, 0, 282, - 283, 0, 285, 0, 0, 0, 0, 0, 0, 120, + 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 56, + 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, + 116, 56, 57, 58, 59, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 56, 57, 58, 59, 60, 0, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 0, 295, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 297, 0, 298, + 0, 62, 117, 114, 0, 0, 0, 0, 118, 0, + 0, 0, 0, 0, 113, 143, 56, 57, 58, 59, + 60, 0, 0, 62, 117, 114, 0, 0, 0, 0, + 118, 0, 0, 0, 0, 106, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 117, 0, 0, 0, + 0, 0, 118, 0, 0, 0, 0, 106, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, + 111, 112, 0, 0, 0, 0, 0, 0, 0, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 144, 117, + 0, 0, 111, 112, 0, 118, 0, 0, 0, 0, + 0, 113, 0, 0, 0, 120, 0, 0, 0, 130, + 0, 0, 0, 0, 111, 112, 0, 0, 0, 0, + 0, 0, 106, 145, 146, 147, 148, 149, 150, 151, + 152, 0, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 245, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 120, 120, 0, 0, 0, 0, 0, - 0, 0, 0, 311, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 239, 241, 242, + 243, 244, 245, 247, 248, 249, 251, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 273, + 0, 274, 0, 0, 0, 0, 281, 0, 0, 0, + 282, 283, 0, 285, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 294, 0, 295, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, + 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 245, 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 120, 120, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, + 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 245, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, - 389, 0, 391, 0, 0, 392, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 120, 0, 409, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 245, 0, 380, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, + 395, 0, 397, 0, 0, 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, + 120, 0, 414, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 440, + 0, 0, 0, 0, 0, 0, 445, ); protected static $yyCheck = array(33, - 41, 41, 36, 37, 44, 36, 37, 92, 153, 38, - 92, 92, 41, 47, 123, 44, 50, 125, 52, 50, - 54, 52, 125, 54, 123, 41, 59, 92, 44, 58, - 59, 60, 61, 62, 63, 91, 70, 320, 260, 70, - 37, 6, 76, 77, 44, 42, 43, 92, 45, 46, - 47, 85, 37, 38, 85, 40, 41, 42, 43, 44, - 45, 46, 47, 312, 93, 94, 158, 123, 260, 47, - 300, 301, 260, 58, 59, 60, 61, 62, 63, 37, - 38, 92, 59, 41, 42, 43, 44, 45, 46, 47, - 123, 316, 321, 93, 35, 124, 125, 92, 76, 77, - 58, 59, 60, 61, 62, 63, 37, 38, 93, 94, - 41, 42, 43, 44, 45, 46, 47, 35, 340, 153, - 334, 346, 214, 59, 200, 59, 340, 58, 59, 60, - 61, 62, 63, 91, 41, 93, 94, 44, 123, 124, - 125, 260, 44, 300, 301, 91, 123, 64, 340, 334, - 41, 58, 59, 402, 403, 340, 190, 59, 93, 190, - 91, 260, 93, 94, 37, 123, 124, 125, 59, 42, - 43, 40, 45, 46, 47, 260, 141, 334, 260, 260, - 44, 300, 310, 340, 125, 5, 93, 60, 41, 62, - 266, 44, 123, 124, 125, 260, 261, 262, 263, 264, - 265, 293, 311, 37, 38, 25, 59, 41, 42, 43, - 44, 45, 46, 47, 306, 260, 310, 44, 125, 39, - 365, 40, 41, 311, 58, 59, 60, 61, 62, 63, - 37, 38, 59, 123, 41, 42, 43, 44, 45, 46, - 47, 340, 410, 41, 41, 336, 44, 44, 333, 260, - 61, 58, 59, 60, 61, 62, 63, 91, 340, 93, - 94, 58, 59, 300, 301, 373, 374, 44, 333, 303, - 373, 374, 348, 61, 41, 37, 332, 44, 70, 370, - 42, 346, 59, 40, 41, 47, 93, 94, 333, 123, - 124, 125, 383, 85, 40, 340, 93, 334, 41, 373, - 374, 44, 331, 340, 41, 41, 41, 44, 41, 44, - 300, 301, 44, 347, 123, 312, 59, 124, 125, 402, - 403, 44, 333, 58, 59, 310, 311, 312, 125, 340, - 41, 365, 40, 44, 76, 77, 260, 40, 40, 280, - 281, 282, 283, 284, 285, 41, 331, 410, 59, 44, - 441, 41, 44, 444, 312, 340, 61, 448, 93, 260, - 61, 340, 280, 281, 282, 283, 284, 285, 40, 410, - 410, 400, 401, 331, 332, 404, 405, 406, 407, 408, - 340, 312, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 427, 335, 40, 427, 40, 44, 41, - 331, 332, 58, 40, 123, 402, 403, 41, 280, 281, - 282, 283, 284, 285, 40, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 331, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 41, 93, 312, - 41, 41, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 340, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 44, 123, 125, 41, 41, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, 58, + 41, 92, 36, 37, 125, 36, 37, 92, 41, 91, + 6, 44, 158, 47, 41, 153, 50, 44, 52, 50, + 54, 52, 125, 54, 92, 312, 92, 92, 37, 200, + 35, 58, 59, 42, 123, 59, 70, 35, 47, 70, + 47, 123, 76, 77, 260, 260, 59, 35, 300, 301, + 260, 85, 37, 38, 85, 40, 41, 42, 43, 44, + 45, 46, 47, 44, 41, 334, 93, 92, 214, 76, + 77, 340, 5, 58, 59, 60, 61, 62, 63, 37, + 38, 320, 59, 41, 42, 43, 44, 45, 46, 47, + 300, 334, 25, 41, 321, 266, 44, 340, 125, 123, + 58, 59, 60, 61, 62, 63, 39, 123, 93, 94, + 123, 59, 93, 35, 317, 402, 403, 300, 301, 153, + 125, 37, 38, 260, 340, 340, 42, 43, 331, 45, + 46, 47, 92, 91, 44, 93, 94, 125, 123, 124, + 125, 40, 41, 44, 60, 141, 62, 293, 44, 59, + 59, 334, 41, 222, 59, 44, 190, 340, 59, 190, + 306, 41, 91, 59, 44, 123, 124, 125, 93, 260, + 261, 262, 263, 264, 265, 260, 37, 38, 94, 59, + 41, 42, 43, 44, 45, 46, 47, 41, 359, 64, + 44, 70, 260, 41, 260, 260, 44, 58, 59, 60, + 61, 62, 63, 37, 38, 59, 85, 41, 42, 43, + 44, 45, 46, 47, 40, 41, 354, 286, 287, 44, + 41, 40, 311, 44, 58, 59, 60, 61, 62, 63, + 91, 41, 93, 94, 44, 260, 41, 402, 403, 44, + 310, 310, 333, 310, 260, 314, 373, 374, 41, 311, + 332, 44, 373, 374, 35, 346, 123, 91, 61, 93, + 94, 61, 123, 124, 125, 58, 59, 333, 333, 303, + 373, 374, 340, 40, 340, 280, 281, 282, 283, 284, + 285, 410, 280, 281, 282, 283, 284, 285, 41, 123, + 124, 125, 280, 281, 282, 283, 284, 285, 332, 41, + 93, 37, 44, 312, 331, 44, 42, 43, 333, 45, + 46, 47, 381, 37, 38, 340, 58, 59, 42, 43, + 354, 45, 46, 47, 340, 310, 311, 312, 300, 301, + 335, 41, 125, 402, 123, 44, 60, 61, 62, 63, + 280, 281, 282, 283, 284, 285, 331, 335, 40, 35, + 40, 93, 421, 260, 312, 340, 76, 77, 280, 281, + 282, 283, 284, 285, 40, 410, 41, 44, 41, 410, + 94, 340, 44, 331, 332, 260, 61, 410, 300, 301, + 61, 37, 38, 125, 340, 41, 42, 43, 44, 45, + 46, 47, 40, 402, 403, 40, 312, 40, 432, 321, + 124, 432, 58, 59, 60, 61, 62, 63, 260, 261, + 262, 263, 264, 265, 41, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 44, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 93, 94, 58, + 300, 301, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 312, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 40, 321, 41, 37, 124, 125, + 331, 332, 42, 43, 334, 45, 46, 47, 312, 40, + 340, 93, 41, 41, 400, 401, 402, 403, 40, 123, + 60, 41, 62, 340, 41, 411, 412, 331, 332, 280, + 281, 282, 283, 284, 285, 37, 38, 44, 41, 41, + 42, 43, 44, 45, 46, 47, 58, 123, 125, 300, + 301, 40, 40, 40, 59, 59, 58, 59, 60, 61, + 62, 63, 40, 40, 125, 59, 125, 361, 331, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 125, 59, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 59, 41, 40, 40, 44, 40, 331, 332, 260, - 261, 262, 263, 264, 265, 312, 413, 414, 415, 58, - 59, 59, 61, 40, 63, 40, 125, 59, 361, 125, - 59, 40, 125, 344, 331, 340, 123, 400, 401, 402, - 403, 59, 37, 38, 331, 413, 41, 42, 43, 44, - 45, 46, 47, 35, 93, 94, 41, 371, 59, 40, - 312, 340, 41, 58, 59, 60, 61, 62, 63, 125, - 58, 340, 41, 123, 125, 123, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 124, 125, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 93, 94, - 93, 123, 41, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 123, 41, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 41, 413, 414, 415, 124, - 125, 41, 41, 340, 41, 58, 41, 93, 35, 37, - 38, 41, 125, 41, 42, 43, 44, 45, 46, 47, - 402, 403, 41, 41, 125, 59, 59, 125, 7, 84, - 58, 59, 60, 61, 62, 63, 37, 38, 141, 204, - 41, 42, 43, 44, 45, 46, 47, 205, 42, 41, - 82, 347, 340, 426, 290, 406, 92, 58, 59, 60, - 61, 62, 63, 37, 38, 93, 94, 41, 42, 43, - 44, 45, 46, 47, 35, 91, 203, 198, 23, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, 93, 94, -1, -1, 124, 125, 125, 35, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, 46, 47, -1, 93, - 94, -1, -1, 124, 125, -1, -1, -1, 58, 59, - 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, - 124, 125, -1, -1, -1, 58, 59, 60, 61, 62, - 63, -1, 331, 93, 94, -1, -1, -1, 280, 281, - 282, 283, 284, 285, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, 46, 47, -1, 312, 300, 301, - 93, 94, -1, -1, 124, 125, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, 331, -1, -1, 321, - -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, 124, 125, -1, 260, 261, 262, 263, 264, 265, - -1, 93, 94, 58, 59, 404, 405, 406, 407, 408, - -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 280, 281, 282, 283, 284, 285, -1, - -1, -1, 124, 125, 300, -1, -1, -1, 93, -1, - -1, 353, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 333, -1, -1, - 125, -1, -1, 331, -1, -1, -1, -1, 335, -1, - 346, 312, -1, -1, -1, 397, -1, -1, 400, 280, - 281, 282, 283, 284, 285, -1, -1, -1, -1, -1, - 331, -1, -1, -1, -1, -1, -1, 419, 312, 300, - 301, -1, -1, -1, 280, 281, 282, 283, 284, 285, - 432, -1, -1, -1, -1, -1, 438, 331, -1, -1, - -1, -1, -1, -1, 300, 301, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, - 401, 331, -1, 404, 405, 406, 407, 408, -1, 312, + 421, 93, 94, 40, 344, 340, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 123, 312, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 312, 331, + 59, 413, 124, 125, 280, 281, 282, 283, 284, 285, + 41, 371, 37, 38, 40, 59, 41, 42, 43, 44, + 45, 46, 47, 340, 300, 301, 125, 41, 58, 340, + 413, 414, 415, 58, 59, 60, 61, 62, 63, 37, + 38, 346, 41, 41, 42, 43, 44, 45, 46, 47, + 123, 125, 93, 123, 123, 41, 41, 123, 41, 41, + 58, 59, 60, 61, 62, 63, 312, 41, 93, 94, + 364, 376, 340, 41, 379, 41, 402, 403, 58, 41, + 93, 413, 414, 415, 123, 331, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 93, 94, 411, 412, 124, + 125, 415, 416, 417, 418, 419, 420, 421, 41, 403, + 125, 41, 406, 59, 44, 59, 41, 125, 125, 7, + 84, 141, 205, 204, 42, 41, 124, 125, 58, 59, + 424, 82, 332, 431, 350, 91, 325, 411, 290, 203, + 198, 446, 23, 437, 449, -1, -1, -1, 453, 443, + -1, -1, 312, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 93, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, + 312, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, 331, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, 58, 59, 60, 61, 62, 63, + 400, 401, 402, 403, -1, -1, -1, -1, 37, -1, + -1, 411, 412, 42, 43, -1, 45, 46, 47, 41, + -1, -1, 44, 124, 125, -1, -1, -1, -1, 93, + 94, 60, -1, 62, -1, -1, 58, 59, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 124, 125, -1, -1, -1, -1, 331, -1, -1, -1, + -1, 93, -1, -1, 312, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -1, 58, 59, -1, + -1, 37, 38, 125, -1, 41, 42, 43, 44, 45, + 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, 93, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 93, 94, -1, + -1, -1, 400, 401, 125, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, 124, 125, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + 41, 312, -1, 44, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 331, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 46, 47, -1, -1, -1, 312, 93, + 94, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, -1, 93, -1, -1, -1, -1, 331, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 124, 125, -1, 312, -1, -1, -1, -1, -1, -1, + 93, 94, -1, -1, 125, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, 331, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, -1, 400, 401, 331, -1, + 421, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 37, 38, + -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, + 331, 400, 401, 402, 403, -1, 312, -1, -1, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, 413, 414, 415, -1, 331, -1, -1, -1, -1, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + 46, 47, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, 331, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, 413, 414, 415, -1, 41, 93, 94, 44, + -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, + 406, 407, 408, 58, 59, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, 331, 124, 125, + -1, -1, 37, 38, -1, -1, 41, 42, -1, 44, + 331, 46, 47, -1, -1, -1, -1, 41, 93, -1, + 44, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, 58, 59, -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, 37, 38, -1, - -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - 60, 61, 62, 63, 37, 38, 93, 94, 41, 42, - 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, 93, 94, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, -1, 41, 42, -1, 44, 222, 46, 47, -1, - 93, 94, -1, -1, 124, 125, -1, -1, -1, 58, - 59, 60, 61, 62, 63, 37, 38, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, -1, 400, 401, -1, 93, + 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, 124, + 125, -1, 413, 414, 415, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, 41, -1, -1, 44, 41, -1, -1, 44, + -1, -1, 60, 61, 62, 63, -1, -1, -1, 58, + 59, -1, 331, 58, 59, -1, 37, 38, -1, -1, + -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, + -1, -1, -1, 91, -1, -1, 94, -1, -1, 60, + 61, 62, 63, -1, 93, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, + -1, -1, -1, 94, -1, -1, 125, -1, -1, -1, + 125, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 124, -1, -1, 331, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, 312, 404, 405, + 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 331, -1, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 331, 45, 46, + 47, -1, -1, -1, -1, 41, -1, -1, 44, -1, + -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, 58, 59, -1, 37, 38, -1, 413, 414, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, 93, 94, -1, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, - 286, 287, -1, -1, -1, 60, 61, 62, 63, 91, - -1, -1, 94, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, 309, -1, 37, 38, 313, -1, 41, - 42, 43, -1, 45, 46, 47, -1, -1, -1, 94, - -1, 123, 124, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, -1, -1, 124, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, - 38, -1, 94, -1, 42, 43, 372, 45, 46, 47, - -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, -1, 60, 61, 62, 63, -1, -1, 41, 94, - 396, 44, 124, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 331, 58, 59, -1, -1, -1, - 416, -1, -1, -1, -1, 41, 94, -1, 44, 124, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, 331, 58, 59, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, 41, 124, 125, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - 125, -1, 58, 59, -1, -1, -1, 93, -1, -1, - -1, -1, 125, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, -1, -1, 93, -1, 125, - 400, 401, 331, -1, 404, 405, 406, 407, 408, -1, - 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, 400, 401, 125, - 332, 404, 405, 406, 407, 408, -1, 312, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, -1, -1, 94, 60, 61, + 62, 63, -1, -1, -1, 400, 401, 93, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 124, -1, 413, + 414, 415, 94, -1, -1, 41, -1, -1, 44, 125, + -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, -1, -1, -1, + 37, 38, 124, -1, 332, 42, 43, -1, 45, 46, + 47, -1, 331, -1, -1, -1, 331, -1, -1, 41, + -1, 312, 44, 60, -1, 62, -1, 93, -1, -1, + -1, -1, -1, 92, -1, -1, 58, 59, -1, -1, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -1, 125, + -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, + 63, 93, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 413, 414, 415, -1, 413, 414, + 415, 94, -1, 125, -1, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, + 46, 47, -1, -1, -1, 312, -1, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, 63, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + 312, 59, 60, 61, 62, 63, -1, -1, 94, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, + -1, 45, 46, 47, -1, -1, 94, -1, 124, 125, + -1, -1, -1, -1, -1, 59, 60, 61, 62, 63, + -1, 300, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 124, 414, 415, 416, + 417, 418, 419, 420, 421, 331, -1, 413, 414, 415, + 94, -1, -1, -1, 333, 312, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 346, -1, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 124, -1, -1, -1, -1, -1, -1, -1, -1, 331, + 41, -1, -1, 44, -1, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, + 47, -1, -1, -1, -1, -1, -1, 413, 414, 415, + -1, -1, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, 93, 400, 401, 402, 403, -1, -1, -1, + -1, -1, 37, 38, 411, 412, -1, 42, 43, -1, + 45, 46, 47, -1, -1, -1, -1, 94, -1, -1, + -1, 413, 414, 415, 125, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 312, 124, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, 312, 41, 42, 43, -1, 45, + 46, 47, -1, -1, -1, -1, -1, -1, -1, 124, + -1, -1, -1, -1, 60, 61, 62, 63, -1, 37, + 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, + -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, + -1, -1, 60, 61, 62, 63, -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, 420, 421, 94, -1, 124, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 124, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 58, 59, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 37, 38, + 331, -1, 41, 42, 43, 312, 45, 46, 47, -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, 413, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 312, 410, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, + 93, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, + -1, 45, 46, 47, -1, -1, -1, 312, -1, -1, + -1, -1, 125, -1, 58, 94, 60, 61, 62, 63, + -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, -1, 331, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, 331, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, 331, 411, 412, 413, 414, + -1, -1, 413, 414, 415, 124, -1, -1, -1, -1, + 94, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, 41, 312, -1, 44, -1, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 312, 41, 411, 412, 44, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 93, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, 93, -1, 125, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 94, -1, -1, 125, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 331, 414, 415, 416, 417, - 418, 419, 420, 421, 37, 38, -1, -1, 413, 42, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 37, 38, 124, -1, 331, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, - 413, 414, 415, -1, -1, -1, -1, 60, 61, 62, - 63, 37, 38, -1, -1, -1, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, -1, 413, 414, 415, - -1, -1, -1, 59, 60, 61, 62, 63, 37, 38, - -1, 94, -1, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, - 59, 60, 61, 62, 63, -1, -1, -1, 94, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, - 46, 47, -1, -1, -1, 94, -1, -1, 124, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, - -1, -1, 41, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 37, 38, -1, 94, -1, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, -1, 41, 42, 43, -1, 45, 46, 47, -1, - -1, -1, 94, -1, -1, 124, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 37, 38, -1, -1, 41, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, -1, 124, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, -1, 94, -1, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, 58, -1, 60, 61, 62, 63, 312, - 41, -1, 94, 44, -1, 124, 58, 59, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, - -1, -1, -1, -1, -1, -1, 312, 41, -1, 94, - 44, -1, 124, -1, -1, -1, -1, -1, -1, -1, - -1, 93, -1, -1, 58, 59, -1, -1, -1, -1, - -1, -1, 93, 312, -1, -1, -1, -1, -1, 124, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 125, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, 125, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, 125, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, -1, 331, + -1, 41, -1, 312, 44, -1, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + 41, -1, 43, 44, 45, 46, -1, -1, 312, -1, + -1, 94, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 93, -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, 312, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + 413, 124, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, -1, 125, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 331, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 38, -1, + -1, 41, -1, 43, 44, 45, 46, -1, -1, -1, + 41, -1, -1, 44, -1, 331, -1, -1, 58, 59, + 60, 61, 62, 63, 312, -1, -1, 58, 59, -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, 60, 61, 62, + 63, -1, 93, -1, -1, -1, -1, 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 331, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 331, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, 37, 38, -1, - -1, 413, 42, 43, -1, 45, 46, 47, -1, -1, - -1, -1, 413, 414, 415, -1, -1, -1, -1, -1, - 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, - 43, -1, 45, 46, 47, -1, -1, -1, -1, 413, - 414, 415, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 37, 38, -1, 94, -1, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, -1, -1, - 38, 94, -1, 41, 124, 43, 44, 45, 46, -1, + -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, + 93, 94, -1, -1, 125, -1, -1, 413, 414, 415, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 124, 125, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 38, -1, -1, 41, -1, -1, + 44, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, 38, 94, -1, - 41, 124, 43, 44, 45, 46, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, 38, 93, 94, 41, 124, -1, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 61, 38, 63, - -1, 41, 93, 94, 44, -1, 124, 125, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, 41, 63, -1, 44, -1, -1, -1, 93, - 94, -1, -1, 124, 125, -1, -1, -1, -1, 58, - 59, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, - 124, 125, 58, 59, -1, 61, 38, 63, -1, 41, - -1, -1, 44, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, - 38, 63, -1, 41, -1, -1, 44, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, - 58, 59, 312, 61, -1, 63, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, 37, 38, 124, 125, - -1, 42, 43, -1, 45, 46, 47, 38, 41, 312, - 41, 44, -1, 44, -1, 93, 94, -1, -1, 60, - -1, 62, 124, 125, -1, 58, 59, 58, 59, -1, - 61, -1, 63, -1, -1, -1, 312, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, - -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, - 93, -1, 93, 94, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 331, 414, 415, 416, 417, 418, 419, - 420, 421, 125, 124, 125, -1, -1, 400, 401, 402, + 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 331, -1, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 331, -1, -1, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, 331, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, - 401, -1, 331, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, 416, 417, 418, 419, 420, 421, -1, + 124, 125, -1, 413, 414, 415, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, 331, -1, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, 331, + 421, 38, -1, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, 41, 63, -1, 44, -1, + -1, 331, -1, -1, -1, -1, -1, -1, 38, -1, + 331, 41, 58, 59, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 58, 59, + -1, 61, -1, 63, -1, -1, -1, -1, 331, -1, + -1, -1, -1, -1, 37, 38, -1, 93, -1, 42, + 43, -1, 45, 46, 47, -1, -1, 124, 125, -1, + -1, -1, -1, 93, 94, -1, -1, 60, -1, 62, + 400, 401, -1, -1, 404, 405, 406, 407, 408, 125, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 413, -1, 124, 125, -1, -1, -1, -1, + -1, 94, -1, -1, -1, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 38, + -1, 124, 41, -1, -1, 44, -1, 331, -1, -1, + -1, -1, -1, -1, 41, -1, -1, 44, -1, 58, + 59, -1, 61, 38, 63, -1, 41, -1, -1, 44, + -1, 58, 59, -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, -1, -1, -1, -1, -1, 93, -1, -1, -1, + 58, 59, -1, 61, -1, 63, -1, -1, 93, 94, + 404, 405, 406, 407, 408, 124, 125, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 125, -1, + -1, 38, -1, -1, 41, 93, 94, 44, -1, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + -1, -1, -1, -1, 331, -1, 124, 125, -1, -1, + -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, 331, 93, 94, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 41, -1, -1, 44, -1, 124, 125, 312, + -1, -1, -1, -1, -1, -1, 93, 94, -1, 58, + 59, -1, 61, -1, 63, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 124, 125, -1, + -1, -1, -1, -1, 93, -1, -1, 413, 414, 415, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 37, 331, -1, -1, -1, 42, 43, -1, - 45, 46, 47, -1, 413, 414, 415, -1, -1, -1, - -1, 312, -1, -1, -1, 60, -1, 62, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, 331, -1, - 331, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 420, 421, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, 41, -1, -1, 44, 400, 401, 402, + 403, -1, -1, -1, -1, -1, -1, -1, 411, 412, + 58, 59, 331, 61, -1, 63, -1, -1, -1, -1, + 41, -1, -1, 44, 331, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 331, 58, 59, -1, + 61, -1, 63, -1, -1, 93, -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, 93, -1, -1, -1, -1, 125, -1, -1, + -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 125, -1, 413, 414, 415, 404, + 405, 406, 407, 408, 331, -1, -1, -1, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 38, -1, -1, 41, -1, -1, - 44, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, 402, 403, -1, 58, 59, -1, 61, -1, 63, - 411, 412, -1, 404, 405, 406, 407, 408, -1, -1, - 413, 414, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 41, -1, -1, 44, -1, -1, -1, -1, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, -1, 41, -1, -1, 44, -1, + 418, 419, 420, 421, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 124, 125, 58, 59, -1, 61, -1, 63, 41, -1, - -1, 44, -1, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, -1, 61, 41, - 63, -1, 44, 37, 38, -1, -1, 93, 42, 43, - -1, 45, 46, 47, 124, 125, 58, 59, -1, -1, - -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, - 93, -1, -1, -1, -1, 41, -1, -1, 44, 125, - 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, - 47, 93, 58, 59, -1, -1, 41, -1, -1, 44, - 94, -1, 125, 60, -1, 62, -1, 312, -1, -1, - -1, -1, -1, 58, 59, 41, -1, -1, 44, -1, - -1, -1, -1, 125, -1, 41, -1, 93, 44, -1, - 124, -1, 58, 59, 41, -1, -1, 44, 41, -1, - -1, 44, 58, 59, -1, -1, -1, -1, 93, -1, - -1, 58, 59, -1, -1, 58, 59, -1, -1, 125, - -1, 41, -1, -1, 44, -1, -1, 93, -1, -1, - -1, 41, -1, -1, 44, -1, -1, 93, 58, 59, - 125, -1, -1, -1, -1, -1, 93, -1, 58, 59, - 93, -1, -1, -1, -1, 400, 401, 402, 403, 125, - -1, -1, -1, -1, -1, -1, 411, 412, -1, 125, - -1, -1, -1, 93, -1, -1, -1, 331, 125, -1, - -1, -1, 125, 93, -1, -1, -1, -1, -1, -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, 125, -1, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, + 407, 408, 331, -1, -1, -1, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, - -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, 312, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 331, -1, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, 331, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, - -1, 413, 414, 415, -1, 331, -1, 411, 412, -1, - -1, -1, -1, -1, 331, -1, 33, -1, 331, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, 400, 401, 402, 403, 413, 414, 415, - -1, 331, 59, -1, 411, 412, -1, 64, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, 413, 414, - 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, -1, 413, 414, 415, - -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, - -1, -1, -1, -1, -1, -1, 413, 414, 415, -1, - 413, 414, 415, -1, -1, -1, 123, -1, 125, 126, - 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 43, -1, 45, 413, 414, 415, -1, -1, -1, -1, - -1, -1, -1, 413, 414, 415, 59, -1, -1, -1, - -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, + 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 331, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, -1, -1, 92, - -1, -1, 40, -1, -1, 43, 33, 45, -1, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, + 331, 59, -1, -1, -1, -1, 64, -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, 92, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, + 418, 419, 420, 421, -1, 123, -1, 125, 126, -1, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 33, -1, -1, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, + 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 64, -1, -1, -1, - 123, 58, 125, 126, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 123, -1, 125, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, - -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, 126, -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, 313, -1, -1, -1, + -1, -1, -1, -1, -1, 313, -1, -1, 33, -1, + -1, -1, -1, -1, -1, 40, -1, 33, 43, -1, + 45, -1, -1, -1, 40, 333, 334, 43, -1, 45, + -1, -1, 340, 341, 342, 343, 61, -1, 346, 64, + -1, -1, 58, -1, -1, -1, -1, -1, 64, -1, + -1, -1, 360, 361, 362, 363, -1, 365, 366, 367, + -1, -1, 370, 371, 372, 373, 374, 92, 260, 261, + 262, 263, 264, 265, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, -1, - -1, -1, -1, 340, 341, 342, 343, -1, -1, 346, - -1, -1, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, 360, 361, 362, 363, -1, 365, 366, - 367, -1, -1, 370, 371, 372, 373, 374, -1, -1, + -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, + -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, + 126, -1, 260, 261, 262, 263, 264, 265, -1, -1, + -1, 313, -1, -1, -1, -1, -1, -1, 33, -1, + -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, 333, 334, -1, -1, -1, -1, -1, 340, 341, + 342, 343, -1, -1, 346, -1, 61, -1, -1, 64, + -1, -1, -1, -1, -1, 313, -1, -1, 360, 361, + 362, 363, -1, 365, 366, 367, -1, -1, 370, -1, + 372, 373, 374, -1, -1, 333, 334, 92, -1, -1, + -1, -1, 340, 341, 342, 343, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 43, -1, 45, -1, -1, 402, 403, -1, -1, -1, - 313, -1, 260, 261, 262, 263, 264, 265, 61, -1, - -1, 64, -1, 260, 261, 262, 263, 264, 265, -1, - 333, 334, -1, -1, -1, -1, -1, 340, 341, 342, - 343, -1, -1, 346, -1, -1, -1, -1, -1, 92, - -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, 365, 366, 367, 313, -1, 370, -1, 372, - 373, 374, -1, -1, -1, -1, 313, 33, -1, -1, - -1, -1, -1, 126, 40, 333, 334, 43, -1, 45, - -1, -1, 340, 341, 342, 343, 333, 334, 346, 402, - 403, -1, -1, 340, -1, 61, -1, -1, 64, 346, - -1, -1, 360, 361, 362, 363, 33, 365, 366, 367, - -1, -1, 370, 40, 372, -1, 43, -1, 45, -1, - 367, -1, -1, -1, -1, -1, 92, -1, -1, -1, - -1, 33, -1, -1, 61, -1, -1, 64, 40, -1, - -1, 43, -1, 45, 402, 403, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 402, 403, -1, -1, 61, - 126, 33, 64, -1, -1, 92, -1, -1, 40, -1, + 402, 403, 360, 361, 362, 363, -1, 365, 366, 367, + -1, 126, 370, -1, 372, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, 260, 261, 262, 263, 264, 265, + -1, 33, -1, -1, 402, 403, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, 61, + 40, -1, 64, 43, -1, 45, -1, -1, 313, -1, + -1, -1, -1, -1, -1, 33, -1, 313, -1, -1, + -1, 61, 40, -1, 64, 43, -1, 45, 333, 334, + 92, -1, -1, -1, -1, 340, -1, 333, 334, -1, + -1, 346, -1, -1, 340, -1, 64, -1, -1, -1, + 346, -1, 92, -1, -1, -1, -1, -1, 33, -1, + -1, -1, 367, -1, 126, 40, -1, -1, 43, -1, + 45, 367, -1, -1, 92, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, 126, -1, -1, 64, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, + -1, -1, -1, -1, -1, -1, 402, 403, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 92, -1, 64, -1, -1, -1, -1, -1, -1, 126, - -1, -1, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, -1, -1, 33, - 92, -1, -1, -1, 126, -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, - 64, -1, -1, -1, 126, -1, -1, -1, -1, -1, - 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, - 333, 334, -1, -1, -1, -1, -1, 340, -1, -1, - -1, -1, -1, 346, 260, 261, 262, 263, 264, 265, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 126, -1, 367, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, + -1, 126, -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, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, -1, -1, -1, 313, -1, 402, - 403, -1, -1, -1, -1, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, 333, 334, -1, - -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, - 346, -1, -1, -1, -1, -1, 313, -1, 260, 261, + -1, -1, 367, -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, 367, -1, -1, -1, -1, 333, 334, -1, -1, - -1, 313, -1, 340, -1, -1, -1, -1, -1, 346, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 333, 334, -1, -1, -1, 402, 403, 340, -1, - 367, 313, -1, -1, 346, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 333, 334, -1, -1, 367, -1, -1, 340, -1, - -1, -1, -1, -1, 346, 402, 403, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, -1, 91, -1, - -1, -1, -1, -1, -1, 367, -1, -1, -1, 313, - 402, 403, 105, 106, 107, 108, 109, 110, 111, 112, - -1, 114, 115, -1, -1, -1, -1, -1, -1, 333, - 334, -1, -1, -1, -1, -1, 340, -1, -1, -1, - 402, 403, 346, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -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, 367, -1, -1, -1, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, -1, 402, 403, - -1, -1, -1, -1, -1, -1, -1, 200, 201, -1, - 203, -1, -1, -1, -1, 208, -1, -1, -1, 212, - 213, -1, 215, -1, -1, -1, -1, -1, -1, 222, + -1, 333, 334, 313, -1, -1, -1, -1, 340, -1, + -1, -1, -1, -1, 346, 260, 261, 262, 263, 264, + 265, -1, -1, 333, 334, 313, -1, -1, -1, -1, + 340, -1, -1, -1, -1, 367, 346, -1, -1, -1, + -1, -1, -1, -1, -1, 333, 334, -1, -1, -1, + -1, -1, 340, -1, -1, -1, -1, 367, 346, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, + 402, 403, -1, -1, -1, -1, -1, -1, -1, 367, + -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, + -1, -1, 402, 403, -1, 340, -1, -1, -1, -1, + -1, 346, -1, -1, -1, 87, -1, -1, -1, 91, + -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, + -1, -1, 367, 105, 106, 107, 108, 109, 110, 111, + 112, -1, 114, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 238, -1, 240, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 250, -1, 252, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 266, -1, -1, 269, 270, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 200, 201, + -1, 203, -1, -1, -1, -1, 208, -1, -1, -1, + 212, 213, -1, 215, -1, -1, -1, -1, -1, -1, + 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 250, -1, + 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 266, -1, -1, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 286, 287, -1, -1, -1, -1, -1, - -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, - 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 286, 287, -1, -1, -1, -1, + -1, -1, -1, -1, 296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 310, -1, + -1, -1, 314, -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, 348, -1, 350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, - 373, -1, 375, -1, -1, 378, 379, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, -1, 361, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 396, -1, 398, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, + 382, -1, 384, -1, -1, 387, 388, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 416, -1, -1, -1, -1, -1, -1, + 402, -1, 404, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 433, + -1, -1, -1, -1, -1, -1, 438, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -2132,7 +2181,7 @@ public function yyparse($yyLex) { case 149: #line 665 "src/main/jay/grammars/php.jay" { - $yyVal= $yyLex->create(new LambdaNode($yyVals[-4+$yyTop], (array)$yyVals[-1+$yyTop])); + $yyVal= $yyLex->create(new LambdaNode($yyVals[-5+$yyTop], (array)$yyVals[-1+$yyTop], $yyVals[-3+$yyTop])); } break; case 150: #line 668 "src/main/jay/grammars/php.jay" @@ -2157,13 +2206,19 @@ public function yyparse($yyLex) { case 155: #line 689 "src/main/jay/grammars/php.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; + case 156: #line 693 "src/main/jay/grammars/php.jay" + { $yyVal= array(); } break; + case 157: #line 694 "src/main/jay/grammars/php.jay" + { $yyVal= $yyVals[-1+$yyTop]; } break; + + case 159: #line 699 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 158: #line 694 "src/main/jay/grammars/php.jay" + case 160: #line 699 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 159: #line 698 "src/main/jay/grammars/php.jay" + case 161: #line 703 "src/main/jay/grammars/php.jay" { switch (strtolower($yyVals[0+$yyTop])) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2171,260 +2226,260 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 160: #line 704 "src/main/jay/grammars/php.jay" + case 162: #line 709 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 161: #line 705 "src/main/jay/grammars/php.jay" + case 163: #line 710 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 162: #line 706 "src/main/jay/grammars/php.jay" + case 164: #line 711 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 163: #line 707 "src/main/jay/grammars/php.jay" + case 165: #line 712 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 164: #line 708 "src/main/jay/grammars/php.jay" + case 166: #line 713 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 165: #line 712 "src/main/jay/grammars/php.jay" + case 167: #line 717 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 166: #line 715 "src/main/jay/grammars/php.jay" + case 168: #line 720 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 167: #line 718 "src/main/jay/grammars/php.jay" + case 169: #line 723 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 168: #line 721 "src/main/jay/grammars/php.jay" + case 170: #line 726 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 169: #line 727 "src/main/jay/grammars/php.jay" + case 171: #line 732 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 170: #line 728 "src/main/jay/grammars/php.jay" + case 172: #line 733 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 171: #line 732 "src/main/jay/grammars/php.jay" + case 173: #line 737 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 173: #line 737 "src/main/jay/grammars/php.jay" + case 175: #line 742 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 174: #line 741 "src/main/jay/grammars/php.jay" + case 176: #line 746 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 175: #line 742 "src/main/jay/grammars/php.jay" + case 177: #line 747 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 176: #line 743 "src/main/jay/grammars/php.jay" + case 178: #line 748 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 177: #line 744 "src/main/jay/grammars/php.jay" + case 179: #line 749 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 178: #line 745 "src/main/jay/grammars/php.jay" + case 180: #line 750 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 179: #line 746 "src/main/jay/grammars/php.jay" + case 181: #line 751 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 180: #line 747 "src/main/jay/grammars/php.jay" + case 182: #line 752 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 181: #line 748 "src/main/jay/grammars/php.jay" + case 183: #line 753 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 182: #line 749 "src/main/jay/grammars/php.jay" + case 184: #line 754 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 183: #line 750 "src/main/jay/grammars/php.jay" + case 185: #line 755 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 184: #line 751 "src/main/jay/grammars/php.jay" + case 186: #line 756 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 185: #line 752 "src/main/jay/grammars/php.jay" + case 187: #line 757 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 186: #line 756 "src/main/jay/grammars/php.jay" + case 188: #line 761 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 187: #line 757 "src/main/jay/grammars/php.jay" + case 189: #line 762 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 188: #line 758 "src/main/jay/grammars/php.jay" + case 190: #line 763 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 189: #line 759 "src/main/jay/grammars/php.jay" + case 191: #line 764 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 190: #line 760 "src/main/jay/grammars/php.jay" + case 192: #line 765 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 191: #line 761 "src/main/jay/grammars/php.jay" + case 193: #line 766 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 192: #line 762 "src/main/jay/grammars/php.jay" + case 194: #line 767 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 193: #line 763 "src/main/jay/grammars/php.jay" + case 195: #line 768 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 194: #line 767 "src/main/jay/grammars/php.jay" + case 196: #line 772 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 768 "src/main/jay/grammars/php.jay" + case 197: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 769 "src/main/jay/grammars/php.jay" + case 198: #line 774 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 770 "src/main/jay/grammars/php.jay" + case 199: #line 775 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 198: #line 771 "src/main/jay/grammars/php.jay" + case 200: #line 776 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 199: #line 772 "src/main/jay/grammars/php.jay" + case 201: #line 777 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 200: #line 773 "src/main/jay/grammars/php.jay" + case 202: #line 778 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 774 "src/main/jay/grammars/php.jay" + case 203: #line 779 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 775 "src/main/jay/grammars/php.jay" + case 204: #line 780 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 776 "src/main/jay/grammars/php.jay" + case 205: #line 781 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 204: #line 777 "src/main/jay/grammars/php.jay" + case 206: #line 782 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 205: #line 781 "src/main/jay/grammars/php.jay" + case 207: #line 786 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 206: #line 782 "src/main/jay/grammars/php.jay" + case 208: #line 787 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 207: #line 783 "src/main/jay/grammars/php.jay" + case 209: #line 788 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 208: #line 784 "src/main/jay/grammars/php.jay" + case 210: #line 789 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 209: #line 785 "src/main/jay/grammars/php.jay" + case 211: #line 790 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 210: #line 786 "src/main/jay/grammars/php.jay" + case 212: #line 791 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 211: #line 790 "src/main/jay/grammars/php.jay" + case 213: #line 795 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 212: #line 791 "src/main/jay/grammars/php.jay" + case 214: #line 796 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 213: #line 796 "src/main/jay/grammars/php.jay" + case 215: #line 801 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 215: #line 801 "src/main/jay/grammars/php.jay" + case 217: #line 806 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 216: #line 802 "src/main/jay/grammars/php.jay" + case 218: #line 807 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 217: #line 806 "src/main/jay/grammars/php.jay" + case 219: #line 811 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 218: #line 806 "src/main/jay/grammars/php.jay" + case 220: #line 811 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 219: #line 809 "src/main/jay/grammars/php.jay" + case 221: #line 814 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 220: #line 809 "src/main/jay/grammars/php.jay" + case 222: #line 814 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 221: #line 812 "src/main/jay/grammars/php.jay" + case 223: #line 817 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 222: #line 815 "src/main/jay/grammars/php.jay" + case 224: #line 820 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 223: #line 818 "src/main/jay/grammars/php.jay" + case 225: #line 823 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 224: #line 821 "src/main/jay/grammars/php.jay" + case 226: #line 826 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 225: #line 821 "src/main/jay/grammars/php.jay" + case 227: #line 826 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 228: #line 834 "src/main/jay/grammars/php.jay" + case 230: #line 839 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 229: #line 838 "src/main/jay/grammars/php.jay" + case 231: #line 843 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 230: #line 842 "src/main/jay/grammars/php.jay" + case 232: #line 847 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 231: #line 843 "src/main/jay/grammars/php.jay" + case 233: #line 848 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 232: #line 849 "src/main/jay/grammars/php.jay" + case 234: #line 854 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 233: #line 850 "src/main/jay/grammars/php.jay" + case 235: #line 855 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 234: #line 854 "src/main/jay/grammars/php.jay" + case 236: #line 859 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 235: #line 855 "src/main/jay/grammars/php.jay" + case 237: #line 860 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 236: #line 859 "src/main/jay/grammars/php.jay" + case 238: #line 864 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 237: #line 860 "src/main/jay/grammars/php.jay" + case 239: #line 865 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 238: #line 861 "src/main/jay/grammars/php.jay" + case 240: #line 866 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 239: #line 862 "src/main/jay/grammars/php.jay" + case 241: #line 867 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 240: #line 863 "src/main/jay/grammars/php.jay" + case 242: #line 868 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 241: #line 864 "src/main/jay/grammars/php.jay" + case 243: #line 869 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2428 "-" +#line 2483 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/syntax/php/LambdaTest.class.php b/src/test/php/net/xp_lang/tests/syntax/php/LambdaTest.class.php index d53319311..be0ad48b8 100644 --- a/src/test/php/net/xp_lang/tests/syntax/php/LambdaTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/php/LambdaTest.class.php @@ -7,31 +7,20 @@ use xp\compiler\ast\IntegerNode; use xp\compiler\ast\BinaryOpNode; -/** - * TestCase - * - */ class LambdaTest extends ParserTestCase { - /** - * Test simple lambda - * - */ #[@test] public function noParameters() { $this->assertEquals( array(new LambdaNode( array(), - array(new ReturnNode(new BooleanNode(true))) + array(new ReturnNode(new BooleanNode(true))), + array() )), $this->parse('function() { return true; };') ); } - /** - * Test simple lambda - * - */ #[@test] public function oneParameter() { $this->assertEquals( @@ -41,16 +30,13 @@ public function oneParameter() { 'lhs' => new VariableNode('a'), 'rhs' => new IntegerNode('1'), 'op' => '+' - )))) + )))), + array() )), $this->parse('function($a) { return $a + 1; };') ); } - /** - * Test simple lambda - * - */ #[@test] public function twoParameters() { $this->assertEquals( @@ -60,9 +46,22 @@ public function twoParameters() { 'lhs' => new VariableNode('a'), 'rhs' => new VariableNode('b'), 'op' => '+' - )))) + )))), + array() )), $this->parse('function($a, $b) { return $a + $b; };') ); } + + #[@test] + public function withUses() { + $this->assertEquals( + array(new LambdaNode( + array(new VariableNode('a')), + array(/* TBI */), + array(new VariableNode('mul'), new VariableNode('neg')) + )), + $this->parse('function($a) use($mul, $neg) { /* TBI */ };') + ); + } } \ No newline at end of file