diff --git a/change_log.txt b/change_log.txt index 22d629601..f214d270f 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,4 +1,7 @@ ===== 3.1.32 - dev === +05.11.2017 3.1.32-dev-32 + - lexer/parser optimization + 26.10.2017 3.1.32-dev-28 - bugfix Smarty version was not filled in header comment of compiled and cached files - optimization replace internal Smarty::$ds property by DIRECTORY_SEPARATOR @@ -7,7 +10,7 @@ for backward compatibility code is moved from Smarty class to an external class and still can be called. - correction of PHPDoc blocks - - minor code cleanup + - minor code cleanup 21.10.2017 - bugfix custom delimiters could fail since modification of version 3.1.32-dev-23 diff --git a/lexer/smarty_internal_configfilelexer.plex b/lexer/smarty_internal_configfilelexer.plex index 1741206a8..67887a4a1 100644 --- a/lexer/smarty_internal_configfilelexer.plex +++ b/lexer/smarty_internal_configfilelexer.plex @@ -235,7 +235,7 @@ double_quoted_string { $this->yypopstate(); } maybe_bool { - if (!$this->configBooleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) { + if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) { $this->yypopstate(); $this->yypushstate(self::NAKED_STRING_VALUE); return true; //reprocess in new state @@ -250,7 +250,7 @@ naked_string { } newline { $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - $this->value = ""; + $this->value = ''; $this->yypopstate(); } @@ -308,7 +308,7 @@ text { if (isset($match[0][1])) { $to = $match[0][1]; } else { - $this->compiler->trigger_template_error ("missing or misspelled literal closing tag"); + $this->compiler->trigger_template_error ('missing or misspelled literal closing tag'); } $this->value = substr($this->data,$this->counter,$to-$this->counter); $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT; diff --git a/lexer/smarty_internal_configfileparser.y b/lexer/smarty_internal_configfileparser.y index 9d7f03f1f..f5e707372 100644 --- a/lexer/smarty_internal_configfileparser.y +++ b/lexer/smarty_internal_configfileparser.y @@ -80,7 +80,7 @@ class Smarty_Internal_Configfileparser * * @var array */ - private static $escapes_single = Array('\\' => '\\', + private static $escapes_single = array('\\' => '\\', '\'' => '\''); /** @@ -131,7 +131,7 @@ class Smarty_Internal_Configfileparser $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE); - $str = ""; + $str = ''; foreach ($ss as $s) { if (strlen($s) === 2 && $s[0] === '\\') { if (isset(self::$escapes_single[$s[1]])) { @@ -174,10 +174,10 @@ class Smarty_Internal_Configfileparser * @param array $var * @param array $target_array */ - private function set_var(Array $var, Array &$target_array) + private function set_var(array $var, array &$target_array) { - $key = $var["key"]; - $value = $var["value"]; + $key = $var['key']; + $value = $var['value']; if ($this->configOverwrite || !isset($target_array['vars'][$key])) { $target_array['vars'][$key] = $value; @@ -192,10 +192,10 @@ class Smarty_Internal_Configfileparser * * @param array $vars */ - private function add_global_vars(Array $vars) + private function add_global_vars(array $vars) { if (!isset($this->compiler->config_data['vars'])) { - $this->compiler->config_data['vars'] = Array(); + $this->compiler->config_data['vars'] = array(); } foreach ($vars as $var) { $this->set_var($var, $this->compiler->config_data); @@ -208,10 +208,10 @@ class Smarty_Internal_Configfileparser * @param string $section_name * @param array $vars */ - private function add_section_vars($section_name, Array $vars) + private function add_section_vars($section_name, array $vars) { if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) { - $this->compiler->config_data['sections'][$section_name]['vars'] = Array(); + $this->compiler->config_data['sections'][$section_name]['vars'] = array(); } foreach ($vars as $var) { $this->set_var($var, $this->compiler->config_data['sections'][$section_name]); @@ -238,7 +238,7 @@ class Smarty_Internal_Configfileparser %stack_overflow { $this->internalError = true; - $this->compiler->trigger_config_file_error("Stack overflow in configfile parser"); + $this->compiler->trigger_config_file_error('Stack overflow in configfile parser'); } // Complete config file @@ -279,17 +279,17 @@ var_list(res) ::= var_list(vl) newline. { } var_list(res) ::= var_list(vl) var(v). { - res = array_merge(vl, Array(v)); + res = array_merge(vl, array(v)); } var_list(res) ::= . { - res = Array(); + res = array(); } // Var var(res) ::= ID(id) EQUAL value(v). { - res = Array("key" => id, "value" => v); + res = array('key' => id, 'value' => v); } diff --git a/lexer/smarty_internal_templatelexer.plex b/lexer/smarty_internal_templatelexer.plex index a92653d0d..fb185db1a 100644 --- a/lexer/smarty_internal_templatelexer.plex +++ b/lexer/smarty_internal_templatelexer.plex @@ -306,7 +306,7 @@ class Smarty_Internal_Templatelexer aptr = ~\s*[=][>]\s*~ singlequotestring = ~'[^'\\]*(?:\\.[^'\\]*)*'~ backtick = ~[`]~ - vert = ~[|]~ + vert = ~[|][@]?~ qmark = ~\s*[?]\s*~ constant = ~[_]+[A-Z0-9][0-9A-Z_]*|[A-Z][0-9A-Z_]*(?![0-9A-Z_]*[a-z])~ attr = ~\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\s*[=]\s*~ @@ -344,7 +344,7 @@ class Smarty_Internal_Templatelexer if (isset($match[0][1])) { $to = $match[0][1] + strlen($match[0][0]); } else { - $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '*{$this->smarty->getRightDelimiter()}'"); + $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'"); } $this->value = substr($this->data,$this->counter,$to-$this->counter); return false; diff --git a/lexer/smarty_internal_templateparser.y b/lexer/smarty_internal_templateparser.y index 0a11a0cd2..6d6c04b53 100644 --- a/lexer/smarty_internal_templateparser.y +++ b/lexer/smarty_internal_templateparser.y @@ -173,7 +173,7 @@ class Smarty_Internal_Templateparser */ public function errorRunDown() { - while ($this->yystack !== Array()) { + while ($this->yystack !== array()) { $this->yy_pop_parser_stack(); } if (is_resource($this->yyTraceFILE)) { @@ -237,139 +237,103 @@ start(res) ::= template. { res = $this->root_buffer->to_smarty_php($this); } - // - // loop over template elements - // - // single template element -template ::= template_element(e). { - if (e != null) { - $this->current_buffer->append_subtree($this, e); - } -} - - // loop of elements -template ::= template template_element(e). { - if (e != null) { - // because of possible code injection - $this->current_buffer->append_subtree($this, e); - } -} - // empty template -template ::= . - -// -// template elements -// - // Smarty tag -template_element(res)::= smartytag(st). { - if ($this->compiler->has_code) { - res = $this->mergePrefixCode(st); - } else { - res = null; - } - $this->compiler->has_variable_string = false; - $this->block_nesting_level = count($this->compiler->_tag_stack); -} - - // Literal -template_element(res) ::= literal(l). { - res = new Smarty_Internal_ParseTree_Text(l); -} // php tags -template_element(res)::= PHP(o). { - $code = $this->compiler->compileTag('private_php',array(array('code' => o), array('type' => $this->lex->phpType )),array()); +template ::= template PHP(B). { + $code = $this->compiler->compileTag('private_php',array(array('code' => B), array('type' => $this->lex->phpType )),array()); if ($this->compiler->has_code && !empty($code)) { $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array(); - res = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp.$code,true)); - } else { - res = null; + $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp.$code,true))); } } // template text -template_element(res)::= text_content(t). { - res = $this->compiler->processText(t); -} - -text_content(res) ::= TEXT(o). { - res = o; -} - -text_content(res) ::= text_content(t) TEXT(o). { - res = t . o; +template ::= template TEXT(B). { + $this->current_buffer->append_subtree($this, $this->compiler->processText(B)); } - // strip on -template_element ::= STRIPON(d). { +template ::= template STRIPON. { $this->strip = true; } // strip off -template_element ::= STRIPOFF(d). { +template ::= template STRIPOFF. { $this->strip = false; } - // Litteral -literal(res) ::= LITERALSTART LITERALEND. { - res = ''; + // Literal +template ::= template LITERALSTART literal_e2(B) LITERALEND. { + $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text(B)); } -literal(res) ::= LITERALSTART literal_elements(l) LITERALEND. { - res = l; + +literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. { + A = B.C; } - -literal_elements(res) ::= literal_elements(l1) literal_element(l2). { - res = l1.l2; +literal_e2(A) ::= literal_e1(B). { + A = B; } -literal_elements(res) ::= . { - res = ''; -} +literal_e1(A) ::= literal_e1(B) LITERAL(C). { + A = B.C; -literal_element(res) ::= literal(l). { - res = l; } -literal_element(res) ::= LITERAL(l). { - res = l; +literal_e1(A) ::= . { + A = ''; } - -smartytag(res) ::= tag(t) RDEL. { - res = t; + // Smarty tag +template ::= template smartytag(B). { + if ($this->compiler->has_code) { + $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B)); + } + $this->compiler->has_variable_string = false; + $this->block_nesting_level = count($this->compiler->_tag_stack); } -// -// output tags start here -// -smartytag(res) ::= SIMPELOUTPUT(i). { - $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $'); + + + // empty template +template ::= . + +smartytag(A) ::= SIMPELOUTPUT(B). { + $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $'); if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) { - res = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\''))); + A = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\''))); } else { - res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\''))); + A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\''))); } } - // output with optional attributes -tag(res) ::= LDEL variable(e). { - res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>e)); -} - -tag(res) ::= LDEL variable(e) attributes(a). { - res = $this->compiler->compileTag('private_print_expression',a,array('value'=>e)); -} -tag(res) ::= LDEL value(e). { - res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>e)); -} -tag(res) ::= LDEL value(e) attributes(a). { - res = $this->compiler->compileTag('private_print_expression',a,array('value'=>e)); +// simple tag like {name} +smartytag(A)::= SIMPLETAG(B). { + $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength())); + if ($tag == 'strip') { + $this->strip = true; + A = null;; + } else { + if (defined($tag)) { + if ($this->security) { + $this->security->isTrustedConstant($tag, $this->compiler); + } + A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag)); + } else { + if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { + A = $this->compiler->compileTag($match[1],array("'nocache'")); + } else { + A = $this->compiler->compileTag($tag,array()); + } + } + } } - -tag(res) ::= LDEL expr(e). { - res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>e)); +smartytag(A) ::= LDEL tagbody(B) RDEL. { + A = B; } -tag(res) ::= LDEL expr(e) attributes(a). { - res = $this->compiler->compileTag('private_print_expression',a,array('value'=>e)); + smartytag(A) ::= tag(B) RDEL. { + A = B; + } + // output with optional attributes +tagbody(A) ::= outattr(B). { + A = $this->compiler->compileTag('private_print_expression',B[1],array('value'=>B[0])); } // @@ -377,42 +341,30 @@ tag(res) ::= LDEL expr(e) attributes(a). { // // assign new style -tag(res) ::= LDEL DOLLARID(i) EQUAL value(e). { - res = $this->compiler->compileTag('assign',array(array('value'=>e),array('var'=>'\''.substr(i,1).'\''))); +tagbody(A) ::= DOLLARID(B) eqoutattr(C). { + A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1])); } - -tag(res) ::= LDEL DOLLARID(i) EQUAL expr(e). { - res = $this->compiler->compileTag('assign',array(array('value'=>e),array('var'=>'\''.substr(i,1).'\''))); + +tagbody(A) ::= varindexed(B) eqoutattr(C). { + A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index'])); } - -tag(res) ::= LDEL DOLLARID(i) EQUAL expr(e) attributes(a). { - res = $this->compiler->compileTag('assign',array_merge(array(array('value'=>e),array('var'=>'\''.substr(i,1).'\'')),a)); -} -tag(res) ::= LDEL varindexed(vi) EQUAL expr(e) attributes(a). { - res = $this->compiler->compileTag('assign',array_merge(array(array('value'=>e),array('var'=>vi['var'])),a),array('smarty_internal_index'=>vi['smarty_internal_index'])); +eqoutattr(A) ::= EQUAL outattr(B). { + A = B; } -// simple tag like {name} -smartytag(res)::= SIMPLETAG(t). { - $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength())); - if ($tag === 'strip') { - $this->strip = true; - res = null;; - } else { - if (defined($tag)) { - if ($this->security) { - $this->security->isTrustedConstant($tag, $this->compiler); - } - res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag)); - } else { - if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { - res = $this->compiler->compileTag($match[1],array("'nocache'")); - } else { - res = $this->compiler->compileTag($tag,array()); - } - } - } +outattr(A) ::= output(B) attributes(C). { + A = array(B,C); +} + +output(A) ::= variable(B). { + A = B; +} +output(A) ::= value(B). { + A = B; +} +output(A) ::= expr(B). { + A = B; } // tag with optional Smarty2 style attributes @@ -776,7 +728,7 @@ value(res) ::= function(f). { // expression value(res) ::= OPENP expr(e) CLOSEP. { - res = "(". e .")"; + res = '('. e .')'; } value(res) ::= variable(v1) INSTANCEOF(i) ns1(v2). { @@ -800,9 +752,9 @@ value(res) ::= doublequoted_with_quotes(s). { value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). { $prefixVar = $this->compiler->getNewPrefixVariable(); if (vi['var'] === '\'smarty\'') { - $this->compiler->appendPrefixCode("compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>'); + $this->compiler->appendPrefixCode("compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>'); } else { - $this->compiler->appendPrefixCode("compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>'); + $this->compiler->appendPrefixCode("compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>'); } res = $prefixVar .'::'.r[0].r[1]; } @@ -811,7 +763,7 @@ value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). { value(res) ::= smartytag(st). { $prefixVar = $this->compiler->getNewPrefixVariable(); $tmp = $this->compiler->appendCode('', st); - $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "')); + $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "")); res = $prefixVar; } @@ -882,11 +834,11 @@ variable(res) ::= object(o). { // config variable variable(res) ::= HATCH ID(i) HATCH. { - res = $this->compiler->compileConfigVariable("'" . i . "'"); + res = $this->compiler->compileConfigVariable('\'' . i . '\''); } variable(res) ::= HATCH ID(i) HATCH arrayindex(a). { - res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable("'" . i . "'") . ') ? $tmp'.a.' :null)'; + res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)'; } variable(res) ::= HATCH variable(v) HATCH. { @@ -931,7 +883,7 @@ indexdef(res) ::= DOT varvar(v) AT ID(p). { } indexdef(res) ::= DOT ID(i). { - res = "['". i ."']"; + res = '[\''. i .'\']'; } indexdef(res) ::= DOT INTEGER(n). { @@ -988,7 +940,7 @@ varvar(res) ::= DOLLARID(i). { } // single $ varvar(res) ::= DOLLAR. { - res = "''"; + res = '\'\''; } // sequence of identifier elements @@ -1081,7 +1033,7 @@ method(res) ::= ID(f) OPENP params(p) CLOSEP. { if ($this->security && substr(f,0,1) === '_') { $this->compiler->trigger_template_error (self::Err1); } - res = f . "(". implode(',',p) .")"; + res = f . '('. implode(',',p) .')'; } method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. { @@ -1089,7 +1041,7 @@ method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. { $this->compiler->trigger_template_error (self::Err2); } $prefixVar = $this->compiler->getNewPrefixVariable(); - $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr(f,1).'\'').';?>'); + $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr(f,1).'\'').';?>'); res = $prefixVar .'('. implode(',',p) .')'; } @@ -1260,7 +1212,7 @@ arrayelement(res) ::= expr(e). { // double quoted strings // doublequoted_with_quotes(res) ::= QUOTE QUOTE. { - res = "''"; + res = '\'\''; } doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. { diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php index a0ad2d182..4bae469d7 100644 --- a/libs/Smarty.class.php +++ b/libs/Smarty.class.php @@ -112,7 +112,7 @@ class Smarty extends Smarty_Internal_TemplateBase /** * smarty version */ - const SMARTY_VERSION = '3.1.32-dev-31'; + const SMARTY_VERSION = '3.1.32-dev-32'; /** * define variable scopes */ diff --git a/libs/sysplugins/smarty_internal_configfilelexer.php b/libs/sysplugins/smarty_internal_configfilelexer.php index 374d4492d..454c9f828 100644 --- a/libs/sysplugins/smarty_internal_configfilelexer.php +++ b/libs/sysplugins/smarty_internal_configfilelexer.php @@ -21,12 +21,12 @@ */ class Smarty_Internal_Configfilelexer { - const START = 1; - const VALUE = 2; + const START = 1; + const VALUE = 2; const NAKED_STRING_VALUE = 3; - const COMMENT = 4; - const SECTION = 5; - const TRIPPLE = 6; + const COMMENT = 4; + const SECTION = 5; + const TRIPPLE = 6; /** * Source * @@ -124,13 +124,13 @@ class Smarty_Internal_Configfilelexer private $yy_global_pattern4 = null; private $yy_global_pattern5 = null; private $yy_global_pattern6 = null; - private $_yy_state = 1; - private $_yy_stack = array(); + private $_yy_state = 1; + private $_yy_stack = array(); /** * constructor * - * @param string $data template source + * @param string $data template source * @param Smarty_Internal_Config_File_Compiler $compiler */ function __construct($data, Smarty_Internal_Config_File_Compiler $compiler) @@ -139,7 +139,7 @@ function __construct($data, Smarty_Internal_Config_File_Compiler $compiler) $this->dataLength = strlen($data); $this->counter = 0; if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) { - $this->counter += strlen($match[0]); + $this->counter += strlen($match[ 0 ]); } $this->line = 1; $this->compiler = $compiler; @@ -147,15 +147,61 @@ function __construct($data, Smarty_Internal_Config_File_Compiler $compiler) $this->configBooleanize = $this->smarty->config_booleanize; } + public function replace($input) + { + return $input; + } // end function + public function PrintTrace() { $this->yyTraceFILE = fopen('php://output', 'w'); $this->yyTracePrompt = '
'; - } // end function + } + + public function yylex() + { + return $this->{'yylex' . $this->_yy_state}(); + } + + public function yypushstate($state) + { + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, + "%sState push %s\n", + $this->yyTracePrompt, + isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : + $this->_yy_state); + } + array_push($this->_yy_stack, $this->_yy_state); + $this->_yy_state = $state; + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, + "%snew State %s\n", + $this->yyTracePrompt, + isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : + $this->_yy_state); + } + } + + public function yypopstate() + { + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, + "%sState pop %s\n", + $this->yyTracePrompt, + isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : + $this->_yy_state); + } + $this->_yy_state = array_pop($this->_yy_stack); + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, + "%snew State %s\n", + $this->yyTracePrompt, + isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : + $this->_yy_state); + } + } - /** - * @param $state - */ public function yybegin($state) { $this->_yy_state = $state; @@ -168,10 +214,6 @@ public function yybegin($state) } } - /** - * @return bool - * @throws \Exception - */ public function yylex1() { if (!isset($this->yy_global_pattern1)) { @@ -184,19 +226,18 @@ public function yylex1() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state START'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state START'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -221,112 +262,56 @@ public function yylex1() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - - } - - /** - * @param $input - * - * @return mixed - */ - public function replace($input) - { - return $input; - } - - /** - * @return mixed - */ - public function yylex() - { - return $this->{'yylex' . $this->_yy_state}(); } function yy_r1_1() { - $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; $this->yypushstate(self::COMMENT); } - /** - * @param $state - */ - public function yypushstate($state) - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, - "%sState push %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : - $this->_yy_state); - } - array_push($this->_yy_stack, $this->_yy_state); - $this->_yy_state = $state; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, - "%snew State %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : - $this->_yy_state); - } - } - function yy_r1_2() { - $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; $this->yypushstate(self::SECTION); } function yy_r1_3() { - $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; } function yy_r1_4() { - $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; $this->yypushstate(self::VALUE); - } + } // end function - /** - * @return bool - */ function yy_r1_5() { - return false; - } // end function + } function yy_r1_6() { - $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; } function yy_r1_7() { - $this->token = Smarty_Internal_Configfileparser::TPC_ID; } function yy_r1_8() { - $this->token = Smarty_Internal_Configfileparser::TPC_OTHER; } - /** - * @return bool - * @throws \Exception - */ public function yylex2() { if (!isset($this->yy_global_pattern2)) { @@ -339,19 +324,18 @@ public function yylex2() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state VALUE'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state VALUE'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -376,85 +360,52 @@ public function yylex2() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - } - /** - * @return bool - */ function yy_r2_1() { - return false; } function yy_r2_2() { - $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT; $this->yypopstate(); } - public function yypopstate() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, - "%sState pop %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : - $this->_yy_state); - } - $this->_yy_state = array_pop($this->_yy_stack); - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, - "%snew State %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : - $this->_yy_state); - } - - } - function yy_r2_3() { - $this->token = Smarty_Internal_Configfileparser::TPC_INT; $this->yypopstate(); } function yy_r2_4() { - $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES; $this->yypushstate(self::TRIPPLE); } function yy_r2_5() { - $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING; $this->yypopstate(); } function yy_r2_6() { - $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; $this->yypopstate(); } // end function - /** - * @return bool - */ function yy_r2_7() { - if (!$this->configBooleanize || - !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))) { + !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) { $this->yypopstate(); $this->yypushstate(self::NAKED_STRING_VALUE); return true; //reprocess in new state @@ -466,23 +417,17 @@ function yy_r2_7() function yy_r2_8() { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; $this->yypopstate(); } function yy_r2_9() { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - $this->value = ""; + $this->value = ''; $this->yypopstate(); } // end function - /** - * @return bool - * @throws \Exception - */ public function yylex3() { if (!isset($this->yy_global_pattern3)) { @@ -494,19 +439,18 @@ public function yylex3() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state NAKED_STRING_VALUE'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state NAKED_STRING_VALUE'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -531,24 +475,19 @@ public function yylex3() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - } function yy_r3_1() { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; $this->yypopstate(); } - /** - * @return bool - * @throws \Exception - */ public function yylex4() { if (!isset($this->yy_global_pattern4)) { @@ -560,19 +499,18 @@ public function yylex4() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state COMMENT'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state COMMENT'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -597,39 +535,29 @@ public function yylex4() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - } - /** - * @return bool - */ function yy_r4_1() { - return false; } function yy_r4_2() { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; } // end function function yy_r4_3() { - $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; $this->yypopstate(); } - /** - * @return bool - * @throws \Exception - */ public function yylex5() { if (!isset($this->yy_global_pattern5)) { @@ -641,19 +569,18 @@ public function yylex5() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state SECTION'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state SECTION'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -678,30 +605,24 @@ public function yylex5() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - } function yy_r5_1() { - $this->token = Smarty_Internal_Configfileparser::TPC_DOT; } function yy_r5_2() { - $this->token = Smarty_Internal_Configfileparser::TPC_SECTION; $this->yypopstate(); } // end function - /** - * @return bool - * @throws \Exception - */ public function yylex6() { if (!isset($this->yy_global_pattern6)) { @@ -713,19 +634,18 @@ public function yylex6() if ($this->counter >= $this->dataLength) { return false; // end of input } - do { if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[0][1])) { + if (!isset($yymatches[ 0 ][ 1 ])) { $yymatches = preg_grep("/(.|\s)+/", $yymatches); } else { $yymatches = array_filter($yymatches); } if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . ' an empty string. Input "' . - substr($this->data, - $this->counter, - 5) . '... state TRIPPLE'); + throw new Exception('Error: lexing failed because a rule matched' . + ' an empty string. Input "' . substr($this->data, + $this->counter, + 5) . '... state TRIPPLE'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -750,16 +670,15 @@ public function yylex6() continue; } } else { - throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[ $this->counter ]); } break; } while (true); - } function yy_r6_1() { - $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END; $this->yypopstate(); $this->yypushstate(self::START); @@ -767,17 +686,14 @@ function yy_r6_1() function yy_r6_2() { - $to = strlen($this->data); preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); - if (isset($match[0][1])) { - $to = $match[0][1]; + if (isset($match[ 0 ][ 1 ])) { + $to = $match[ 0 ][ 1 ]; } else { - $this->compiler->trigger_template_error("missing or misspelled literal closing tag"); + $this->compiler->trigger_template_error('missing or misspelled literal closing tag'); } $this->value = substr($this->data, $this->counter, $to - $this->counter); $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT; } - - } diff --git a/libs/sysplugins/smarty_internal_configfileparser.php b/libs/sysplugins/smarty_internal_configfileparser.php index aa0d6d4bd..2be0ec2e5 100644 --- a/libs/sysplugins/smarty_internal_configfileparser.php +++ b/libs/sysplugins/smarty_internal_configfileparser.php @@ -1,101 +1,5 @@ string = $s->string; - $this->metadata = $s->metadata; - } else { - $this->string = (string)$s; - if ($m instanceof TPC_yyToken) { - $this->metadata = $m->metadata; - } else if (is_array($m)) { - $this->metadata = $m; - } - } - } - - /** - * @return string - */ - public function __toString() - { - return $this->string; - } - - /** - * @param mixed $offset - * - * @return bool - */ - public function offsetExists($offset) - { - return isset($this->metadata[ $offset ]); - } - - /** - * @param mixed $offset - * - * @return mixed - */ - public function offsetGet($offset) - { - return $this->metadata[ $offset ]; - } - - /** - * @param mixed $offset - * @param mixed $value - */ - public function offsetSet($offset, $value) - { - if ($offset === null) { - if (isset($value[0])) { - $x = ($value instanceof TPC_yyToken) ? $value->metadata : $value; - $this->metadata = array_merge($this->metadata, $x); - - return; - } - $offset = count($this->metadata); - } - if ($value === null) { - return; - } - if ($value instanceof TPC_yyToken) { - if ($value->metadata) { - $this->metadata[ $offset ] = $value->metadata; - } - } else if ($value) { - $this->metadata[ $offset ] = $value; - } - } - - /** - * @param mixed $offset - */ - public function offsetUnset($offset) - { - unset($this->metadata[ $offset ]); - } -} - -/** - * Class TPC_yyStackEntry - */ class TPC_yyStackEntry { public $stateno; /* The state-number */ @@ -106,8 +10,6 @@ class TPC_yyStackEntry } ; - - #line 12 "../smarty/lexer/smarty_internal_configfileparser.y" /** @@ -123,7 +25,6 @@ class TPC_yyStackEntry class Smarty_Internal_Configfileparser { #line 25 "../smarty/lexer/smarty_internal_configfileparser.y" - const TPC_OPENB = 1; const TPC_SECTION = 2; const TPC_CLOSEB = 3; @@ -145,62 +46,162 @@ class Smarty_Internal_Configfileparser const YY_NO_ACTION = 60; const YY_ACCEPT_ACTION = 59; const YY_ERROR_ACTION = 58; - const YY_SZ_ACTTAB = 38; - const YY_SHIFT_USE_DFLT = -8; - const YY_SHIFT_MAX = 19; - const YY_REDUCE_USE_DFLT = -17; - const YY_REDUCE_MAX = 10; - const YYNOCODE = 29; - const YYSTACKDEPTH = 100; - const YYNSTATE = 36; - const YYNRULE = 22; - const YYERRORSYMBOL = 19; - const YYERRSYMDT = 'yy0'; - const YYFALLBACK = 0; - static public $yy_action = array(32, 31, 30, 29, 35, 13, 19, 3, 24, 26, 59, 9, 14, 1, 16, 25, 11, 28, 25, 11, 17, - 27, 34, 20, 18, 15, 23, 5, 6, 22, 10, 8, 4, 12, 2, 33, 7, 21,); - static public $yy_lookahead = array(7, 8, 9, 10, 11, 12, 5, 23, 15, 16, 20, 21, 2, 23, 4, 17, 18, 14, 17, 18, 13, - 14, 25, 26, 15, 2, 17, 3, 3, 17, 25, 25, 6, 1, 23, 27, 22, 24,); - static public $yy_shift_ofst = array(-8, 1, 1, 1, -7, -2, -2, 32, -8, -8, -8, 9, 10, 7, 25, 24, 23, 3, 12, 26,); - static public $yy_reduce_ofst = array(-10, -3, -3, -3, 8, 6, 5, 13, 11, 14, -16,); - static public $yyExpectedTokens = array(array(), array(5, 17, 18,), array(5, 17, 18,), array(5, 17, 18,), - array(7, 8, 9, 10, 11, 12, 15, 16,), array(17, 18,), array(17, 18,), - array(1,), array(), array(), array(), array(15, 17,), array(2, 4,), - array(13, 14,), array(3,), array(3,), array(2,), array(14,), array(17,), - array(6,), array(), array(), array(), array(), array(), array(), array(), - array(), array(), array(), array(), array(), array(), array(), array(), - array(),); - static public $yy_default = array(44, 37, 41, 40, 58, 58, 58, 36, 44, 39, 44, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 43, 38, 57, 56, 53, 55, 54, 52, 51, 49, 48, 47, 46, 45, 42, 50,); - public static $yyFallback = array(); - public static $yyRuleName = array('start ::= global_vars sections', 'global_vars ::= var_list', - 'sections ::= sections section', 'sections ::=', - 'section ::= OPENB SECTION CLOSEB newline var_list', - 'section ::= OPENB DOT SECTION CLOSEB newline var_list', - 'var_list ::= var_list newline', 'var_list ::= var_list var', 'var_list ::=', - 'var ::= ID EQUAL value', 'value ::= FLOAT', 'value ::= INT', 'value ::= BOOL', - 'value ::= SINGLE_QUOTED_STRING', 'value ::= DOUBLE_QUOTED_STRING', - 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', - 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', 'value ::= NAKED_STRING', - 'value ::= OTHER', 'newline ::= NEWLINE', 'newline ::= COMMENTSTART NEWLINE', - 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',); - public static $yyRuleInfo = array(array(0 => 20, 1 => 2), array(0 => 21, 1 => 1), array(0 => 22, 1 => 2), - array(0 => 22, 1 => 0), array(0 => 24, 1 => 5), array(0 => 24, 1 => 6), - array(0 => 23, 1 => 2), array(0 => 23, 1 => 2), array(0 => 23, 1 => 0), - array(0 => 26, 1 => 3), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), array(0 => 27, 1 => 1), - array(0 => 27, 1 => 3), array(0 => 27, 1 => 2), array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), array(0 => 25, 1 => 1), array(0 => 25, 1 => 2), - array(0 => 25, 1 => 3),); - public static $yyReduceMap = array(0 => 0, 2 => 0, 3 => 0, 19 => 0, 20 => 0, 21 => 0, 1 => 1, 4 => 4, 5 => 5, - 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14, - 15 => 15, 16 => 16, 17 => 17, 18 => 17,); + const YY_SZ_ACTTAB = 38; + const YY_SHIFT_USE_DFLT = -8; + const YY_SHIFT_MAX = 19; + const YY_REDUCE_USE_DFLT = -21; + const YY_REDUCE_MAX = 10; + const YYNOCODE = 29; + const YYSTACKDEPTH = 100; + const YYNSTATE = 36; + const YYNRULE = 22; + const YYERRORSYMBOL = 19; + const YYERRSYMDT = 'yy0'; + const YYFALLBACK = 0; + static public $yy_action = array( + 29, 30, 34, 33, 24, 13, 19, 25, 35, 21, + 59, 8, 3, 1, 20, 12, 14, 31, 20, 12, + 15, 17, 23, 18, 27, 26, 4, 5, 6, 32, + 2, 11, 28, 22, 16, 9, 7, 10, + ); + static public $yy_lookahead = array( + 7, 8, 9, 10, 11, 12, 5, 27, 15, 16, + 20, 21, 23, 23, 17, 18, 13, 14, 17, 18, + 15, 2, 17, 4, 25, 26, 6, 3, 3, 14, + 23, 1, 24, 17, 2, 25, 22, 25, + ); + static public $yy_shift_ofst = array( + -8, 1, 1, 1, -7, -3, -3, 30, -8, -8, + -8, 19, 5, 3, 15, 16, 24, 25, 32, 20, + ); + static public $yy_reduce_ofst = array( + -10, -1, -1, -1, -20, 10, 12, 8, 14, 7, + -11, + ); + static public $yyExpectedTokens = array( + array(), + array(5, 17, 18,), + array(5, 17, 18,), + array(5, 17, 18,), + array(7, 8, 9, 10, 11, 12, 15, 16,), + array(17, 18,), + array(17, 18,), + array(1,), + array(), + array(), + array(), + array(2, 4,), + array(15, 17,), + array(13, 14,), + array(14,), + array(17,), + array(3,), + array(3,), + array(2,), + array(6,), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + ); + static public $yy_default = array( + 44, 37, 41, 40, 58, 58, 58, 36, 39, 44, + 44, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, + 47, 52, 51, 49, 48, 53, + ); + public static $yyFallback = array(); + public static $yyRuleName = array( + 'start ::= global_vars sections', + 'global_vars ::= var_list', + 'sections ::= sections section', + 'sections ::=', + 'section ::= OPENB SECTION CLOSEB newline var_list', + 'section ::= OPENB DOT SECTION CLOSEB newline var_list', + 'var_list ::= var_list newline', + 'var_list ::= var_list var', + 'var_list ::=', + 'var ::= ID EQUAL value', + 'value ::= FLOAT', + 'value ::= INT', + 'value ::= BOOL', + 'value ::= SINGLE_QUOTED_STRING', + 'value ::= DOUBLE_QUOTED_STRING', + 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', + 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', + 'value ::= NAKED_STRING', + 'value ::= OTHER', + 'newline ::= NEWLINE', + 'newline ::= COMMENTSTART NEWLINE', + 'newline ::= COMMENTSTART NAKED_STRING NEWLINE', + ); + public static $yyRuleInfo = array( + array(0 => 20, 1 => 2), + array(0 => 21, 1 => 1), + array(0 => 22, 1 => 2), + array(0 => 22, 1 => 0), + array(0 => 24, 1 => 5), + array(0 => 24, 1 => 6), + array(0 => 23, 1 => 2), + array(0 => 23, 1 => 2), + array(0 => 23, 1 => 0), + array(0 => 26, 1 => 3), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 3), + array(0 => 27, 1 => 2), + array(0 => 27, 1 => 1), + array(0 => 27, 1 => 1), + array(0 => 25, 1 => 1), + array(0 => 25, 1 => 2), + array(0 => 25, 1 => 3), + ); + public static $yyReduceMap = array( + 0 => 0, + 2 => 0, + 3 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 1 => 1, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => 7, + 8 => 8, + 9 => 9, + 10 => 10, + 11 => 11, + 12 => 12, + 13 => 13, + 14 => 14, + 15 => 15, + 16 => 16, + 17 => 17, + 18 => 17, + ); /** * helper map * * @var array */ - private static $escapes_single = Array('\\' => '\\', '\'' => '\''); + private static $escapes_single = array('\\' => '\\', + '\'' => '\''); /** * result status * @@ -228,16 +229,21 @@ class Smarty_Internal_Configfileparser * * @var Smarty */ - public $smarty = null; + public $smarty = null; public $yyTraceFILE; public $yyTracePrompt; -public $yyidx; -public $yyerrcnt; -public $yystack = array(); - public $yyTokenName = array('$', 'OPENB', 'SECTION', 'CLOSEB', 'DOT', 'ID', 'EQUAL', 'FLOAT', 'INT', 'BOOL', - 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', - 'TRIPPLE_QUOTES_END', 'NAKED_STRING', 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', - 'start', 'global_vars', 'sections', 'var_list', 'section', 'newline', 'var', 'value',); + public $yyidx; + public $yyerrcnt; + public $yystack = array(); + public $yyTokenName = array( + '$', 'OPENB', 'SECTION', 'CLOSEB', + 'DOT', 'ID', 'EQUAL', 'FLOAT', + 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', + 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING', + 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', + 'start', 'global_vars', 'sections', 'var_list', + 'section', 'newline', 'var', 'value', + ); /** * lexer object * @@ -279,10 +285,61 @@ function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Confi $this->configReadHidden = $this->smarty->config_read_hidden; } + public static function yy_destructor($yymajor, $yypminor) + { + switch ($yymajor) { + default: + break; /* If no destructor action specified: do nothing */ + } + } + + /** + * parse single quoted string + * remove outer quotes + * unescape inner quotes + * + * @param string $qstr + * + * @return string + */ + private static function parse_single_quoted_string($qstr) + { + $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes + $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE); + $str = ''; + foreach ($ss as $s) { + if (strlen($s) === 2 && $s[ 0 ] === '\\') { + if (isset(self::$escapes_single[ $s[ 1 ] ])) { + $s = self::$escapes_single[ $s[ 1 ] ]; + } + } + $str .= $s; + } + return $str; + } /* Index of top element in stack */ + /** + * parse double quoted string + * + * @param string $qstr + * + * @return string + */ + private static function parse_double_quoted_string($qstr) + { + $inner_str = substr($qstr, 1, strlen($qstr) - 2); + return stripcslashes($inner_str); + } /* Shifts left before out of the error */ /** - * @param $TraceFILE - * @param $zTracePrompt + * parse triple quoted string + * + * @param string $qstr + * + * @return string */ + private static function parse_tripple_double_quoted_string($qstr) + { + return stripcslashes($qstr); + } /* The parser's stack */ public function Trace($TraceFILE, $zTracePrompt) { if (!$TraceFILE) { @@ -298,12 +355,8 @@ public function PrintTrace() { $this->yyTraceFILE = fopen('php://output', 'w'); $this->yyTracePrompt = '
'; - } /* Index of top element in stack */ - /** - * @param $tokenType - * - * @return mixed|string - */ + } + public function tokenName($tokenType) { if ($tokenType === 0) { @@ -314,17 +367,7 @@ public function tokenName($tokenType) } else { return "Unknown"; } - } /* Shifts left before out of the error */ - - public function __destruct() - { - while ($this->yystack !== Array()) { - $this->yy_pop_parser_stack(); - } - if (is_resource($this->yyTraceFILE)) { - fclose($this->yyTraceFILE); - } - } /* The parser's stack */ + } public function yy_pop_parser_stack() { @@ -334,32 +377,25 @@ public function yy_pop_parser_stack() $yytos = array_pop($this->yystack); if ($this->yyTraceFILE && $this->yyidx >= 0) { fwrite($this->yyTraceFILE, - $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n"); + $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . + "\n"); } $yymajor = $yytos->major; self::yy_destructor($yymajor, $yytos->minor); $this->yyidx--; - return $yymajor; } - /** - * @param $yymajor - * @param $yypminor - */ - public static function yy_destructor($yymajor, $yypminor) + public function __destruct() { - switch ($yymajor) { - default: - break; /* If no destructor action specified: do nothing */ + while ($this->yystack !== Array()) { + $this->yy_pop_parser_stack(); + } + if (is_resource($this->yyTraceFILE)) { + fclose($this->yyTraceFILE); } } - /** - * @param $token - * - * @return array|mixed - */ public function yy_get_expected_tokens($token) { static $res3 = array(); @@ -383,7 +419,7 @@ public function yy_get_expected_tokens($token) // reduce action $done = 0; do { - if ($done++ == 100) { + if ($done++ === 100) { $this->yyidx = $yyidx; $this->yystack = $stack; // too much recursion prevents proper detection @@ -391,9 +427,10 @@ public function yy_get_expected_tokens($token) return array_unique($expected); } $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][1]; - $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][0]); + $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; + $nextstate = $this->yy_find_reduce_action( + $this->yystack[ $this->yyidx ]->stateno, + self::$yyRuleInfo[ $yyruleno ][ 0 ]); if (isset(self::$yyExpectedTokens[ $nextstate ])) { $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]); if (isset($res4[ $nextstate ][ $token ])) { @@ -416,10 +453,10 @@ public function yy_get_expected_tokens($token) $this->yyidx++; $x = new TPC_yyStackEntry; $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[ $yyruleno ][0]; + $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; $this->yystack[ $this->yyidx ] = $x; continue 2; - } else if ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { + } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { $this->yyidx = $yyidx; $this->yystack = $stack; // the last token was just ignored, we can't accept @@ -440,19 +477,101 @@ public function yy_get_expected_tokens($token) } while (true); $this->yyidx = $yyidx; $this->yystack = $stack; - return array_unique($expected); } - /** - * @param $iLookAhead - * - * @return int|mixed - */ + public function yy_is_expected_token($token) + { + static $res = array(); + static $res2 = array(); + if ($token === 0) { + return true; // 0 is not part of this + } + $state = $this->yystack[ $this->yyidx ]->stateno; + if (isset($res[ $state ][ $token ])) { + if ($res[ $state ][ $token ]) { + return true; + } + } else { + if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { + return true; + } + } + $stack = $this->yystack; + $yyidx = $this->yyidx; + do { + $yyact = $this->yy_find_shift_action($token); + if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { + // reduce action + $done = 0; + do { + if ($done++ === 100) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // too much recursion prevents proper detection + // so give up + return true; + } + $yyruleno = $yyact - self::YYNSTATE; + $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; + $nextstate = $this->yy_find_reduce_action( + $this->yystack[ $this->yyidx ]->stateno, + self::$yyRuleInfo[ $yyruleno ][ 0 ]); + if (isset($res2[ $nextstate ][ $token ])) { + if ($res2[ $nextstate ][ $token ]) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + return true; + } + } else { + if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) && + in_array($token, + self::$yyExpectedTokens[ $nextstate ], + true))) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + return true; + } + } + if ($nextstate < self::YYNSTATE) { + // we need to shift a non-terminal + $this->yyidx++; + $x = new TPC_yyStackEntry; + $x->stateno = $nextstate; + $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; + $this->yystack[ $this->yyidx ] = $x; + continue 2; + } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + if (!$token) { + // end of input: this is valid + return true; + } + // the last token was just ignored, we can't accept + // by ignoring input, this is in essence ignoring a + // syntax error! + return false; + } else if ($nextstate === self::YY_NO_ACTION) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // input accepted, but not shifted (I guess) + return true; + } else { + $yyact = $nextstate; + } + } while (true); + } + break; + } while (true); + $this->yyidx = $yyidx; + $this->yystack = $stack; + return true; + } + public function yy_find_shift_action($iLookAhead) { $stateno = $this->yystack[ $this->yyidx ]->stateno; - /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ if (!isset(self::$yy_shift_ofst[ $stateno ])) { // no shift actions @@ -462,123 +581,104 @@ public function yy_find_shift_action($iLookAhead) if ($i === self::YY_SHIFT_USE_DFLT) { return self::$yy_default[ $stateno ]; } - if ($iLookAhead == self::YYNOCODE) { + if ($iLookAhead === self::YYNOCODE) { return self::YY_NO_ACTION; } $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) { - if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) && - ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) { + if ($i < 0 || $i >= self::YY_SZ_ACTTAB || + self::$yy_lookahead[ $i ] != $iLookAhead) { + if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) + && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) { if ($this->yyTraceFILE) { fwrite($this->yyTraceFILE, - $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " . + $this->yyTracePrompt . "FALLBACK " . + $this->yyTokenName[ $iLookAhead ] . " => " . $this->yyTokenName[ $iFallback ] . "\n"); } - return $this->yy_find_shift_action($iFallback); } - return self::$yy_default[ $stateno ]; } else { return self::$yy_action[ $i ]; } } - /** - * @param $stateno - * @param $iLookAhead - * - * @return int|mixed - */ public function yy_find_reduce_action($stateno, $iLookAhead) { /* $stateno = $this->yystack[$this->yyidx]->stateno; */ - if (!isset(self::$yy_reduce_ofst[ $stateno ])) { return self::$yy_default[ $stateno ]; } $i = self::$yy_reduce_ofst[ $stateno ]; - if ($i == self::YY_REDUCE_USE_DFLT) { + if ($i === self::YY_REDUCE_USE_DFLT) { return self::$yy_default[ $stateno ]; } - if ($iLookAhead == self::YYNOCODE) { + if ($iLookAhead === self::YYNOCODE) { return self::YY_NO_ACTION; } $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) { + if ($i < 0 || $i >= self::YY_SZ_ACTTAB || + self::$yy_lookahead[ $i ] != $iLookAhead) { return self::$yy_default[ $stateno ]; } else { return self::$yy_action[ $i ]; } } - function yy_r0() - { - $this->_retvalue = null; - } - - function yy_r1() - { - $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor); - $this->_retvalue = null; - } - - /** - * add config variable to global vars - * - * @param array $vars - */ - private function add_global_vars(Array $vars) + public function yy_shift($yyNewState, $yyMajor, $yypMinor) { - if (!isset($this->compiler->config_data['vars'])) { - $this->compiler->config_data['vars'] = Array(); - } - foreach ($vars as $var) { - $this->set_var($var, $this->compiler->config_data); - } - } - - /** - * set a config variable in target array - * - * @param array $var - * @param array $target_array - */ - private function set_var(Array $var, Array &$target_array) - { - $key = $var["key"]; - $value = $var["value"]; - - if ($this->configOverwrite || !isset($target_array['vars'][ $key ])) { - $target_array['vars'][ $key ] = $value; - } else { - settype($target_array['vars'][ $key ], 'array'); - $target_array['vars'][ $key ][] = $value; + $this->yyidx++; + if ($this->yyidx >= self::YYSTACKDEPTH) { + $this->yyidx--; + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); + } + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } + #line 239 "../smarty/lexer/smarty_internal_configfileparser.y" + $this->internalError = true; + $this->compiler->trigger_config_file_error('Stack overflow in configfile parser'); + return; + } + $yytos = new TPC_yyStackEntry; + $yytos->stateno = $yyNewState; + $yytos->major = $yyMajor; + $yytos->minor = $yypMinor; + $this->yystack[] = $yytos; + if ($this->yyTraceFILE && $this->yyidx > 0) { + fprintf($this->yyTraceFILE, + "%sShift %d\n", + $this->yyTracePrompt, + $yyNewState); + fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); + for ($i = 1; $i <= $this->yyidx; $i++) { + fprintf($this->yyTraceFILE, + " %s", + $this->yyTokenName[ $this->yystack[ $i ]->major ]); + } + fwrite($this->yyTraceFILE, "\n"); } } - function yy_r4() + function yy_r0() { - $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); $this->_retvalue = null; } - /** - * add config variable to section - * - * @param string $section_name - * @param array $vars - */ - private function add_section_vars($section_name, Array $vars) + function yy_r1() { - if (!isset($this->compiler->config_data['sections'][ $section_name ]['vars'])) { - $this->compiler->config_data['sections'][ $section_name ]['vars'] = Array(); - } - foreach ($vars as $var) { - $this->set_var($var, $this->compiler->config_data['sections'][ $section_name ]); - } + $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor); + $this->_retvalue = null; + } + + function yy_r4() + { + $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); + $this->_retvalue = null; } + #line 245 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r5() { if ($this->configReadHidden) { @@ -588,180 +688,159 @@ function yy_r5() $this->_retvalue = null; } + #line 250 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r6() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; } - #line 245 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 264 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r7() { $this->_retvalue = - array_merge($this->yystack[ $this->yyidx + -1 ]->minor, Array($this->yystack[ $this->yyidx + 0 ]->minor)); + array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); } - #line 250 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 269 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r8() { - $this->_retvalue = Array(); + $this->_retvalue = array(); } - #line 264 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 277 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r9() { - $this->_retvalue = Array("key" => $this->yystack[ $this->yyidx + -2 ]->minor, - "value" => $this->yystack[ $this->yyidx + 0 ]->minor); + $this->_retvalue = array('key' => $this->yystack[ $this->yyidx + -2 ]->minor, + 'value' => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 269 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 281 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r10() { $this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor; } - #line 277 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 285 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r11() { $this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor; } - #line 281 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 291 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r12() { $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor); } - #line 285 "../smarty/lexer/smarty_internal_configfileparser.y" - - /** - * parse optional boolean keywords - * - * @param string $str - * - * @return bool - */ - private function parse_bool($str) - { - $str = strtolower($str); - if (in_array($str, array('on', 'yes', 'true'))) { - $res = true; - } else { - $res = false; - } - return $res; - } - - #line 291 "../smarty/lexer/smarty_internal_configfileparser.y" - + #line 296 "../smarty/lexer/smarty_internal_configfileparser.y" function yy_r13() { $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); } - #line 296 "../smarty/lexer/smarty_internal_configfileparser.y" - - /** - * parse single quoted string - * remove outer quotes - * unescape inner quotes - * - * @param string $qstr - * - * @return string - */ - private static function parse_single_quoted_string($qstr) - { - $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes - - $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE); - - $str = ""; - foreach ($ss as $s) { - if (strlen($s) === 2 && $s[0] === '\\') { - if (isset(self::$escapes_single[ $s[1] ])) { - $s = self::$escapes_single[ $s[1] ]; - } - } - $str .= $s; - } - return $str; - } - #line 300 "../smarty/lexer/smarty_internal_configfileparser.y" - function yy_r14() { $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); } #line 304 "../smarty/lexer/smarty_internal_configfileparser.y" - - /** - * parse double quoted string - * - * @param string $qstr - * - * @return string - */ - private static function parse_double_quoted_string($qstr) + function yy_r15() { - $inner_str = substr($qstr, 1, strlen($qstr) - 2); - return stripcslashes($inner_str); + $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor); } #line 308 "../smarty/lexer/smarty_internal_configfileparser.y" - - function yy_r15() + function yy_r16() { - $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor); + $this->_retvalue = ''; } #line 312 "../smarty/lexer/smarty_internal_configfileparser.y" - - /** - * parse triple quoted string - * - * @param string $qstr - * - * @return string - */ - private static function parse_tripple_double_quoted_string($qstr) + function yy_r17() { - return stripcslashes($qstr); + $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } #line 316 "../smarty/lexer/smarty_internal_configfileparser.y" - - function yy_r16() + public function yy_reduce($yyruleno) { - $this->_retvalue = ''; + if ($this->yyTraceFILE && $yyruleno >= 0 + && $yyruleno < count(self::$yyRuleName)) { + fprintf($this->yyTraceFILE, + "%sReduce (%d) [%s].\n", + $this->yyTracePrompt, + $yyruleno, + self::$yyRuleName[ $yyruleno ]); + } + $this->_retvalue = $yy_lefthand_side = null; + if (isset(self::$yyReduceMap[ $yyruleno ])) { + // call the action + $this->_retvalue = null; + $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}(); + $yy_lefthand_side = $this->_retvalue; + } + $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ]; + $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ]; + $this->yyidx -= $yysize; + for ($i = $yysize; $i; $i--) { + // pop all of the right-hand side parameters + array_pop($this->yystack); + } + $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto); + if ($yyact < self::YYNSTATE) { + if (!$this->yyTraceFILE && $yysize) { + $this->yyidx++; + $x = new TPC_yyStackEntry; + $x->stateno = $yyact; + $x->major = $yygoto; + $x->minor = $yy_lefthand_side; + $this->yystack[ $this->yyidx ] = $x; + } else { + $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); + } + } else if ($yyact === self::YYNSTATE + self::YYNRULE + 1) { + $this->yy_accept(); + } } #line 320 "../smarty/lexer/smarty_internal_configfileparser.y" - - function yy_r17() + public function yy_parse_failed() { - $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); + } + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } } #line 324 "../smarty/lexer/smarty_internal_configfileparser.y" + public function yy_syntax_error($yymajor, $TOKEN) + { + #line 232 "../smarty/lexer/smarty_internal_configfileparser.y" + $this->internalError = true; + $this->yymajor = $yymajor; + $this->compiler->trigger_config_file_error(); + } + + public function yy_accept() + { + if ($this->yyTraceFILE) { + fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); + } + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } + #line 225 "../smarty/lexer/smarty_internal_configfileparser.y" + $this->successful = !$this->internalError; + $this->internalError = false; + $this->retvalue = $this->_retvalue; + } - /** - * @param $yymajor - * @param $yytokenvalue - * - * @throws \SmartyCompilerException - */ public function doParse($yymajor, $yytokenvalue) { $yyerrorhit = 0; /* True if yymajor has invoked an error */ - if ($this->yyidx === null || $this->yyidx < 0) { $this->yyidx = 0; $this->yyerrcnt = -1; @@ -772,17 +851,16 @@ public function doParse($yymajor, $yytokenvalue) $this->yystack[] = $x; } $yyendofinput = ($yymajor == 0); - if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]); } - do { $yyact = $this->yy_find_shift_action($yymajor); - if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) { + if ($yymajor < self::YYERRORSYMBOL && + !$this->yy_is_expected_token($yymajor)) { // force a syntax error $yyact = self::YY_ERROR_ACTION; } @@ -796,7 +874,7 @@ public function doParse($yymajor, $yytokenvalue) } } else if ($yyact < self::YYNSTATE + self::YYNRULE) { $this->yy_reduce($yyact - self::YYNSTATE); - } else if ($yyact == self::YY_ERROR_ACTION) { + } else if ($yyact === self::YY_ERROR_ACTION) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sSyntax Error!\n", @@ -807,7 +885,7 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_syntax_error($yymajor, $yytokenvalue); } $yymx = $this->yystack[ $this->yyidx ]->major; - if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) { + if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", @@ -817,15 +895,17 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_destructor($yymajor, $yytokenvalue); $yymajor = self::YYNOCODE; } else { - while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL && - ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) { + while ($this->yyidx >= 0 && + $yymx !== self::YYERRORSYMBOL && + ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE + ) { $this->yy_pop_parser_stack(); } if ($this->yyidx < 0 || $yymajor == 0) { $this->yy_destructor($yymajor, $yytokenvalue); $this->yy_parse_failed(); $yymajor = self::YYNOCODE; - } else if ($yymx != self::YYERRORSYMBOL) { + } else if ($yymx !== self::YYERRORSYMBOL) { $u2 = 0; $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); } @@ -847,231 +927,73 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_accept(); $yymajor = self::YYNOCODE; } - } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); + } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); } /** - * @param $token + * parse optional boolean keywords + * + * @param string $str * * @return bool */ - public function yy_is_expected_token($token) + private function parse_bool($str) { - static $res = array(); - static $res2 = array(); - if ($token === 0) { - return true; // 0 is not part of this - } - $state = $this->yystack[ $this->yyidx ]->stateno; - if (isset($res[ $state ][ $token ])) { - if ($res[ $state ][ $token ]) { - return true; - } + $str = strtolower($str); + if (in_array($str, array('on', 'yes', 'true'))) { + $res = true; } else { - if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { - return true; - } + $res = false; } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ == 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return true; - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][1]; - $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][0]); - if (isset($res2[ $nextstate ][ $token ])) { - if ($res2[ $nextstate ][ $token ]) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } else { - if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) && - in_array($token, - self::$yyExpectedTokens[ $nextstate ], - true))) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new TPC_yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[ $yyruleno ][0]; - $this->yystack[ $this->yyidx ] = $x; - continue 2; - } else if ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - if (!$token) { - // end of input: this is valid - return true; - } - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return false; - } else if ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return true; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - - return true; + return $res; } /** - * @param $yyNewState - * @param $yyMajor - * @param $yypMinor + * set a config variable in target array * - * @throws \SmartyCompilerException + * @param array $var + * @param array $target_array */ - public function yy_shift($yyNewState, $yyMajor, $yypMinor) + private function set_var(array $var, array &$target_array) { - $this->yyidx++; - if ($this->yyidx >= self::YYSTACKDEPTH) { - $this->yyidx--; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - #line 239 "../smarty/lexer/smarty_internal_configfileparser.y" - - $this->internalError = true; - $this->compiler->trigger_config_file_error("Stack overflow in configfile parser"); - - return; - } - $yytos = new TPC_yyStackEntry; - $yytos->stateno = $yyNewState; - $yytos->major = $yyMajor; - $yytos->minor = $yypMinor; - $this->yystack[] = $yytos; - if ($this->yyTraceFILE && $this->yyidx > 0) { - fprintf($this->yyTraceFILE, - "%sShift %d\n", - $this->yyTracePrompt, - $yyNewState); - fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); - for ($i = 1; $i <= $this->yyidx; $i++) { - fprintf($this->yyTraceFILE, - " %s", - $this->yyTokenName[ $this->yystack[ $i ]->major ]); - } - fwrite($this->yyTraceFILE, "\n"); + $key = $var[ 'key' ]; + $value = $var[ 'value' ]; + if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) { + $target_array[ 'vars' ][ $key ] = $value; + } else { + settype($target_array[ 'vars' ][ $key ], 'array'); + $target_array[ 'vars' ][ $key ][] = $value; } } /** - * @param $yyruleno + * add config variable to global vars * - * @throws \SmartyCompilerException + * @param array $vars */ - public function yy_reduce($yyruleno) + private function add_global_vars(array $vars) { - if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) { - fprintf($this->yyTraceFILE, - "%sReduce (%d) [%s].\n", - $this->yyTracePrompt, - $yyruleno, - self::$yyRuleName[ $yyruleno ]); + if (!isset($this->compiler->config_data[ 'vars' ])) { + $this->compiler->config_data[ 'vars' ] = array(); } - - $this->_retvalue = $yy_lefthand_side = null; - if (isset(self::$yyReduceMap[ $yyruleno ])) { - // call the action - $this->_retvalue = null; - $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}(); - $yy_lefthand_side = $this->_retvalue; - } - $yygoto = self::$yyRuleInfo[ $yyruleno ][0]; - $yysize = self::$yyRuleInfo[ $yyruleno ][1]; - $this->yyidx -= $yysize; - for ($i = $yysize; $i; $i--) { - // pop all of the right-hand side parameters - array_pop($this->yystack); - } - $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto); - if ($yyact < self::YYNSTATE) { - if (!$this->yyTraceFILE && $yysize) { - $this->yyidx++; - $x = new TPC_yyStackEntry; - $x->stateno = $yyact; - $x->major = $yygoto; - $x->minor = $yy_lefthand_side; - $this->yystack[ $this->yyidx ] = $x; - } else { - $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); - } - } else if ($yyact == self::YYNSTATE + self::YYNRULE + 1) { - $this->yy_accept(); - } - } - - public function yy_accept() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); + foreach ($vars as $var) { + $this->set_var($var, $this->compiler->config_data); } - #line 225 "../smarty/lexer/smarty_internal_configfileparser.y" - - $this->successful = !$this->internalError; - $this->internalError = false; - $this->retvalue = $this->_retvalue; } /** - * @param $yymajor - * @param $TOKEN + * add config variable to section * - * @throws \SmartyCompilerException + * @param string $section_name + * @param array $vars */ - public function yy_syntax_error($yymajor, $TOKEN) - { - #line 232 "../smarty/lexer/smarty_internal_configfileparser.y" - - $this->internalError = true; - $this->yymajor = $yymajor; - $this->compiler->trigger_config_file_error(); - } - - public function yy_parse_failed() + private function add_section_vars($section_name, array $vars) { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); + if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) { + $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array(); } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); + foreach ($vars as $var) { + $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]); } } } diff --git a/libs/sysplugins/smarty_internal_templatelexer.php b/libs/sysplugins/smarty_internal_templatelexer.php index 3da1a2dab..02587c435 100644 --- a/libs/sysplugins/smarty_internal_templatelexer.php +++ b/libs/sysplugins/smarty_internal_templatelexer.php @@ -250,17 +250,11 @@ public function isAutoLiteral() strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false; } // end function - /** - * @return mixed - */ public function yylex() { return $this->{'yylex' . $this->_yy_state}(); } - /** - * @param $state - */ public function yypushstate($state) { if ($this->yyTraceFILE) { @@ -300,9 +294,6 @@ public function yypopstate() } } - /** - * @param $state - */ public function yybegin($state) { $this->_yy_state = $state; @@ -315,10 +306,6 @@ public function yybegin($state) } } - /** - * @return bool - * @throws \Exception - */ public function yylex1() { if (!isset($this->yy_global_pattern1)) { @@ -379,17 +366,13 @@ function yy_r1_1() $this->token = Smarty_Internal_Templateparser::TP_TEXT; } - /** - * @return bool - * @throws \SmartyCompilerException - */ function yy_r1_2() { preg_match("/[*]{$this->compiler->getRdelPreg()}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); if (isset($match[ 0 ][ 1 ])) { $to = $match[ 0 ][ 1 ] + strlen($match[ 0 ][ 0 ]); } else { - $this->compiler->trigger_template_error("missing or misspelled comment closing tag '*{$this->smarty->getRightDelimiter()}'"); + $this->compiler->trigger_template_error("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'"); } $this->value = substr($this->data, $this->counter, $to - $this->counter); return false; @@ -417,9 +400,6 @@ function yy_r1_12() $this->yypushstate(self::LITERAL); } // end function - /** - * @return bool - */ function yy_r1_14() { $this->yypushstate(self::TAG); @@ -436,10 +416,6 @@ function yy_r1_19() $this->token = Smarty_Internal_Templateparser::TP_TEXT; } - /** - * @return bool - * @throws \Exception - */ public function yylex2() { if (!isset($this->yy_global_pattern2)) { @@ -572,15 +548,11 @@ function yy_r2_22() $this->taglineno = $this->line; } - /** - * @return bool - * @throws \Exception - */ public function yylex3() { if (!isset($this->yy_global_pattern3)) { $this->yy_global_pattern3 = - $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|])|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); + $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -637,9 +609,6 @@ function yy_r3_1() $this->yypopstate(); } - /** - * @return bool - */ function yy_r3_2() { $this->yypushstate(self::TAG); @@ -867,10 +836,6 @@ function yy_r3_59() $this->token = Smarty_Internal_Templateparser::TP_TEXT; } - /** - * @return bool - * @throws \Exception - */ public function yylex4() { if (!isset($this->yy_global_pattern4)) { @@ -948,10 +913,6 @@ function yy_r4_5() $this->token = Smarty_Internal_Templateparser::TP_LITERAL; } // end function - /** - * @return bool - * @throws \Exception - */ public function yylex5() { if (!isset($this->yy_global_pattern5)) { @@ -1022,18 +983,12 @@ function yy_r5_5() $this->token = Smarty_Internal_Templateparser::TP_TEXT; } - /** - * @return bool - */ function yy_r5_7() { $this->yypushstate(self::TAG); return true; } - /** - * @return bool - */ function yy_r5_9() { $this->yypushstate(self::TAG); diff --git a/libs/sysplugins/smarty_internal_templateparser.php b/libs/sysplugins/smarty_internal_templateparser.php index 7f2bb322a..66d72b5ea 100644 --- a/libs/sysplugins/smarty_internal_templateparser.php +++ b/libs/sysplugins/smarty_internal_templateparser.php @@ -1,101 +1,5 @@ string = $s->string; - $this->metadata = $s->metadata; - } else { - $this->string = (string)$s; - if ($m instanceof TP_yyToken) { - $this->metadata = $m->metadata; - } else if (is_array($m)) { - $this->metadata = $m; - } - } - } - - /** - * @return string - */ - public function __toString() - { - return $this->string; - } - - /** - * @param mixed $offset - * - * @return bool - */ - public function offsetExists($offset) - { - return isset($this->metadata[ $offset ]); - } - - /** - * @param mixed $offset - * - * @return mixed - */ - public function offsetGet($offset) - { - return $this->metadata[ $offset ]; - } - - /** - * @param mixed $offset - * @param mixed $value - */ - public function offsetSet($offset, $value) - { - if ($offset === null) { - if (isset($value[ 0 ])) { - $x = ($value instanceof TP_yyToken) ? - $value->metadata : $value; - $this->metadata = array_merge($this->metadata, $x); - return; - } - $offset = count($this->metadata); - } - if ($value === null) { - return; - } - if ($value instanceof TP_yyToken) { - if ($value->metadata) { - $this->metadata[ $offset ] = $value->metadata; - } - } else if ($value) { - $this->metadata[ $offset ] = $value; - } - } - - /** - * @param mixed $offset - */ - public function offsetUnset($offset) - { - unset($this->metadata[ $offset ]); - } -} - -/** - * Class TP_yyStackEntry - */ class TP_yyStackEntry { public $stateno; /* The state-number */ @@ -132,12 +36,12 @@ class Smarty_Internal_Templateparser const TP_LITERALSTART = 8; const TP_LITERALEND = 9; const TP_LITERAL = 10; - const TP_RDEL = 11; - const TP_SIMPELOUTPUT = 12; + const TP_SIMPELOUTPUT = 11; + const TP_SIMPLETAG = 12; const TP_LDEL = 13; - const TP_DOLLARID = 14; - const TP_EQUAL = 15; - const TP_SIMPLETAG = 16; + const TP_RDEL = 14; + const TP_DOLLARID = 15; + const TP_EQUAL = 16; const TP_ID = 17; const TP_PTR = 18; const TP_LDELMAKENOCACHE = 19; @@ -181,553 +85,523 @@ class Smarty_Internal_Templateparser const TP_SINGLECOND = 57; const TP_QUOTE = 58; const TP_BACKTICK = 59; - const YY_NO_ACTION = 521; - const YY_ACCEPT_ACTION = 520; - const YY_ERROR_ACTION = 519; - const YY_SZ_ACTTAB = 2078; - const YY_SHIFT_USE_DFLT = -34; - const YY_SHIFT_MAX = 231; + const YY_NO_ACTION = 509; + const YY_ACCEPT_ACTION = 508; + const YY_ERROR_ACTION = 507; + const YY_SZ_ACTTAB = 1956; + const YY_SHIFT_USE_DFLT = -13; + const YY_SHIFT_MAX = 227; const YY_REDUCE_USE_DFLT = -75; - const YY_REDUCE_MAX = 185; - const YYNOCODE = 106; + const YY_REDUCE_MAX = 176; + const YYNOCODE = 107; const YYSTACKDEPTH = 500; - const YYNSTATE = 327; - const YYNRULE = 192; + const YYNSTATE = 322; + const YYNRULE = 185; const YYERRORSYMBOL = 60; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; static public $yy_action = array( - 41, 21, 4, 290, 16, 189, 176, 119, 275, 325, - 35, 128, 99, 273, 190, 134, 214, 5, 84, 306, - 347, 289, 8, 107, 318, 274, 13, 226, 277, 211, - 448, 205, 284, 9, 233, 284, 36, 448, 44, 42, - 261, 223, 34, 208, 324, 202, 36, 82, 1, 241, - 324, 41, 34, 22, 78, 79, 96, 78, 279, 15, - 325, 35, 132, 280, 273, 201, 206, 214, 5, 84, - 119, 295, 25, 224, 107, 99, 168, 436, 226, 277, - 211, 320, 230, 231, 9, 111, 284, 318, 436, 44, - 42, 261, 223, 284, 265, 216, 202, 36, 82, 1, - 41, 324, 215, 34, 227, 199, 79, 104, 78, 325, - 35, 132, 324, 273, 201, 78, 214, 5, 84, 245, - 237, 232, 212, 107, 284, 228, 148, 226, 277, 211, - 91, 187, 29, 9, 133, 96, 281, 288, 44, 42, - 261, 223, 10, 265, 244, 202, 78, 82, 1, 41, - 324, 93, 26, 250, 185, 79, 279, 15, 325, 35, - 132, 280, 273, 188, 111, 214, 5, 84, 287, 197, - 82, 252, 107, 324, 197, 3, 226, 277, 211, 388, - 196, 136, 9, 133, 391, 154, 207, 44, 42, 261, - 223, 197, 265, 213, 202, 388, 82, 1, 41, 324, - 391, 388, 283, 88, 79, 158, 391, 325, 35, 129, - 324, 273, 80, 19, 214, 5, 84, 36, 197, 82, - 324, 107, 324, 34, 435, 226, 277, 211, 349, 230, - 262, 9, 210, 137, 222, 435, 44, 42, 261, 223, - 255, 265, 231, 202, 36, 82, 1, 41, 324, 285, - 34, 172, 298, 79, 464, 464, 325, 35, 133, 464, - 273, 201, 14, 214, 5, 84, 464, 464, 34, 27, - 107, 464, 324, 147, 226, 277, 211, 173, 230, 215, - 12, 225, 90, 281, 104, 44, 42, 261, 223, 156, - 265, 464, 202, 301, 82, 1, 41, 324, 228, 279, - 15, 185, 79, 103, 280, 325, 35, 132, 276, 273, - 186, 2, 214, 5, 84, 177, 293, 322, 10, 107, - 243, 326, 106, 226, 277, 211, 10, 230, 257, 9, - 144, 31, 85, 308, 44, 42, 261, 223, 435, 265, - 281, 202, 142, 82, 1, 41, 324, 305, 164, 435, - 282, 79, 281, 282, 325, 35, 130, 174, 273, 201, - 435, 214, 5, 84, 139, 282, 282, 7, 107, 151, - 448, 435, 226, 277, 211, 301, 230, 448, 6, 281, - 228, 185, 276, 44, 42, 261, 223, 96, 265, 38, - 202, 141, 82, 1, 41, 324, 197, 181, 231, 310, - 79, 281, 309, 325, 35, 132, 239, 273, 191, 272, - 214, 5, 84, 134, 173, 296, 123, 107, 138, 181, - 8, 226, 277, 211, 215, 230, 234, 9, 281, 104, - 179, 298, 44, 42, 261, 223, 152, 265, 185, 202, - 153, 82, 1, 41, 324, 104, 281, 291, 96, 79, - 197, 178, 325, 35, 131, 180, 273, 201, 217, 214, - 5, 84, 197, 169, 100, 175, 107, 219, 197, 157, - 226, 277, 211, 268, 230, 185, 9, 111, 92, 281, - 123, 44, 42, 261, 223, 197, 265, 185, 202, 166, - 82, 1, 41, 324, 96, 353, 32, 319, 79, 281, - 258, 325, 35, 133, 181, 273, 201, 108, 214, 5, - 84, 197, 38, 256, 313, 107, 263, 171, 209, 226, - 277, 211, 165, 230, 161, 12, 40, 17, 271, 242, - 44, 42, 261, 223, 22, 265, 236, 202, 254, 82, - 286, 185, 324, 170, 298, 278, 267, 79, 259, 182, - 83, 228, 203, 251, 110, 68, 112, 3, 11, 118, - 323, 99, 269, 24, 264, 312, 113, 282, 285, 260, - 194, 266, 86, 318, 135, 155, 299, 162, 235, 246, - 238, 304, 177, 198, 303, 87, 325, 35, 167, 299, - 273, 299, 299, 214, 5, 84, 299, 299, 299, 299, - 107, 299, 267, 299, 226, 277, 211, 228, 203, 299, - 117, 57, 102, 299, 225, 299, 299, 99, 140, 299, - 264, 312, 171, 299, 299, 260, 194, 266, 281, 318, - 267, 40, 17, 271, 299, 228, 203, 299, 117, 47, - 102, 299, 114, 299, 299, 99, 185, 299, 264, 312, - 197, 299, 39, 260, 194, 266, 299, 318, 267, 299, - 299, 299, 299, 228, 203, 299, 110, 68, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 145, 260, 194, 266, 171, 318, 218, 43, 37, 299, - 281, 299, 267, 40, 17, 271, 302, 228, 203, 299, - 117, 66, 112, 317, 315, 314, 311, 99, 185, 299, - 264, 312, 299, 307, 299, 260, 194, 266, 299, 318, - 325, 28, 300, 299, 273, 299, 204, 214, 5, 84, - 299, 299, 279, 15, 107, 307, 299, 280, 226, 277, - 211, 299, 325, 28, 300, 299, 273, 36, 299, 214, - 5, 84, 299, 34, 143, 299, 107, 299, 89, 299, - 226, 277, 211, 299, 281, 299, 297, 30, 520, 52, - 249, 237, 232, 212, 299, 267, 228, 299, 299, 299, - 228, 203, 185, 117, 66, 112, 279, 15, 299, 30, - 99, 280, 299, 264, 312, 299, 299, 299, 260, 194, - 266, 36, 318, 163, 299, 267, 299, 34, 299, 200, - 228, 203, 299, 117, 66, 112, 299, 299, 299, 299, - 99, 299, 299, 264, 312, 197, 299, 299, 260, 194, - 266, 299, 318, 299, 299, 359, 299, 299, 299, 195, - 267, 299, 221, 299, 299, 228, 203, 299, 117, 77, - 112, 36, 299, 299, 299, 99, 299, 34, 264, 312, - 435, 299, 299, 260, 194, 266, 299, 318, 299, 299, - 267, 435, 299, 299, 299, 228, 203, 299, 117, 74, - 112, 299, 299, 299, 299, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 299, 299, - 299, 299, 299, 299, 267, 299, 401, 401, 401, 228, - 203, 299, 97, 72, 112, 299, 299, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 69, - 112, 435, 299, 401, 401, 99, 299, 299, 264, 312, - 299, 299, 435, 260, 194, 266, 299, 318, 267, 401, - 401, 401, 401, 228, 203, 299, 117, 60, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 94, 299, 81, 51, 101, 299, 253, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 97, 53, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 98, 75, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 192, 299, 117, 55, 112, 299, 183, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 67, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 193, 299, 115, 54, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 20, 39, 228, - 203, 299, 117, 71, 112, 299, 299, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 70, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 117, 76, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 203, 299, 117, 57, 112, 299, 184, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 109, 49, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 117, 65, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 203, 299, 117, 64, 112, 299, 247, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 56, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 117, 50, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 95, 299, 81, 46, 101, 299, 299, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 48, - 112, 299, 240, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 117, 58, 112, 299, - 299, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 197, 299, 39, 228, - 203, 299, 117, 73, 112, 299, 299, 299, 299, 99, - 299, 299, 264, 312, 299, 299, 299, 260, 194, 266, - 267, 318, 299, 150, 299, 228, 203, 299, 117, 45, - 112, 299, 299, 43, 37, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 317, - 315, 314, 311, 228, 203, 299, 117, 62, 112, 299, - 39, 299, 299, 99, 299, 299, 264, 312, 299, 299, - 299, 260, 194, 266, 267, 318, 299, 299, 299, 228, - 203, 299, 117, 61, 112, 299, 299, 299, 299, 99, - 299, 299, 264, 312, 299, 43, 37, 260, 194, 266, - 267, 318, 299, 299, 299, 228, 203, 299, 117, 59, - 112, 317, 315, 314, 311, 99, 299, 299, 264, 312, - 299, 299, 299, 260, 194, 266, 299, 318, 267, 299, - 197, 299, 39, 228, 203, 299, 117, 63, 112, 197, - 299, 39, 299, 99, 299, 299, 264, 312, 299, 321, - 299, 260, 194, 266, 23, 318, 36, 299, 299, 299, - 299, 299, 34, 299, 267, 36, 299, 43, 37, 228, - 203, 34, 127, 299, 112, 299, 43, 37, 299, 99, - 299, 299, 299, 317, 315, 314, 311, 260, 194, 266, - 299, 318, 317, 315, 314, 311, 299, 267, 229, 299, - 299, 299, 228, 203, 299, 125, 299, 112, 464, 464, - 299, 21, 99, 464, 448, 299, 248, 299, 299, 299, - 260, 194, 266, 197, 318, 39, 299, 267, 299, 299, - 299, 299, 228, 203, 299, 124, 299, 112, 299, 299, - 448, 299, 99, 448, 299, 464, 270, 448, 299, 36, - 260, 194, 266, 299, 318, 34, 299, 267, 299, 299, - 43, 37, 228, 203, 299, 116, 299, 112, 299, 299, - 299, 299, 99, 299, 299, 299, 317, 315, 314, 311, - 260, 194, 266, 299, 318, 267, 299, 299, 299, 299, - 228, 203, 299, 121, 299, 112, 299, 299, 299, 299, - 99, 299, 299, 299, 299, 299, 299, 299, 260, 194, - 266, 267, 318, 229, 299, 299, 228, 203, 299, 120, - 299, 112, 299, 464, 464, 299, 99, 299, 464, 448, - 299, 299, 299, 299, 260, 194, 266, 299, 318, 299, - 299, 267, 299, 299, 299, 299, 228, 203, 299, 122, - 299, 112, 299, 299, 299, 448, 99, 299, 448, 229, - 464, 299, 448, 292, 260, 194, 266, 299, 318, 464, - 464, 299, 18, 267, 464, 448, 299, 299, 228, 203, - 197, 126, 39, 112, 299, 299, 299, 299, 99, 299, - 197, 299, 39, 299, 299, 299, 260, 194, 266, 299, - 318, 448, 299, 299, 448, 299, 464, 299, 448, 33, - 299, 105, 299, 299, 299, 299, 299, 43, 37, 464, - 464, 299, 299, 299, 464, 448, 299, 43, 37, 299, - 299, 316, 299, 317, 315, 314, 311, 229, 197, 299, - 39, 299, 299, 317, 315, 314, 311, 464, 464, 299, - 299, 448, 464, 448, 448, 299, 464, 299, 448, 299, - 299, 299, 299, 299, 299, 464, 464, 299, 299, 299, - 464, 448, 197, 299, 39, 43, 37, 299, 299, 448, - 299, 299, 448, 299, 464, 299, 448, 299, 299, 299, - 299, 317, 315, 314, 311, 299, 294, 448, 299, 299, - 448, 299, 464, 146, 448, 299, 299, 171, 395, 43, - 37, 299, 299, 281, 299, 299, 40, 17, 271, 395, - 299, 395, 299, 299, 395, 317, 315, 314, 311, 299, - 395, 185, 395, 299, 395, 299, 299, 299, 159, 299, - 299, 231, 171, 299, 299, 299, 160, 299, 281, 299, - 171, 40, 17, 271, 149, 299, 281, 299, 171, 40, - 17, 271, 299, 299, 281, 299, 185, 40, 17, 271, - 299, 389, 299, 299, 185, 220, 299, 299, 299, 299, - 299, 299, 185, 299, 299, 299, 299, 389, 299, 299, - 299, 299, 299, 389, 299, 299, 435, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 299, 435, + 41, 15, 301, 113, 209, 252, 254, 12, 274, 275, + 1, 251, 124, 95, 183, 165, 211, 10, 79, 141, + 14, 204, 248, 107, 6, 316, 17, 212, 250, 215, + 452, 188, 452, 13, 9, 23, 452, 436, 42, 38, + 258, 213, 287, 225, 41, 193, 32, 77, 3, 230, + 302, 295, 274, 275, 1, 75, 128, 132, 189, 83, + 211, 10, 79, 436, 200, 204, 436, 107, 452, 153, + 436, 212, 250, 215, 452, 206, 452, 26, 85, 4, + 452, 436, 42, 38, 258, 213, 306, 310, 41, 193, + 246, 77, 3, 116, 302, 302, 274, 275, 1, 75, + 127, 247, 189, 171, 211, 10, 79, 436, 7, 18, + 436, 107, 452, 166, 436, 212, 250, 215, 452, 206, + 452, 13, 202, 74, 452, 436, 42, 38, 258, 213, + 238, 310, 41, 193, 97, 77, 3, 175, 302, 205, + 274, 275, 1, 75, 127, 247, 179, 240, 211, 10, + 79, 436, 321, 204, 436, 107, 452, 190, 436, 212, + 250, 215, 452, 194, 452, 13, 253, 74, 452, 436, + 42, 38, 258, 213, 37, 310, 41, 193, 168, 77, + 3, 294, 302, 14, 274, 275, 1, 75, 127, 17, + 177, 149, 211, 10, 79, 436, 266, 267, 436, 107, + 452, 265, 436, 212, 250, 215, 452, 206, 452, 13, + 190, 190, 452, 436, 42, 38, 258, 213, 129, 310, + 41, 193, 190, 77, 3, 11, 302, 201, 274, 275, + 1, 75, 126, 436, 189, 22, 211, 10, 79, 436, + 436, 17, 436, 107, 452, 167, 436, 212, 250, 215, + 128, 206, 255, 13, 39, 28, 307, 87, 42, 38, + 258, 213, 312, 310, 41, 193, 89, 77, 3, 175, + 302, 232, 274, 275, 1, 75, 127, 173, 189, 267, + 211, 10, 79, 261, 252, 77, 12, 107, 302, 279, + 251, 212, 250, 215, 35, 178, 182, 13, 260, 21, + 14, 92, 42, 38, 258, 213, 17, 310, 41, 193, + 158, 77, 3, 138, 302, 259, 274, 275, 1, 75, + 127, 252, 184, 12, 211, 10, 79, 251, 219, 30, + 104, 107, 423, 5, 302, 212, 250, 215, 31, 206, + 226, 13, 144, 423, 105, 291, 42, 38, 258, 213, + 151, 310, 41, 193, 20, 77, 3, 205, 302, 207, + 274, 275, 1, 75, 125, 452, 189, 452, 211, 10, + 79, 452, 161, 292, 24, 107, 233, 6, 302, 212, + 250, 215, 128, 206, 218, 8, 21, 4, 136, 92, + 42, 38, 258, 213, 308, 310, 41, 193, 265, 77, + 3, 116, 302, 452, 274, 275, 1, 75, 91, 252, + 76, 12, 211, 10, 79, 251, 171, 77, 104, 107, + 302, 164, 423, 212, 250, 215, 301, 206, 209, 13, + 220, 315, 135, 423, 42, 38, 258, 213, 229, 310, + 41, 193, 265, 77, 3, 175, 302, 222, 274, 275, + 1, 75, 128, 452, 189, 452, 211, 10, 79, 452, + 171, 190, 241, 107, 237, 80, 298, 212, 250, 215, + 34, 206, 92, 26, 24, 231, 244, 423, 42, 38, + 258, 213, 247, 310, 23, 193, 78, 77, 423, 33, + 302, 305, 214, 209, 280, 75, 84, 103, 129, 181, + 94, 56, 302, 131, 74, 11, 95, 170, 101, 256, + 245, 16, 436, 424, 309, 192, 311, 281, 316, 436, + 305, 214, 209, 280, 424, 84, 103, 190, 180, 94, + 64, 175, 253, 163, 262, 95, 160, 292, 256, 245, + 376, 302, 216, 309, 192, 311, 305, 316, 209, 217, + 196, 100, 99, 376, 195, 106, 68, 175, 133, 376, + 19, 95, 86, 283, 256, 245, 154, 236, 265, 309, + 192, 311, 305, 316, 209, 276, 265, 100, 103, 205, + 180, 94, 64, 187, 297, 282, 175, 95, 155, 264, + 256, 245, 377, 257, 227, 309, 192, 311, 265, 316, + 271, 272, 273, 270, 122, 377, 269, 274, 275, 1, + 24, 377, 290, 284, 423, 211, 10, 79, 169, 134, + 221, 249, 107, 88, 216, 423, 212, 250, 215, 265, + 305, 210, 209, 152, 99, 98, 263, 343, 195, 114, + 50, 172, 210, 265, 228, 95, 247, 175, 256, 245, + 343, 190, 278, 309, 192, 311, 343, 316, 117, 299, + 142, 137, 264, 264, 344, 274, 275, 2, 74, 300, + 161, 292, 216, 211, 10, 79, 268, 344, 209, 239, + 107, 299, 99, 344, 212, 250, 215, 274, 275, 2, + 157, 300, 190, 37, 167, 211, 10, 79, 92, 139, + 265, 110, 107, 39, 28, 307, 212, 250, 215, 99, + 303, 143, 286, 27, 305, 190, 209, 43, 175, 98, + 147, 265, 195, 114, 45, 277, 108, 104, 262, 95, + 265, 81, 256, 245, 285, 27, 109, 309, 192, 311, + 305, 316, 209, 264, 113, 100, 148, 208, 195, 106, + 68, 82, 40, 36, 95, 95, 162, 292, 256, 245, + 190, 508, 90, 309, 192, 311, 316, 316, 320, 318, + 317, 314, 305, 379, 209, 203, 199, 100, 296, 138, + 195, 114, 63, 130, 92, 289, 379, 95, 264, 150, + 256, 245, 379, 293, 247, 309, 192, 311, 343, 316, + 305, 159, 209, 293, 343, 100, 197, 293, 195, 114, + 63, 293, 293, 293, 293, 95, 74, 293, 256, 245, + 293, 293, 293, 309, 192, 311, 293, 316, 293, 293, + 305, 293, 209, 293, 198, 100, 293, 293, 195, 114, + 63, 293, 293, 293, 293, 95, 293, 293, 256, 245, + 293, 293, 293, 309, 192, 311, 293, 316, 293, 293, + 293, 305, 293, 209, 191, 293, 100, 293, 293, 195, + 114, 49, 293, 190, 293, 43, 95, 293, 293, 256, + 245, 293, 293, 293, 309, 192, 311, 293, 316, 305, + 293, 209, 293, 293, 100, 293, 293, 195, 114, 61, + 293, 293, 293, 293, 95, 293, 293, 256, 245, 293, + 40, 36, 309, 192, 311, 305, 316, 209, 293, 293, + 100, 293, 293, 195, 114, 69, 320, 318, 317, 314, + 95, 293, 293, 256, 245, 293, 293, 293, 309, 192, + 311, 293, 316, 293, 293, 305, 293, 209, 293, 293, + 100, 293, 293, 195, 114, 66, 293, 190, 293, 43, + 95, 293, 293, 256, 245, 293, 293, 293, 309, 192, + 311, 293, 316, 305, 293, 209, 293, 293, 100, 293, + 293, 195, 114, 54, 146, 293, 293, 293, 95, 293, + 293, 256, 245, 293, 40, 36, 309, 192, 311, 305, + 316, 209, 293, 293, 100, 293, 293, 195, 114, 53, + 320, 318, 317, 314, 95, 293, 293, 256, 245, 293, + 293, 293, 309, 192, 311, 293, 316, 293, 293, 305, + 293, 209, 293, 293, 100, 293, 293, 195, 114, 47, + 293, 190, 25, 43, 95, 293, 293, 256, 245, 293, + 293, 293, 309, 192, 311, 293, 316, 305, 293, 209, + 293, 293, 100, 293, 293, 195, 96, 59, 293, 293, + 293, 293, 95, 293, 293, 256, 245, 293, 40, 36, + 309, 192, 311, 305, 316, 209, 293, 293, 100, 293, + 293, 195, 114, 73, 320, 318, 317, 314, 95, 293, + 293, 256, 245, 293, 293, 293, 309, 192, 311, 293, + 316, 293, 293, 305, 293, 209, 293, 293, 100, 293, + 293, 195, 114, 71, 293, 190, 293, 43, 95, 293, + 293, 256, 245, 293, 293, 293, 309, 192, 311, 293, + 316, 305, 293, 209, 293, 293, 100, 293, 293, 185, + 102, 52, 293, 293, 293, 293, 95, 293, 293, 256, + 245, 234, 40, 36, 309, 192, 311, 305, 316, 209, + 293, 293, 100, 293, 293, 195, 93, 65, 320, 318, + 317, 314, 95, 293, 293, 256, 245, 293, 293, 293, + 309, 192, 311, 293, 316, 293, 293, 305, 293, 209, + 293, 293, 100, 293, 293, 195, 114, 46, 293, 190, + 293, 43, 95, 293, 293, 256, 245, 293, 293, 293, + 309, 192, 311, 293, 316, 305, 293, 209, 293, 293, + 100, 293, 293, 195, 114, 58, 293, 293, 293, 293, + 95, 293, 293, 256, 245, 223, 40, 36, 309, 192, + 311, 305, 316, 209, 293, 293, 100, 293, 293, 195, + 114, 50, 320, 318, 317, 314, 95, 293, 293, 256, + 245, 293, 293, 293, 309, 192, 311, 293, 316, 293, + 293, 305, 293, 209, 293, 293, 100, 293, 293, 195, + 114, 44, 293, 190, 293, 43, 95, 293, 293, 256, + 245, 293, 293, 293, 309, 192, 311, 293, 316, 305, + 293, 209, 293, 293, 100, 293, 293, 195, 114, 48, + 293, 293, 293, 293, 95, 293, 293, 256, 245, 293, + 40, 36, 309, 192, 311, 305, 316, 209, 293, 293, + 100, 293, 293, 195, 114, 72, 320, 318, 317, 314, + 95, 293, 293, 256, 245, 293, 293, 293, 309, 192, + 311, 293, 316, 293, 293, 305, 293, 209, 293, 293, + 100, 293, 293, 195, 114, 51, 293, 293, 293, 43, + 95, 293, 293, 256, 245, 293, 293, 293, 309, 192, + 311, 293, 316, 305, 293, 209, 293, 293, 100, 293, + 293, 195, 114, 67, 293, 293, 293, 293, 95, 293, + 293, 256, 245, 293, 40, 36, 309, 192, 311, 305, + 316, 209, 293, 293, 100, 293, 293, 186, 114, 57, + 320, 318, 317, 314, 95, 293, 293, 256, 245, 293, + 293, 293, 309, 192, 311, 293, 316, 293, 293, 305, + 293, 209, 293, 293, 100, 293, 293, 195, 114, 60, + 293, 293, 293, 293, 95, 293, 293, 256, 245, 293, + 293, 293, 309, 192, 311, 293, 316, 305, 293, 209, + 293, 293, 100, 293, 293, 195, 114, 62, 293, 293, + 293, 293, 95, 293, 293, 256, 245, 293, 293, 293, + 309, 192, 311, 305, 316, 209, 293, 293, 100, 293, + 293, 195, 114, 70, 293, 293, 293, 293, 95, 293, + 293, 256, 245, 293, 293, 293, 309, 192, 311, 293, + 316, 293, 293, 305, 293, 209, 293, 293, 100, 293, + 293, 195, 93, 55, 389, 389, 389, 293, 95, 293, + 293, 256, 245, 293, 293, 293, 309, 192, 311, 293, + 316, 305, 293, 209, 293, 293, 100, 293, 293, 195, + 118, 293, 293, 293, 293, 293, 95, 293, 293, 423, + 304, 389, 389, 293, 309, 192, 311, 190, 316, 43, + 423, 190, 293, 43, 293, 293, 293, 389, 389, 389, + 389, 293, 293, 293, 293, 293, 293, 305, 293, 209, + 293, 29, 100, 14, 293, 195, 123, 14, 293, 17, + 293, 293, 95, 17, 40, 36, 243, 293, 40, 36, + 309, 192, 311, 293, 316, 293, 293, 293, 293, 293, + 320, 318, 317, 314, 320, 318, 317, 314, 204, 293, + 293, 293, 293, 305, 293, 209, 293, 452, 100, 452, + 293, 195, 121, 452, 436, 293, 293, 293, 95, 293, + 293, 293, 293, 293, 293, 293, 309, 192, 311, 305, + 316, 209, 293, 190, 100, 43, 293, 195, 112, 293, + 436, 293, 293, 436, 95, 452, 174, 436, 313, 293, + 293, 293, 309, 192, 311, 293, 316, 305, 293, 209, + 293, 293, 100, 140, 293, 195, 111, 167, 293, 293, + 40, 36, 95, 265, 293, 293, 39, 28, 307, 293, + 309, 192, 311, 293, 316, 293, 320, 318, 317, 314, + 293, 175, 305, 293, 209, 293, 293, 100, 293, 293, + 195, 119, 293, 305, 293, 209, 293, 95, 100, 293, + 293, 195, 115, 293, 293, 309, 192, 311, 95, 316, + 293, 293, 293, 293, 293, 293, 309, 192, 311, 293, + 316, 305, 190, 209, 43, 293, 100, 293, 293, 195, + 120, 293, 293, 293, 293, 293, 95, 293, 293, 293, + 293, 293, 293, 293, 309, 192, 311, 293, 316, 293, + 190, 156, 43, 293, 190, 167, 43, 293, 293, 40, + 36, 265, 293, 235, 39, 28, 307, 288, 293, 293, + 293, 293, 293, 319, 293, 320, 318, 317, 314, 175, + 190, 293, 43, 293, 190, 293, 43, 40, 36, 293, + 293, 40, 36, 242, 293, 293, 293, 176, 293, 293, + 293, 293, 293, 320, 318, 317, 314, 320, 318, 317, + 314, 293, 293, 293, 293, 293, 293, 40, 36, 293, + 293, 40, 36, 293, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 320, 318, 317, 314, 320, 318, 317, + 314, 293, 190, 293, 293, 293, 293, 293, 383, 293, + 293, 293, 293, 293, 293, 347, 383, 293, 383, 224, + 293, 383, 293, 293, 293, 293, 293, 383, 14, 383, + 293, 383, 293, 252, 17, 12, 293, 423, 205, 251, + 293, 293, 293, 293, 293, 293, 293, 293, 423, 14, + 293, 145, 293, 293, 293, 17, ); static public $yy_lookahead = array( - 3, 15, 35, 70, 13, 14, 80, 74, 17, 12, - 13, 14, 79, 16, 17, 44, 19, 20, 21, 52, - 11, 88, 51, 26, 91, 34, 15, 30, 31, 32, - 44, 34, 23, 36, 23, 23, 27, 51, 41, 42, - 43, 44, 33, 46, 53, 48, 27, 50, 51, 52, - 53, 3, 33, 15, 45, 58, 18, 45, 12, 13, - 12, 13, 14, 17, 16, 17, 70, 19, 20, 21, - 74, 59, 13, 14, 26, 79, 17, 36, 30, 31, - 32, 11, 34, 44, 36, 47, 23, 91, 47, 41, - 42, 43, 44, 23, 46, 49, 48, 27, 50, 51, - 3, 53, 74, 33, 76, 77, 58, 79, 45, 12, - 13, 14, 53, 16, 17, 45, 19, 20, 21, 63, - 64, 65, 66, 26, 23, 69, 71, 30, 31, 32, - 75, 34, 15, 36, 14, 18, 81, 17, 41, 42, - 43, 44, 35, 46, 37, 48, 45, 50, 51, 3, - 53, 80, 13, 52, 99, 58, 12, 13, 12, 13, - 14, 17, 16, 17, 47, 19, 20, 21, 48, 1, - 50, 14, 26, 53, 1, 36, 30, 31, 32, 11, - 34, 14, 36, 14, 11, 92, 17, 41, 42, 43, - 44, 1, 46, 49, 48, 27, 50, 51, 3, 53, - 27, 33, 17, 36, 58, 92, 33, 12, 13, 14, - 53, 16, 17, 15, 19, 20, 21, 27, 1, 50, - 53, 26, 53, 33, 36, 30, 31, 32, 11, 34, - 17, 36, 44, 14, 49, 47, 41, 42, 43, 44, - 52, 46, 44, 48, 27, 50, 51, 3, 53, 93, - 33, 95, 96, 58, 12, 13, 12, 13, 14, 17, - 16, 17, 27, 19, 20, 21, 12, 13, 33, 22, - 26, 17, 53, 71, 30, 31, 32, 75, 34, 74, - 36, 76, 35, 81, 79, 41, 42, 43, 44, 92, - 46, 49, 48, 64, 50, 51, 3, 53, 69, 12, - 13, 99, 58, 79, 17, 12, 13, 14, 100, 16, - 17, 36, 19, 20, 21, 8, 9, 10, 35, 26, - 37, 97, 47, 30, 31, 32, 35, 34, 37, 36, - 71, 29, 103, 104, 41, 42, 43, 44, 36, 46, - 81, 48, 71, 50, 51, 3, 53, 9, 92, 47, - 94, 58, 81, 94, 12, 13, 14, 75, 16, 17, - 36, 19, 20, 21, 92, 94, 94, 36, 26, 71, - 44, 47, 30, 31, 32, 64, 34, 51, 36, 81, - 69, 99, 100, 41, 42, 43, 44, 18, 46, 2, - 48, 71, 50, 51, 3, 53, 1, 99, 44, 65, - 58, 81, 68, 12, 13, 14, 52, 16, 17, 90, - 19, 20, 21, 44, 75, 104, 97, 26, 71, 99, - 51, 30, 31, 32, 74, 34, 76, 36, 81, 79, - 95, 96, 41, 42, 43, 44, 71, 46, 99, 48, - 74, 50, 51, 3, 53, 79, 81, 52, 18, 58, - 1, 75, 12, 13, 14, 14, 16, 17, 17, 19, - 20, 21, 1, 75, 67, 80, 26, 18, 1, 71, - 30, 31, 32, 90, 34, 99, 36, 47, 92, 81, - 97, 41, 42, 43, 44, 1, 46, 99, 48, 71, - 50, 51, 3, 53, 18, 11, 29, 96, 58, 81, - 34, 12, 13, 14, 99, 16, 17, 17, 19, 20, - 21, 1, 2, 5, 17, 26, 14, 75, 17, 30, - 31, 32, 50, 34, 50, 36, 84, 85, 86, 52, - 41, 42, 43, 44, 15, 46, 37, 48, 52, 50, - 17, 99, 53, 95, 96, 17, 64, 58, 34, 17, - 17, 69, 70, 17, 72, 73, 74, 36, 40, 17, - 11, 79, 81, 24, 82, 83, 78, 94, 93, 87, - 88, 89, 79, 91, 79, 92, 105, 92, 4, 5, - 6, 7, 8, 101, 102, 79, 12, 13, 92, 105, - 16, 105, 105, 19, 20, 21, 105, 105, 105, 105, - 26, 105, 64, 105, 30, 31, 32, 69, 70, 105, - 72, 73, 74, 105, 76, 105, 105, 79, 71, 105, - 82, 83, 75, 105, 105, 87, 88, 89, 81, 91, - 64, 84, 85, 86, 105, 69, 70, 105, 72, 73, - 74, 105, 76, 105, 105, 79, 99, 105, 82, 83, - 1, 105, 3, 87, 88, 89, 105, 91, 64, 105, - 105, 105, 105, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 71, 87, 88, 89, 75, 91, 37, 38, 39, 105, - 81, 105, 64, 84, 85, 86, 102, 69, 70, 105, - 72, 73, 74, 54, 55, 56, 57, 79, 99, 105, - 82, 83, 105, 5, 105, 87, 88, 89, 105, 91, - 12, 13, 14, 105, 16, 105, 98, 19, 20, 21, - 105, 105, 12, 13, 26, 5, 105, 17, 30, 31, - 32, 105, 12, 13, 14, 105, 16, 27, 105, 19, - 20, 21, 105, 33, 71, 105, 26, 105, 75, 105, - 30, 31, 32, 105, 81, 105, 58, 59, 61, 62, - 63, 64, 65, 66, 105, 64, 69, 105, 105, 105, - 69, 70, 99, 72, 73, 74, 12, 13, 58, 59, - 79, 17, 105, 82, 83, 105, 105, 105, 87, 88, - 89, 27, 91, 29, 105, 64, 105, 33, 105, 98, - 69, 70, 105, 72, 73, 74, 105, 105, 105, 105, - 79, 105, 105, 82, 83, 1, 105, 105, 87, 88, - 89, 105, 91, 105, 105, 11, 105, 105, 105, 98, - 64, 105, 18, 105, 105, 69, 70, 105, 72, 73, - 74, 27, 105, 105, 105, 79, 105, 33, 82, 83, - 36, 105, 105, 87, 88, 89, 105, 91, 105, 105, - 64, 47, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 105, 105, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 105, 105, - 105, 105, 105, 105, 64, 105, 1, 2, 3, 69, - 70, 105, 72, 73, 74, 105, 105, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 36, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 47, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 11, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 11, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 2, 3, 69, - 70, 105, 72, 73, 74, 105, 105, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 11, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 11, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 105, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 105, 37, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 105, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 1, 105, 3, 69, - 70, 105, 72, 73, 74, 105, 105, 105, 105, 79, - 105, 105, 82, 83, 105, 105, 105, 87, 88, 89, - 64, 91, 105, 28, 105, 69, 70, 105, 72, 73, - 74, 105, 105, 38, 39, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 54, - 55, 56, 57, 69, 70, 105, 72, 73, 74, 105, - 3, 105, 105, 79, 105, 105, 82, 83, 105, 105, - 105, 87, 88, 89, 64, 91, 105, 105, 105, 69, - 70, 105, 72, 73, 74, 105, 105, 105, 105, 79, - 105, 105, 82, 83, 105, 38, 39, 87, 88, 89, - 64, 91, 105, 105, 105, 69, 70, 105, 72, 73, - 74, 54, 55, 56, 57, 79, 105, 105, 82, 83, - 105, 105, 105, 87, 88, 89, 105, 91, 64, 105, - 1, 105, 3, 69, 70, 105, 72, 73, 74, 1, - 105, 3, 105, 79, 105, 105, 82, 83, 105, 11, - 105, 87, 88, 89, 25, 91, 27, 105, 105, 105, - 105, 105, 33, 105, 64, 27, 105, 38, 39, 69, - 70, 33, 72, 105, 74, 105, 38, 39, 105, 79, - 105, 105, 105, 54, 55, 56, 57, 87, 88, 89, - 105, 91, 54, 55, 56, 57, 105, 64, 2, 105, - 105, 105, 69, 70, 105, 72, 105, 74, 12, 13, - 105, 15, 79, 17, 18, 105, 83, 105, 105, 105, - 87, 88, 89, 1, 91, 3, 105, 64, 105, 105, - 105, 105, 69, 70, 105, 72, 105, 74, 105, 105, - 44, 105, 79, 47, 105, 49, 83, 51, 105, 27, - 87, 88, 89, 105, 91, 33, 105, 64, 105, 105, - 38, 39, 69, 70, 105, 72, 105, 74, 105, 105, - 105, 105, 79, 105, 105, 105, 54, 55, 56, 57, - 87, 88, 89, 105, 91, 64, 105, 105, 105, 105, - 69, 70, 105, 72, 105, 74, 105, 105, 105, 105, - 79, 105, 105, 105, 105, 105, 105, 105, 87, 88, - 89, 64, 91, 2, 105, 105, 69, 70, 105, 72, - 105, 74, 105, 12, 13, 105, 79, 105, 17, 18, - 105, 105, 105, 105, 87, 88, 89, 105, 91, 105, - 105, 64, 105, 105, 105, 105, 69, 70, 105, 72, - 105, 74, 105, 105, 105, 44, 79, 105, 47, 2, - 49, 105, 51, 52, 87, 88, 89, 105, 91, 12, - 13, 105, 15, 64, 17, 18, 105, 105, 69, 70, - 1, 72, 3, 74, 105, 105, 105, 105, 79, 105, - 1, 105, 3, 105, 105, 105, 87, 88, 89, 105, - 91, 44, 105, 105, 47, 105, 49, 105, 51, 2, - 105, 22, 105, 105, 105, 105, 105, 38, 39, 12, - 13, 105, 105, 105, 17, 18, 105, 38, 39, 105, - 105, 52, 105, 54, 55, 56, 57, 2, 1, 105, - 3, 105, 105, 54, 55, 56, 57, 12, 13, 105, - 105, 44, 17, 18, 47, 105, 49, 105, 51, 105, - 105, 105, 105, 105, 105, 12, 13, 105, 105, 105, - 17, 18, 1, 105, 3, 38, 39, 105, 105, 44, - 105, 105, 47, 105, 49, 105, 51, 105, 105, 105, - 105, 54, 55, 56, 57, 105, 59, 44, 105, 105, - 47, 105, 49, 71, 51, 105, 105, 75, 11, 38, - 39, 105, 105, 81, 105, 105, 84, 85, 86, 22, - 105, 24, 105, 105, 27, 54, 55, 56, 57, 105, - 33, 99, 35, 105, 37, 105, 105, 105, 71, 105, - 105, 44, 75, 105, 105, 105, 71, 105, 81, 105, - 75, 84, 85, 86, 71, 105, 81, 105, 75, 84, - 85, 86, 105, 105, 81, 105, 99, 84, 85, 86, - 105, 11, 105, 105, 99, 15, 105, 105, 105, 105, - 105, 105, 99, 105, 105, 105, 105, 27, 105, 105, - 105, 105, 105, 33, 105, 105, 36, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 47, + 3, 13, 65, 70, 67, 11, 73, 13, 11, 12, + 13, 17, 15, 80, 17, 81, 19, 20, 21, 93, + 27, 2, 89, 26, 36, 92, 33, 30, 31, 32, + 11, 34, 13, 36, 35, 16, 17, 18, 41, 42, + 43, 44, 105, 46, 3, 48, 22, 50, 51, 52, + 53, 52, 11, 12, 13, 58, 15, 15, 17, 35, + 19, 20, 21, 44, 64, 2, 47, 26, 49, 93, + 51, 30, 31, 32, 11, 34, 13, 36, 36, 16, + 17, 18, 41, 42, 43, 44, 91, 46, 3, 48, + 17, 50, 51, 98, 53, 53, 11, 12, 13, 58, + 15, 23, 17, 100, 19, 20, 21, 44, 36, 2, + 47, 26, 49, 76, 51, 30, 31, 32, 11, 34, + 13, 36, 49, 45, 17, 18, 41, 42, 43, 44, + 52, 46, 3, 48, 80, 50, 51, 100, 53, 44, + 11, 12, 13, 58, 15, 23, 17, 52, 19, 20, + 21, 44, 98, 2, 47, 26, 49, 1, 51, 30, + 31, 32, 11, 34, 13, 36, 101, 45, 17, 18, + 41, 42, 43, 44, 2, 46, 3, 48, 81, 50, + 51, 59, 53, 27, 11, 12, 13, 58, 15, 33, + 17, 72, 19, 20, 21, 44, 9, 10, 47, 26, + 49, 82, 51, 30, 31, 32, 11, 34, 13, 36, + 1, 1, 17, 18, 41, 42, 43, 44, 44, 46, + 3, 48, 1, 50, 51, 51, 53, 18, 11, 12, + 13, 58, 15, 44, 17, 27, 19, 20, 21, 44, + 51, 33, 47, 26, 49, 76, 51, 30, 31, 32, + 15, 34, 17, 36, 85, 86, 87, 93, 41, 42, + 43, 44, 52, 46, 3, 48, 81, 50, 51, 100, + 53, 52, 11, 12, 13, 58, 15, 8, 17, 10, + 19, 20, 21, 48, 11, 50, 13, 26, 53, 69, + 17, 30, 31, 32, 13, 34, 15, 36, 17, 16, + 27, 18, 41, 42, 43, 44, 33, 46, 3, 48, + 50, 50, 51, 93, 53, 34, 11, 12, 13, 58, + 15, 11, 17, 13, 19, 20, 21, 17, 17, 16, + 47, 26, 36, 36, 53, 30, 31, 32, 13, 34, + 15, 36, 17, 47, 47, 69, 41, 42, 43, 44, + 50, 46, 3, 48, 24, 50, 51, 44, 53, 49, + 11, 12, 13, 58, 15, 11, 17, 13, 19, 20, + 21, 17, 96, 97, 35, 26, 37, 36, 53, 30, + 31, 32, 15, 34, 17, 36, 16, 16, 72, 18, + 41, 42, 43, 44, 91, 46, 3, 48, 82, 50, + 51, 98, 53, 49, 11, 12, 13, 58, 15, 11, + 17, 13, 19, 20, 21, 17, 100, 50, 47, 26, + 53, 76, 36, 30, 31, 32, 65, 34, 67, 36, + 44, 17, 72, 47, 41, 42, 43, 44, 52, 46, + 3, 48, 82, 50, 51, 100, 53, 49, 11, 12, + 13, 58, 15, 11, 17, 13, 19, 20, 21, 17, + 100, 1, 17, 26, 15, 104, 105, 30, 31, 32, + 29, 34, 18, 36, 35, 52, 37, 36, 41, 42, + 43, 44, 23, 46, 16, 48, 17, 50, 47, 29, + 53, 65, 66, 67, 68, 58, 70, 71, 44, 73, + 74, 75, 53, 15, 45, 51, 80, 76, 17, 83, + 84, 40, 44, 36, 88, 89, 90, 14, 92, 51, + 65, 66, 67, 68, 47, 70, 71, 1, 73, 74, + 75, 100, 101, 76, 94, 80, 96, 97, 83, 84, + 14, 53, 70, 88, 89, 90, 65, 92, 67, 77, + 78, 70, 80, 27, 73, 74, 75, 100, 72, 33, + 16, 80, 76, 34, 83, 84, 72, 23, 82, 88, + 89, 90, 65, 92, 67, 68, 82, 70, 71, 44, + 73, 74, 75, 102, 103, 14, 100, 80, 72, 95, + 83, 84, 14, 17, 16, 88, 89, 90, 82, 92, + 4, 5, 6, 7, 8, 27, 9, 11, 12, 13, + 35, 33, 37, 34, 36, 19, 20, 21, 15, 72, + 17, 17, 26, 76, 70, 47, 30, 31, 32, 82, + 65, 77, 67, 72, 80, 70, 17, 14, 73, 74, + 75, 17, 77, 82, 37, 80, 23, 100, 83, 84, + 27, 1, 15, 88, 89, 90, 33, 92, 17, 5, + 93, 93, 95, 95, 14, 11, 12, 13, 45, 15, + 96, 97, 70, 19, 20, 21, 65, 27, 67, 77, + 26, 5, 80, 33, 30, 31, 32, 11, 12, 13, + 72, 15, 1, 2, 76, 19, 20, 21, 18, 70, + 82, 79, 26, 85, 86, 87, 30, 31, 32, 80, + 97, 72, 58, 59, 65, 1, 67, 3, 100, 70, + 72, 82, 73, 74, 75, 82, 77, 47, 94, 80, + 82, 80, 83, 84, 58, 59, 22, 88, 89, 90, + 65, 92, 67, 95, 70, 70, 93, 73, 73, 74, + 75, 80, 38, 39, 80, 80, 96, 97, 83, 84, + 1, 61, 62, 88, 89, 90, 92, 92, 54, 55, + 56, 57, 65, 14, 67, 63, 64, 70, 103, 93, + 73, 74, 75, 80, 18, 14, 27, 80, 95, 93, + 83, 84, 33, 106, 23, 88, 89, 90, 27, 92, + 65, 93, 67, 106, 33, 70, 99, 106, 73, 74, + 75, 106, 106, 106, 106, 80, 45, 106, 83, 84, + 106, 106, 106, 88, 89, 90, 106, 92, 106, 106, + 65, 106, 67, 106, 99, 70, 106, 106, 73, 74, + 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, + 106, 106, 106, 88, 89, 90, 106, 92, 106, 106, + 106, 65, 106, 67, 99, 106, 70, 106, 106, 73, + 74, 75, 106, 1, 106, 3, 80, 106, 106, 83, + 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, + 106, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, + 38, 39, 88, 89, 90, 65, 92, 67, 106, 106, + 70, 106, 106, 73, 74, 75, 54, 55, 56, 57, + 80, 59, 106, 83, 84, 106, 106, 106, 88, 89, + 90, 106, 92, 106, 106, 65, 106, 67, 106, 106, + 70, 106, 106, 73, 74, 75, 106, 1, 106, 3, + 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, + 90, 106, 92, 65, 106, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 28, 106, 106, 106, 80, 106, + 106, 83, 84, 106, 38, 39, 88, 89, 90, 65, + 92, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 54, 55, 56, 57, 80, 106, 106, 83, 84, 106, + 106, 106, 88, 89, 90, 106, 92, 106, 106, 65, + 106, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 106, 1, 2, 3, 80, 106, 106, 83, 84, 106, + 106, 106, 88, 89, 90, 106, 92, 65, 106, 67, + 106, 106, 70, 106, 106, 73, 74, 75, 106, 106, + 106, 106, 80, 106, 106, 83, 84, 106, 38, 39, + 88, 89, 90, 65, 92, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 54, 55, 56, 57, 80, 106, + 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, + 92, 106, 106, 65, 106, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 106, 1, 106, 3, 80, 106, + 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, + 92, 65, 106, 67, 106, 106, 70, 106, 106, 73, + 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, + 84, 37, 38, 39, 88, 89, 90, 65, 92, 67, + 106, 106, 70, 106, 106, 73, 74, 75, 54, 55, + 56, 57, 80, 106, 106, 83, 84, 106, 106, 106, + 88, 89, 90, 106, 92, 106, 106, 65, 106, 67, + 106, 106, 70, 106, 106, 73, 74, 75, 106, 1, + 106, 3, 80, 106, 106, 83, 84, 106, 106, 106, + 88, 89, 90, 106, 92, 65, 106, 67, 106, 106, + 70, 106, 106, 73, 74, 75, 106, 106, 106, 106, + 80, 106, 106, 83, 84, 37, 38, 39, 88, 89, + 90, 65, 92, 67, 106, 106, 70, 106, 106, 73, + 74, 75, 54, 55, 56, 57, 80, 106, 106, 83, + 84, 106, 106, 106, 88, 89, 90, 106, 92, 106, + 106, 65, 106, 67, 106, 106, 70, 106, 106, 73, + 74, 75, 106, 1, 106, 3, 80, 106, 106, 83, + 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, + 106, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, + 38, 39, 88, 89, 90, 65, 92, 67, 106, 106, + 70, 106, 106, 73, 74, 75, 54, 55, 56, 57, + 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, + 90, 106, 92, 106, 106, 65, 106, 67, 106, 106, + 70, 106, 106, 73, 74, 75, 106, 106, 106, 3, + 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, + 90, 106, 92, 65, 106, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, + 106, 83, 84, 106, 38, 39, 88, 89, 90, 65, + 92, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 54, 55, 56, 57, 80, 106, 106, 83, 84, 106, + 106, 106, 88, 89, 90, 106, 92, 106, 106, 65, + 106, 67, 106, 106, 70, 106, 106, 73, 74, 75, + 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, + 106, 106, 88, 89, 90, 106, 92, 65, 106, 67, + 106, 106, 70, 106, 106, 73, 74, 75, 106, 106, + 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, + 88, 89, 90, 65, 92, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, + 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, + 92, 106, 106, 65, 106, 67, 106, 106, 70, 106, + 106, 73, 74, 75, 1, 2, 3, 106, 80, 106, + 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, + 92, 65, 106, 67, 106, 106, 70, 106, 106, 73, + 74, 106, 106, 106, 106, 106, 80, 106, 106, 36, + 84, 38, 39, 106, 88, 89, 90, 1, 92, 3, + 47, 1, 106, 3, 106, 106, 106, 54, 55, 56, + 57, 106, 106, 106, 106, 106, 106, 65, 106, 67, + 106, 25, 70, 27, 106, 73, 74, 27, 106, 33, + 106, 106, 80, 33, 38, 39, 84, 106, 38, 39, + 88, 89, 90, 106, 92, 106, 106, 106, 106, 106, + 54, 55, 56, 57, 54, 55, 56, 57, 2, 106, + 106, 106, 106, 65, 106, 67, 106, 11, 70, 13, + 106, 73, 74, 17, 18, 106, 106, 106, 80, 106, + 106, 106, 106, 106, 106, 106, 88, 89, 90, 65, + 92, 67, 106, 1, 70, 3, 106, 73, 74, 106, + 44, 106, 106, 47, 80, 49, 14, 51, 52, 106, + 106, 106, 88, 89, 90, 106, 92, 65, 106, 67, + 106, 106, 70, 72, 106, 73, 74, 76, 106, 106, + 38, 39, 80, 82, 106, 106, 85, 86, 87, 106, + 88, 89, 90, 106, 92, 106, 54, 55, 56, 57, + 106, 100, 65, 106, 67, 106, 106, 70, 106, 106, + 73, 74, 106, 65, 106, 67, 106, 80, 70, 106, + 106, 73, 74, 106, 106, 88, 89, 90, 80, 92, + 106, 106, 106, 106, 106, 106, 88, 89, 90, 106, + 92, 65, 1, 67, 3, 106, 70, 106, 106, 73, + 74, 106, 106, 106, 106, 106, 80, 106, 106, 106, + 106, 106, 106, 106, 88, 89, 90, 106, 92, 106, + 1, 72, 3, 106, 1, 76, 3, 106, 106, 38, + 39, 82, 106, 14, 85, 86, 87, 14, 106, 106, + 106, 106, 106, 52, 106, 54, 55, 56, 57, 100, + 1, 106, 3, 106, 1, 106, 3, 38, 39, 106, + 106, 38, 39, 14, 106, 106, 106, 14, 106, 106, + 106, 106, 106, 54, 55, 56, 57, 54, 55, 56, + 57, 106, 106, 106, 106, 106, 106, 38, 39, 106, + 106, 38, 39, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 54, 55, 56, 57, 54, 55, 56, + 57, 106, 1, 106, 106, 106, 106, 106, 14, 106, + 106, 106, 106, 106, 106, 14, 22, 106, 24, 18, + 106, 27, 106, 106, 106, 106, 106, 33, 27, 35, + 106, 37, 106, 11, 33, 13, 106, 36, 44, 17, + 106, 106, 106, 106, 106, 106, 106, 106, 47, 27, + 106, 29, 106, 106, 106, 33, ); static public $yy_shift_ofst = array( - 574, 391, 48, 48, 391, 342, 342, 48, -3, 48, - 48, 440, 48, 48, 146, 48, 48, 48, 48, 48, - 48, 97, 48, 48, 48, 48, 48, 48, 195, 48, - 48, 48, 48, 293, 48, 195, 146, 244, 244, 489, - 489, 489, 489, 489, 489, 1599, 1608, 1692, 1692, 1692, - 1692, 1692, 574, 1465, 1849, 1907, 1305, 649, 985, 1065, - 1385, 1145, 1859, 1225, 1941, 1941, 1941, 1941, 1941, 1941, - 1941, 1941, 1941, 1941, 1941, 1941, 1527, 1527, 120, 730, - 824, 217, 169, 190, 167, 708, 774, 720, 167, 190, - 167, 190, 369, 510, 9, 70, 59, 173, 168, 144, - 307, 117, 38, 287, 287, 219, 441, 235, 449, 484, - 467, 441, 430, 19, 19, 395, 461, 461, 461, 476, - 461, 461, 461, 476, 461, -34, -34, -34, 1781, 1827, - 1666, 1877, 1905, 1923, -9, 46, -14, 254, 19, -29, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 157, 19, 19, 11, -29, -29, -29, 19, -29, 19, - 19, 326, -29, 157, -29, 326, 19, -29, 139, 461, - 476, 461, 476, 461, 461, 387, 387, 338, 461, 476, - 331, -34, -34, -34, -34, -34, 905, 1967, 2030, 242, - 188, 302, 12, 101, 275, 107, 198, 185, -33, 247, - 283, 324, 41, 63, 291, 354, 472, 474, 477, 486, - 501, 490, 508, 497, 502, 519, 523, 521, 518, 542, - 536, 533, 528, 514, 331, 499, 532, 539, 549, 213, - 39, 466, + -13, 393, 393, 305, 85, 85, 85, 85, 349, 305, + 349, -3, 85, 85, 129, 85, 217, 85, 173, 85, + 85, 85, 129, 261, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 41, 41, 437, 437, + 437, 437, 437, 437, 1586, 1590, 1590, 1040, 1843, 1839, + 1208, 1124, 1781, 1682, 714, 956, 1813, 872, 1809, 1292, + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, + 1292, 1292, 1376, 1376, 235, 676, 1901, 367, 156, 42, + 654, 1922, 273, 42, 371, 42, 156, 454, 156, 691, + 596, 63, 325, 759, 650, 398, 526, -6, 283, -6, + 680, 209, 210, -7, 603, 603, 460, 208, -7, 488, + -7, 221, 221, 766, 221, 221, 766, 221, 221, 221, + -13, -13, -13, -13, 1646, 19, 107, 151, 195, 281, + 310, 442, 468, -7, -7, -7, -7, 174, 174, 544, + -7, 174, 174, -7, -12, 449, 449, -7, 174, -7, + 174, 189, -7, 174, -7, -7, -7, -7, 189, 174, + 766, 766, 766, 221, 221, 172, 221, 221, 172, 72, + 221, -13, -13, -13, -13, -13, -13, 1543, 1894, 578, + 623, 771, 354, 386, 441, 78, 122, -1, 95, 296, + 73, 339, 297, 477, 313, 459, 24, 439, 575, 269, + 187, 641, 604, 597, 576, 529, 535, 619, 260, 571, + 607, 637, 624, 579, 503, 491, 370, 330, 300, 219, + 311, 341, 414, 471, 469, 423, 72, 445, ); static public $yy_reduce_ofst = array( - 707, 482, 741, 711, 594, 566, 538, 628, 1054, 1160, - 1400, 1480, 894, 866, 946, 1374, 1266, 1214, 1186, 1240, - 1134, 1026, 1080, 1294, 1426, 1506, 1534, 1454, 1320, 1346, - 1000, 1106, 806, 776, 974, 920, 840, 1633, 1603, 1570, - 1691, 1779, 1747, 1663, 1717, 1945, 1953, 547, 609, 1902, - 1937, 1953, 56, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, -67, 229, - 683, 202, -4, 55, 28, 311, 271, 259, 205, 298, - 350, 320, 156, 282, 347, 347, 224, 339, 339, 272, - 334, 335, 335, 256, 272, 366, 383, 418, 388, 339, - 339, 319, 335, 398, 365, 339, 339, 339, 376, 335, - 339, 339, 339, 448, 339, 339, 339, 339, 93, 93, - 93, 93, 93, 93, 495, 473, 93, 93, 481, 475, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 493, 481, 481, 488, 475, 475, 475, 481, 475, 481, - 481, 496, 475, 506, 475, 485, 481, 475, 483, 405, - 401, 405, 401, 405, 405, 208, 208, 397, 405, 401, - 386, -74, 71, 197, 113, 385, + 700, 455, 426, 481, 507, 765, 707, 735, 565, 675, + 649, 1076, 1160, 1186, 1102, 1244, 964, 992, 1018, 1048, + 1216, 1438, 1468, 1384, 1412, 1270, 1300, 1354, 1328, 1132, + 824, 934, 908, 880, 850, 796, 1496, 1542, 1642, 1614, + 1677, 1716, 1688, 1588, 1739, 1641, 618, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, -67, 361, 486, 674, 547, 472, + -63, 494, 648, 602, 276, 554, 316, 440, 360, 431, + 611, 220, 54, 37, 37, 568, 37, 567, 574, 568, + 574, 345, 37, 119, 303, -5, 37, 561, 516, 629, + 639, 37, 37, 574, 37, 37, 660, 457, 37, 37, + 37, 37, 712, 37, 686, 686, 686, 686, 686, 703, + 693, 686, 686, 643, 643, 643, 643, 634, 634, 622, + 643, 634, 634, 643, 653, 671, 651, 643, 634, 643, + 634, 696, 643, 634, 643, 643, 643, 643, 708, 634, + 613, 613, 613, 3, 3, 65, 3, 3, 65, 164, + 3, 97, 185, 0, -24, -66, -74, ); static public $yyExpectedTokens = array( - array(4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 21, 26, 30, 31, 32,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), - array(3, 12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), + array(3, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 41, 42, 43, 44, 46, 48, 50, 53, 58,), array(1, 3, 25, 27, 33, 38, 39, 54, 55, 56, 57,), - array(1, 3, 11, 27, 33, 38, 39, 54, 55, 56, 57,), array(1, 3, 27, 33, 38, 39, 54, 55, 56, 57,), array(1, 3, 27, 33, 38, 39, 54, 55, 56, 57,), - array(1, 3, 27, 33, 38, 39, 54, 55, 56, 57,), - array(1, 3, 27, 33, 38, 39, 54, 55, 56, 57,), - array(1, 3, 27, 33, 38, 39, 54, 55, 56, 57,), - array(4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 21, 26, 30, 31, 32,), - array(1, 3, 28, 38, 39, 54, 55, 56, 57,), - array(1, 3, 38, 39, 52, 54, 55, 56, 57,), - array(1, 3, 38, 39, 54, 55, 56, 57, 59,), - array(1, 3, 11, 38, 39, 54, 55, 56, 57,), + array(1, 2, 3, 38, 39, 54, 55, 56, 57,), + array(1, 3, 14, 38, 39, 54, 55, 56, 57,), + array(1, 3, 14, 38, 39, 54, 55, 56, 57,), array(1, 3, 37, 38, 39, 54, 55, 56, 57,), - array(1, 3, 11, 38, 39, 54, 55, 56, 57,), - array(1, 3, 11, 38, 39, 54, 55, 56, 57,), array(1, 3, 37, 38, 39, 54, 55, 56, 57,), - array(1, 2, 3, 38, 39, 54, 55, 56, 57,), + array(1, 3, 38, 39, 52, 54, 55, 56, 57,), + array(1, 3, 14, 38, 39, 54, 55, 56, 57,), array(1, 3, 22, 38, 39, 54, 55, 56, 57,), - array(1, 3, 11, 38, 39, 54, 55, 56, 57,), + array(1, 3, 28, 38, 39, 54, 55, 56, 57,), + array(1, 3, 14, 38, 39, 54, 55, 56, 57,), + array(1, 3, 38, 39, 54, 55, 56, 57, 59,), + array(1, 3, 14, 38, 39, 54, 55, 56, 57,), + array(1, 3, 38, 39, 54, 55, 56, 57,), array(1, 3, 38, 39, 54, 55, 56, 57,), array(1, 3, 38, 39, 54, 55, 56, 57,), array(1, 3, 38, 39, 54, 55, 56, 57,), @@ -742,161 +616,160 @@ class Smarty_Internal_Templateparser array(1, 3, 38, 39, 54, 55, 56, 57,), array(3, 38, 39, 54, 55, 56, 57,), array(3, 38, 39, 54, 55, 56, 57,), - array(14, 17, 48, 50, 53,), - array(5, 12, 13, 14, 16, 19, 20, 21, 26, 30, 31, 32, 58, 59,), - array(1, 11, 18, 27, 33, 36, 47,), - array(1, 11, 27, 33,), - array(14, 17, 50, 53,), + array(15, 17, 48, 50, 53,), + array(5, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 58, 59,), + array(1, 14, 18, 27, 33, 36, 47,), + array(15, 17, 50, 53,), array(1, 27, 33,), - array(14, 36, 53,), - array(5, 12, 13, 14, 16, 19, 20, 21, 26, 30, 31, 32, 58, 59,), - array(12, 13, 17, 27, 29, 33,), - array(12, 13, 17, 27, 33,), - array(14, 36, 53,), - array(1, 27, 33,), - array(14, 36, 53,), + array(15, 36, 53,), + array(5, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 58, 59,), + array(11, 13, 17, 27, 29, 33,), + array(11, 13, 17, 27, 33,), + array(15, 36, 53,), + array(16, 18, 47,), + array(15, 36, 53,), array(1, 27, 33,), array(18, 44, 51,), + array(1, 27, 33,), array(1, 2,), - array(11, 23, 27, 33, 45,), - array(11, 23, 27, 33, 45,), - array(13, 14, 17, 53,), - array(1, 11, 27, 33,), - array(1, 11, 27, 33,), - array(12, 13, 17, 49,), - array(8, 9, 10,), - array(15, 18, 47,), - array(15, 18, 47,), - array(12, 13, 17,), - array(12, 13, 17,), - array(14, 53,), - array(14, 17,), - array(27, 33,), + array(4, 5, 6, 7, 8, 11, 12, 13, 19, 20, 21, 26, 30, 31, 32,), + array(2, 11, 13, 16, 17, 18, 44, 47, 49, 51,), + array(13, 15, 17, 53,), + array(1, 14, 27, 33,), + array(1, 14, 27, 33,), + array(11, 13, 17, 49,), + array(1, 14, 27, 33,), + array(11, 13, 17,), + array(16, 18, 47,), + array(11, 13, 17,), + array(18, 47,), array(1, 18,), - array(1, 11,), + array(1, 52,), + array(27, 33,), + array(15, 17,), + array(15, 17,), array(1, 29,), - array(14, 17,), - array(18, 47,), array(27, 33,), array(27, 33,), - array(1, 52,), - array(1,), + array(15, 53,), + array(27, 33,), array(1,), array(1,), array(18,), array(1,), array(1,), - array(1,), array(18,), array(1,), + array(1,), + array(1,), array(), array(), array(), - array(2, 12, 13, 17, 18, 44, 47, 49, 51, 52,), - array(2, 12, 13, 15, 17, 18, 44, 47, 49, 51,), - array(2, 12, 13, 15, 17, 18, 44, 47, 49, 51,), - array(2, 12, 13, 17, 18, 44, 47, 49, 51,), - array(2, 12, 13, 17, 18, 44, 47, 49, 51,), - array(12, 13, 17, 18, 44, 47, 49, 51,), - array(13, 14, 17, 34, 53,), - array(12, 13, 17, 49,), - array(15, 44, 51,), - array(12, 13, 17,), - array(27, 33,), - array(44, 51,), - array(27, 33,), - array(27, 33,), - array(27, 33,), - array(27, 33,), - array(27, 33,), - array(27, 33,), - array(27, 33,), - array(27, 33,), + array(), + array(2, 11, 13, 17, 18, 44, 47, 49, 51, 52,), + array(2, 11, 13, 16, 17, 18, 44, 47, 49, 51,), + array(2, 11, 13, 17, 18, 44, 47, 49, 51,), + array(2, 11, 13, 17, 18, 44, 47, 49, 51,), + array(11, 13, 17, 18, 44, 47, 49, 51,), + array(13, 15, 17, 34, 53,), + array(11, 13, 17, 49,), + array(11, 13, 17,), + array(16, 44, 51,), array(27, 33,), array(27, 33,), - array(14, 53,), array(27, 33,), array(27, 33,), - array(15, 23,), - array(44, 51,), array(44, 51,), array(44, 51,), + array(16, 23,), array(27, 33,), array(44, 51,), + array(44, 51,), array(27, 33,), + array(13, 36,), + array(15, 53,), + array(15, 53,), array(27, 33,), array(44, 51,), + array(27, 33,), array(44, 51,), - array(14, 53,), array(44, 51,), + array(27, 33,), array(44, 51,), array(27, 33,), + array(27, 33,), + array(27, 33,), + array(27, 33,), + array(44, 51,), array(44, 51,), - array(13, 36,), - array(1,), array(18,), - array(1,), + array(18,), array(18,), array(1,), array(1,), array(2,), - array(2,), - array(9,), array(1,), - array(18,), + array(1,), + array(2,), array(36,), + array(1,), + array(), array(), array(), array(), array(), array(), array(1, 2, 3, 36, 38, 39, 47, 54, 55, 56, 57,), - array(11, 22, 24, 27, 33, 35, 37, 44,), - array(11, 15, 27, 33, 36, 47,), - array(12, 13, 17, 49,), + array(14, 22, 24, 27, 33, 35, 37, 44,), + array(14, 16, 27, 33, 36, 47,), + array(14, 23, 27, 33, 45,), + array(14, 23, 27, 33, 45,), + array(11, 13, 17, 49,), array(36, 44, 47, 52,), array(29, 36, 47,), - array(23, 45, 59,), array(23, 45, 52,), + array(23, 45, 59,), + array(35, 52,), + array(44, 52,), array(36, 47,), - array(35, 37,), - array(15, 44,), array(17, 49,), - array(35, 52,), - array(22, 35,), array(35, 37,), array(36, 47,), array(36, 47,), + array(16, 44,), array(23, 45,), + array(22, 35,), array(35, 37,), - array(44, 52,), - array(50,), - array(50,), - array(52,), - array(52,), + array(35, 37,), + array(8, 10,), + array(9, 10,), array(17,), array(17,), - array(5,), + array(9,), array(17,), + array(34,), + array(44,), + array(17,), + array(50,), array(14,), + array(37,), array(15,), array(17,), - array(36,), - array(40,), + array(34,), + array(14,), array(17,), + array(16,), + array(24,), + array(50,), + array(52,), array(17,), + array(36,), array(17,), + array(40,), array(17,), - array(34,), + array(52,), array(36,), - array(37,), array(17,), - array(24,), - array(11,), - array(17,), - array(44,), - array(34,), - array(), array(), array(), array(), @@ -993,73 +866,66 @@ class Smarty_Internal_Templateparser array(), ); static public $yy_default = array( - 330, 504, 483, 483, 519, 519, 519, 483, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 385, 519, 364, 385, 354, - 385, 351, 327, 390, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 392, 407, 482, 396, 507, 369, - 506, 397, 390, 481, 505, 387, 412, 411, 519, 519, - 423, 399, 519, 385, 519, 519, 385, 385, 519, 385, - 519, 385, 495, 376, 413, 413, 519, 399, 399, 448, - 519, 438, 438, 448, 448, 519, 519, 385, 379, 399, - 399, 519, 438, 385, 366, 399, 402, 399, 381, 438, - 415, 406, 416, 492, 410, 490, 414, 403, 437, 437, - 437, 437, 437, 437, 519, 450, 464, 448, 348, 446, - 365, 362, 373, 358, 374, 356, 355, 350, 361, 352, - 519, 360, 367, 519, 445, 473, 475, 368, 476, 372, - 371, 441, 444, 519, 474, 443, 375, 442, 448, 380, - 493, 405, 496, 432, 377, 485, 484, 342, 382, 470, - 448, 489, 489, 448, 448, 489, 423, 419, 423, 449, - 423, 423, 413, 413, 519, 519, 419, 519, 519, 519, - 519, 423, 433, 413, 519, 419, 519, 519, 428, 519, - 519, 519, 334, 519, 519, 519, 519, 494, 425, 519, - 519, 519, 519, 519, 464, 519, 519, 393, 519, 519, - 419, 421, 332, 370, 394, 333, 398, 331, 337, 458, - 425, 463, 457, 479, 478, 329, 335, 454, 491, 328, - 460, 386, 464, 469, 456, 455, 336, 480, 420, 422, - 424, 418, 401, 363, 400, 428, 429, 431, 434, 383, - 409, 408, 430, 357, 453, 452, 488, 378, 486, 468, - 467, 384, 466, 487, 417, 447, 451, 436, 435, 426, - 427, 461, 459, 340, 513, 512, 510, 509, 471, 508, - 514, 517, 503, 502, 338, 339, 501, 518, 511, 341, - 343, 500, 404, 439, 499, 498, 462, 497, 440, 472, - 515, 516, 344, 345, 465, 346, 477, + 333, 507, 507, 492, 507, 471, 471, 471, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 373, 352, 373, 507, 507, 507, + 507, 507, 507, 507, 507, 378, 345, 507, 507, 375, + 384, 380, 469, 470, 345, 378, 493, 395, 495, 494, + 385, 357, 400, 399, 507, 507, 411, 507, 373, 507, + 507, 373, 373, 507, 426, 507, 373, 483, 373, 364, + 322, 425, 507, 387, 387, 436, 387, 436, 426, 436, + 426, 367, 387, 373, 507, 507, 387, 373, 354, 507, + 373, 404, 394, 426, 387, 403, 480, 369, 398, 390, + 402, 391, 331, 478, 425, 425, 425, 425, 425, 507, + 438, 436, 452, 346, 349, 350, 348, 434, 433, 507, + 353, 464, 462, 356, 436, 507, 507, 362, 461, 342, + 430, 429, 363, 463, 361, 355, 359, 360, 431, 432, + 484, 458, 481, 370, 368, 473, 420, 393, 472, 436, + 365, 477, 477, 331, 436, 477, 436, 411, 407, 411, + 401, 401, 437, 411, 411, 401, 401, 507, 407, 411, + 507, 507, 507, 421, 407, 401, 507, 507, 507, 329, + 507, 507, 507, 507, 507, 409, 407, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 381, 507, 507, + 507, 482, 507, 413, 507, 416, 452, 507, 386, 443, + 451, 445, 444, 466, 413, 457, 358, 452, 448, 382, + 446, 374, 442, 479, 467, 392, 475, 405, 414, 474, + 366, 455, 456, 476, 415, 423, 388, 389, 406, 441, + 440, 424, 435, 439, 454, 372, 328, 330, 332, 327, + 326, 323, 324, 325, 334, 335, 341, 371, 351, 339, + 338, 336, 337, 408, 410, 496, 497, 498, 504, 503, + 468, 340, 459, 501, 500, 489, 491, 490, 499, 506, + 502, 505, 453, 460, 397, 419, 422, 396, 418, 412, + 416, 417, 449, 447, 488, 427, 428, 487, 486, 450, + 485, 465, ); public static $yyFallback = array(); public static $yyRuleName = array( 'start ::= template', - 'template ::= template_element', - 'template ::= template template_element', + 'template ::= template PHP', + 'template ::= template TEXT', + 'template ::= template STRIPON', + 'template ::= template STRIPOFF', + 'template ::= template LITERALSTART literal_e2 LITERALEND', + 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND', + 'literal_e2 ::= literal_e1', + 'literal_e1 ::= literal_e1 LITERAL', + 'literal_e1 ::=', + 'template ::= template smartytag', 'template ::=', - 'template_element ::= smartytag', - 'template_element ::= literal', - 'template_element ::= PHP', - 'template_element ::= text_content', - 'text_content ::= TEXT', - 'text_content ::= text_content TEXT', - 'template_element ::= STRIPON', - 'template_element ::= STRIPOFF', - 'literal ::= LITERALSTART LITERALEND', - 'literal ::= LITERALSTART literal_elements LITERALEND', - 'literal_elements ::= literal_elements literal_element', - 'literal_elements ::=', - 'literal_element ::= literal', - 'literal_element ::= LITERAL', - 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', - 'tag ::= LDEL variable', - 'tag ::= LDEL variable attributes', - 'tag ::= LDEL value', - 'tag ::= LDEL value attributes', - 'tag ::= LDEL expr', - 'tag ::= LDEL expr attributes', - 'tag ::= LDEL DOLLARID EQUAL value', - 'tag ::= LDEL DOLLARID EQUAL expr', - 'tag ::= LDEL DOLLARID EQUAL expr attributes', - 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG', + 'smartytag ::= LDEL tagbody RDEL', + 'smartytag ::= tag RDEL', + 'tagbody ::= outattr', + 'tagbody ::= DOLLARID eqoutattr', + 'tagbody ::= varindexed eqoutattr', + 'eqoutattr ::= EQUAL outattr', + 'outattr ::= output attributes', + 'output ::= variable', + 'output ::= value', + 'output ::= expr', 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID', 'tag ::= LDEL ID modifierlist attributes', @@ -1224,263 +1090,251 @@ class Smarty_Internal_Templateparser ); public static $yyRuleInfo = array( array(0 => 61, 1 => 1), - array(0 => 62, 1 => 1), array(0 => 62, 1 => 2), - array(0 => 62, 1 => 0), - array(0 => 63, 1 => 1), - array(0 => 63, 1 => 1), - array(0 => 63, 1 => 1), + array(0 => 62, 1 => 2), + array(0 => 62, 1 => 2), + array(0 => 62, 1 => 2), + array(0 => 62, 1 => 4), + array(0 => 63, 1 => 4), array(0 => 63, 1 => 1), + array(0 => 64, 1 => 2), + array(0 => 64, 1 => 0), + array(0 => 62, 1 => 2), + array(0 => 62, 1 => 0), + array(0 => 65, 1 => 1), + array(0 => 65, 1 => 1), + array(0 => 65, 1 => 3), + array(0 => 65, 1 => 2), array(0 => 66, 1 => 1), array(0 => 66, 1 => 2), - array(0 => 63, 1 => 1), - array(0 => 63, 1 => 1), - array(0 => 65, 1 => 2), - array(0 => 65, 1 => 3), - array(0 => 67, 1 => 2), - array(0 => 67, 1 => 0), - array(0 => 68, 1 => 1), - array(0 => 68, 1 => 1), - array(0 => 64, 1 => 2), - array(0 => 64, 1 => 1), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 4), - array(0 => 69, 1 => 4), - array(0 => 69, 1 => 5), - array(0 => 69, 1 => 5), - array(0 => 64, 1 => 1), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 4), - array(0 => 69, 1 => 5), - array(0 => 69, 1 => 6), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 8), - array(0 => 78, 1 => 2), - array(0 => 78, 1 => 1), - array(0 => 69, 1 => 5), - array(0 => 69, 1 => 7), - array(0 => 69, 1 => 6), - array(0 => 69, 1 => 8), - array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 4), - array(0 => 64, 1 => 1), + array(0 => 66, 1 => 2), array(0 => 69, 1 => 2), - array(0 => 69, 1 => 3), - array(0 => 69, 1 => 4), - array(0 => 69, 1 => 5), - array(0 => 71, 1 => 2), + array(0 => 68, 1 => 2), array(0 => 71, 1 => 1), - array(0 => 71, 1 => 0), - array(0 => 81, 1 => 4), - array(0 => 81, 1 => 2), - array(0 => 81, 1 => 2), - array(0 => 81, 1 => 2), - array(0 => 81, 1 => 2), - array(0 => 81, 1 => 2), - array(0 => 81, 1 => 4), - array(0 => 77, 1 => 1), + array(0 => 71, 1 => 1), + array(0 => 71, 1 => 1), + array(0 => 67, 1 => 3), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 4), + array(0 => 67, 1 => 5), + array(0 => 67, 1 => 6), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 3), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 3), + array(0 => 67, 1 => 8), + array(0 => 79, 1 => 2), + array(0 => 79, 1 => 1), + array(0 => 67, 1 => 5), + array(0 => 67, 1 => 7), + array(0 => 67, 1 => 6), + array(0 => 67, 1 => 8), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 3), + array(0 => 67, 1 => 4), + array(0 => 65, 1 => 1), + array(0 => 67, 1 => 2), + array(0 => 67, 1 => 3), + array(0 => 67, 1 => 4), + array(0 => 67, 1 => 5), + array(0 => 72, 1 => 2), + array(0 => 72, 1 => 1), + array(0 => 72, 1 => 0), + array(0 => 82, 1 => 4), + array(0 => 82, 1 => 2), + array(0 => 82, 1 => 2), + array(0 => 82, 1 => 2), + array(0 => 82, 1 => 2), + array(0 => 82, 1 => 2), + array(0 => 82, 1 => 4), + array(0 => 78, 1 => 1), + array(0 => 78, 1 => 3), array(0 => 77, 1 => 3), - array(0 => 76, 1 => 3), - array(0 => 76, 1 => 3), - array(0 => 76, 1 => 3), - array(0 => 76, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 75, 1 => 1), + array(0 => 75, 1 => 1), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 1), + array(0 => 75, 1 => 2), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 2), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 3), + array(0 => 83, 1 => 7), + array(0 => 83, 1 => 7), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 3), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 3), + array(0 => 74, 1 => 3), + array(0 => 74, 1 => 3), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 3), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 3), + array(0 => 89, 1 => 1), + array(0 => 89, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), - array(0 => 73, 1 => 3), - array(0 => 73, 1 => 3), array(0 => 73, 1 => 1), - array(0 => 73, 1 => 2), - array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), - array(0 => 73, 1 => 2), + array(0 => 73, 1 => 4), array(0 => 73, 1 => 3), - array(0 => 73, 1 => 3), - array(0 => 82, 1 => 7), - array(0 => 82, 1 => 7), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 3), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 3), - array(0 => 72, 1 => 3), - array(0 => 72, 1 => 3), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 3), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 2), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 3), - array(0 => 88, 1 => 1), - array(0 => 88, 1 => 1), - array(0 => 70, 1 => 1), - array(0 => 70, 1 => 1), - array(0 => 70, 1 => 3), - array(0 => 70, 1 => 1), - array(0 => 70, 1 => 3), - array(0 => 70, 1 => 4), - array(0 => 70, 1 => 3), - array(0 => 70, 1 => 4), - array(0 => 74, 1 => 2), - array(0 => 74, 1 => 2), - array(0 => 92, 1 => 2), - array(0 => 92, 1 => 0), - array(0 => 93, 1 => 2), + array(0 => 73, 1 => 4), + array(0 => 70, 1 => 2), + array(0 => 70, 1 => 2), array(0 => 93, 1 => 2), - array(0 => 93, 1 => 4), - array(0 => 93, 1 => 2), - array(0 => 93, 1 => 2), - array(0 => 93, 1 => 4), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 5), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 3), - array(0 => 93, 1 => 2), - array(0 => 79, 1 => 1), - array(0 => 79, 1 => 1), - array(0 => 79, 1 => 2), - array(0 => 94, 1 => 1), - array(0 => 94, 1 => 1), + array(0 => 93, 1 => 0), + array(0 => 94, 1 => 2), + array(0 => 94, 1 => 2), + array(0 => 94, 1 => 4), + array(0 => 94, 1 => 2), + array(0 => 94, 1 => 2), + array(0 => 94, 1 => 4), array(0 => 94, 1 => 3), - array(0 => 91, 1 => 2), + array(0 => 94, 1 => 5), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 2), + array(0 => 80, 1 => 1), + array(0 => 80, 1 => 1), + array(0 => 80, 1 => 2), + array(0 => 95, 1 => 1), array(0 => 95, 1 => 1), - array(0 => 95, 1 => 2), - array(0 => 96, 1 => 3), - array(0 => 96, 1 => 3), - array(0 => 96, 1 => 5), - array(0 => 96, 1 => 6), + array(0 => 95, 1 => 3), + array(0 => 92, 1 => 2), + array(0 => 96, 1 => 1), array(0 => 96, 1 => 2), - array(0 => 87, 1 => 4), - array(0 => 97, 1 => 4), - array(0 => 97, 1 => 4), - array(0 => 98, 1 => 3), - array(0 => 98, 1 => 1), - array(0 => 98, 1 => 0), - array(0 => 75, 1 => 3), - array(0 => 75, 1 => 2), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 5), + array(0 => 97, 1 => 6), + array(0 => 97, 1 => 2), + array(0 => 88, 1 => 4), + array(0 => 98, 1 => 4), + array(0 => 98, 1 => 4), array(0 => 99, 1 => 3), - array(0 => 99, 1 => 2), - array(0 => 80, 1 => 2), - array(0 => 80, 1 => 0), - array(0 => 100, 1 => 2), + array(0 => 99, 1 => 1), + array(0 => 99, 1 => 0), + array(0 => 76, 1 => 3), + array(0 => 76, 1 => 2), + array(0 => 100, 1 => 3), array(0 => 100, 1 => 2), - array(0 => 90, 1 => 1), - array(0 => 90, 1 => 2), - array(0 => 90, 1 => 1), - array(0 => 90, 1 => 2), - array(0 => 90, 1 => 3), - array(0 => 85, 1 => 1), - array(0 => 85, 1 => 1), - array(0 => 84, 1 => 1), + array(0 => 81, 1 => 2), + array(0 => 81, 1 => 0), + array(0 => 101, 1 => 2), + array(0 => 101, 1 => 2), + array(0 => 91, 1 => 1), + array(0 => 91, 1 => 2), + array(0 => 91, 1 => 1), + array(0 => 91, 1 => 2), + array(0 => 91, 1 => 3), array(0 => 86, 1 => 1), - array(0 => 83, 1 => 3), - array(0 => 101, 1 => 1), - array(0 => 101, 1 => 3), - array(0 => 101, 1 => 0), - array(0 => 102, 1 => 3), - array(0 => 102, 1 => 3), + array(0 => 86, 1 => 1), + array(0 => 85, 1 => 1), + array(0 => 87, 1 => 1), + array(0 => 84, 1 => 3), array(0 => 102, 1 => 1), - array(0 => 89, 1 => 2), - array(0 => 89, 1 => 3), - array(0 => 103, 1 => 2), + array(0 => 102, 1 => 3), + array(0 => 102, 1 => 0), + array(0 => 103, 1 => 3), + array(0 => 103, 1 => 3), array(0 => 103, 1 => 1), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 1), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 1), + array(0 => 90, 1 => 2), + array(0 => 90, 1 => 3), + array(0 => 104, 1 => 2), array(0 => 104, 1 => 1), + array(0 => 105, 1 => 3), + array(0 => 105, 1 => 3), + array(0 => 105, 1 => 1), + array(0 => 105, 1 => 3), + array(0 => 105, 1 => 3), + array(0 => 105, 1 => 1), + array(0 => 105, 1 => 1), ); public static $yyReduceMap = array( 0 => 0, 1 => 1, 2 => 2, + 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, + 21 => 7, + 22 => 7, + 23 => 7, + 36 => 7, + 56 => 7, + 57 => 7, + 65 => 7, + 66 => 7, + 70 => 7, + 79 => 7, + 84 => 7, + 85 => 7, + 90 => 7, + 94 => 7, + 95 => 7, + 99 => 7, + 101 => 7, + 106 => 7, + 168 => 7, + 173 => 7, 8 => 8, - 16 => 8, - 17 => 8, - 43 => 8, - 63 => 8, - 64 => 8, - 72 => 8, - 73 => 8, - 77 => 8, - 86 => 8, - 91 => 8, - 92 => 8, - 97 => 8, - 101 => 8, - 102 => 8, - 106 => 8, - 108 => 8, - 113 => 8, - 175 => 8, - 180 => 8, 9 => 9, 10 => 10, - 11 => 11, 12 => 12, - 15 => 12, 13 => 13, - 71 => 13, 14 => 14, - 87 => 14, - 89 => 14, - 90 => 14, - 120 => 14, + 15 => 15, + 16 => 16, + 17 => 17, 18 => 18, 19 => 19, 20 => 20, - 22 => 20, - 24 => 20, - 21 => 21, - 23 => 21, - 25 => 21, + 24 => 24, + 25 => 25, 26 => 26, - 27 => 26, + 27 => 27, 28 => 28, 29 => 29, 30 => 30, 31 => 31, + 33 => 31, 32 => 32, - 33 => 33, 34 => 34, 35 => 35, - 36 => 36, 37 => 37, 38 => 38, - 40 => 38, 39 => 39, + 40 => 40, 41 => 41, 42 => 42, + 43 => 43, 44 => 44, 45 => 45, 46 => 46, @@ -1488,85 +1342,90 @@ class Smarty_Internal_Templateparser 48 => 48, 49 => 49, 50 => 50, + 59 => 50, + 148 => 50, + 152 => 50, + 156 => 50, + 157 => 50, 51 => 51, + 149 => 51, + 155 => 51, 52 => 52, 53 => 53, - 54 => 54, + 54 => 53, 55 => 55, - 56 => 56, - 57 => 57, - 66 => 57, - 155 => 57, - 159 => 57, - 163 => 57, - 164 => 57, + 133 => 55, 58 => 58, - 156 => 58, - 162 => 58, - 59 => 59, 60 => 60, - 61 => 60, - 62 => 62, - 140 => 62, - 65 => 65, + 61 => 61, + 62 => 61, + 63 => 63, + 64 => 64, 67 => 67, 68 => 68, 69 => 68, - 70 => 70, + 71 => 71, + 98 => 71, + 72 => 72, + 73 => 73, 74 => 74, 75 => 75, - 76 => 75, + 76 => 76, + 77 => 77, 78 => 78, - 105 => 78, - 79 => 79, 80 => 80, + 82 => 80, + 83 => 80, + 113 => 80, 81 => 81, - 82 => 82, - 83 => 83, - 84 => 84, - 85 => 85, + 86 => 86, + 87 => 87, 88 => 88, - 93 => 93, - 94 => 94, - 95 => 95, + 89 => 89, + 91 => 91, + 92 => 92, + 93 => 92, 96 => 96, - 98 => 98, - 99 => 99, - 100 => 99, + 97 => 97, + 100 => 100, + 102 => 102, 103 => 103, 104 => 104, + 105 => 105, 107 => 107, + 108 => 108, 109 => 109, 110 => 110, 111 => 111, 112 => 112, 114 => 114, + 170 => 114, 115 => 115, 116 => 116, 117 => 117, 118 => 118, 119 => 119, + 120 => 120, + 128 => 120, 121 => 121, - 177 => 121, 122 => 122, 123 => 123, - 124 => 124, + 124 => 123, + 126 => 123, + 127 => 123, 125 => 125, - 126 => 126, - 127 => 127, - 135 => 127, - 128 => 128, 129 => 129, 130 => 130, - 131 => 130, - 133 => 130, - 134 => 130, + 131 => 131, + 174 => 131, 132 => 132, + 134 => 134, + 135 => 135, 136 => 136, 137 => 137, 138 => 138, - 181 => 138, 139 => 139, + 140 => 140, 141 => 141, 142 => 142, 143 => 143, @@ -1574,40 +1433,33 @@ class Smarty_Internal_Templateparser 145 => 145, 146 => 146, 147 => 147, - 148 => 148, - 149 => 149, 150 => 150, 151 => 151, - 152 => 152, 153 => 153, 154 => 154, - 157 => 157, 158 => 158, + 159 => 159, 160 => 160, 161 => 161, + 162 => 162, + 163 => 163, + 164 => 164, 165 => 165, 166 => 166, 167 => 167, - 168 => 168, 169 => 169, - 170 => 170, 171 => 171, 172 => 172, - 173 => 173, - 174 => 174, + 175 => 175, 176 => 176, + 177 => 177, 178 => 178, - 179 => 179, + 179 => 178, + 181 => 178, + 180 => 180, 182 => 182, 183 => 183, 184 => 184, - 185 => 185, - 186 => 185, - 188 => 185, - 187 => 187, - 189 => 189, - 190 => 190, - 191 => 191, ); /** * result status @@ -1711,9 +1563,9 @@ class Smarty_Internal_Templateparser public $yyTokenName = array( '$', 'VERT', 'COLON', 'UNIMATH', 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', - 'LITERALSTART', 'LITERALEND', 'LITERAL', 'RDEL', - 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL', - 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', + 'LITERALSTART', 'LITERALEND', 'LITERAL', 'SIMPELOUTPUT', + 'SIMPLETAG', 'LDEL', 'RDEL', 'DOLLARID', + 'EQUAL', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER', 'CLOSETAG', @@ -1724,18 +1576,18 @@ class Smarty_Internal_Templateparser 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK', - 'error', 'start', 'template', 'template_element', - 'smartytag', 'literal', 'text_content', 'literal_elements', - 'literal_element', 'tag', 'variable', 'attributes', - 'value', 'expr', 'varindexed', 'modifierlist', - 'statement', 'statements', 'foraction', 'varvar', - 'modparameters', 'attribute', 'ternary', 'array', - 'tlop', 'lop', 'scond', 'function', - 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object', - 'arrayindex', 'indexdef', 'varvarele', 'objectchain', - 'objectelement', 'method', 'params', 'modifier', - 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted', - 'doublequotedcontent', + 'error', 'start', 'template', 'literal_e2', + 'literal_e1', 'smartytag', 'tagbody', 'tag', + 'outattr', 'eqoutattr', 'varindexed', 'output', + 'attributes', 'variable', 'value', 'expr', + 'modifierlist', 'statement', 'statements', 'foraction', + 'varvar', 'modparameters', 'attribute', 'ternary', + 'array', 'tlop', 'lop', 'scond', + 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', + 'object', 'arrayindex', 'indexdef', 'varvarele', + 'objectchain', 'objectelement', 'method', 'params', + 'modifier', 'modparameter', 'arrayelements', 'arrayelement', + 'doublequoted', 'doublequotedcontent', ); /** * internal error flag @@ -1759,10 +1611,6 @@ function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_Templat $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false; $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template(); } /* The parser's stack */ - /** - * @param $yymajor - * @param $yypminor - */ public static function yy_destructor($yymajor, $yypminor) { switch ($yymajor) { @@ -1787,7 +1635,7 @@ public function insertPhpCode($code) */ public function errorRunDown() { - while ($this->yystack !== Array()) { + while ($this->yystack !== array()) { $this->yy_pop_parser_stack(); } if (is_resource($this->yyTraceFILE)) { @@ -1813,10 +1661,6 @@ public function mergePrefixCode($code) return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true)); } - /** - * @param $TraceFILE - * @param $zTracePrompt - */ public function Trace($TraceFILE, $zTracePrompt) { if (!$TraceFILE) { @@ -1834,11 +1678,6 @@ public function PrintTrace() $this->yyTracePrompt = '
'; } - /** - * @param $tokenType - * - * @return mixed|string - */ public function tokenName($tokenType) { if ($tokenType === 0) { @@ -1878,11 +1717,6 @@ public function __destruct() } } - /** - * @param $token - * - * @return array|mixed - */ public function yy_get_expected_tokens($token) { static $res3 = array(); @@ -1906,7 +1740,7 @@ public function yy_get_expected_tokens($token) // reduce action $done = 0; do { - if ($done++ == 100) { + if ($done++ === 100) { $this->yyidx = $yyidx; $this->yystack = $stack; // too much recursion prevents proper detection @@ -1943,7 +1777,7 @@ public function yy_get_expected_tokens($token) $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; $this->yystack[ $this->yyidx ] = $x; continue 2; - } else if ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { + } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { $this->yyidx = $yyidx; $this->yystack = $stack; // the last token was just ignored, we can't accept @@ -1967,11 +1801,6 @@ public function yy_get_expected_tokens($token) return array_unique($expected); } - /** - * @param $token - * - * @return bool - */ public function yy_is_expected_token($token) { static $res = array(); @@ -1997,7 +1826,7 @@ public function yy_is_expected_token($token) // reduce action $done = 0; do { - if ($done++ == 100) { + if ($done++ === 100) { $this->yyidx = $yyidx; $this->yystack = $stack; // too much recursion prevents proper detection @@ -2033,7 +1862,7 @@ public function yy_is_expected_token($token) $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; $this->yystack[ $this->yyidx ] = $x; continue 2; - } else if ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { + } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { $this->yyidx = $yyidx; $this->yystack = $stack; if (!$token) { @@ -2061,11 +1890,6 @@ public function yy_is_expected_token($token) return true; } - /** - * @param $iLookAhead - * - * @return int|mixed - */ public function yy_find_shift_action($iLookAhead) { $stateno = $this->yystack[ $this->yyidx ]->stateno; @@ -2078,7 +1902,7 @@ public function yy_find_shift_action($iLookAhead) if ($i === self::YY_SHIFT_USE_DFLT) { return self::$yy_default[ $stateno ]; } - if ($iLookAhead == self::YYNOCODE) { + if ($iLookAhead === self::YYNOCODE) { return self::YY_NO_ACTION; } $i += $iLookAhead; @@ -2100,12 +1924,6 @@ public function yy_find_shift_action($iLookAhead) } } - /** - * @param $stateno - * @param $iLookAhead - * - * @return int|mixed - */ public function yy_find_reduce_action($stateno, $iLookAhead) { /* $stateno = $this->yystack[$this->yyidx]->stateno; */ @@ -2113,10 +1931,10 @@ public function yy_find_reduce_action($stateno, $iLookAhead) return self::$yy_default[ $stateno ]; } $i = self::$yy_reduce_ofst[ $stateno ]; - if ($i == self::YY_REDUCE_USE_DFLT) { + if ($i === self::YY_REDUCE_USE_DFLT) { return self::$yy_default[ $stateno ]; } - if ($iLookAhead == self::YYNOCODE) { + if ($iLookAhead === self::YYNOCODE) { return self::YY_NO_ACTION; } $i += $iLookAhead; @@ -2129,14 +1947,6 @@ public function yy_find_reduce_action($stateno, $iLookAhead) } #line 234 "../smarty/lexer/smarty_internal_templateparser.y" - - /** - * @param $yyNewState - * @param $yyMajor - * @param $yypMinor - * - * @throws \SmartyCompilerException - */ public function yy_shift($yyNewState, $yyMajor, $yypMinor) { $this->yyidx++; @@ -2173,7 +1983,7 @@ public function yy_shift($yyNewState, $yyMajor, $yypMinor) } } - #line 244 "../smarty/lexer/smarty_internal_templateparser.y" + #line 242 "../smarty/lexer/smarty_internal_templateparser.y" function yy_r0() { $this->root_buffer->prepend_array($this, $this->template_prefix); @@ -2183,41 +1993,6 @@ function yy_r0() #line 251 "../smarty/lexer/smarty_internal_templateparser.y" function yy_r1() - { - if ($this->yystack[ $this->yyidx + 0 ]->minor != null) { - $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor); - } - } - - #line 265 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r2() - { - if ($this->yystack[ $this->yyidx + 0 ]->minor != null) { - // because of possible code injection - $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor); - } - } - - #line 276 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r4() - { - if ($this->compiler->has_code) { - $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor); - } else { - $this->_retvalue = null; - } - $this->compiler->has_variable_string = false; - $this->block_nesting_level = count($this->compiler->_tag_stack); - } - - #line 280 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r5() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor); - } - - #line 291 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r6() { $code = $this->compiler->compileTag('private_php', array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor), @@ -2229,69 +2004,78 @@ function yy_r6() $tmp .= $code; } $this->compiler->prefix_code = array(); - $this->_retvalue = - new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true)); - } else { - $this->_retvalue = null; + $this->current_buffer->append_subtree($this, + new Smarty_Internal_ParseTree_Tag($this, + $this->compiler->processNocacheCode($tmp . + $code, + true))); } } - #line 295 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r7() + #line 255 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r2() { - $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor); + $this->current_buffer->append_subtree($this, + $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor)); } - #line 299 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r8() + #line 259 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r3() { - $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; + $this->strip = true; } - #line 304 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r9() + #line 264 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r4() { - $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; + $this->strip = false; } - #line 308 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r10() + #line 269 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r5() { - $this->strip = true; + $this->current_buffer->append_subtree($this, + new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + + -1 ]->minor)); } - #line 313 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r11() + #line 272 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r6() { - $this->strip = false; + $this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor; } - #line 317 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r12() + #line 276 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r7() { - $this->_retvalue = ''; + $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 321 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r13() + #line 281 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r8() { - $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; + $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 337 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r14() + #line 285 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r9() { - $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; + $this->_retvalue = ''; } - #line 343 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r18() + #line 297 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r10() { - $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; + if ($this->compiler->has_code) { + $this->current_buffer->append_subtree($this, + $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor)); + } + $this->compiler->has_variable_string = false; + $this->block_nesting_level = count($this->compiler->_tag_stack); } - #line 353 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r19() + #line 307 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r12() { $var = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), @@ -2312,87 +2096,93 @@ function yy_r19() } } - #line 357 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r20() + #line 327 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r13() + { + $tag = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, + $this->compiler->getLdelLength(), + -$this->compiler->getRdelLength())); + if ($tag == 'strip') { + $this->strip = true; + $this->_retvalue = null;; + } else { + if (defined($tag)) { + if ($this->security) { + $this->security->isTrustedConstant($tag, $this->compiler); + } + $this->_retvalue = + $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag)); + } else { + if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { + $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'")); + } else { + $this->_retvalue = $this->compiler->compileTag($tag, array()); + } + } + } + } + + #line 331 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r14() { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', - array(), - array('value' => $this->yystack[ $this->yyidx + 0 ]->minor)); + $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; } - #line 380 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r21() + #line 335 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r15() { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', - $this->yystack[ $this->yyidx + 0 ]->minor, - array('value' => $this->yystack[ $this->yyidx + -1 ]->minor)); + $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; } - #line 388 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r26() + #line 344 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r16() { - $this->_retvalue = $this->compiler->compileTag('assign', - array(array('value' => $this->yystack[ $this->yyidx + - 0 ]->minor), - array('var' => '\'' . substr($this->yystack[ $this->yyidx + - -2 ]->minor, - 1) . '\''))); + $this->_retvalue = $this->compiler->compileTag('private_print_expression', + $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ], + array('value' => $this->yystack[ $this->yyidx + + 0 ]->minor[ 0 ])); } - #line 392 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r28() + #line 348 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r17() { $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[ $this->yyidx + - -1 ]->minor), + 0 ]->minor[ 0 ]), array('var' => '\'' . substr($this->yystack[ $this->yyidx + - -3 ]->minor, + -1 ]->minor, 1) . '\'')), - $this->yystack[ $this->yyidx + 0 ]->minor)); + $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ])); } - #line 397 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r29() + #line 352 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r18() { $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[ $this->yyidx + - -1 ]->minor), + 0 ]->minor[ 0 ]), array('var' => $this->yystack[ $this->yyidx + - -3 ]->minor[ 'var' ])), - $this->yystack[ $this->yyidx + 0 ]->minor), + -1 ]->minor[ 'var' ])), + $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]), array('smarty_internal_index' => $this->yystack[ $this->yyidx + - -3 ]->minor[ 'smarty_internal_index' ])); + -1 ]->minor[ 'smarty_internal_index' ])); } - #line 419 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r30() + #line 356 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r19() { - $tag = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, - $this->compiler->getLdelLength(), - -$this->compiler->getRdelLength())); - if ($tag === 'strip') { - $this->strip = true; - $this->_retvalue = null;; - } else { - if (defined($tag)) { - if ($this->security) { - $this->security->isTrustedConstant($tag, $this->compiler); - } - $this->_retvalue = - $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag)); - } else { - if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { - $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'")); - } else { - $this->_retvalue = $this->compiler->compileTag($tag, array()); - } - } - } + $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 429 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r31() + #line 371 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r20() + { + $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); + } + + #line 381 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r24() { if (defined($this->yystack[ $this->yyidx + -1 ]->minor)) { if ($this->security) { @@ -2408,8 +2198,8 @@ function yy_r31() } } - #line 442 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r32() + #line 394 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r25() { if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { if ($this->security) { @@ -2423,8 +2213,8 @@ function yy_r32() } } - #line 454 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r33() + #line 406 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r26() { if (defined($this->yystack[ $this->yyidx + -2 ]->minor)) { if ($this->security) { @@ -2444,8 +2234,8 @@ function yy_r33() } } - #line 459 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r34() + #line 411 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r27() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, @@ -2453,8 +2243,8 @@ function yy_r34() -1 ]->minor)); } - #line 464 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r35() + #line 416 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r28() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + -4 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, @@ -2464,8 +2254,8 @@ function yy_r35() -2 ]->minor)); } - #line 469 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r36() + #line 421 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r29() { $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' . substr($this->yystack[ $this->yyidx + @@ -2473,8 +2263,8 @@ function yy_r36() 1) . '\''))); } - #line 474 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r37() + #line 426 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r30() { $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength())); $this->_retvalue = $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, @@ -2483,8 +2273,8 @@ function yy_r37() 0 ]->minor)); } - #line 479 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r38() + #line 431 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r31() { $tag = trim(substr($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler->getLdelLength())); $this->_retvalue = $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, @@ -2493,8 +2283,8 @@ function yy_r38() -1 ]->minor)); } - #line 490 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r39() + #line 442 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r32() { $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength())); $this->_retvalue = $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, @@ -2503,8 +2293,8 @@ function yy_r39() 0 ]->minor)); } - #line 494 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r41() + #line 446 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r34() { $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, @@ -2519,14 +2309,14 @@ function yy_r41() 1); } - #line 502 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r42() + #line 454 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r35() { $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 506 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r44() + #line 458 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r37() { $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, @@ -2537,8 +2327,8 @@ function yy_r44() 0); } - #line 511 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r45() + #line 463 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r38() { $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, @@ -2551,8 +2341,8 @@ function yy_r45() 0); } - #line 515 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r46() + #line 467 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r39() { $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, @@ -2562,8 +2352,8 @@ function yy_r46() -1 ]->minor)))); } - #line 518 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r47() + #line 470 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r40() { $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, @@ -2575,14 +2365,14 @@ function yy_r47() -3 ]->minor)))); } - #line 523 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r48() + #line 475 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r41() { $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 527 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r49() + #line 479 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r42() { $this->_retvalue = $this->compiler->compileTag('setfilter', array(), @@ -2592,8 +2382,8 @@ function yy_r49() 0 ]->minor)))); } - #line 533 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r50() + #line 485 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r43() { $this->_retvalue = $this->compiler->compileTag('setfilter', array(), @@ -2605,8 +2395,8 @@ function yy_r50() 0 ]->minor))); } - #line 542 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r51() + #line 494 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r44() { $tag = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), @@ -2620,14 +2410,14 @@ function yy_r51() } } - #line 546 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r52() + #line 498 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r45() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array()); } - #line 551 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r53() + #line 503 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r46() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor . 'close', array(), @@ -2635,8 +2425,8 @@ function yy_r53() 0 ]->minor)); } - #line 555 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r54() + #line 507 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r47() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor . 'close', array(), @@ -2644,8 +2434,8 @@ function yy_r54() 0 ]->minor)); } - #line 563 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r55() + #line 515 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r48() { $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor . 'close', array(), @@ -2655,27 +2445,27 @@ function yy_r55() 0 ]->minor)); } - #line 569 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r56() + #line 521 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r49() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 574 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r57() + #line 526 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r50() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor); } - #line 579 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r58() + #line 531 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r51() { $this->_retvalue = array(); } - #line 590 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r59() + #line 542 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r52() { if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { if ($this->security) { @@ -2690,66 +2480,72 @@ function yy_r59() } } - #line 598 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r60() + #line 550 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r53() { $this->_retvalue = array(trim($this->yystack[ $this->yyidx + -1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 610 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r62() + #line 562 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r55() { $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\''; } - #line 623 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r65() + #line 575 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r58() { $this->_retvalue = array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 628 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r67() + #line 580 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r60() { $this->yystack[ $this->yyidx + -2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor; $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor; } - #line 635 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r68() + #line 587 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r61() { $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'', 'value' => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 659 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r70() + #line 591 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r63() { $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + -2 ]->minor, 'value' => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 664 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r74() + #line 611 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r64() + { + $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; + } + + #line 616 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r67() { $this->_retvalue = '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '://' . $this->yystack[ $this->yyidx + 0 ]->minor . '\')'; } - #line 678 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r75() + #line 630 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r68() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . trim($this->yystack[ $this->yyidx + -1 ]->minor) . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 684 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r78() + #line 636 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r71() { $this->_retvalue = $this->compiler->compileTag('private_modifier', array(), @@ -2759,44 +2555,44 @@ function yy_r78() 0 ]->minor)); } - #line 688 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r79() + #line 640 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r72() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')'; } - #line 692 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r80() + #line 644 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r73() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 696 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r81() + #line 648 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r74() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - #line 700 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r82() + #line 652 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r75() { $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor . ')'; } - #line 708 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r83() + #line 660 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r76() { $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + -2 ]->minor . ',(array)' . $this->yystack[ $this->yyidx + 0 ]->minor . ')'; } - #line 712 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r84() + #line 664 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r77() { $this->_retvalue = $this->yystack[ $this->yyidx + -5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + @@ -2806,40 +2602,46 @@ function yy_r84() ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 727 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r85() + #line 674 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r78() { $this->_retvalue = $this->yystack[ $this->yyidx + -5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + -2 ]->minor . ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 748 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r88() + #line 679 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r80() + { + $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; + } + + #line 700 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r81() { $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 752 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r93() + #line 704 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r86() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 756 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r94() + #line 708 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r87() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.'; } - #line 761 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r95() + #line 713 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r88() { $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 778 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r96() + #line 730 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r89() { if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { if ($this->security) { @@ -2851,32 +2653,32 @@ function yy_r96() } } - #line 782 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r98() + #line 734 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r91() { - $this->_retvalue = "(" . $this->yystack[ $this->yyidx + -1 ]->minor . ")"; + $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - #line 800 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r99() + #line 752 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r92() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 811 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r103() + #line 763 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r96() { $prefixVar = $this->compiler->getNewPrefixVariable(); if ($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ] === '\'smarty\'') { - $this->compiler->appendPrefixCode("compiler->appendPrefixCode("compiler->compileTag('private_special_variable', array(), $this->yystack[ $this->yyidx + -2 ]->minor[ 'smarty_internal_index' ]) . ';?>'); } else { - $this->compiler->appendPrefixCode("compiler->appendPrefixCode("compiler->compileVariable($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ]) . $this->yystack[ $this->yyidx + -2 ]->minor[ 'smarty_internal_index' ] . @@ -2886,17 +2688,17 @@ function yy_r103() $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]; } - #line 828 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r104() + #line 780 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r97() { $prefixVar = $this->compiler->getNewPrefixVariable(); $tmp = $this->compiler->appendCode('', $this->yystack[ $this->yyidx + 0 ]->minor); - $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "')); + $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "")); $this->_retvalue = $prefixVar; } - #line 847 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r107() + #line 799 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r100() { if (!in_array(strtolower($this->yystack[ $this->yyidx + -2 ]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + -2 ]->minor, @@ -2917,21 +2719,21 @@ function yy_r107() } } - #line 858 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r109() + #line 810 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r102() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 861 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r110() + #line 813 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r103() { $this->_retvalue = $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''); } - #line 874 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r111() + #line 826 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r104() { if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] === '\'smarty\'') { $smarty_var = $this->compiler->compileTag('private_special_variable', @@ -2948,45 +2750,45 @@ function yy_r111() } } - #line 884 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r112() + #line 836 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r105() { $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + -2 ]->minor . ']->' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 888 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r114() + #line 840 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r107() { $this->_retvalue = - $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + -1 ]->minor . "'"); + $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\''); } - #line 892 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r115() + #line 844 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r108() { $this->_retvalue = '(is_array($tmp = ' . - $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + -2 ]->minor . - "'") . ') ? $tmp' . + $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -2 ]->minor . + '\'') . ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)'; } - #line 896 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r116() + #line 848 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r109() { $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -1 ]->minor); } - #line 900 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r117() + #line 852 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r110() { $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -2 ]->minor) . ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)'; } - #line 903 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r118() + #line 855 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r111() { $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . @@ -2994,60 +2796,60 @@ function yy_r118() 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 916 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r119() + #line 868 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r112() { $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + -1 ]->minor, 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 922 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r121() + #line 874 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r114() { return; } - #line 925 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r122() + #line 877 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r115() { $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') . ']'; } - #line 929 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r123() + #line 881 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r116() { $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']'; } - #line 933 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r124() + #line 885 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r117() { $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + -2 ]->minor) . '->' . $this->yystack[ $this->yyidx + 0 ]->minor . ']'; } - #line 937 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r125() + #line 889 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r118() { - $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']"; + $this->_retvalue = '[\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\']'; } - #line 942 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r126() + #line 894 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r119() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']'; } - #line 947 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r127() + #line 899 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r120() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; } - #line 951 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r128() + #line 903 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r121() { $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), @@ -3056,8 +2858,8 @@ function yy_r128() '\'][\'index\']') . ']'; } - #line 954 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r129() + #line 906 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r122() { $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), @@ -3066,46 +2868,46 @@ function yy_r129() $this->yystack[ $this->yyidx + -1 ]->minor . '\']') . ']'; } - #line 960 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r130() + #line 912 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r123() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; } - #line 976 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r132() + #line 928 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r125() { $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'') . ']';; } - #line 986 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r136() + #line 938 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r129() { $this->_retvalue = '[]'; } - #line 990 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r137() + #line 942 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r130() { $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''; } - #line 995 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r138() + #line 947 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r131() { - $this->_retvalue = "''"; + $this->_retvalue = '\'\''; } - #line 1003 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r139() + #line 955 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r132() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1009 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r141() + #line 961 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r134() { $var = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), @@ -3114,14 +2916,14 @@ function yy_r141() $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\''); } - #line 1016 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r142() + #line 968 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r135() { $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - #line 1025 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r143() + #line 977 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r136() { if ($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ] === '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable', @@ -3136,20 +2938,20 @@ function yy_r143() } } - #line 1030 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r144() + #line 982 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r137() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1035 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r145() + #line 987 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r138() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1042 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r146() + #line 994 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r139() { if ($this->security && substr($this->yystack[ $this->yyidx + -1 ]->minor, 0, 1) === '_') { $this->compiler->trigger_template_error(self::Err1); @@ -3158,8 +2960,8 @@ function yy_r146() '->' . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1049 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r147() + #line 1001 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r140() { if ($this->security) { $this->compiler->trigger_template_error(self::Err2); @@ -3168,8 +2970,8 @@ function yy_r147() $this->yystack[ $this->yyidx + 0 ]->minor . '}'; } - #line 1056 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r148() + #line 1008 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r141() { if ($this->security) { $this->compiler->trigger_template_error(self::Err2); @@ -3178,8 +2980,8 @@ function yy_r148() '->{' . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}'; } - #line 1064 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r149() + #line 1016 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r142() { if ($this->security) { $this->compiler->trigger_template_error(self::Err2); @@ -3189,121 +2991,121 @@ function yy_r149() $this->yystack[ $this->yyidx + 0 ]->minor . '}'; } - #line 1072 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r150() + #line 1024 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r143() { $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1080 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r151() + #line 1032 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r144() { $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + -1 ]->minor); } - #line 1087 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r152() + #line 1039 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r145() { if ($this->security && substr($this->yystack[ $this->yyidx + -3 ]->minor, 0, 1) === '_') { $this->compiler->trigger_template_error(self::Err1); } - $this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . "(" . - implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ")"; + $this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . '(' . + implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')'; } - #line 1098 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r153() + #line 1050 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r146() { if ($this->security) { $this->compiler->trigger_template_error(self::Err2); } $prefixVar = $this->compiler->getNewPrefixVariable(); - $this->compiler->appendPrefixCode("compiler->compileVariable('\'' . - substr($this->yystack[ $this->yyidx + - -3 ]->minor, - 1) . - '\'') . ';?>'); + $this->compiler->appendPrefixCode("compiler->compileVariable('\'' . + substr($this->yystack[ $this->yyidx + + -3 ]->minor, + 1) . '\'') . + ';?>'); $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')'; } - #line 1115 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r154() + #line 1067 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r147() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); } - #line 1119 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r157() + #line 1071 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r150() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor))); } - #line 1127 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r158() + #line 1079 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r151() { $this->_retvalue = array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor)); } - #line 1135 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r160() + #line 1087 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r153() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor); } - #line 1154 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r161() + #line 1106 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r154() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 1159 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r165() + #line 1111 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r158() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method'); } - #line 1164 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r166() + #line 1116 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r159() { $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method'); } - #line 1169 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r167() + #line 1121 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r160() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, ''); } - #line 1174 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r168() + #line 1126 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r161() { $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property'); } - #line 1180 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r169() + #line 1132 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r162() { $this->_retvalue = array($this->yystack[ $this->yyidx + -2 ]->minor, $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor, 'property'); } - #line 1184 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r170() + #line 1136 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r163() { $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' '; } - #line 1203 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r171() + #line 1155 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r164() { static $lops = array( 'eq' => ' == ', @@ -3324,8 +3126,8 @@ function yy_r171() $this->_retvalue = $lops[ $op ]; } - #line 1216 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r172() + #line 1168 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r165() { static $tlops = array( 'isdivby' => array('op' => ' % ', 'pre' => '!('), @@ -3339,8 +3141,8 @@ function yy_r172() $this->_retvalue = $tlops[ $op ]; } - #line 1230 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r173() + #line 1182 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r166() { static $scond = array( 'iseven' => '!(1 & ', @@ -3352,89 +3154,84 @@ function yy_r173() $this->_retvalue = $scond[ $op ]; } - #line 1238 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r174() + #line 1190 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r167() { $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - #line 1246 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r176() + #line 1198 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r169() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1250 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r178() + #line 1202 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r171() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1266 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r179() + #line 1218 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r172() { $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor; } - #line 1272 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r182() + #line 1224 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r175() { $this->compiler->leaveDoubleQuote(); $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor->to_smarty_php($this); } - #line 1277 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r183() + #line 1229 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r176() { $this->yystack[ $this->yyidx + -1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor); $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; } - #line 1281 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r184() + #line 1233 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r177() { $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor); } - #line 1289 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r185() + #line 1241 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r178() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + -1 ]->minor); } - #line 1297 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r187() + #line 1249 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r180() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\']->value'); } - #line 1301 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r189() + #line 1253 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r182() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'); } - #line 1305 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r190() + #line 1257 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r183() { $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor); } - function yy_r191() + function yy_r184() { $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor); } - /** - * @param $yyruleno - * - * @throws \SmartyCompilerException - */ public function yy_reduce($yyruleno) { if ($this->yyTraceFILE && $yyruleno >= 0 @@ -3471,7 +3268,7 @@ public function yy_reduce($yyruleno) } else { $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); } - } else if ($yyact == self::YYNSTATE + self::YYNRULE + 1) { + } else if ($yyact === self::YYNSTATE + self::YYNRULE + 1) { $this->yy_accept(); } } @@ -3486,12 +3283,6 @@ public function yy_parse_failed() } } - /** - * @param $yymajor - * @param $TOKEN - * - * @throws \SmartyCompilerException - */ public function yy_syntax_error($yymajor, $TOKEN) { #line 214 "../smarty/lexer/smarty_internal_templateparser.y" @@ -3514,12 +3305,6 @@ public function yy_accept() $this->retvalue = $this->_retvalue; } - /** - * @param $yymajor - * @param $yytokenvalue - * - * @throws \SmartyCompilerException - */ public function doParse($yymajor, $yytokenvalue) { $yyerrorhit = 0; /* True if yymajor has invoked an error */ @@ -3556,7 +3341,7 @@ public function doParse($yymajor, $yytokenvalue) } } else if ($yyact < self::YYNSTATE + self::YYNRULE) { $this->yy_reduce($yyact - self::YYNSTATE); - } else if ($yyact == self::YY_ERROR_ACTION) { + } else if ($yyact === self::YY_ERROR_ACTION) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sSyntax Error!\n", @@ -3567,7 +3352,7 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_syntax_error($yymajor, $yytokenvalue); } $yymx = $this->yystack[ $this->yyidx ]->major; - if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) { + if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", @@ -3578,7 +3363,7 @@ public function doParse($yymajor, $yytokenvalue) $yymajor = self::YYNOCODE; } else { while ($this->yyidx >= 0 && - $yymx != self::YYERRORSYMBOL && + $yymx !== self::YYERRORSYMBOL && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE ) { $this->yy_pop_parser_stack(); @@ -3587,7 +3372,7 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_destructor($yymajor, $yytokenvalue); $this->yy_parse_failed(); $yymajor = self::YYNOCODE; - } else if ($yymx != self::YYERRORSYMBOL) { + } else if ($yymx !== self::YYERRORSYMBOL) { $u2 = 0; $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); } @@ -3609,7 +3394,7 @@ public function doParse($yymajor, $yytokenvalue) $this->yy_accept(); $yymajor = self::YYNOCODE; } - } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); + } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); } }