gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

smarty_internal_templateparser.php (124349B)


      1 <?php
      2 
      3 class TP_yyToken implements ArrayAccess
      4 {
      5     public $string = '';
      6 
      7     public $metadata = array();
      8 
      9     public function __construct($s, $m = array())
     10     {
     11         if ($s instanceof TP_yyToken) {
     12             $this->string = $s->string;
     13             $this->metadata = $s->metadata;
     14         } else {
     15             $this->string = (string) $s;
     16             if ($m instanceof TP_yyToken) {
     17                 $this->metadata = $m->metadata;
     18             } elseif (is_array($m)) {
     19                 $this->metadata = $m;
     20             }
     21         }
     22     }
     23 
     24     public function __toString()
     25     {
     26         return $this->string;
     27     }
     28 
     29     public function offsetExists($offset)
     30     {
     31         return isset($this->metadata[$offset]);
     32     }
     33 
     34     public function offsetGet($offset)
     35     {
     36         return $this->metadata[$offset];
     37     }
     38 
     39     public function offsetSet($offset, $value)
     40     {
     41         if ($offset === null) {
     42             if (isset($value[0])) {
     43                 $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
     44                 $this->metadata = array_merge($this->metadata, $x);
     45 
     46                 return;
     47             }
     48             $offset = count($this->metadata);
     49         }
     50         if ($value === null) {
     51             return;
     52         }
     53         if ($value instanceof TP_yyToken) {
     54             if ($value->metadata) {
     55                 $this->metadata[$offset] = $value->metadata;
     56             }
     57         } elseif ($value) {
     58             $this->metadata[$offset] = $value;
     59         }
     60     }
     61 
     62     public function offsetUnset($offset)
     63     {
     64         unset($this->metadata[$offset]);
     65     }
     66 }
     67 
     68 class TP_yyStackEntry
     69 {
     70     public $stateno;       /* The state-number */
     71     public $major;         /* The major token value.  This is the code
     72                      ** number for the token at this stack level */
     73     public $minor; /* The user-supplied minor token value.  This
     74                      ** is the value of the token  */
     75 }
     76 
     77 ;
     78 
     79 #line 13 "../smarty/lexer/smarty_internal_templateparser.y"
     80 
     81 /**
     82  * Smarty Internal Plugin Templateparser
     83  *
     84  * This is the template parser.
     85  * It is generated from the smarty_internal_templateparser.y file
     86  *
     87  * @package    Smarty
     88  * @subpackage Compiler
     89  * @author     Uwe Tews
     90  */
     91 class Smarty_Internal_Templateparser
     92 {
     93     #line 26 "../smarty/lexer/smarty_internal_templateparser.y"
     94 
     95     const Err1 = "Security error: Call to private object member not allowed";
     96 
     97     const Err2 = "Security error: Call to dynamic object member not allowed";
     98 
     99     const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
    100 
    101     /**
    102      * result status
    103      *
    104      * @var bool
    105      */
    106     public $successful = true;
    107 
    108     /**
    109      * return value
    110      *
    111      * @var mixed
    112      */
    113     public $retvalue = 0;
    114 
    115     /**
    116      * counter for prefix code
    117      *
    118      * @var int
    119      */
    120     public static $prefix_number = 0;
    121 
    122     /**
    123      * @var
    124      */
    125     public $yymajor;
    126 
    127     /**
    128      * last index of array variable
    129      *
    130      * @var mixed
    131      */
    132     public $last_index;
    133 
    134     /**
    135      * last variable name
    136      *
    137      * @var string
    138      */
    139     public $last_variable;
    140 
    141     /**
    142      * root parse tree buffer
    143      *
    144      * @var Smarty_Internal_ParseTree
    145      */
    146     public $root_buffer;
    147 
    148     /**
    149      * current parse tree object
    150      *
    151      * @var Smarty_Internal_ParseTree
    152      */
    153     public $current_buffer;
    154 
    155     /**
    156      * lexer object
    157      *
    158      * @var Smarty_Internal_Templatelexer
    159      */
    160     private $lex;
    161 
    162     /**
    163      * internal error flag
    164      *
    165      * @var bool
    166      */
    167     private $internalError = false;
    168 
    169     /**
    170      * {strip} status
    171      *
    172      * @var bool
    173      */
    174     public $strip = false;
    175 
    176     /**
    177      * compiler object
    178      *
    179      * @var Smarty_Internal_TemplateCompilerBase
    180      */
    181     public $compiler = null;
    182 
    183     /**
    184      * smarty object
    185      *
    186      * @var Smarty
    187      */
    188     public $smarty = null;
    189 
    190     /**
    191      * template object
    192      *
    193      * @var Smarty_Internal_Template
    194      */
    195     public $template = null;
    196 
    197     /**
    198      * block nesting level
    199      *
    200      * @var int
    201      */
    202     public $block_nesting_level = 0;
    203 
    204     /**
    205      * security object
    206      *
    207      * @var Smarty_Security
    208      */
    209     private $security = null;
    210 
    211     /**
    212      * constructor
    213      *
    214      * @param Smarty_Internal_Templatelexer        $lex
    215      * @param Smarty_Internal_TemplateCompilerBase $compiler
    216      */
    217     function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
    218     {
    219         $this->lex = $lex;
    220         $this->compiler = $compiler;
    221         $this->template = $this->compiler->template;
    222         $this->smarty = $this->template->smarty;
    223         $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
    224         $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template($this);
    225     }
    226 
    227     /**
    228      * insert PHP code in current buffer
    229      *
    230      * @param string $code
    231      */
    232     public function insertPhpCode($code)
    233     {
    234         $this->current_buffer->append_subtree(new Smarty_Internal_ParseTree_Tag($this, $code));
    235     }
    236 
    237     /**
    238      *  merge PHP code with prefix code and return parse tree tag object
    239      *
    240      * @param string $code
    241      *
    242      * @return Smarty_Internal_ParseTree_Tag
    243      */
    244     public function mergePrefixCode($code)
    245     {
    246         $tmp = '';
    247         foreach ($this->compiler->prefix_code as $preCode) {
    248             $tmp = empty($tmp) ? $preCode : $this->compiler->appendCode($tmp, $preCode);
    249         }
    250         $this->compiler->prefix_code = array();
    251         $tmp = empty($tmp) ? $code : $this->compiler->appendCode($tmp, $code);
    252         return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
    253     }
    254 
    255     const TP_VERT = 1;
    256 
    257     const TP_COLON = 2;
    258 
    259     const TP_PHP = 3;
    260 
    261     const TP_NOCACHE = 4;
    262 
    263     const TP_TEXT = 5;
    264 
    265     const TP_STRIPON = 6;
    266 
    267     const TP_STRIPOFF = 7;
    268 
    269     const TP_BLOCKSOURCE = 8;
    270 
    271     const TP_LITERALSTART = 9;
    272 
    273     const TP_LITERALEND = 10;
    274 
    275     const TP_LITERAL = 11;
    276 
    277     const TP_RDEL = 12;
    278 
    279     const TP_SIMPLEOUTPUT = 13;
    280 
    281     const TP_LDEL = 14;
    282 
    283     const TP_DOLLARID = 15;
    284 
    285     const TP_EQUAL = 16;
    286 
    287     const TP_SIMPLETAG = 17;
    288 
    289     const TP_ID = 18;
    290 
    291     const TP_PTR = 19;
    292 
    293     const TP_LDELIF = 20;
    294 
    295     const TP_LDELFOR = 21;
    296 
    297     const TP_SEMICOLON = 22;
    298 
    299     const TP_INCDEC = 23;
    300 
    301     const TP_TO = 24;
    302 
    303     const TP_STEP = 25;
    304 
    305     const TP_LDELFOREACH = 26;
    306 
    307     const TP_SPACE = 27;
    308 
    309     const TP_AS = 28;
    310 
    311     const TP_APTR = 29;
    312 
    313     const TP_LDELSETFILTER = 30;
    314 
    315     const TP_SMARTYBLOCKCHILDPARENT = 31;
    316 
    317     const TP_CLOSETAG = 32;
    318 
    319     const TP_LDELSLASH = 33;
    320 
    321     const TP_ATTR = 34;
    322 
    323     const TP_INTEGER = 35;
    324 
    325     const TP_COMMA = 36;
    326 
    327     const TP_OPENP = 37;
    328 
    329     const TP_CLOSEP = 38;
    330 
    331     const TP_MATH = 39;
    332 
    333     const TP_UNIMATH = 40;
    334 
    335     const TP_ISIN = 41;
    336 
    337     const TP_INSTANCEOF = 42;
    338 
    339     const TP_QMARK = 43;
    340 
    341     const TP_NOT = 44;
    342 
    343     const TP_TYPECAST = 45;
    344 
    345     const TP_HEX = 46;
    346 
    347     const TP_DOT = 47;
    348 
    349     const TP_SINGLEQUOTESTRING = 48;
    350 
    351     const TP_DOUBLECOLON = 49;
    352 
    353     const TP_NAMESPACE = 50;
    354 
    355     const TP_AT = 51;
    356 
    357     const TP_HATCH = 52;
    358 
    359     const TP_OPENB = 53;
    360 
    361     const TP_CLOSEB = 54;
    362 
    363     const TP_DOLLAR = 55;
    364 
    365     const TP_LOGOP = 56;
    366 
    367     const TP_TLOGOP = 57;
    368 
    369     const TP_SINGLECOND = 58;
    370 
    371     const TP_QUOTE = 59;
    372 
    373     const TP_BACKTICK = 60;
    374 
    375     const YY_NO_ACTION = 525;
    376 
    377     const YY_ACCEPT_ACTION = 524;
    378 
    379     const YY_ERROR_ACTION = 523;
    380 
    381     const YY_SZ_ACTTAB = 1908;
    382 
    383     static public $yy_action = array(287, 9, 129, 251, 273, 194, 441, 2, 82, 280, 281, 282, 216, 110, 353, 223, 212,
    384         229, 441, 258, 217, 12, 199, 240, 32, 257, 257, 39, 17, 12, 25, 43, 42, 263, 224, 233, 17, 206, 441, 80, 1, 244,
    385         311, 311, 172, 172, 52, 287, 9, 128, 441, 273, 65, 178, 2, 82, 268, 14, 184, 298, 110, 262, 13, 319, 229, 297,
    386         258, 217, 31, 225, 12, 32, 170, 257, 39, 239, 189, 17, 43, 42, 263, 224, 292, 214, 206, 249, 80, 1, 113, 311,
    387         164, 442, 172, 52, 287, 9, 132, 201, 273, 209, 260, 2, 82, 442, 14, 141, 256, 110, 262, 88, 303, 229, 261, 258,
    388         217, 260, 225, 12, 32, 168, 36, 39, 241, 12, 17, 43, 42, 263, 224, 292, 17, 206, 189, 80, 1, 7, 311, 180, 257,
    389         219, 52, 287, 9, 132, 134, 273, 193, 470, 2, 82, 10, 470, 156, 304, 110, 300, 89, 172, 229, 310, 258, 217, 260,
    390         205, 223, 32, 257, 14, 39, 324, 12, 262, 43, 42, 263, 224, 292, 17, 206, 189, 80, 1, 470, 311, 470, 172, 470,
    391         52, 287, 9, 131, 201, 273, 209, 257, 2, 82, 83, 307, 232, 201, 110, 399, 454, 230, 229, 237, 258, 217, 454, 225,
    392         355, 32, 133, 201, 39, 215, 399, 144, 43, 42, 263, 224, 292, 399, 206, 12, 80, 1, 326, 311, 157, 236, 17, 52,
    393         287, 9, 133, 201, 273, 209, 260, 2, 82, 214, 201, 235, 202, 110, 113, 80, 99, 229, 311, 258, 217, 396, 225, 187,
    394         19, 14, 323, 39, 18, 262, 28, 43, 42, 263, 224, 292, 396, 206, 12, 80, 1, 143, 311, 396, 134, 17, 52, 287, 9,
    395         132, 10, 273, 209, 4, 2, 82, 313, 14, 146, 454, 110, 262, 181, 158, 229, 454, 258, 217, 260, 192, 12, 32, 20,
    396         260, 39, 99, 441, 17, 43, 42, 263, 224, 292, 243, 206, 189, 80, 1, 441, 311, 187, 182, 298, 52, 287, 9, 130,
    397         201, 273, 209, 14, 2, 82, 93, 262, 104, 24, 110, 399, 99, 169, 229, 154, 258, 217, 220, 225, 113, 5, 124, 260,
    398         39, 135, 399, 100, 43, 42, 263, 224, 292, 399, 206, 261, 80, 1, 325, 311, 228, 112, 104, 52, 287, 9, 132, 92,
    399         273, 191, 173, 2, 82, 174, 291, 285, 16, 110, 330, 312, 260, 229, 310, 258, 217, 311, 225, 223, 32, 259, 90, 39,
    400         261, 6, 264, 43, 42, 263, 224, 292, 181, 206, 175, 80, 1, 116, 311, 171, 201, 21, 52, 287, 9, 132, 37, 273, 195,
    401         260, 2, 82, 36, 296, 238, 189, 110, 189, 259, 201, 229, 261, 258, 217, 214, 225, 218, 32, 35, 113, 39, 36, 232,
    402         299, 43, 42, 263, 224, 292, 15, 206, 183, 80, 1, 211, 311, 17, 91, 226, 52, 287, 9, 133, 177, 273, 209, 179, 2,
    403         82, 318, 470, 99, 18, 110, 470, 454, 121, 229, 288, 258, 217, 289, 225, 316, 19, 145, 189, 39, 187, 189, 121,
    404         43, 42, 263, 224, 292, 161, 206, 261, 80, 99, 104, 311, 454, 14, 454, 52, 470, 262, 454, 279, 278, 276, 277,
    405         283, 284, 174, 159, 470, 261, 287, 9, 470, 454, 273, 311, 317, 2, 82, 176, 298, 223, 204, 110, 115, 68, 107,
    406         229, 117, 258, 217, 100, 3, 201, 272, 329, 138, 29, 210, 271, 293, 454, 325, 454, 359, 470, 260, 454, 254, 317,
    407         139, 275, 200, 306, 223, 204, 111, 119, 72, 107, 260, 201, 37, 242, 100, 255, 151, 272, 329, 213, 4, 210, 271,
    408         293, 150, 325, 245, 167, 20, 152, 317, 81, 208, 149, 260, 223, 204, 260, 119, 60, 102, 186, 218, 185, 265, 100,
    409         269, 22, 272, 329, 286, 270, 210, 271, 293, 317, 325, 248, 147, 148, 223, 204, 178, 119, 72, 107, 153, 232, 260,
    410         274, 100, 13, 319, 272, 329, 261, 397, 210, 271, 293, 231, 325, 268, 136, 317, 189, 165, 106, 207, 223, 204,
    411         397, 115, 68, 107, 84, 327, 85, 397, 100, 103, 441, 272, 329, 290, 86, 210, 271, 293, 87, 325, 299, 299, 441,
    412         317, 299, 155, 299, 299, 223, 204, 305, 119, 50, 102, 299, 108, 299, 299, 100, 299, 299, 272, 329, 299, 299,
    413         210, 271, 293, 317, 325, 299, 299, 299, 223, 204, 299, 119, 72, 107, 299, 299, 299, 299, 100, 27, 227, 272, 329,
    414         160, 299, 210, 271, 293, 299, 325, 299, 299, 317, 299, 299, 299, 203, 223, 204, 299, 109, 46, 107, 299, 299,
    415         299, 299, 100, 299, 299, 272, 329, 299, 308, 210, 271, 293, 299, 325, 299, 311, 287, 8, 309, 299, 273, 299, 317,
    416         2, 82, 299, 299, 223, 204, 110, 119, 49, 107, 229, 299, 258, 217, 100, 299, 142, 272, 329, 299, 178, 210, 271,
    417         293, 299, 325, 260, 317, 299, 13, 319, 299, 223, 204, 299, 119, 70, 107, 299, 294, 23, 299, 100, 189, 299, 272,
    418         329, 299, 299, 210, 271, 293, 317, 325, 299, 299, 299, 223, 204, 299, 119, 77, 107, 299, 299, 299, 299, 100,
    419         299, 299, 272, 329, 299, 308, 210, 271, 293, 299, 325, 299, 299, 287, 8, 309, 299, 273, 299, 317, 2, 82, 299,
    420         299, 223, 204, 110, 119, 71, 107, 229, 299, 258, 217, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
    421         325, 299, 317, 299, 299, 299, 299, 223, 204, 299, 119, 60, 107, 299, 295, 23, 299, 100, 299, 299, 272, 329, 299,
    422         299, 210, 271, 293, 317, 325, 299, 140, 299, 223, 204, 178, 119, 73, 107, 299, 299, 260, 299, 100, 13, 319, 272,
    423         329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 299, 189, 299, 223, 204, 299, 119, 62, 107, 299, 41, 40, 38,
    424         100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 163, 321, 322, 328, 223, 204, 299, 119, 63,
    425         107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223,
    426         204, 299, 97, 69, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299,
    427         299, 299, 299, 223, 204, 299, 119, 75, 107, 222, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293,
    428         299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119, 64, 107, 299, 247, 299, 299, 100, 299, 299, 272, 329,
    429         299, 299, 210, 271, 293, 299, 325, 317, 201, 26, 299, 299, 223, 204, 299, 98, 74, 107, 299, 41, 40, 38, 100,
    430         299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 198, 299, 105, 59, 107,
    431         299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 321, 322, 328, 223, 204,
    432         299, 119, 45, 107, 246, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321,
    433         322, 328, 223, 94, 299, 79, 48, 101, 299, 252, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
    434         325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 56, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299,
    435         210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119, 61, 107, 299, 190, 299, 299, 100, 299,
    436         299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 96, 58, 107, 299, 41,
    437         40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119,
    438         66, 107, 299, 188, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 299, 299,
    439         299, 223, 204, 299, 119, 47, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325,
    440         317, 299, 321, 322, 328, 223, 204, 299, 119, 78, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210,
    441         271, 293, 299, 325, 317, 299, 321, 322, 328, 223, 204, 299, 119, 54, 107, 299, 299, 299, 299, 100, 299, 299,
    442         272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 53, 107, 299, 299,
    443         299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 95, 299, 79,
    444         44, 101, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299,
    445         299, 223, 197, 299, 119, 57, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
    446         325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 76, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299,
    447         299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 55, 107, 299, 299, 299, 299, 100,
    448         299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 67, 107,
    449         299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223,
    450         234, 299, 122, 299, 107, 299, 299, 299, 299, 100, 299, 299, 299, 320, 299, 299, 210, 271, 293, 299, 325, 317,
    451         409, 409, 299, 299, 223, 234, 299, 127, 299, 107, 299, 299, 299, 299, 100, 299, 299, 299, 250, 299, 299, 210,
    452         271, 293, 299, 325, 524, 51, 253, 281, 282, 216, 299, 299, 223, 299, 441, 317, 409, 409, 409, 201, 223, 234,
    453         299, 126, 299, 107, 441, 299, 299, 299, 100, 299, 299, 409, 409, 409, 299, 210, 271, 293, 201, 325, 299, 33,
    454         299, 12, 299, 299, 299, 299, 299, 301, 17, 299, 299, 299, 299, 41, 40, 38, 299, 299, 317, 299, 299, 299, 12,
    455         223, 234, 299, 123, 299, 107, 17, 321, 322, 328, 100, 41, 40, 38, 299, 299, 299, 210, 271, 293, 299, 325, 299,
    456         299, 403, 299, 299, 299, 321, 322, 328, 299, 317, 299, 403, 299, 403, 223, 234, 403, 118, 299, 107, 299, 299,
    457         299, 403, 100, 403, 299, 403, 299, 299, 299, 210, 271, 293, 317, 325, 232, 299, 299, 223, 234, 299, 125, 299,
    458         107, 299, 299, 226, 299, 100, 299, 201, 299, 299, 299, 299, 210, 271, 293, 470, 325, 317, 201, 470, 454, 226,
    459         223, 234, 299, 120, 299, 107, 299, 299, 299, 299, 100, 470, 299, 30, 299, 470, 454, 210, 271, 293, 201, 325, 12,
    460         41, 40, 38, 454, 299, 454, 17, 470, 299, 454, 314, 41, 40, 38, 299, 315, 299, 321, 322, 328, 201, 454, 34, 454,
    461         299, 470, 299, 454, 321, 322, 328, 299, 299, 226, 470, 41, 40, 38, 470, 454, 299, 114, 299, 299, 299, 470, 299,
    462         299, 299, 470, 454, 299, 321, 322, 328, 299, 302, 299, 41, 40, 38, 201, 299, 299, 299, 299, 299, 454, 299, 454,
    463         299, 470, 365, 454, 299, 321, 322, 328, 454, 221, 454, 299, 470, 299, 454, 166, 299, 12, 299, 178, 299, 299,
    464         299, 299, 17, 260, 299, 441, 13, 319, 162, 299, 11, 196, 178, 299, 266, 137, 299, 441, 260, 178, 189, 13, 319,
    465         299, 299, 260, 299, 299, 13, 319, 299, 267, 299, 299, 299, 189, 299, 299, 299, 299, 299, 299, 189, 299, 299,
    466         299, 299, 299, 299, 299, 299, 311,);
    467 
    468     static public $yy_lookahead = array(13, 14, 15, 15, 17, 18, 37, 20, 21, 64, 65, 66, 67, 26, 12, 70, 47, 30, 49, 32,
    469         33, 27, 35, 54, 37, 23, 23, 40, 34, 27, 29, 44, 45, 46, 47, 48, 34, 50, 37, 52, 53, 54, 55, 55, 42, 42, 59, 13,
    470         14, 15, 49, 17, 18, 76, 20, 21, 93, 14, 95, 96, 26, 18, 85, 86, 30, 31, 32, 33, 16, 35, 27, 37, 29, 23, 40, 23,
    471         99, 34, 44, 45, 46, 47, 48, 75, 50, 77, 52, 53, 80, 55, 72, 37, 42, 59, 13, 14, 15, 1, 17, 18, 82, 20, 21, 49,
    472         14, 72, 18, 26, 18, 76, 60, 30, 94, 32, 33, 82, 35, 27, 37, 29, 36, 40, 38, 27, 34, 44, 45, 46, 47, 48, 34, 50,
    473         99, 52, 53, 36, 55, 81, 23, 51, 59, 13, 14, 15, 47, 17, 18, 14, 20, 21, 53, 18, 72, 54, 26, 12, 76, 42, 30, 65,
    474         32, 33, 82, 35, 70, 37, 23, 14, 40, 54, 27, 18, 44, 45, 46, 47, 48, 34, 50, 99, 52, 53, 14, 55, 51, 42, 18, 59,
    475         13, 14, 15, 1, 17, 18, 23, 20, 21, 103, 104, 47, 1, 26, 12, 47, 51, 30, 54, 32, 33, 53, 35, 12, 37, 15, 1, 40,
    476         18, 27, 28, 44, 45, 46, 47, 48, 34, 50, 27, 52, 53, 18, 55, 72, 19, 34, 59, 13, 14, 15, 1, 17, 18, 82, 20, 21,
    477         75, 1, 77, 78, 26, 80, 52, 19, 30, 55, 32, 33, 12, 35, 99, 37, 14, 50, 40, 16, 18, 14, 44, 45, 46, 47, 48, 27,
    478         50, 27, 52, 53, 92, 55, 34, 47, 34, 59, 13, 14, 15, 53, 17, 18, 37, 20, 21, 54, 14, 72, 47, 26, 18, 76, 72, 30,
    479         53, 32, 33, 82, 35, 27, 37, 16, 82, 40, 19, 37, 34, 44, 45, 46, 47, 48, 54, 50, 99, 52, 53, 49, 55, 99, 95, 96,
    480         59, 13, 14, 15, 1, 17, 18, 14, 20, 21, 81, 18, 49, 16, 26, 12, 19, 72, 30, 75, 32, 33, 71, 35, 80, 37, 75, 82,
    481         40, 15, 27, 80, 44, 45, 46, 47, 48, 34, 50, 94, 52, 53, 91, 55, 51, 80, 49, 59, 13, 14, 15, 37, 17, 18, 72, 20,
    482         21, 9, 10, 11, 22, 26, 97, 96, 82, 30, 65, 32, 33, 55, 35, 70, 37, 100, 36, 40, 94, 37, 35, 44, 45, 46, 47, 48,
    483         76, 50, 76, 52, 53, 49, 55, 72, 1, 16, 59, 13, 14, 15, 2, 17, 18, 82, 20, 21, 36, 104, 38, 99, 26, 99, 100, 1,
    484         30, 94, 32, 33, 75, 35, 77, 37, 29, 80, 40, 36, 47, 38, 44, 45, 46, 47, 48, 27, 50, 15, 52, 53, 18, 55, 34, 92,
    485         2, 59, 13, 14, 15, 76, 17, 18, 76, 20, 21, 90, 14, 19, 16, 26, 18, 19, 97, 30, 66, 32, 33, 69, 35, 90, 37, 15,
    486         99, 40, 99, 99, 97, 44, 45, 46, 47, 48, 92, 50, 94, 52, 19, 49, 55, 47, 14, 49, 59, 51, 18, 53, 3, 4, 5, 6, 7,
    487         8, 9, 92, 14, 94, 13, 14, 18, 19, 17, 55, 65, 20, 21, 95, 96, 70, 71, 26, 73, 74, 75, 30, 18, 32, 33, 80, 37, 1,
    488         83, 84, 72, 24, 87, 88, 89, 47, 91, 49, 12, 51, 82, 53, 18, 65, 72, 5, 101, 102, 70, 71, 18, 73, 74, 75, 82, 1,
    489         2, 38, 80, 18, 52, 83, 84, 18, 37, 87, 88, 89, 72, 91, 54, 72, 16, 52, 65, 18, 98, 92, 82, 70, 71, 82, 73, 74,
    490         75, 18, 77, 81, 18, 80, 18, 43, 83, 84, 12, 35, 87, 88, 89, 65, 91, 18, 72, 92, 70, 71, 76, 73, 74, 75, 92, 47,
    491         82, 82, 80, 85, 86, 83, 84, 94, 12, 87, 88, 89, 16, 91, 93, 80, 65, 99, 92, 79, 98, 70, 71, 27, 73, 74, 75, 80,
    492         87, 80, 34, 80, 68, 37, 83, 84, 10, 80, 87, 88, 89, 80, 91, 105, 105, 49, 65, 105, 92, 105, 105, 70, 71, 102,
    493         73, 74, 75, 105, 77, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 65, 91, 105, 105, 105, 70, 71, 105,
    494         73, 74, 75, 105, 105, 105, 105, 80, 14, 15, 83, 84, 18, 105, 87, 88, 89, 105, 91, 105, 105, 65, 105, 105, 105,
    495         98, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 5, 87, 88, 89, 105, 91, 105, 55, 13,
    496         14, 15, 105, 17, 105, 65, 20, 21, 105, 105, 70, 71, 26, 73, 74, 75, 30, 105, 32, 33, 80, 105, 72, 83, 84, 105,
    497         76, 87, 88, 89, 105, 91, 82, 65, 105, 85, 86, 105, 70, 71, 105, 73, 74, 75, 105, 59, 60, 105, 80, 99, 105, 83,
    498         84, 105, 105, 87, 88, 89, 65, 91, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83,
    499         84, 105, 5, 87, 88, 89, 105, 91, 105, 105, 13, 14, 15, 105, 17, 105, 65, 20, 21, 105, 105, 70, 71, 26, 73, 74,
    500         75, 30, 105, 32, 33, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 105, 65, 105, 105, 105, 105, 70, 71,
    501         105, 73, 74, 75, 105, 59, 60, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 65, 91, 105, 72, 105, 70, 71, 76,
    502         73, 74, 75, 105, 105, 82, 105, 80, 85, 86, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 105, 99, 105, 70, 71,
    503         105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 28, 56, 57, 58, 70,
    504         71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 56, 57, 58,
    505         70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105,
    506         105, 105, 70, 71, 105, 73, 74, 75, 38, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1,
    507         56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65,
    508         1, 2, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91,
    509         65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105,
    510         91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 38, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89,
    511         105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88,
    512         89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105,
    513         87, 88, 89, 105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105,
    514         105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83,
    515         84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105,
    516         83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105,
    517         105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80,
    518         105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 105, 105,
    519         105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105,
    520         105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74,
    521         75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71,
    522         105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105,
    523         105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105,
    524         105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91,
    525         65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89,
    526         105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 105, 105, 105, 84, 105, 105,
    527         87, 88, 89, 105, 91, 65, 1, 2, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 105, 105, 105, 84,
    528         105, 105, 87, 88, 89, 105, 91, 62, 63, 64, 65, 66, 67, 105, 105, 70, 105, 37, 65, 39, 40, 41, 1, 70, 71, 105,
    529         73, 105, 75, 49, 105, 105, 105, 80, 105, 105, 56, 57, 58, 105, 87, 88, 89, 1, 91, 105, 25, 105, 27, 105, 105,
    530         105, 105, 105, 12, 34, 105, 105, 105, 105, 39, 40, 41, 105, 105, 65, 105, 105, 105, 27, 70, 71, 105, 73, 105,
    531         75, 34, 56, 57, 58, 80, 39, 40, 41, 105, 105, 105, 87, 88, 89, 105, 91, 105, 105, 12, 105, 105, 105, 56, 57, 58,
    532         105, 65, 105, 22, 105, 24, 70, 71, 27, 73, 105, 75, 105, 105, 105, 34, 80, 36, 105, 38, 105, 105, 105, 87, 88,
    533         89, 65, 91, 47, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 2, 105, 80, 105, 1, 105, 105, 105, 105, 87, 88,
    534         89, 14, 91, 65, 1, 18, 19, 2, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 14, 105, 16, 105, 18, 19, 87,
    535         88, 89, 1, 91, 27, 39, 40, 41, 47, 105, 49, 34, 51, 105, 53, 54, 39, 40, 41, 105, 54, 105, 56, 57, 58, 1, 47, 2,
    536         49, 105, 51, 105, 53, 56, 57, 58, 105, 105, 2, 14, 39, 40, 41, 18, 19, 105, 22, 105, 105, 105, 14, 105, 105,
    537         105, 18, 19, 105, 56, 57, 58, 105, 60, 105, 39, 40, 41, 1, 105, 105, 105, 105, 105, 47, 105, 49, 105, 51, 12,
    538         53, 105, 56, 57, 58, 47, 19, 49, 105, 51, 105, 53, 72, 105, 27, 105, 76, 105, 105, 105, 105, 34, 82, 105, 37,
    539         85, 86, 72, 105, 14, 15, 76, 105, 18, 72, 105, 49, 82, 76, 99, 85, 86, 105, 105, 82, 105, 105, 85, 86, 105, 35,
    540         105, 105, 105, 99, 105, 105, 105, 105, 105, 105, 99, 105, 105, 105, 105, 105, 105, 105, 105, 55,);
    541 
    542     const YY_SHIFT_USE_DFLT = - 32;
    543 
    544     const YY_SHIFT_MAX = 236;
    545 
    546     static public $yy_shift_ofst = array(517, 410, 316, 81, 81, 316, 81, 410, 34, 34, - 13, 81, 128, 81, 81, 128, 81,
    547         81, 269, 81, 81, 81, 175, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 363, 81, 81, 222, 222, 457, 457, 457, 457,
    548         457, 1624, 1603, 1736, 1736, 1736, 1736, 1736, 517, 754, 1211, 1265, 1076, 1157, 1760, 941, 1725, 995, 1103,
    549         1049, 1783, 1292, 1824, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 914, 914, 199, 198,
    550         96, 342, 842, 90, 43, 278, 246, 96, 96, 342, 232, 342, 580, 2, 143, 190, 244, 331, 711, 321, 325, 291, 376, 446,
    551         237, - 6, 462, - 6, 552, 432, 213, 500, 500, 480, 419, 446, 438, 438, 438, 438, 491, 438, 438, 491, 438, 438,
    552         - 32, 1738, 1720, 466, 1784, 1795, 514, 1852, 247, 153, - 6, - 6, - 6, - 6, - 6, - 6, 97, - 12, 168, - 6, - 6,
    553         97, 97, - 6, 156, 156, 97, 52, 97, - 6, - 6, - 6, 97, 251, 97, - 6, - 12, - 6, 97, - 6, - 6, - 12, - 6, - 12,
    554         - 6, 211, - 6, 664, 438, 491, 438, 438, 438, 424, 438, 491, 515, 491, 424, - 32, - 32, - 32, - 32, - 32, 1562,
    555         1664, 634, - 31, 1, 133, 50, 115, 152, 99, 88, 366, 84, 3, 405, 54, 415, 396, 274, 368, 553, 571, 542, 582, 534,
    556         566, 558, 545, 567, 547, 583, 574, 608, 586, 590, 598, 515, 550, 593, 596, 609, 371, 264, 171, 533, 530,);
    557 
    558     const YY_REDUCE_USE_DFLT = - 56;
    559 
    560     const YY_REDUCE_MAX = 190;
    561 
    562     static public $yy_reduce_ofst = array(1527, 471, 619, 560, 644, 535, 504, 589, 1335, 1092, 1038, 1119, 1011, 984,
    563         876, 1173, 903, 930, 957, 1146, 1200, 1443, 1416, 1362, 1227, 1389, 1254, 1281, 1308, 1065, 673, 849, 824, 708,
    564         761, 736, 796, 1497, 1470, 1619, 1535, 1671, 1644, 1582, 1792, 1777, 1799, 845, 1792, 718, 556, - 55, 94, - 23,
    565         - 23, - 23, - 23, - 23, - 23, - 23, - 23, - 23, - 23, - 23, - 23, 33, - 23, - 23, - 23, - 23, - 23, - 23, - 23,
    566         - 23, - 23, - 23, - 23, - 23, - 23, 221, 279, 80, 169, 329, 347, 310, 18, 273, 159, 226, 8, - 37, 369, 338, 525,
    567         525, 336, 336, 336, 293, 414, 231, 231, 422, 389, 336, 522, 231, 498, 336, 484, 400, 435, 414, 272, 336, 403,
    568         397, 336, 336, 336, 444, 336, 336, 231, 336, 336, 336, 184, 184, 184, 184, 184, 184, 573, 184, 551, 557, 557,
    569         557, 557, 557, 557, 559, 585, 184, 557, 557, 559, 559, 557, 544, 564, 559, 578, 559, 557, 557, 557, 559, 594,
    570         559, 557, 587, 557, 559, 557, 557, 595, 557, 599, 557, 579, 557, 602, 399, 295, 399, 399, 399, 301, 399, 295,
    571         375, 295, 301, 257, 56, 537, 532, 511,);
    572 
    573     static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 20, 21, 26, 30, 32, 33,),
    574         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    575         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    576         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    577         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    578         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    579         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    580         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    581         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    582         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    583         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 54, 55, 59,),
    584         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    585         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    586         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    587         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    588         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    589         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    590         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    591         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    592         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    593         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    594         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    595         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    596         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    597         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    598         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    599         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    600         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    601         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    602         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    603         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    604         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    605         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    606         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    607         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    608         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    609         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    610         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    611         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
    612         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
    613         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
    614         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
    615         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
    616         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
    617         array(1, 12, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 25, 27, 34, 39, 40, 41, 56, 57, 58,),
    618         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 27, 34, 39, 40, 41, 56, 57, 58,),
    619         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 27, 34, 39, 40, 41, 56, 57, 58,),
    620         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 20, 21, 26, 30, 32, 33,),
    621         array(5, 13, 14, 15, 17, 20, 21, 26, 30, 32, 33, 59, 60,), array(1, 12, 39, 40, 41, 56, 57, 58,),
    622         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 2, 39, 40, 41, 56, 57, 58,),
    623         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58, 60,),
    624         array(1, 28, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 54, 56, 57, 58,),
    625         array(1, 38, 39, 40, 41, 56, 57, 58,), array(1, 38, 39, 40, 41, 56, 57, 58,),
    626         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 22, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
    627         array(1, 12, 19, 27, 34, 37, 49,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
    628         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
    629         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
    630         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
    631         array(39, 40, 41, 56, 57, 58,), array(39, 40, 41, 56, 57, 58,), array(1, 12, 27, 34,), array(15, 18, 52, 55,),
    632         array(1, 27, 34,), array(15, 37, 55,), array(5, 13, 14, 15, 17, 20, 21, 26, 30, 32, 33, 59, 60,),
    633         array(14, 18, 27, 29, 34,), array(14, 18, 27, 29, 34,), array(14, 18, 27, 34,), array(14, 18, 27, 34,),
    634         array(1, 27, 34,), array(1, 27, 34,), array(15, 37, 55,), array(19, 47, 53,), array(15, 37, 55,), array(1, 2,),
    635         array(12, 23, 27, 34, 42,), array(12, 23, 27, 34, 42,), array(1, 12, 27, 28, 34,), array(1, 12, 27, 34,),
    636         array(1, 12, 27, 34,), array(14, 15, 18, 55,), array(14, 18, 51,), array(16, 19, 49,), array(16, 19, 49,),
    637         array(9, 10, 11,), array(15, 18,), array(1, 54,), array(27, 34,), array(19, 49,), array(27, 34,), array(1, 12,),
    638         array(27, 34,), array(1, 19,), array(14, 18,), array(14, 18,), array(15, 55,), array(1, 29,), array(15, 18,),
    639         array(1,), array(1,), array(1,), array(1,), array(19,), array(1,), array(1,), array(19,), array(1,), array(1,),
    640         array(), array(2, 14, 16, 18, 19, 47, 49, 51, 53,), array(2, 14, 18, 19, 47, 49, 51, 53, 54,),
    641         array(2, 14, 16, 18, 19, 47, 49, 51, 53,), array(2, 14, 18, 19, 47, 49, 51, 53,),
    642         array(2, 14, 18, 19, 47, 49, 51, 53,), array(14, 18, 19, 47, 49, 51, 53,), array(14, 15, 18, 35, 55,),
    643         array(16, 47, 53,), array(14, 18, 51,), array(27, 34,), array(27, 34,), array(27, 34,), array(27, 34,),
    644         array(27, 34,), array(27, 34,), array(47, 53,), array(15, 55,), array(14, 18,), array(27, 34,), array(27, 34,),
    645         array(47, 53,), array(47, 53,), array(27, 34,), array(47, 53,), array(47, 53,), array(47, 53,), array(16, 23,),
    646         array(47, 53,), array(27, 34,), array(27, 34,), array(27, 34,), array(47, 53,), array(14, 37,), array(47, 53,),
    647         array(27, 34,), array(15, 55,), array(27, 34,), array(47, 53,), array(27, 34,), array(27, 34,), array(15, 55,),
    648         array(27, 34,), array(15, 55,), array(27, 34,), array(18, 50,), array(27, 34,), array(10,), array(1,),
    649         array(19,), array(1,), array(1,), array(1,), array(2,), array(1,), array(19,), array(37,), array(19,),
    650         array(2,), array(), array(), array(), array(), array(), array(1, 2, 37, 39, 40, 41, 49, 56, 57, 58,),
    651         array(12, 22, 24, 27, 34, 36, 38, 47,), array(12, 16, 27, 34, 37, 49,), array(37, 47, 49, 54,),
    652         array(29, 37, 49,), array(14, 18, 51,), array(23, 42, 60,), array(23, 42, 54,), array(47, 54,), array(36, 54,),
    653         array(18, 51,), array(22, 36,), array(36, 38,), array(23, 42,), array(16, 47,), array(37, 49,), array(36, 38,),
    654         array(36, 38,), array(37, 49,), array(37, 49,), array(37,), array(18,), array(54,), array(16,), array(52,),
    655         array(5,), array(18,), array(38,), array(18,), array(52,), array(18,), array(43,), array(12,), array(35,),
    656         array(47,), array(18,), array(37,), array(18,), array(18,), array(18,), array(18,), array(35,), array(54,),
    657         array(23,), array(24,), array(18,), array(), array(), array(), array(), array(), array(), array(), array(),
    658         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    659         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    660         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    661         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    662         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    663         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    664         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
    665         array(), array(),);
    666 
    667     static public $yy_default = array(334, 508, 523, 488, 488, 523, 488, 523, 523, 523, 523, 523, 523, 523, 523, 523,
    668         523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523,
    669         523, 523, 523, 523, 523, 523, 523, 393, 360, 393, 357, 393, 369, 331, 523, 523, 523, 523, 523, 523, 398, 523,
    670         523, 523, 523, 523, 414, 431, 405, 400, 511, 395, 509, 486, 487, 374, 398, 404, 510, 419, 420, 407, 523, 393,
    671         523, 523, 393, 393, 393, 393, 393, 393, 523, 500, 523, 383, 421, 421, 407, 407, 407, 523, 454, 444, 444, 523,
    672         523, 407, 393, 444, 371, 407, 393, 387, 454, 454, 523, 407, 523, 389, 422, 407, 410, 497, 417, 423, 444, 424,
    673         411, 495, 443, 443, 443, 443, 443, 443, 523, 470, 456, 361, 378, 372, 362, 364, 377, 451, 523, 454, 356, 370,
    674         480, 481, 373, 447, 449, 448, 523, 478, 367, 366, 368, 479, 454, 452, 358, 523, 380, 450, 376, 354, 523, 382,
    675         523, 379, 523, 381, 348, 384, 498, 390, 413, 388, 489, 438, 475, 454, 501, 490, 494, 494, 454, 494, 454, 431,
    676         427, 431, 431, 431, 455, 421, 421, 427, 523, 523, 523, 523, 421, 427, 439, 523, 523, 431, 523, 499, 523, 523,
    677         523, 523, 339, 523, 523, 523, 523, 523, 433, 523, 523, 427, 523, 470, 523, 523, 523, 523, 429, 434, 421, 401,
    678         523, 464, 483, 375, 461, 484, 406, 463, 469, 462, 433, 474, 394, 402, 496, 470, 460, 332, 445, 491, 492, 425,
    679         386, 493, 392, 472, 473, 426, 428, 457, 458, 459, 453, 409, 430, 432, 408, 363, 391, 341, 340, 342, 338, 337,
    680         333, 335, 336, 343, 344, 350, 351, 352, 349, 347, 345, 346, 434, 435, 512, 513, 514, 385, 476, 485, 519, 520,
    681         517, 516, 505, 507, 506, 515, 522, 518, 521, 471, 477, 467, 465, 468, 440, 437, 436, 415, 416, 502, 503, 442,
    682         466, 446, 441, 418, 504, 412, 482,);
    683 
    684     const YYNOCODE = 106;
    685 
    686     const YYSTACKDEPTH = 500;
    687 
    688     const YYNSTATE = 331;
    689 
    690     const YYNRULE = 192;
    691 
    692     const YYERRORSYMBOL = 61;
    693 
    694     const YYERRSYMDT = 'yy0';
    695 
    696     const YYFALLBACK = 0;
    697 
    698     public static $yyFallback = array();
    699 
    700     public function Trace($TraceFILE, $zTracePrompt)
    701     {
    702         if (!$TraceFILE) {
    703             $zTracePrompt = 0;
    704         } elseif (!$zTracePrompt) {
    705             $TraceFILE = 0;
    706         }
    707         $this->yyTraceFILE = $TraceFILE;
    708         $this->yyTracePrompt = $zTracePrompt;
    709     }
    710 
    711     public function PrintTrace()
    712     {
    713         $this->yyTraceFILE = fopen('php://output', 'w');
    714         $this->yyTracePrompt = '<br>';
    715     }
    716 
    717     public $yyTraceFILE;
    718 
    719     public $yyTracePrompt;
    720 
    721     public $yyidx;                    /* Index of top element in stack */
    722     public $yyerrcnt;                 /* Shifts left before out of the error */
    723     public $yystack = array();  /* The parser's stack */
    724 
    725     public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'BLOCKSOURCE',
    726         'LITERALSTART', 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPLEOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL', 'SIMPLETAG', 'ID',
    727         'PTR', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR',
    728         'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
    729         'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'INSTANCEOF', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
    730         'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', 'TLOGOP',
    731         'SINGLECOND', 'QUOTE', 'BACKTICK', 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
    732         'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes', 'value', 'expr',
    733         'varindexed', 'modifierlist', 'statement', 'statements', 'foraction', 'varvar', 'modparameters', 'attribute',
    734         'ternary', 'array', 'lop', 'scond', 'ns1', 'function', 'doublequoted_with_quotes', 'static_class_access',
    735         'object', 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method', 'params', 'modifier',
    736         'modparameter', 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',);
    737 
    738     public static $yyRuleName = array('start ::= template', 'template ::= template_element',
    739         'template ::= template template_element', 'template ::=', 'template_element ::= smartytag',
    740         'template_element ::= literal', 'template_element ::= PHP', 'template_element ::= NOCACHE',
    741         'template_element ::= text_content', 'text_content ::= TEXT', 'text_content ::= text_content TEXT',
    742         'template_element ::= STRIPON', 'template_element ::= STRIPOFF', 'template_element ::= BLOCKSOURCE',
    743         'literal ::= LITERALSTART LITERALEND', 'literal ::= LITERALSTART literal_elements LITERALEND',
    744         'literal_elements ::= literal_elements literal_element', 'literal_elements ::=', 'literal_element ::= literal',
    745         'literal_element ::= LITERAL', 'smartytag ::= tag RDEL', 'smartytag ::= SIMPLEOUTPUT', 'tag ::= LDEL variable',
    746         'tag ::= LDEL variable attributes', 'tag ::= LDEL value', 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
    747         'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value', 'tag ::= LDEL DOLLARID EQUAL expr',
    748         'tag ::= LDEL DOLLARID EQUAL expr attributes', 'tag ::= LDEL varindexed EQUAL expr attributes',
    749         'smartytag ::= SIMPLETAG', 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
    750         'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
    751         'tag ::= LDEL ID PTR ID modifierlist attributes', 'tag ::= LDELIF expr', 'tag ::= LDELIF expr attributes',
    752         'tag ::= LDELIF statement', 'tag ::= LDELIF statement attributes',
    753         'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
    754         'foraction ::= EQUAL expr', 'foraction ::= INCDEC', 'tag ::= LDELFOR statement TO expr attributes',
    755         'tag ::= LDELFOR statement TO expr STEP expr attributes', 'tag ::= LDELFOREACH attributes',
    756         'tag ::= LDELFOREACH SPACE value AS varvar attributes',
    757         'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
    758         'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
    759         'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes', 'tag ::= LDELSETFILTER ID modparameters',
    760         'tag ::= LDELSETFILTER ID modparameters modifierlist', 'tag ::= LDEL SMARTYBLOCKCHILDPARENT',
    761         'smartytag ::= CLOSETAG', 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
    762         'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
    763         'attributes ::= attributes attribute', 'attributes ::= attribute', 'attributes ::=',
    764         'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr', 'attribute ::= ATTR value',
    765         'attribute ::= SPACE ID', 'attribute ::= SPACE expr', 'attribute ::= SPACE value',
    766         'attribute ::= SPACE INTEGER EQUAL expr', 'statements ::= statement',
    767         'statements ::= statements COMMA statement', 'statement ::= DOLLARID EQUAL INTEGER',
    768         'statement ::= DOLLARID EQUAL expr', 'statement ::= varindexed EQUAL expr',
    769         'statement ::= OPENP statement CLOSEP', 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
    770         'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array', 'expr ::= expr modifierlist',
    771         'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array', 'expr ::= expr ISIN value',
    772         'expr ::= variable INSTANCEOF ns1', 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
    773         'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable', 'value ::= UNIMATH value',
    774         'value ::= NOT value', 'value ::= TYPECAST value', 'value ::= variable INCDEC', 'value ::= HEX',
    775         'value ::= INTEGER', 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
    776         'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP', 'value ::= SINGLEQUOTESTRING',
    777         'value ::= doublequoted_with_quotes', 'value ::= varindexed DOUBLECOLON static_class_access',
    778         'value ::= smartytag', 'value ::= value modifierlist', 'value ::= NAMESPACE',
    779         'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID', 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID',
    780         'variable ::= varindexed', 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
    781         'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
    782         'variable ::= HATCH variable HATCH arrayindex', 'varindexed ::= DOLLARID arrayindex',
    783         'varindexed ::= varvar arrayindex', 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
    784         'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar', 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
    785         'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL', 'indexdef ::= OPENB ID CLOSEB',
    786         'indexdef ::= OPENB ID DOT ID CLOSEB', 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
    787         'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB', 'indexdef ::= OPENB variable CLOSEB',
    788         'indexdef ::= OPENB value CLOSEB', 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
    789         'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele', 'varvarele ::= ID',
    790         'varvarele ::= LDEL expr RDEL', 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
    791         'objectchain ::= objectchain objectelement', 'objectelement ::= PTR ID arrayindex',
    792         'objectelement ::= PTR varvar arrayindex', 'objectelement ::= PTR LDEL expr RDEL arrayindex',
    793         'objectelement ::= PTR ID LDEL expr RDEL arrayindex', 'objectelement ::= PTR method',
    794         'function ::= ns1 OPENP params CLOSEP', 'method ::= ID OPENP params CLOSEP',
    795         'method ::= DOLLARID OPENP params CLOSEP', 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
    796         'modifierlist ::= modifierlist modifier modparameters', 'modifierlist ::= modifier modparameters',
    797         'modifier ::= VERT AT ID', 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
    798         'modparameters ::=', 'modparameter ::= COLON value', 'modparameter ::= COLON array',
    799         'static_class_access ::= method', 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
    800         'static_class_access ::= DOLLARID arrayindex', 'static_class_access ::= DOLLARID arrayindex objectchain',
    801         'lop ::= LOGOP', 'lop ::= TLOGOP', 'scond ::= SINGLECOND', 'array ::= OPENB arrayelements CLOSEB',
    802         'arrayelements ::= arrayelement', 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
    803         'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr', 'arrayelement ::= expr',
    804         'doublequoted_with_quotes ::= QUOTE QUOTE', 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
    805         'doublequoted ::= doublequoted doublequotedcontent', 'doublequoted ::= doublequotedcontent',
    806         'doublequotedcontent ::= BACKTICK variable BACKTICK', 'doublequotedcontent ::= BACKTICK expr BACKTICK',
    807         'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
    808         'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag', 'doublequotedcontent ::= TEXT',);
    809 
    810     public function tokenName($tokenType)
    811     {
    812         if ($tokenType === 0) {
    813             return 'End of Input';
    814         }
    815         if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
    816             return $this->yyTokenName[$tokenType];
    817         } else {
    818             return "Unknown";
    819         }
    820     }
    821 
    822     public static function yy_destructor($yymajor, $yypminor)
    823     {
    824         switch ($yymajor) {
    825             default:
    826                 break;   /* If no destructor action specified: do nothing */
    827         }
    828     }
    829 
    830     public function yy_pop_parser_stack()
    831     {
    832         if (empty($this->yystack)) {
    833             return;
    834         }
    835         $yytos = array_pop($this->yystack);
    836         if ($this->yyTraceFILE && $this->yyidx >= 0) {
    837             fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . "\n");
    838         }
    839         $yymajor = $yytos->major;
    840         self::yy_destructor($yymajor, $yytos->minor);
    841         $this->yyidx --;
    842 
    843         return $yymajor;
    844     }
    845 
    846     public function __destruct()
    847     {
    848         while ($this->yystack !== Array()) {
    849             $this->yy_pop_parser_stack();
    850         }
    851         if (is_resource($this->yyTraceFILE)) {
    852             fclose($this->yyTraceFILE);
    853         }
    854     }
    855 
    856     public function yy_get_expected_tokens($token)
    857     {
    858         static $res3 = array();
    859         static $res4 = array();
    860         $state = $this->yystack[$this->yyidx]->stateno;
    861         $expected = self::$yyExpectedTokens[$state];
    862         if (isset($res3[$state][$token])) {
    863             if ($res3[$state][$token]) {
    864                 return $expected;
    865             }
    866         } else {
    867             if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
    868                 return $expected;
    869             }
    870         }
    871         $stack = $this->yystack;
    872         $yyidx = $this->yyidx;
    873         do {
    874             $yyact = $this->yy_find_shift_action($token);
    875             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
    876                 // reduce action
    877                 $done = 0;
    878                 do {
    879                     if ($done ++ == 100) {
    880                         $this->yyidx = $yyidx;
    881                         $this->yystack = $stack;
    882                         // too much recursion prevents proper detection
    883                         // so give up
    884                         return array_unique($expected);
    885                     }
    886                     $yyruleno = $yyact - self::YYNSTATE;
    887                     $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
    888                     $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
    889                     if (isset(self::$yyExpectedTokens[$nextstate])) {
    890                         $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
    891                         if (isset($res4[$nextstate][$token])) {
    892                             if ($res4[$nextstate][$token]) {
    893                                 $this->yyidx = $yyidx;
    894                                 $this->yystack = $stack;
    895                                 return array_unique($expected);
    896                             }
    897                         } else {
    898                             if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
    899                                 $this->yyidx = $yyidx;
    900                                 $this->yystack = $stack;
    901                                 return array_unique($expected);
    902                             }
    903                         }
    904                     }
    905                     if ($nextstate < self::YYNSTATE) {
    906                         // we need to shift a non-terminal
    907                         $this->yyidx ++;
    908                         $x = new TP_yyStackEntry;
    909                         $x->stateno = $nextstate;
    910                         $x->major = self::$yyRuleInfo[$yyruleno][0];
    911                         $this->yystack[$this->yyidx] = $x;
    912                         continue 2;
    913                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
    914                         $this->yyidx = $yyidx;
    915                         $this->yystack = $stack;
    916                         // the last token was just ignored, we can't accept
    917                         // by ignoring input, this is in essence ignoring a
    918                         // syntax error!
    919                         return array_unique($expected);
    920                     } elseif ($nextstate === self::YY_NO_ACTION) {
    921                         $this->yyidx = $yyidx;
    922                         $this->yystack = $stack;
    923                         // input accepted, but not shifted (I guess)
    924                         return $expected;
    925                     } else {
    926                         $yyact = $nextstate;
    927                     }
    928                 } while (true);
    929             }
    930             break;
    931         } while (true);
    932         $this->yyidx = $yyidx;
    933         $this->yystack = $stack;
    934 
    935         return array_unique($expected);
    936     }
    937 
    938     public function yy_is_expected_token($token)
    939     {
    940         static $res = array();
    941         static $res2 = array();
    942         if ($token === 0) {
    943             return true; // 0 is not part of this
    944         }
    945         $state = $this->yystack[$this->yyidx]->stateno;
    946         if (isset($res[$state][$token])) {
    947             if ($res[$state][$token]) {
    948                 return true;
    949             }
    950         } else {
    951             if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
    952                 return true;
    953             }
    954         }
    955         $stack = $this->yystack;
    956         $yyidx = $this->yyidx;
    957         do {
    958             $yyact = $this->yy_find_shift_action($token);
    959             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
    960                 // reduce action
    961                 $done = 0;
    962                 do {
    963                     if ($done ++ == 100) {
    964                         $this->yyidx = $yyidx;
    965                         $this->yystack = $stack;
    966                         // too much recursion prevents proper detection
    967                         // so give up
    968                         return true;
    969                     }
    970                     $yyruleno = $yyact - self::YYNSTATE;
    971                     $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
    972                     $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
    973                     if (isset($res2[$nextstate][$token])) {
    974                         if ($res2[$nextstate][$token]) {
    975                             $this->yyidx = $yyidx;
    976                             $this->yystack = $stack;
    977                             return true;
    978                         }
    979                     } else {
    980                         if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
    981                             $this->yyidx = $yyidx;
    982                             $this->yystack = $stack;
    983                             return true;
    984                         }
    985                     }
    986                     if ($nextstate < self::YYNSTATE) {
    987                         // we need to shift a non-terminal
    988                         $this->yyidx ++;
    989                         $x = new TP_yyStackEntry;
    990                         $x->stateno = $nextstate;
    991                         $x->major = self::$yyRuleInfo[$yyruleno][0];
    992                         $this->yystack[$this->yyidx] = $x;
    993                         continue 2;
    994                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
    995                         $this->yyidx = $yyidx;
    996                         $this->yystack = $stack;
    997                         if (!$token) {
    998                             // end of input: this is valid
    999                             return true;
   1000                         }
   1001                         // the last token was just ignored, we can't accept
   1002                         // by ignoring input, this is in essence ignoring a
   1003                         // syntax error!
   1004                         return false;
   1005                     } elseif ($nextstate === self::YY_NO_ACTION) {
   1006                         $this->yyidx = $yyidx;
   1007                         $this->yystack = $stack;
   1008                         // input accepted, but not shifted (I guess)
   1009                         return true;
   1010                     } else {
   1011                         $yyact = $nextstate;
   1012                     }
   1013                 } while (true);
   1014             }
   1015             break;
   1016         } while (true);
   1017         $this->yyidx = $yyidx;
   1018         $this->yystack = $stack;
   1019 
   1020         return true;
   1021     }
   1022 
   1023     public function yy_find_shift_action($iLookAhead)
   1024     {
   1025         $stateno = $this->yystack[$this->yyidx]->stateno;
   1026 
   1027         /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
   1028         if (!isset(self::$yy_shift_ofst[$stateno])) {
   1029             // no shift actions
   1030             return self::$yy_default[$stateno];
   1031         }
   1032         $i = self::$yy_shift_ofst[$stateno];
   1033         if ($i === self::YY_SHIFT_USE_DFLT) {
   1034             return self::$yy_default[$stateno];
   1035         }
   1036         if ($iLookAhead == self::YYNOCODE) {
   1037             return self::YY_NO_ACTION;
   1038         }
   1039         $i += $iLookAhead;
   1040         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
   1041             if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
   1042                 if ($this->yyTraceFILE) {
   1043                     fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[$iLookAhead] . " => " . $this->yyTokenName[$iFallback] . "\n");
   1044                 }
   1045 
   1046                 return $this->yy_find_shift_action($iFallback);
   1047             }
   1048 
   1049             return self::$yy_default[$stateno];
   1050         } else {
   1051             return self::$yy_action[$i];
   1052         }
   1053     }
   1054 
   1055     public function yy_find_reduce_action($stateno, $iLookAhead)
   1056     {
   1057         /* $stateno = $this->yystack[$this->yyidx]->stateno; */
   1058 
   1059         if (!isset(self::$yy_reduce_ofst[$stateno])) {
   1060             return self::$yy_default[$stateno];
   1061         }
   1062         $i = self::$yy_reduce_ofst[$stateno];
   1063         if ($i == self::YY_REDUCE_USE_DFLT) {
   1064             return self::$yy_default[$stateno];
   1065         }
   1066         if ($iLookAhead == self::YYNOCODE) {
   1067             return self::YY_NO_ACTION;
   1068         }
   1069         $i += $iLookAhead;
   1070         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
   1071             return self::$yy_default[$stateno];
   1072         } else {
   1073             return self::$yy_action[$i];
   1074         }
   1075     }
   1076 
   1077     public function yy_shift($yyNewState, $yyMajor, $yypMinor)
   1078     {
   1079         $this->yyidx ++;
   1080         if ($this->yyidx >= self::YYSTACKDEPTH) {
   1081             $this->yyidx --;
   1082             if ($this->yyTraceFILE) {
   1083                 fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
   1084             }
   1085             while ($this->yyidx >= 0) {
   1086                 $this->yy_pop_parser_stack();
   1087             }
   1088             #line 190 "../smarty/lexer/smarty_internal_templateparser.y"
   1089 
   1090             $this->internalError = true;
   1091             $this->compiler->trigger_template_error("Stack overflow in template parser");
   1092 
   1093             return;
   1094         }
   1095         $yytos = new TP_yyStackEntry;
   1096         $yytos->stateno = $yyNewState;
   1097         $yytos->major = $yyMajor;
   1098         $yytos->minor = $yypMinor;
   1099         $this->yystack[] = $yytos;
   1100         if ($this->yyTraceFILE && $this->yyidx > 0) {
   1101             fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
   1102             fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
   1103             for ($i = 1; $i <= $this->yyidx; $i ++) {
   1104                 fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[$this->yystack[$i]->major]);
   1105             }
   1106             fwrite($this->yyTraceFILE, "\n");
   1107         }
   1108     }
   1109 
   1110     public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
   1111         array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
   1112         array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1), array(0 => 67, 1 => 2),
   1113         array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 66, 1 => 2),
   1114         array(0 => 66, 1 => 3), array(0 => 68, 1 => 2), array(0 => 68, 1 => 0), array(0 => 69, 1 => 1),
   1115         array(0 => 69, 1 => 1), array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
   1116         array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
   1117         array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 4), array(0 => 70, 1 => 5),
   1118         array(0 => 70, 1 => 5), array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
   1119         array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6), array(0 => 70, 1 => 2),
   1120         array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
   1121         array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5), array(0 => 70, 1 => 7),
   1122         array(0 => 70, 1 => 2), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8), array(0 => 70, 1 => 6),
   1123         array(0 => 70, 1 => 8), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
   1124         array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
   1125         array(0 => 70, 1 => 5), array(0 => 72, 1 => 2), array(0 => 72, 1 => 1), array(0 => 72, 1 => 0),
   1126         array(0 => 82, 1 => 4), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
   1127         array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4), array(0 => 78, 1 => 1),
   1128         array(0 => 78, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
   1129         array(0 => 77, 1 => 3), array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
   1130         array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1), array(0 => 74, 1 => 2),
   1131         array(0 => 74, 1 => 3), array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
   1132         array(0 => 74, 1 => 3), array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
   1133         array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
   1134         array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 2),
   1135         array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
   1136         array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
   1137         array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 87, 1 => 1),
   1138         array(0 => 87, 1 => 1), array(0 => 71, 1 => 1), array(0 => 71, 1 => 1), array(0 => 71, 1 => 3),
   1139         array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
   1140         array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2), array(0 => 92, 1 => 2),
   1141         array(0 => 92, 1 => 0), array(0 => 93, 1 => 2), array(0 => 93, 1 => 2), array(0 => 93, 1 => 4),
   1142         array(0 => 93, 1 => 2), array(0 => 93, 1 => 2), array(0 => 93, 1 => 4), array(0 => 93, 1 => 3),
   1143         array(0 => 93, 1 => 5), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3),
   1144         array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 2),
   1145         array(0 => 80, 1 => 1), array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 94, 1 => 1),
   1146         array(0 => 94, 1 => 3), array(0 => 91, 1 => 2), array(0 => 95, 1 => 1), array(0 => 95, 1 => 2),
   1147         array(0 => 96, 1 => 3), array(0 => 96, 1 => 3), array(0 => 96, 1 => 5), array(0 => 96, 1 => 6),
   1148         array(0 => 96, 1 => 2), array(0 => 88, 1 => 4), array(0 => 97, 1 => 4), array(0 => 97, 1 => 4),
   1149         array(0 => 98, 1 => 3), array(0 => 98, 1 => 1), array(0 => 98, 1 => 0), array(0 => 76, 1 => 3),
   1150         array(0 => 76, 1 => 2), array(0 => 99, 1 => 3), array(0 => 99, 1 => 2), array(0 => 81, 1 => 2),
   1151         array(0 => 81, 1 => 0), array(0 => 100, 1 => 2), array(0 => 100, 1 => 2), array(0 => 90, 1 => 1),
   1152         array(0 => 90, 1 => 2), array(0 => 90, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
   1153         array(0 => 85, 1 => 1), array(0 => 85, 1 => 1), array(0 => 86, 1 => 1), array(0 => 84, 1 => 3),
   1154         array(0 => 101, 1 => 1), array(0 => 101, 1 => 3), array(0 => 101, 1 => 0), array(0 => 102, 1 => 3),
   1155         array(0 => 102, 1 => 3), array(0 => 102, 1 => 1), array(0 => 89, 1 => 2), array(0 => 89, 1 => 3),
   1156         array(0 => 103, 1 => 2), array(0 => 103, 1 => 1), array(0 => 104, 1 => 3), array(0 => 104, 1 => 3),
   1157         array(0 => 104, 1 => 1), array(0 => 104, 1 => 3), array(0 => 104, 1 => 3), array(0 => 104, 1 => 1),
   1158         array(0 => 104, 1 => 1),);
   1159 
   1160     public static $yyReduceMap = array(0   => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9,
   1161                                        18  => 9, 19 => 9, 44 => 9, 67 => 9, 68 => 9, 76 => 9, 77 => 9, 81 => 9, 90 => 9,
   1162                                        95  => 9, 96 => 9, 101 => 9, 103 => 9, 104 => 9, 108 => 9, 110 => 9, 111 => 9,
   1163                                        115 => 9, 175 => 9, 180 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14,
   1164                                        17  => 14, 15 => 15, 75 => 15, 16 => 16, 91 => 16, 93 => 16, 94 => 16, 122 => 16,
   1165                                        20  => 20, 21 => 21, 22 => 22, 24 => 22, 26 => 22, 23 => 23, 25 => 23, 27 => 23,
   1166                                        28  => 28, 29 => 28, 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35,
   1167                                        36  => 36, 37 => 37, 38 => 38, 39 => 39, 41 => 39, 40 => 40, 42 => 42, 43 => 43,
   1168                                        45  => 45, 46 => 46, 47 => 47, 48 => 48, 50 => 48, 49 => 49, 51 => 49, 52 => 52,
   1169                                        53  => 53, 54 => 54, 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60,
   1170                                        61  => 61, 70 => 61, 156 => 61, 160 => 61, 164 => 61, 165 => 61, 62 => 62,
   1171                                        157 => 62, 163 => 62, 63 => 63, 64 => 64, 65 => 64, 66 => 66, 142 => 66,
   1172                                        69  => 69, 71 => 71, 72 => 72, 73 => 72, 74 => 74, 78 => 78, 79 => 79, 80 => 79,
   1173                                        82  => 82, 107 => 82, 83 => 83, 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88,
   1174                                        89  => 89, 92 => 92, 97 => 97, 98 => 98, 99 => 99, 100 => 100, 102 => 102,
   1175                                        105 => 105, 106 => 106, 109 => 109, 112 => 112, 113 => 113, 114 => 114,
   1176                                        116 => 116, 117 => 117, 118 => 118, 119 => 119, 120 => 120, 121 => 121,
   1177                                        123 => 123, 177 => 123, 124 => 124, 125 => 125, 126 => 126, 127 => 127,
   1178                                        128 => 128, 129 => 129, 137 => 129, 130 => 130, 131 => 131, 132 => 132,
   1179                                        133 => 132, 135 => 132, 136 => 132, 134 => 134, 138 => 138, 139 => 139,
   1180                                        140 => 140, 181 => 140, 141 => 141, 143 => 143, 144 => 144, 145 => 145,
   1181                                        146 => 146, 147 => 147, 148 => 148, 149 => 149, 150 => 150, 151 => 151,
   1182                                        152 => 152, 153 => 153, 154 => 154, 155 => 155, 158 => 158, 159 => 159,
   1183                                        161 => 161, 162 => 162, 166 => 166, 167 => 167, 168 => 168, 169 => 169,
   1184                                        170 => 170, 171 => 171, 172 => 172, 173 => 173, 174 => 174, 176 => 176,
   1185                                        178 => 178, 179 => 179, 182 => 182, 183 => 183, 184 => 184, 185 => 185,
   1186                                        186 => 185, 188 => 185, 187 => 187, 189 => 189, 190 => 190, 191 => 191,);
   1187 
   1188     #line 201 "../smarty/lexer/smarty_internal_templateparser.y"
   1189     function yy_r0()
   1190     {
   1191         $this->_retvalue = $this->root_buffer->to_smarty_php();
   1192     }
   1193 
   1194     #line 209 "../smarty/lexer/smarty_internal_templateparser.y"
   1195     function yy_r1()
   1196     {
   1197         if ($this->yystack[$this->yyidx + 0]->minor != null) {
   1198             $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
   1199         }
   1200     }
   1201 
   1202     #line 216 "../smarty/lexer/smarty_internal_templateparser.y"
   1203     function yy_r2()
   1204     {
   1205         if ($this->yystack[$this->yyidx + 0]->minor != null) {
   1206             // because of possible code injection
   1207             $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
   1208         }
   1209     }
   1210 
   1211     #line 230 "../smarty/lexer/smarty_internal_templateparser.y"
   1212     function yy_r4()
   1213     {
   1214         if ($this->compiler->has_code) {
   1215             $this->_retvalue = $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor);
   1216         } else {
   1217             $this->_retvalue = null;
   1218         }
   1219         $this->compiler->has_variable_string = false;
   1220         $this->block_nesting_level = count($this->compiler->_tag_stack);
   1221     }
   1222 
   1223     #line 241 "../smarty/lexer/smarty_internal_templateparser.y"
   1224     function yy_r5()
   1225     {
   1226         $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor);
   1227     }
   1228 
   1229     #line 245 "../smarty/lexer/smarty_internal_templateparser.y"
   1230     function yy_r6()
   1231     {
   1232         $code = $this->compiler->compileTag('private_php', array(array('code' => $this->yystack[$this->yyidx + 0]->minor),
   1233             array('type' => $this->lex->phpType)), array());
   1234         if ($this->compiler->has_code && !empty($code)) {
   1235             $tmp = '';
   1236             foreach ($this->compiler->prefix_code as $code) {
   1237                 $tmp .= $code;
   1238             }
   1239             $this->compiler->prefix_code = array();
   1240             $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
   1241         } else {
   1242             $this->_retvalue = null;
   1243         }
   1244     }
   1245 
   1246     #line 256 "../smarty/lexer/smarty_internal_templateparser.y"
   1247     function yy_r7()
   1248     {
   1249         $this->compiler->tag_nocache = true;
   1250         $save = $this->template->has_nocache_code;
   1251         $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n", $this->compiler, true));
   1252         $this->template->has_nocache_code = $save;
   1253     }
   1254 
   1255     #line 263 "../smarty/lexer/smarty_internal_templateparser.y"
   1256     function yy_r8()
   1257     {
   1258         $this->_retvalue = $this->compiler->processText($this->yystack[$this->yyidx + 0]->minor);
   1259     }
   1260 
   1261     #line 267 "../smarty/lexer/smarty_internal_templateparser.y"
   1262     function yy_r9()
   1263     {
   1264         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
   1265     }
   1266 
   1267     #line 271 "../smarty/lexer/smarty_internal_templateparser.y"
   1268     function yy_r10()
   1269     {
   1270         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
   1271     }
   1272 
   1273     #line 276 "../smarty/lexer/smarty_internal_templateparser.y"
   1274     function yy_r11()
   1275     {
   1276         $this->strip = true;
   1277     }
   1278 
   1279     #line 280 "../smarty/lexer/smarty_internal_templateparser.y"
   1280     function yy_r12()
   1281     {
   1282         $this->strip = false;
   1283     }
   1284 
   1285     #line 284 "../smarty/lexer/smarty_internal_templateparser.y"
   1286     function yy_r13()
   1287     {
   1288         if ($this->strip) {
   1289             SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor));
   1290         } else {
   1291             SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, $this->yystack[$this->yyidx + 0]->minor);
   1292         }
   1293     }
   1294 
   1295     #line 293 "../smarty/lexer/smarty_internal_templateparser.y"
   1296     function yy_r14()
   1297     {
   1298         $this->_retvalue = '';
   1299     }
   1300 
   1301     #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
   1302     function yy_r15()
   1303     {
   1304         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
   1305     }
   1306 
   1307     #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
   1308     function yy_r16()
   1309     {
   1310         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
   1311     }
   1312 
   1313     #line 317 "../smarty/lexer/smarty_internal_templateparser.y"
   1314     function yy_r20()
   1315     {
   1316         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
   1317     }
   1318 
   1319     #line 323 "../smarty/lexer/smarty_internal_templateparser.y"
   1320     function yy_r21()
   1321     {
   1322         $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length), ' $');
   1323         if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
   1324             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'), array('value' => $this->compiler->compileVariable('\'' . $match[1] . '\'')));
   1325         } else {
   1326             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->compiler->compileVariable('\'' . $var . '\'')));
   1327         }
   1328     }
   1329 
   1330     #line 333 "../smarty/lexer/smarty_internal_templateparser.y"
   1331     function yy_r22()
   1332     {
   1333         $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor));
   1334     }
   1335 
   1336     #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
   1337     function yy_r23()
   1338     {
   1339         $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 1]->minor));
   1340     }
   1341 
   1342     #line 360 "../smarty/lexer/smarty_internal_templateparser.y"
   1343     function yy_r28()
   1344     {
   1345         $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[$this->yyidx + 0]->minor),
   1346             array('var' => '\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '\'')));
   1347     }
   1348 
   1349     #line 368 "../smarty/lexer/smarty_internal_templateparser.y"
   1350     function yy_r30()
   1351     {
   1352         $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor),
   1353                                                                                  array('var' => '\'' . substr($this->yystack[$this->yyidx + - 3]->minor, 1) . '\'')), $this->yystack[$this->yyidx + 0]->minor));
   1354     }
   1355 
   1356     #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
   1357     function yy_r31()
   1358     {
   1359         $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor),
   1360                                                                                  array('var' => $this->yystack[$this->yyidx + - 3]->minor['var'])), $this->yystack[$this->yyidx + 0]->minor), array('smarty_internal_index' => $this->yystack[$this->yyidx + - 3]->minor['smarty_internal_index']));
   1361     }
   1362 
   1363     #line 377 "../smarty/lexer/smarty_internal_templateparser.y"
   1364     function yy_r32()
   1365     {
   1366         $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
   1367         if ($tag == 'strip') {
   1368             $this->strip = true;
   1369             $this->_retvalue = null;;
   1370         } else {
   1371             if (defined($tag)) {
   1372                 if ($this->security) {
   1373                     $this->security->isTrustedConstant($tag, $this->compiler);
   1374                 }
   1375                 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
   1376             } else {
   1377                 if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
   1378                     $this->_retvalue = $this->compiler->compileTag($match[1], array("'nocache'"));
   1379                 } else {
   1380                     $this->_retvalue = $this->compiler->compileTag($tag, array());
   1381                 }
   1382             }
   1383         }
   1384     }
   1385 
   1386     #line 399 "../smarty/lexer/smarty_internal_templateparser.y"
   1387     function yy_r33()
   1388     {
   1389         if (defined($this->yystack[$this->yyidx + - 1]->minor)) {
   1390             if ($this->security) {
   1391                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + - 1]->minor, $this->compiler);
   1392             }
   1393             $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 1]->minor));
   1394         } else {
   1395             $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor);
   1396         }
   1397     }
   1398 
   1399     #line 409 "../smarty/lexer/smarty_internal_templateparser.y"
   1400     function yy_r34()
   1401     {
   1402         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
   1403             if ($this->security) {
   1404                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
   1405             }
   1406             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor));
   1407         } else {
   1408             $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor, array());
   1409         }
   1410     }
   1411 
   1412     #line 422 "../smarty/lexer/smarty_internal_templateparser.y"
   1413     function yy_r35()
   1414     {
   1415         if (defined($this->yystack[$this->yyidx + - 2]->minor)) {
   1416             if ($this->security) {
   1417                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + - 2]->minor, $this->compiler);
   1418             }
   1419             $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value'        => $this->yystack[$this->yyidx + - 2]->minor,
   1420                                                                                                                                       'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
   1421         } else {
   1422             $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor, $this->yystack[$this->yyidx + 0]->minor) . '<?php echo ';
   1423             $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor,
   1424                                                                                                'value'        => 'ob_get_clean()')) . ';?>';
   1425         }
   1426     }
   1427 
   1428     #line 435 "../smarty/lexer/smarty_internal_templateparser.y"
   1429     function yy_r36()
   1430     {
   1431         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 1]->minor));
   1432     }
   1433 
   1434     #line 440 "../smarty/lexer/smarty_internal_templateparser.y"
   1435     function yy_r37()
   1436     {
   1437         $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 4]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 2]->minor)) . '<?php echo ';
   1438         $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor,
   1439                                                                                            'value'        => 'ob_get_clean()')) . ';?>';
   1440     }
   1441 
   1442     #line 446 "../smarty/lexer/smarty_internal_templateparser.y"
   1443     function yy_r38()
   1444     {
   1445         $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
   1446         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
   1447     }
   1448 
   1449     #line 451 "../smarty/lexer/smarty_internal_templateparser.y"
   1450     function yy_r39()
   1451     {
   1452         $tag = trim(substr($this->yystack[$this->yyidx + - 2]->minor, $this->lex->ldel_length));
   1453         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, $this->yystack[$this->yyidx + 0]->minor, array('if condition' => $this->yystack[$this->yyidx + - 1]->minor));
   1454     }
   1455 
   1456     #line 456 "../smarty/lexer/smarty_internal_templateparser.y"
   1457     function yy_r40()
   1458     {
   1459         $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
   1460         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
   1461     }
   1462 
   1463     #line 467 "../smarty/lexer/smarty_internal_templateparser.y"
   1464     function yy_r42()
   1465     {
   1466         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 6]->minor),
   1467             array('ifexp' => $this->yystack[$this->yyidx + - 4]->minor),
   1468             array('var' => $this->yystack[$this->yyidx + - 2]->minor),
   1469             array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 1);
   1470     }
   1471 
   1472     #line 471 "../smarty/lexer/smarty_internal_templateparser.y"
   1473     function yy_r43()
   1474     {
   1475         $this->_retvalue = '=' . $this->yystack[$this->yyidx + 0]->minor;
   1476     }
   1477 
   1478     #line 479 "../smarty/lexer/smarty_internal_templateparser.y"
   1479     function yy_r45()
   1480     {
   1481         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 3]->minor),
   1482             array('to' => $this->yystack[$this->yyidx + - 1]->minor))), 0);
   1483     }
   1484 
   1485     #line 483 "../smarty/lexer/smarty_internal_templateparser.y"
   1486     function yy_r46()
   1487     {
   1488         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 5]->minor),
   1489             array('to' => $this->yystack[$this->yyidx + - 3]->minor),
   1490             array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 0);
   1491     }
   1492 
   1493     #line 488 "../smarty/lexer/smarty_internal_templateparser.y"
   1494     function yy_r47()
   1495     {
   1496         $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[$this->yyidx + 0]->minor);
   1497     }
   1498 
   1499     #line 493 "../smarty/lexer/smarty_internal_templateparser.y"
   1500     function yy_r48()
   1501     {
   1502         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 3]->minor),
   1503             array('item' => $this->yystack[$this->yyidx + - 1]->minor))));
   1504     }
   1505 
   1506     #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
   1507     function yy_r49()
   1508     {
   1509         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 5]->minor),
   1510             array('item' => $this->yystack[$this->yyidx + - 1]->minor),
   1511             array('key' => $this->yystack[$this->yyidx + - 3]->minor))));
   1512     }
   1513 
   1514     #line 510 "../smarty/lexer/smarty_internal_templateparser.y"
   1515     function yy_r52()
   1516     {
   1517         $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array(array_merge(array($this->yystack[$this->yyidx + - 1]->minor), $this->yystack[$this->yyidx + 0]->minor))));
   1518     }
   1519 
   1520     #line 514 "../smarty/lexer/smarty_internal_templateparser.y"
   1521     function yy_r53()
   1522     {
   1523         $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array_merge(array(array_merge(array($this->yystack[$this->yyidx + - 2]->minor), $this->yystack[$this->yyidx + - 1]->minor)), $this->yystack[$this->yyidx + 0]->minor)));
   1524     }
   1525 
   1526     #line 519 "../smarty/lexer/smarty_internal_templateparser.y"
   1527     function yy_r54()
   1528     {
   1529         $j = strrpos($this->yystack[$this->yyidx + 0]->minor, '.');
   1530         if ($this->yystack[$this->yyidx + 0]->minor[$j + 1] == 'c') {
   1531             // {$smarty.block.child}
   1532             $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
   1533         } else {
   1534             // {$smarty.block.parent}
   1535             $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
   1536         }
   1537     }
   1538 
   1539     #line 532 "../smarty/lexer/smarty_internal_templateparser.y"
   1540     function yy_r55()
   1541     {
   1542         $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length), ' /');
   1543         if ($tag == 'strip') {
   1544             $this->strip = false;
   1545             $this->_retvalue = null;
   1546         } else {
   1547             $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
   1548         }
   1549     }
   1550 
   1551     #line 541 "../smarty/lexer/smarty_internal_templateparser.y"
   1552     function yy_r56()
   1553     {
   1554         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor . 'close', array());
   1555     }
   1556 
   1557     #line 545 "../smarty/lexer/smarty_internal_templateparser.y"
   1558     function yy_r57()
   1559     {
   1560         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor . 'close', array(), array('modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
   1561     }
   1562 
   1563     #line 550 "../smarty/lexer/smarty_internal_templateparser.y"
   1564     function yy_r58()
   1565     {
   1566         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + 0]->minor));
   1567     }
   1568 
   1569     #line 554 "../smarty/lexer/smarty_internal_templateparser.y"
   1570     function yy_r59()
   1571     {
   1572         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + - 1]->minor,
   1573                                                                                                                            'modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
   1574     }
   1575 
   1576     #line 562 "../smarty/lexer/smarty_internal_templateparser.y"
   1577     function yy_r60()
   1578     {
   1579         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
   1580         $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
   1581     }
   1582 
   1583     #line 568 "../smarty/lexer/smarty_internal_templateparser.y"
   1584     function yy_r61()
   1585     {
   1586         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
   1587     }
   1588 
   1589     #line 573 "../smarty/lexer/smarty_internal_templateparser.y"
   1590     function yy_r62()
   1591     {
   1592         $this->_retvalue = array();
   1593     }
   1594 
   1595     #line 578 "../smarty/lexer/smarty_internal_templateparser.y"
   1596     function yy_r63()
   1597     {
   1598         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
   1599             if ($this->security) {
   1600                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
   1601             }
   1602             $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor);
   1603         } else {
   1604             $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'');
   1605         }
   1606     }
   1607 
   1608     #line 589 "../smarty/lexer/smarty_internal_templateparser.y"
   1609     function yy_r64()
   1610     {
   1611         $this->_retvalue = array(trim($this->yystack[$this->yyidx + - 1]->minor, " =\n\r\t") => $this->yystack[$this->yyidx + 0]->minor);
   1612     }
   1613 
   1614     #line 597 "../smarty/lexer/smarty_internal_templateparser.y"
   1615     function yy_r66()
   1616     {
   1617         $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
   1618     }
   1619 
   1620     #line 609 "../smarty/lexer/smarty_internal_templateparser.y"
   1621     function yy_r69()
   1622     {
   1623         $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor);
   1624     }
   1625 
   1626     #line 622 "../smarty/lexer/smarty_internal_templateparser.y"
   1627     function yy_r71()
   1628     {
   1629         $this->yystack[$this->yyidx + - 2]->minor[] = $this->yystack[$this->yyidx + 0]->minor;
   1630         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor;
   1631     }
   1632 
   1633     #line 627 "../smarty/lexer/smarty_internal_templateparser.y"
   1634     function yy_r72()
   1635     {
   1636         $this->_retvalue = array('var'   => '\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '\'',
   1637                                  'value' => $this->yystack[$this->yyidx + 0]->minor);
   1638     }
   1639 
   1640     #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
   1641     function yy_r74()
   1642     {
   1643         $this->_retvalue = array('var'   => $this->yystack[$this->yyidx + - 2]->minor,
   1644                                  'value' => $this->yystack[$this->yyidx + 0]->minor);
   1645     }
   1646 
   1647     #line 658 "../smarty/lexer/smarty_internal_templateparser.y"
   1648     function yy_r78()
   1649     {
   1650         $this->_retvalue = '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
   1651     }
   1652 
   1653     #line 663 "../smarty/lexer/smarty_internal_templateparser.y"
   1654     function yy_r79()
   1655     {
   1656         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . trim($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
   1657     }
   1658 
   1659     #line 677 "../smarty/lexer/smarty_internal_templateparser.y"
   1660     function yy_r82()
   1661     {
   1662         $this->_retvalue = $this->compiler->compileTag('private_modifier', array(), array('value'        => $this->yystack[$this->yyidx + - 1]->minor,
   1663                                                                                           'modifierlist' => $this->yystack[$this->yyidx + 0]->minor));
   1664     }
   1665 
   1666     #line 683 "../smarty/lexer/smarty_internal_templateparser.y"
   1667     function yy_r83()
   1668     {
   1669         $this->_retvalue = (isset($this->yystack[$this->yyidx + - 1]->minor['pre']) ? $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 . (isset($this->yystack[$this->yyidx + - 1]->minor['pre']) ? ')' : '');
   1670     }
   1671 
   1672     #line 686 "../smarty/lexer/smarty_internal_templateparser.y"
   1673     function yy_r84()
   1674     {
   1675         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + - 1]->minor . ')';
   1676     }
   1677 
   1678     #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
   1679     function yy_r85()
   1680     {
   1681         $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor . ')';
   1682     }
   1683 
   1684     #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
   1685     function yy_r86()
   1686     {
   1687         $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',(array)' . $this->yystack[$this->yyidx + 0]->minor . ')';
   1688     }
   1689 
   1690     #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
   1691     function yy_r87()
   1692     {
   1693         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
   1694     }
   1695 
   1696     #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
   1697     function yy_r88()
   1698     {
   1699         $this->_retvalue = $this->yystack[$this->yyidx + - 5]->minor . ' ? ' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '\'') . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
   1700     }
   1701 
   1702     #line 710 "../smarty/lexer/smarty_internal_templateparser.y"
   1703     function yy_r89()
   1704     {
   1705         $this->_retvalue = $this->yystack[$this->yyidx + - 5]->minor . ' ? ' . $this->yystack[$this->yyidx + - 2]->minor . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
   1706     }
   1707 
   1708     #line 725 "../smarty/lexer/smarty_internal_templateparser.y"
   1709     function yy_r92()
   1710     {
   1711         $this->_retvalue = '!' . $this->yystack[$this->yyidx + 0]->minor;
   1712     }
   1713 
   1714     #line 746 "../smarty/lexer/smarty_internal_templateparser.y"
   1715     function yy_r97()
   1716     {
   1717         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
   1718     }
   1719 
   1720     #line 750 "../smarty/lexer/smarty_internal_templateparser.y"
   1721     function yy_r98()
   1722     {
   1723         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.';
   1724     }
   1725 
   1726     #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
   1727     function yy_r99()
   1728     {
   1729         $this->_retvalue = '.' . $this->yystack[$this->yyidx + 0]->minor;
   1730     }
   1731 
   1732     #line 759 "../smarty/lexer/smarty_internal_templateparser.y"
   1733     function yy_r100()
   1734     {
   1735         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
   1736             if ($this->security) {
   1737                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
   1738             }
   1739             $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
   1740         } else {
   1741             $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
   1742         }
   1743     }
   1744 
   1745     #line 776 "../smarty/lexer/smarty_internal_templateparser.y"
   1746     function yy_r102()
   1747     {
   1748         $this->_retvalue = "(" . $this->yystack[$this->yyidx + - 1]->minor . ")";
   1749     }
   1750 
   1751     #line 791 "../smarty/lexer/smarty_internal_templateparser.y"
   1752     function yy_r105()
   1753     {
   1754         self::$prefix_number ++;
   1755         if ($this->yystack[$this->yyidx + - 2]->minor['var'] == '\'smarty\'') {
   1756             $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' . $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index']) . ';?>';
   1757         } else {
   1758             $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' . $this->compiler->compileVariable($this->yystack[$this->yyidx + - 2]->minor['var']) . $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index'] . ';?>';
   1759         }
   1760         $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
   1761     }
   1762 
   1763     #line 802 "../smarty/lexer/smarty_internal_templateparser.y"
   1764     function yy_r106()
   1765     {
   1766         self::$prefix_number ++;
   1767         $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[$this->yyidx + 0]->minor);
   1768         $this->compiler->prefix_code[] = $this->compiler->appendCode($tmp, '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>');
   1769         $this->_retvalue = '$_tmp' . self::$prefix_number;
   1770     }
   1771 
   1772     #line 819 "../smarty/lexer/smarty_internal_templateparser.y"
   1773     function yy_r109()
   1774     {
   1775         if (!in_array(strtolower($this->yystack[$this->yyidx + - 2]->minor), array('self',
   1776                 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + - 2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))
   1777         ) {
   1778             if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor])) {
   1779                 $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor] . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
   1780             } else {
   1781                 $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
   1782             }
   1783         } else {
   1784             $this->compiler->trigger_template_error("static class '" . $this->yystack[$this->yyidx + - 2]->minor . "' is undefined or not allowed by security setting");
   1785         }
   1786     }
   1787 
   1788     #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
   1789     function yy_r112()
   1790     {
   1791         $this->_retvalue = $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'');
   1792     }
   1793 
   1794     #line 856 "../smarty/lexer/smarty_internal_templateparser.y"
   1795     function yy_r113()
   1796     {
   1797         if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
   1798             $smarty_var = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
   1799             $this->_retvalue = $smarty_var;
   1800         } else {
   1801             // used for array reset,next,prev,end,current 
   1802             $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
   1803             $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
   1804             $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']) . $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
   1805         }
   1806     }
   1807 
   1808     #line 869 "../smarty/lexer/smarty_internal_templateparser.y"
   1809     function yy_r114()
   1810     {
   1811         $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[$this->yyidx + - 2]->minor . ']->' . $this->yystack[$this->yyidx + 0]->minor;
   1812     }
   1813 
   1814     #line 879 "../smarty/lexer/smarty_internal_templateparser.y"
   1815     function yy_r116()
   1816     {
   1817         $this->_retvalue = '$_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + - 1]->minor . '\')';
   1818     }
   1819 
   1820     #line 883 "../smarty/lexer/smarty_internal_templateparser.y"
   1821     function yy_r117()
   1822     {
   1823         $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + - 2]->minor . '\')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' :null)';
   1824     }
   1825 
   1826     #line 887 "../smarty/lexer/smarty_internal_templateparser.y"
   1827     function yy_r118()
   1828     {
   1829         $this->_retvalue = '$_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + - 1]->minor . ')';
   1830     }
   1831 
   1832     #line 891 "../smarty/lexer/smarty_internal_templateparser.y"
   1833     function yy_r119()
   1834     {
   1835         $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + - 2]->minor . ')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' : null)';
   1836     }
   1837 
   1838     #line 895 "../smarty/lexer/smarty_internal_templateparser.y"
   1839     function yy_r120()
   1840     {
   1841         $this->_retvalue = array('var'                   => '\'' . substr($this->yystack[$this->yyidx + - 1]->minor, 1) . '\'',
   1842                                  'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
   1843     }
   1844 
   1845     #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
   1846     function yy_r121()
   1847     {
   1848         $this->_retvalue = array('var'                   => $this->yystack[$this->yyidx + - 1]->minor,
   1849                                  'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
   1850     }
   1851 
   1852     #line 911 "../smarty/lexer/smarty_internal_templateparser.y"
   1853     function yy_r123()
   1854     {
   1855         return;
   1856     }
   1857 
   1858     #line 917 "../smarty/lexer/smarty_internal_templateparser.y"
   1859     function yy_r124()
   1860     {
   1861         $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'') . ']';
   1862     }
   1863 
   1864     #line 920 "../smarty/lexer/smarty_internal_templateparser.y"
   1865     function yy_r125()
   1866     {
   1867         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor) . ']';
   1868     }
   1869 
   1870     #line 924 "../smarty/lexer/smarty_internal_templateparser.y"
   1871     function yy_r126()
   1872     {
   1873         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + - 2]->minor) . '->' . $this->yystack[$this->yyidx + 0]->minor . ']';
   1874     }
   1875 
   1876     #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
   1877     function yy_r127()
   1878     {
   1879         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
   1880             if ($this->security) {
   1881                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
   1882             }
   1883             $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
   1884         } else {
   1885             $this->_retvalue = "['" . $this->yystack[$this->yyidx + 0]->minor . "']";
   1886         }
   1887     }
   1888 
   1889     #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
   1890     function yy_r128()
   1891     {
   1892         $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
   1893     }
   1894 
   1895     #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
   1896     function yy_r129()
   1897     {
   1898         $this->_retvalue = '[' . $this->yystack[$this->yyidx + - 1]->minor . ']';
   1899     }
   1900 
   1901     #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
   1902     function yy_r130()
   1903     {
   1904         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\'][\'index\']') . ']';
   1905     }
   1906 
   1907     #line 952 "../smarty/lexer/smarty_internal_templateparser.y"
   1908     function yy_r131()
   1909     {
   1910         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 3]->minor . '\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\']') . ']';
   1911     }
   1912 
   1913     #line 955 "../smarty/lexer/smarty_internal_templateparser.y"
   1914     function yy_r132()
   1915     {
   1916         $this->_retvalue = '[' . $this->yystack[$this->yyidx + - 1]->minor . ']';
   1917     }
   1918 
   1919     #line 961 "../smarty/lexer/smarty_internal_templateparser.y"
   1920     function yy_r134()
   1921     {
   1922         $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 1]->minor, 1) . '\'') . ']';;
   1923     }
   1924 
   1925     #line 977 "../smarty/lexer/smarty_internal_templateparser.y"
   1926     function yy_r138()
   1927     {
   1928         $this->_retvalue = '[]';
   1929     }
   1930 
   1931     #line 987 "../smarty/lexer/smarty_internal_templateparser.y"
   1932     function yy_r139()
   1933     {
   1934         $this->_retvalue = '\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'';
   1935     }
   1936 
   1937     #line 991 "../smarty/lexer/smarty_internal_templateparser.y"
   1938     function yy_r140()
   1939     {
   1940         $this->_retvalue = "''";
   1941     }
   1942 
   1943     #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
   1944     function yy_r141()
   1945     {
   1946         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
   1947     }
   1948 
   1949     #line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
   1950     function yy_r143()
   1951     {
   1952         $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
   1953     }
   1954 
   1955     #line 1013 "../smarty/lexer/smarty_internal_templateparser.y"
   1956     function yy_r144()
   1957     {
   1958         if ($this->yystack[$this->yyidx + - 1]->minor['var'] == '\'smarty\'') {
   1959             $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index']) . $this->yystack[$this->yyidx + 0]->minor;
   1960         } else {
   1961             $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + - 1]->minor['var']) . $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index'] . $this->yystack[$this->yyidx + 0]->minor;
   1962         }
   1963     }
   1964 
   1965     #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
   1966     function yy_r145()
   1967     {
   1968         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
   1969     }
   1970 
   1971     #line 1027 "../smarty/lexer/smarty_internal_templateparser.y"
   1972     function yy_r146()
   1973     {
   1974         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
   1975     }
   1976 
   1977     #line 1032 "../smarty/lexer/smarty_internal_templateparser.y"
   1978     function yy_r147()
   1979     {
   1980         if ($this->security && substr($this->yystack[$this->yyidx + - 1]->minor, 0, 1) == '_') {
   1981             $this->compiler->trigger_template_error(self::Err1);
   1982         }
   1983         $this->_retvalue = '->' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
   1984     }
   1985 
   1986     #line 1039 "../smarty/lexer/smarty_internal_templateparser.y"
   1987     function yy_r148()
   1988     {
   1989         if ($this->security) {
   1990             $this->compiler->trigger_template_error(self::Err2);
   1991         }
   1992         $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor . '}';
   1993     }
   1994 
   1995     #line 1046 "../smarty/lexer/smarty_internal_templateparser.y"
   1996     function yy_r149()
   1997     {
   1998         if ($this->security) {
   1999             $this->compiler->trigger_template_error(self::Err2);
   2000         }
   2001         $this->_retvalue = '->{' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
   2002     }
   2003 
   2004     #line 1053 "../smarty/lexer/smarty_internal_templateparser.y"
   2005     function yy_r150()
   2006     {
   2007         if ($this->security) {
   2008             $this->compiler->trigger_template_error(self::Err2);
   2009         }
   2010         $this->_retvalue = '->{\'' . $this->yystack[$this->yyidx + - 4]->minor . '\'.' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
   2011     }
   2012 
   2013     #line 1061 "../smarty/lexer/smarty_internal_templateparser.y"
   2014     function yy_r151()
   2015     {
   2016         $this->_retvalue = '->' . $this->yystack[$this->yyidx + 0]->minor;
   2017     }
   2018 
   2019     #line 1069 "../smarty/lexer/smarty_internal_templateparser.y"
   2020     function yy_r152()
   2021     {
   2022         if (!$this->security || $this->security->isTrustedPhpFunction($this->yystack[$this->yyidx + - 3]->minor, $this->compiler)) {
   2023             if (strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'array') === 0 || is_callable($this->yystack[$this->yyidx + - 3]->minor)) {
   2024                 $func_name = strtolower($this->yystack[$this->yyidx + - 3]->minor);
   2025                 if ($func_name == 'isset') {
   2026                     if (count($this->yystack[$this->yyidx + - 1]->minor) == 0) {
   2027                         $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
   2028                     }
   2029                     $par = implode(',', $this->yystack[$this->yyidx + - 1]->minor);
   2030                     if (strncasecmp($par, '$_smarty_tpl->getConfigVariable', strlen('$_smarty_tpl->getConfigVariable')) === 0) {
   2031                         self::$prefix_number ++;
   2032                         $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
   2033                         $isset_par = '$_tmp' . self::$prefix_number;
   2034                     } else {
   2035                         $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
   2036                     }
   2037                     $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . $isset_par . ")";
   2038                 } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
   2039                     if (count($this->yystack[$this->yyidx + - 1]->minor) != 1) {
   2040                         $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
   2041                     }
   2042                     if ($func_name == 'empty') {
   2043                         $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value", $this->yystack[$this->yyidx + - 1]->minor[0]) . ')';
   2044                     } else {
   2045                         $this->_retvalue = $func_name . '(' . $this->yystack[$this->yyidx + - 1]->minor[0] . ')';
   2046                     }
   2047                 } else {
   2048                     $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")";
   2049                 }
   2050             } else {
   2051                 $this->compiler->trigger_template_error("unknown function \"" . $this->yystack[$this->yyidx + - 3]->minor . "\"");
   2052             }
   2053         }
   2054     }
   2055 
   2056     #line 1108 "../smarty/lexer/smarty_internal_templateparser.y"
   2057     function yy_r153()
   2058     {
   2059         if ($this->security && substr($this->yystack[$this->yyidx + - 3]->minor, 0, 1) == '_') {
   2060             $this->compiler->trigger_template_error(self::Err1);
   2061         }
   2062         $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")";
   2063     }
   2064 
   2065     #line 1115 "../smarty/lexer/smarty_internal_templateparser.y"
   2066     function yy_r154()
   2067     {
   2068         if ($this->security) {
   2069             $this->compiler->trigger_template_error(self::Err2);
   2070         }
   2071         self::$prefix_number ++;
   2072         $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 3]->minor, 1) . '\'') . ';?>';
   2073         $this->_retvalue = '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ')';
   2074     }
   2075 
   2076     #line 1126 "../smarty/lexer/smarty_internal_templateparser.y"
   2077     function yy_r155()
   2078     {
   2079         $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor, array($this->yystack[$this->yyidx + 0]->minor));
   2080     }
   2081 
   2082     #line 1143 "../smarty/lexer/smarty_internal_templateparser.y"
   2083     function yy_r158()
   2084     {
   2085         $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)));
   2086     }
   2087 
   2088     #line 1147 "../smarty/lexer/smarty_internal_templateparser.y"
   2089     function yy_r159()
   2090     {
   2091         $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor));
   2092     }
   2093 
   2094     #line 1155 "../smarty/lexer/smarty_internal_templateparser.y"
   2095     function yy_r161()
   2096     {
   2097         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
   2098     }
   2099 
   2100     #line 1163 "../smarty/lexer/smarty_internal_templateparser.y"
   2101     function yy_r162()
   2102     {
   2103         $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor);
   2104     }
   2105 
   2106     #line 1182 "../smarty/lexer/smarty_internal_templateparser.y"
   2107     function yy_r166()
   2108     {
   2109         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
   2110     }
   2111 
   2112     #line 1187 "../smarty/lexer/smarty_internal_templateparser.y"
   2113     function yy_r167()
   2114     {
   2115         $this->_retvalue = array($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor,
   2116             'method');
   2117     }
   2118 
   2119     #line 1192 "../smarty/lexer/smarty_internal_templateparser.y"
   2120     function yy_r168()
   2121     {
   2122         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
   2123     }
   2124 
   2125     #line 1197 "../smarty/lexer/smarty_internal_templateparser.y"
   2126     function yy_r169()
   2127     {
   2128         $this->_retvalue = array($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor,
   2129             'property');
   2130     }
   2131 
   2132     #line 1202 "../smarty/lexer/smarty_internal_templateparser.y"
   2133     function yy_r170()
   2134     {
   2135         $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor,
   2136             $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor, 'property');
   2137     }
   2138 
   2139     #line 1208 "../smarty/lexer/smarty_internal_templateparser.y"
   2140     function yy_r171()
   2141     {
   2142         $this->_retvalue['op'] = ' ' . trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
   2143     }
   2144 
   2145     #line 1212 "../smarty/lexer/smarty_internal_templateparser.y"
   2146     function yy_r172()
   2147     {
   2148         static $lops = array('eq'          => array('op' => ' == ', 'pre' => null),
   2149                              'ne'          => array('op' => ' != ', 'pre' => null),
   2150                              'neq'         => array('op' => ' != ', 'pre' => null),
   2151                              'gt'          => array('op' => ' > ', 'pre' => null),
   2152                              'ge'          => array('op' => ' >= ', 'pre' => null),
   2153                              'gte'         => array('op' => ' >= ', 'pre' => null),
   2154                              'lt'          => array('op' => ' < ', 'pre' => null),
   2155                              'le'          => array('op' => ' <= ', 'pre' => null),
   2156                              'lte'         => array('op' => ' <= ', 'pre' => null),
   2157                              'mod'         => array('op' => ' % ', 'pre' => null),
   2158                              'and'         => array('op' => ' && ', 'pre' => null),
   2159                              'or'          => array('op' => ' || ', 'pre' => null),
   2160                              'xor'         => array('op' => ' xor ', 'pre' => null),
   2161                              'isdivby'     => array('op' => ' % ', 'pre' => '!('),
   2162                              'isnotdivby'  => array('op' => ' % ', 'pre' => '('),
   2163                              'isevenby'    => array('op' => ' / ', 'pre' => '!(1 & '),
   2164                              'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
   2165                              'isoddby'     => array('op' => ' / ', 'pre' => '(1 & '),
   2166                              'isnotoddby'  => array('op' => ' / ', 'pre' => '!(1 & '),);
   2167         $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
   2168         $this->_retvalue = $lops[$op];
   2169     }
   2170 
   2171     #line 1238 "../smarty/lexer/smarty_internal_templateparser.y"
   2172     function yy_r173()
   2173     {
   2174         static $scond = array('iseven'   => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ',
   2175                               'isnotodd' => '!(1 & ',);
   2176         $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
   2177         $this->_retvalue = $scond[$op];
   2178     }
   2179 
   2180     #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
   2181     function yy_r174()
   2182     {
   2183         $this->_retvalue = 'array(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
   2184     }
   2185 
   2186     #line 1260 "../smarty/lexer/smarty_internal_templateparser.y"
   2187     function yy_r176()
   2188     {
   2189         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor;
   2190     }
   2191 
   2192     #line 1268 "../smarty/lexer/smarty_internal_templateparser.y"
   2193     function yy_r178()
   2194     {
   2195         $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '=>' . $this->yystack[$this->yyidx + 0]->minor;
   2196     }
   2197 
   2198     #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
   2199     function yy_r179()
   2200     {
   2201         $this->_retvalue = '\'' . $this->yystack[$this->yyidx + - 2]->minor . '\'=>' . $this->yystack[$this->yyidx + 0]->minor;
   2202     }
   2203 
   2204     #line 1288 "../smarty/lexer/smarty_internal_templateparser.y"
   2205     function yy_r182()
   2206     {
   2207         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor->to_smarty_php();
   2208     }
   2209 
   2210     #line 1293 "../smarty/lexer/smarty_internal_templateparser.y"
   2211     function yy_r183()
   2212     {
   2213         $this->yystack[$this->yyidx + - 1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
   2214         $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
   2215     }
   2216 
   2217     #line 1298 "../smarty/lexer/smarty_internal_templateparser.y"
   2218     function yy_r184()
   2219     {
   2220         $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor);
   2221     }
   2222 
   2223     #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
   2224     function yy_r185()
   2225     {
   2226         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)' . $this->yystack[$this->yyidx + - 1]->minor);
   2227     }
   2228 
   2229     #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
   2230     function yy_r187()
   2231     {
   2232         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)$_smarty_tpl->tpl_vars[\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\']->value');
   2233     }
   2234 
   2235     #line 1318 "../smarty/lexer/smarty_internal_templateparser.y"
   2236     function yy_r189()
   2237     {
   2238         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)(' . $this->yystack[$this->yyidx + - 1]->minor . ')');
   2239     }
   2240 
   2241     #line 1322 "../smarty/lexer/smarty_internal_templateparser.y"
   2242     function yy_r190()
   2243     {
   2244         $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor);
   2245     }
   2246 
   2247     #line 1326 "../smarty/lexer/smarty_internal_templateparser.y"
   2248     function yy_r191()
   2249     {
   2250         $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this, $this->yystack[$this->yyidx + 0]->minor);
   2251     }
   2252 
   2253     private $_retvalue;
   2254 
   2255     public function yy_reduce($yyruleno)
   2256     {
   2257         if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
   2258             fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno, self::$yyRuleName[$yyruleno]);
   2259         }
   2260 
   2261         $this->_retvalue = $yy_lefthand_side = null;
   2262         if (isset(self::$yyReduceMap[$yyruleno])) {
   2263             // call the action
   2264             $this->_retvalue = null;
   2265             $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
   2266             $yy_lefthand_side = $this->_retvalue;
   2267         }
   2268         $yygoto = self::$yyRuleInfo[$yyruleno][0];
   2269         $yysize = self::$yyRuleInfo[$yyruleno][1];
   2270         $this->yyidx -= $yysize;
   2271         for ($i = $yysize; $i; $i --) {
   2272             // pop all of the right-hand side parameters
   2273             array_pop($this->yystack);
   2274         }
   2275         $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
   2276         if ($yyact < self::YYNSTATE) {
   2277             if (!$this->yyTraceFILE && $yysize) {
   2278                 $this->yyidx ++;
   2279                 $x = new TP_yyStackEntry;
   2280                 $x->stateno = $yyact;
   2281                 $x->major = $yygoto;
   2282                 $x->minor = $yy_lefthand_side;
   2283                 $this->yystack[$this->yyidx] = $x;
   2284             } else {
   2285                 $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
   2286             }
   2287         } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
   2288             $this->yy_accept();
   2289         }
   2290     }
   2291 
   2292     public function yy_parse_failed()
   2293     {
   2294         if ($this->yyTraceFILE) {
   2295             fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
   2296         }
   2297         while ($this->yyidx >= 0) {
   2298             $this->yy_pop_parser_stack();
   2299         }
   2300     }
   2301 
   2302     public function yy_syntax_error($yymajor, $TOKEN)
   2303     {
   2304         #line 183 "../smarty/lexer/smarty_internal_templateparser.y"
   2305 
   2306         $this->internalError = true;
   2307         $this->yymajor = $yymajor;
   2308         $this->compiler->trigger_template_error();
   2309     }
   2310 
   2311     public function yy_accept()
   2312     {
   2313         if ($this->yyTraceFILE) {
   2314             fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
   2315         }
   2316         while ($this->yyidx >= 0) {
   2317             $this->yy_pop_parser_stack();
   2318         }
   2319         #line 176 "../smarty/lexer/smarty_internal_templateparser.y"
   2320 
   2321         $this->successful = !$this->internalError;
   2322         $this->internalError = false;
   2323         $this->retvalue = $this->_retvalue;
   2324     }
   2325 
   2326     public function doParse($yymajor, $yytokenvalue)
   2327     {
   2328         $yyerrorhit = 0;   /* True if yymajor has invoked an error */
   2329 
   2330         if ($this->yyidx === null || $this->yyidx < 0) {
   2331             $this->yyidx = 0;
   2332             $this->yyerrcnt = - 1;
   2333             $x = new TP_yyStackEntry;
   2334             $x->stateno = 0;
   2335             $x->major = 0;
   2336             $this->yystack = array();
   2337             $this->yystack[] = $x;
   2338         }
   2339         $yyendofinput = ($yymajor == 0);
   2340 
   2341         if ($this->yyTraceFILE) {
   2342             fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
   2343         }
   2344 
   2345         do {
   2346             $yyact = $this->yy_find_shift_action($yymajor);
   2347             if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
   2348                 // force a syntax error
   2349                 $yyact = self::YY_ERROR_ACTION;
   2350             }
   2351             if ($yyact < self::YYNSTATE) {
   2352                 $this->yy_shift($yyact, $yymajor, $yytokenvalue);
   2353                 $this->yyerrcnt --;
   2354                 if ($yyendofinput && $this->yyidx >= 0) {
   2355                     $yymajor = 0;
   2356                 } else {
   2357                     $yymajor = self::YYNOCODE;
   2358                 }
   2359             } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
   2360                 $this->yy_reduce($yyact - self::YYNSTATE);
   2361             } elseif ($yyact == self::YY_ERROR_ACTION) {
   2362                 if ($this->yyTraceFILE) {
   2363                     fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
   2364                 }
   2365                 if (self::YYERRORSYMBOL) {
   2366                     if ($this->yyerrcnt < 0) {
   2367                         $this->yy_syntax_error($yymajor, $yytokenvalue);
   2368                     }
   2369                     $yymx = $this->yystack[$this->yyidx]->major;
   2370                     if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
   2371                         if ($this->yyTraceFILE) {
   2372                             fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
   2373                         }
   2374                         $this->yy_destructor($yymajor, $yytokenvalue);
   2375                         $yymajor = self::YYNOCODE;
   2376                     } else {
   2377                         while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
   2378                             $this->yy_pop_parser_stack();
   2379                         }
   2380                         if ($this->yyidx < 0 || $yymajor == 0) {
   2381                             $this->yy_destructor($yymajor, $yytokenvalue);
   2382                             $this->yy_parse_failed();
   2383                             $yymajor = self::YYNOCODE;
   2384                         } elseif ($yymx != self::YYERRORSYMBOL) {
   2385                             $u2 = 0;
   2386                             $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
   2387                         }
   2388                     }
   2389                     $this->yyerrcnt = 3;
   2390                     $yyerrorhit = 1;
   2391                 } else {
   2392                     if ($this->yyerrcnt <= 0) {
   2393                         $this->yy_syntax_error($yymajor, $yytokenvalue);
   2394                     }
   2395                     $this->yyerrcnt = 3;
   2396                     $this->yy_destructor($yymajor, $yytokenvalue);
   2397                     if ($yyendofinput) {
   2398                         $this->yy_parse_failed();
   2399                     }
   2400                     $yymajor = self::YYNOCODE;
   2401                 }
   2402             } else {
   2403                 $this->yy_accept();
   2404                 $yymajor = self::YYNOCODE;
   2405             }
   2406         } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
   2407     }
   2408 }
   2409