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