aboutsummaryrefslogblamecommitdiffstats
path: root/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
blob: 57dbf61a30a9c0e41359d18aead9d072479ca177 (plain) (tree)
1
2
3
4
5
6
7
8
9
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
     



                                       
 

                               
                                                 













                                               
                                
     
                             

     
                                         



                                               
                                      



                                        
                                              


                                   
                                                                                
                                                                   
 















                                                            
                                        











                                                                      
 
 
 
 
                                                           

   
                               



                                                                 
                                             

                                    
 
                                                               

                                                                             
 
                                                                             
 
                                                                          





                    
                              





                   
                         





                              
                                     



           
                    





                                   
                       





                         
                          





                                     
                        





                                     
                           





                                         
                





                          
                                   
 







































                                                














                                        







                                                                                                            
     

                                    
                                                    

                                                                                                         
                                                                                              

     





                                        
     
                                                                                                      
     
 










                                                                        
                             

                                               
                      

                                                                                                         

                      
 
                       










                          
                              
 
                            
 
                          
 
                       
 
                               
 
                       
 
                           
 
                        
 
                            
 
                     
 
                      
 
                         
 
                          
 
                            
 
                         
 
                     
 
                       
 
                              
 
                        
 
                     
 
                       
 
                                
 
                                         
 
                           
 
                            
 
                       
 
                          
 
                        
 
                        
 
                         
 
                       
 
                          
 
                       
 
                             
 
                        
 
                      
 
                           
 
                      
 
                      
 
                                    
 
                              
 
                            
 
                     
 
                        
 
                        
 
                         
 
                         
 
                        
 
                         
 
                             
 
                        
 
                           
 
                             
 
                                 
 
                                
 
                              
 



























































































































































































































































































































































































































































































                                                                                                                        
 
                             
 
                         
 
                        
 
                             
 
                             
 
                         
 


                                                    





                                   

                                             

     
                                
     

                                                        

     
                        
 
                          
 



                                                                               















                                                                                                                       

                                                                                            






































































































                                                                                                                            
 
                                         










                                                                       
                                                             

                           

                                                                            


         
                                         
     
                                    


                                           
                                                      
                                                                                                                     


                                                     

                        


                        
                                



                                            

                                              


         
                                                  
     

                               

                                                       







                                                                                                  








                                                                                      
                                          






                                                                       
                                                                    

                                                                                                    
                                                                     
                                                                                                






                                                               


                                                                                           



                                                               



                                                          
                                        

                                                 
                                                                    




















                                                                                 


                                


                                       
                                                
     

                               



                                                       







                                                                                                 








                                                                                      
                                          






                                                                       
                                                                    

                                                                                                    






                                                           


                                                                                                      



                                                    


                                                          
                                        

                                                 
                                                                    


























                                                                                 
 


                    
                                                     















                                                               
                                                                                           


                                                                                     
                                         


                                                                                                          
                 
 

                                                               
 





                                               
                                                                













                                                               
                                                                                           





                                               
                                                              
     
                        
                                                 


                                                                                         



                                             
                                                                        


                                                                                         
 





                                      
                                  
                                                     
                                                                                           

                                                                          
                                                                                                  
             
                                             


         
































































                                                                                                                  

                                                                                                                



















                                                                                                                        
                                                                                                              







                                                                                                              

                    


                                                                         
     
 
                                                                


                                                              
                                                                                                  
         
     
 
                                                                



                                                              
                                                                                                  
         
     
 
                                                                


                                        
                                                                                               





                                                                        
 
                                                                

                    
                                                                                                       
     
 
                                                                

                    


                                                                                                           



                                                             
             
                                                   

                                                                                                                  
                


                                    
 
                                                                


                                            





                                                                                                                                                               

     
                                                                

                    
                                                                                                 
     
 
                                                                

                    
                                                                   
     
 
                                                                

                     
                                                                                                               
     
 
                                                                

                     
                            
     
 
                                                                

                     
                             
     
 
                                                                

                     
                              
     
 

                                                                
     
                                                                     
     
 

                                                                
     
                                                                                                               
     
 

                                                                


                                                                     
 

                                                                
     

                                                                                                                        
                                                               



                                                                                                                        
                



                                                                                                                     
         
     
 







                                                                                                                  
                     
     



                                                                                                            
     
 
                                                                
                     
     


                                                                                                            
     
 

                                                                
     



                                                                                                            
     
 

                                                                
     




                                                                                                                       
     
 
                                                                

                     




                                                                                                                       
     
 
                                                                

                     












                                                                                                                       







                                                                              

                                                                                                             









                                                                                                  

                                                                




                                                                                                               


                                                                                                                
                

                                                                                                     


         

                                                                




                                                                                                             

                                                                                                                      


                                                                                                             
     
 

                                                                
     



                                                                                                               



                                                                                                                
                





                                                                                                                 
         
     
 
                                                                

                     



                                                                                                             

     
                                                                

                     







                                                                                                              
     
 
                                                                
                     
     



                                                                                                            
     
 
                                                                
                     
     



                                                                                                                       
     
 

                                                                
     



                                                                                                            
     
 
                                                                
                     
     








                                                                                                                              
     
 

                                                                
     
                                                                         
     
 
                                                                

                     




                                                                                                                              
     
 
                                                                

                     






                                                                                                                              
     
 
                                                                

                     
                                                                                                           
     
 
                                                                
                     
     




                                                                                                                                 
     
 

                                                                
     






                                                                                                                                 
     
 
                                                                

                     


                                                                                                                                     

     
                                                                

                     









                                                                                                                                                 



                                                                                                 
                

                                                                                                  
         
     
 

                                                                
     

                                                                                                                        







                                                                                    
                                                                
                     
     
                                                                                                                   
     
 
                                                                
                     
     


                                                                                                                    
     
 
                                                                
                     
     


                                                                                                                    
     
 
                                                                
                     
     








                                                                                                                    


                                                                     
 

                                                                


                                                                          
 

                                                                


                                   
 

                                                                
     



                                                                                                             

                                                                                                            
                


                                                                                                                   

         
 

                                                                
     


                                                                                                              
     
 

                                                                
     
                                                                                 
     
 

                                                                


                                                                                                                       
 

                                                                



                                                                                              
 

                                                                
     

                                                                                                               
     
 

                                                                
     

                                                                                      
     
 
                                                                
                     
     


                                                                                                                 
     
 

                                                                
     

                                                                                                                        
     
 
                                                                

                     



                                                                                                                  
     
 
                                                                

                     



                                                                                                                    

     
                                                                

                     
                                                                                                                     
     
 
                                                                

                     


                                                                                                                     
     
 
                                                                

                     

                                                                                                 
     
 
                                                                

                     









                                                                                                                  
     
 

                                                                
     


                                                                                                                   
     
 

                                                                


                                                                         
 

                                                                

                                                                                                                     
     
 

                                                                


                                                                           
 

                                                                

                                                                         
     
 

                                                                
     




                                                                                                             
                
                                                                                     
         
     
 

                                                                


                                                                                 
 

                                                                
     

                                                                               


                                                                                                                        
                


                                                                                                    
         

                                                                                                               
     
 

                                                                
     

                                                                                                           

                                                                                                           


                                                          

                                                                
     



                                                                                                                       

                                                                                                      

                                                                                                                        
                    


                                                                                                                   
             
                

                                                                                                                  

         
 

                                                                
     
                                                                   
     
 








                                                                                                               

                                                                             

                                                                                                                        

                                           
                                                         

                                                                                                 

                                                                                                                 

         
 

                                                                
     

                                                                                                          
     
 

                                                                
     

                                                                                                          

     

                                                                
     


                                                                                                                        
     
 

                                                                
     
                                                                                                             

     

                                                                
     


                                                                                                                     
     
 

                                                                
     
                                                                                                             


                                                                                                     

                                                                




                                                                                                      

                                                                
     
               
     
 

                                                                
     


                                                                                                                      
     
 

                                                                
     
                                                                                                                 
     
 

                                                                
     

                                                                                                                     

     

                                                                
     







                                                                                                             
     
 

                                                                
     
                                                                               
     
 

                                                                
     
                                                                                 
     
 

                                                                
     



                                                                                                                        
     
 

                                                                
     




                                                                                                                      
     
 

                                                                
     
                                                                                 
     
 

                                                                
     


                                                                                                                        
     
 

                                                                 
     
                                
     
 

                                                                 
     
                                                                                            
     
 

                                                                 
     
                                
     
 

                                                                 
     


                                                                                                                     









                                                                                                                        



                                                                                 

                                                                 
     
                                                                               



                                                                                                  
                


                                                                                                                   

         
 

                                                                 


                                                                   
 

                                                                 


                                                                                                               
 

                                                                 





                                                                                                                      
 

                                                                 



                                                                

                                                                                                                
     
 

                                                                 



                                                                

                                                                                                              
     
 

                                                                 



                                                                


                                                                                                                     
     
 

                                                                 


                                                                          
 

                                                                 
     







                                                                                                             





                                                                                                          


                                                                                                           
                                                

                                                                                                                    









                                                                                                            


                                                                                                                   


                                                                                                                 
                        

                                                                                        

                    

                                                                                                          
             

         
 

                                                                 



                                                                                                


                                                                                                                       
     
 

                                                                 




                                                                




                                                                                                                  
     
 

                                                                 
     

                                                                                                                   
     
 

                                                                 
     


                                                                                                    
     
 

                                                                 
     

                                                                                                                   
     
 

                                                                 


                                                                          
 

                                                                 
     

                                                                                                            
     
 

                                                                 
     
                                                                                        
     
 

                                                                 
     

                                                                                                                
     
 

                                                                 
     
                                                                              
     
 

                                                                 
     

                                                                                                                  
     
 

                                                                 
     
                                                                           

                                                                                                                     
     
 

                                                                 
     
                                                                                           
     
 

                                                                 
     




















                                                                                             
     
 

                                                                 
     



                                                                                                 
     
 

                                                                 
     
                                                                                      
     
 

                                                                 
     
                                                                                                                     
     
 

                                                                 
     
                                                                                                                      
     
 

                                                                 
     

                                                                                                                
     
 

                                                                 
     
                                                                                           
     
 

                                                                 
     
                                                                                                                  
                                                                     
     
 

                                                                 
     
                                                                                                            
     
 

                                                                 
     
                                                                                                                      
     
 

                                                                 
     


                                                                                                                  
     
 

                                                                 
     

                                                                                                              
     
 

                                                                 
     
                                                                                                             
     
 

                                                                 
     
                                                                                                            
     
 

                       
                                        
     
                                                                                           

                                                                                                 


                                                    
                                                   




                                                              

                                                  
                                
                                       




                                                                                              

                                                 












                                                                    
                                     
     

                                                                           





                                         
                                                     
     
                                                                    
 


                                                  

     
                               
     

                                                                             

                                   
                                         
         
                                                                    



                                                  

     
                                                    




                                                                     
                                  



                                     
                                  
         
                                        
 
                                 
                                                                                                            



                                                           
                                                                                           




                                                                 
                                   







                                                                
                                         
                                                                                           





                                                                        

                                                                      

                                                                                                           



                                                                      

                                                                                                            

                                                         
                                                                



























                                                                              
 
<?php

class TP_yyToken implements ArrayAccess
{
    public $string = '';

    public $metadata = array();

    public function __construct($s, $m = array())
    {
        if ($s instanceof TP_yyToken) {
            $this->string = $s->string;
            $this->metadata = $s->metadata;
        } else {
            $this->string = (string) $s;
            if ($m instanceof TP_yyToken) {
                $this->metadata = $m->metadata;
            } elseif (is_array($m)) {
                $this->metadata = $m;
            }
        }
    }

    public function __toString()
    {
        return $this->string;
    }

    public function offsetExists($offset)
    {
        return isset($this->metadata[$offset]);
    }

    public function offsetGet($offset)
    {
        return $this->metadata[$offset];
    }

    public function offsetSet($offset, $value)
    {
        if ($offset === null) {
            if (isset($value[0])) {
                $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
                $this->metadata = array_merge($this->metadata, $x);

                return;
            }
            $offset = count($this->metadata);
        }
        if ($value === null) {
            return;
        }
        if ($value instanceof TP_yyToken) {
            if ($value->metadata) {
                $this->metadata[$offset] = $value->metadata;
            }
        } elseif ($value) {
            $this->metadata[$offset] = $value;
        }
    }

    public function offsetUnset($offset)
    {
        unset($this->metadata[$offset]);
    }
}

class TP_yyStackEntry
{
    public $stateno;       /* The state-number */
    public $major;         /* The major token value.  This is the code
                     ** number for the token at this stack level */
    public $minor; /* The user-supplied minor token value.  This
                     ** is the value of the token  */
}

;

#line 11 "../smarty/lexer/smarty_internal_templateparser.y"

/**
 * Smarty Template Parser Class
 *
 * This is the template parser.
 * It is generated from the smarty_internal_templateparser.y file
 *
 * @author Uwe Tews <uwe.tews@googlemail.com>
 */
class Smarty_Internal_Templateparser
{
    #line 23 "../smarty/lexer/smarty_internal_templateparser.y"

    const Err1 = "Security error: Call to private object member not allowed";

    const Err2 = "Security error: Call to dynamic object member not allowed";

    const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";

    /**
     * result status
     *
     * @var bool
     */
    public $successful = true;

    /**
     * return value
     *
     * @var mixed
     */
    public $retvalue = 0;

    /**
     * counter for prefix code
     *
     * @var int
     */
    public static $prefix_number = 0;

    /**
     * @var
     */
    public $yymajor;

    /**
     * last index of array variable
     *
     * @var mixed
     */
    public $last_index;

    /**
     * last variable name
     *
     * @var string
     */
    public $last_variable;

    /**
     * root parse tree buffer
     *
     * @var Smarty_Internal_ParseTree
     */
    public $root_buffer;

    /**
     * current parse tree object
     *
     * @var Smarty_Internal_ParseTree
     */
    public $current_buffer;

    /**
     * lexer object
     *
     * @var Smarty_Internal_Templatelexer
     */
    public $lex;

    /**
     * internal error flag
     *
     * @var bool
     */
    private $internalError = false;

    /**
     * {strip} status
     *
     * @var bool
     */
    public $strip = false;

    /**
     * compiler object
     *
     * @var Smarty_Internal_TemplateCompilerBase
     */
    public $compiler = null;

    /**
     * smarty object
     *
     * @var Smarty
     */
    public $smarty = null;

    /**
     * template object
     *
     * @var Smarty_Internal_Template
     */
    public $template = null;

    /**
     * block nesting level
     *
     * @var int
     */
    public $block_nesting_level = 0;

    /**
     * security object
     *
     * @var Smarty_Security
     */
    public $security = null;

    /**
     * template prefix array
     *
     * @var \Smarty_Internal_ParseTree[]
     */
    public $template_prefix = array();

    /**
     * security object
     *
     * @var \Smarty_Internal_ParseTree[]
     */
    public $template_postfix = array();

    /**
     * constructor
     *
     * @param Smarty_Internal_Templatelexer        $lex
     * @param Smarty_Internal_TemplateCompilerBase $compiler
     */
    function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
    {
        $this->lex = $lex;
        $this->compiler = $compiler;
        $this->template = $this->compiler->template;
        $this->smarty = $this->template->smarty;
        $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
        $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
    }

    /**
     * insert PHP code in current buffer
     *
     * @param string $code
     */
    public function insertPhpCode($code)
    {
        $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
    }

    /**
     *  merge PHP code with prefix code and return parse tree tag object
     *
     * @param string $code
     *
     * @return Smarty_Internal_ParseTree_Tag
     */
    public function mergePrefixCode($code)
    {
        $tmp = '';
        foreach ($this->compiler->prefix_code as $preCode) {
            $tmp .= $preCode;
        }
        $this->compiler->prefix_code = array();
        $tmp .= $code;
        return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
    }

    const TP_VERT = 1;

    const TP_COLON = 2;

    const TP_PHP = 3;

    const TP_NOCACHE = 4;

    const TP_TEXT = 5;

    const TP_STRIPON = 6;

    const TP_STRIPOFF = 7;

    const TP_LITERALSTART = 8;

    const TP_LITERALEND = 9;

    const TP_LITERAL = 10;

    const TP_RDEL = 11;

    const TP_SIMPELOUTPUT = 12;

    const TP_LDEL = 13;

    const TP_DOLLARID = 14;

    const TP_EQUAL = 15;

    const TP_SIMPLETAG = 16;

    const TP_ID = 17;

    const TP_PTR = 18;

    const TP_LDELIF = 19;

    const TP_LDELFOR = 20;

    const TP_SEMICOLON = 21;

    const TP_INCDEC = 22;

    const TP_TO = 23;

    const TP_STEP = 24;

    const TP_LDELFOREACH = 25;

    const TP_SPACE = 26;

    const TP_AS = 27;

    const TP_APTR = 28;

    const TP_LDELSETFILTER = 29;

    const TP_SMARTYBLOCKCHILDPARENT = 30;

    const TP_CLOSETAG = 31;

    const TP_LDELSLASH = 32;

    const TP_ATTR = 33;

    const TP_INTEGER = 34;

    const TP_COMMA = 35;

    const TP_OPENP = 36;

    const TP_CLOSEP = 37;

    const TP_MATH = 38;

    const TP_UNIMATH = 39;

    const TP_ISIN = 40;

    const TP_INSTANCEOF = 41;

    const TP_QMARK = 42;

    const TP_NOT = 43;

    const TP_TYPECAST = 44;

    const TP_HEX = 45;

    const TP_DOT = 46;

    const TP_SINGLEQUOTESTRING = 47;

    const TP_DOUBLECOLON = 48;

    const TP_NAMESPACE = 49;

    const TP_AT = 50;

    const TP_HATCH = 51;

    const TP_OPENB = 52;

    const TP_CLOSEB = 53;

    const TP_DOLLAR = 54;

    const TP_LOGOP = 55;

    const TP_TLOGOP = 56;

    const TP_SINGLECOND = 57;

    const TP_QUOTE = 58;

    const TP_BACKTICK = 59;

    const YY_NO_ACTION = 535;

    const YY_ACCEPT_ACTION = 534;

    const YY_ERROR_ACTION = 533;

    const YY_SZ_ACTTAB = 2082;

    static public $yy_action = array(278, 8, 134, 451, 281, 68, 207, 7, 85, 248, 29, 98, 168, 114, 252, 451, 367, 230,
                                     315, 245, 235, 249, 233, 36, 28, 145, 38, 42, 140, 36, 27, 39, 41, 322, 222, 300,
                                     27, 213, 195, 82, 1, 31, 265, 92, 164, 181, 53, 278, 8, 133, 97, 281, 201, 249, 7,
                                     85, 35, 307, 35, 307, 114, 226, 227, 215, 230, 108, 245, 235, 265, 208, 195, 28,
                                     195, 5, 42, 184, 268, 277, 39, 41, 322, 222, 218, 258, 213, 120, 82, 1, 333, 265,
                                     181, 175, 3, 53, 278, 8, 135, 105, 281, 206, 249, 7, 85, 35, 307, 207, 24, 114, 16,
                                     103, 305, 230, 17, 245, 235, 404, 233, 195, 28, 288, 15, 42, 96, 265, 20, 39, 41,
                                     322, 222, 300, 404, 213, 450, 82, 1, 6, 265, 404, 52, 113, 53, 278, 8, 135, 450,
                                     281, 206, 289, 7, 85, 261, 463, 228, 244, 114, 122, 296, 463, 230, 102, 245, 235,
                                     236, 198, 182, 28, 262, 122, 42, 143, 274, 102, 39, 41, 322, 222, 300, 33, 213,
                                     314, 82, 1, 274, 265, 207, 86, 311, 53, 278, 8, 136, 195, 281, 206, 362, 7, 85,
                                     283, 285, 287, 229, 114, 33, 228, 309, 230, 326, 245, 235, 36, 233, 291, 28, 479,
                                     479, 42, 27, 147, 479, 39, 41, 322, 222, 300, 159, 213, 249, 82, 1, 193, 265, 94,
                                     169, 249, 53, 278, 8, 135, 251, 281, 197, 249, 7, 85, 248, 29, 91, 150, 114, 252,
                                     193, 479, 230, 207, 245, 235, 249, 233, 195, 28, 288, 191, 42, 407, 450, 207, 39,
                                     41, 322, 222, 300, 179, 213, 195, 82, 1, 450, 265, 407, 52, 249, 53, 278, 8, 135,
                                     407, 281, 204, 195, 7, 85, 313, 251, 93, 155, 114, 226, 225, 12, 230, 108, 245,
                                     235, 249, 233, 247, 28, 479, 479, 42, 282, 189, 479, 39, 41, 322, 222, 300, 161,
                                     213, 195, 82, 1, 25, 265, 103, 177, 249, 53, 278, 8, 132, 142, 281, 206, 249, 7,
                                     85, 195, 244, 34, 249, 114, 103, 193, 103, 230, 251, 245, 235, 207, 233, 289, 4,
                                     237, 113, 42, 228, 146, 138, 39, 41, 322, 222, 300, 10, 213, 249, 82, 1, 148, 265,
                                     251, 113, 99, 53, 278, 8, 137, 251, 281, 206, 288, 7, 85, 294, 103, 186, 246, 114,
                                     237, 335, 33, 230, 319, 245, 235, 329, 233, 255, 23, 52, 331, 42, 188, 246, 264,
                                     39, 41, 322, 222, 300, 167, 213, 138, 82, 1, 34, 265, 288, 10, 249, 53, 278, 8,
                                     135, 153, 281, 199, 207, 7, 85, 234, 226, 250, 249, 114, 108, 193, 190, 230, 308,
                                     245, 235, 337, 209, 232, 28, 128, 160, 42, 128, 193, 207, 39, 41, 322, 222, 300,
                                     11, 213, 463, 82, 1, 158, 265, 27, 463, 108, 53, 278, 8, 137, 176, 281, 206, 180,
                                     7, 85, 220, 14, 276, 249, 114, 269, 207, 172, 230, 251, 245, 235, 106, 233, 286,
                                     23, 407, 115, 42, 259, 193, 141, 39, 41, 322, 222, 300, 267, 213, 312, 82, 407,
                                     144, 265, 207, 207, 38, 53, 407, 187, 246, 272, 273, 271, 270, 266, 184, 318, 207,
                                     13, 278, 8, 22, 242, 281, 2, 173, 7, 85, 36, 84, 265, 19, 114, 6, 156, 27, 230,
                                     137, 245, 235, 223, 217, 304, 249, 237, 248, 29, 228, 214, 163, 252, 119, 66, 112,
                                     40, 43, 37, 102, 249, 126, 298, 260, 265, 192, 212, 297, 301, 284, 274, 295, 170,
                                     324, 257, 256, 82, 304, 185, 265, 211, 302, 228, 214, 336, 221, 123, 73, 112, 166,
                                     334, 183, 102, 248, 29, 298, 260, 253, 252, 212, 297, 301, 275, 274, 279, 195, 304,
                                     36, 294, 165, 205, 228, 214, 171, 27, 123, 58, 109, 225, 117, 251, 102, 139, 149,
                                     298, 260, 89, 151, 212, 297, 301, 304, 274, 301, 181, 157, 228, 214, 248, 29, 123,
                                     73, 112, 252, 249, 87, 102, 35, 307, 298, 260, 88, 36, 212, 297, 301, 174, 274, 90,
                                     27, 304, 195, 95, 301, 216, 228, 214, 301, 301, 123, 46, 109, 110, 301, 301, 102,
                                     301, 207, 298, 260, 450, 405, 212, 297, 301, 231, 274, 401, 301, 304, 238, 301,
                                     450, 301, 228, 214, 405, 327, 119, 66, 112, 301, 36, 405, 102, 301, 450, 298, 260,
                                     27, 301, 212, 297, 301, 304, 274, 301, 301, 450, 228, 214, 301, 301, 123, 73, 112,
                                     303, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 137, 274, 301,
                                     254, 304, 301, 301, 301, 210, 228, 214, 248, 29, 123, 75, 112, 252, 301, 301, 102,
                                     301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 301, 301, 304, 301, 243,
                                     301, 82, 228, 214, 265, 301, 123, 60, 112, 301, 301, 301, 102, 241, 301, 298, 260,
                                     301, 301, 212, 297, 301, 304, 274, 301, 301, 301, 228, 214, 301, 301, 104, 71, 112,
                                     301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 301,
                                     301, 304, 301, 301, 301, 301, 228, 81, 301, 301, 83, 47, 107, 301, 301, 301, 102,
                                     301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 301, 301, 304, 301, 301,
                                     301, 301, 228, 214, 301, 301, 123, 76, 112, 301, 301, 301, 102, 301, 301, 298, 260,
                                     301, 301, 212, 297, 301, 304, 274, 301, 301, 301, 228, 214, 301, 301, 123, 67, 112,
                                     301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 301,
                                     301, 304, 301, 301, 301, 301, 228, 214, 301, 301, 123, 64, 112, 301, 301, 301, 102,
                                     301, 301, 298, 260, 301, 310, 212, 297, 301, 301, 274, 301, 278, 9, 299, 301, 281,
                                     301, 301, 7, 85, 301, 301, 301, 301, 114, 310, 301, 301, 230, 301, 245, 235, 278,
                                     9, 299, 301, 281, 301, 301, 7, 85, 301, 301, 301, 301, 114, 301, 301, 301, 230,
                                     301, 245, 235, 301, 301, 181, 154, 316, 21, 301, 181, 152, 301, 301, 301, 249, 304,
                                     301, 35, 307, 249, 228, 203, 35, 307, 123, 61, 112, 325, 21, 301, 102, 195, 301,
                                     298, 260, 301, 195, 212, 297, 301, 301, 274, 304, 301, 301, 181, 162, 228, 214,
                                     301, 301, 123, 62, 112, 301, 249, 301, 102, 35, 307, 298, 260, 301, 301, 212, 297,
                                     301, 301, 274, 301, 301, 304, 195, 207, 301, 301, 228, 214, 301, 301, 123, 65, 112,
                                     196, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304,
                                     301, 301, 301, 301, 228, 214, 301, 301, 123, 48, 112, 40, 43, 37, 102, 301, 301,
                                     298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214,
                                     301, 301, 123, 63, 112, 301, 301, 301, 102, 18, 200, 298, 260, 292, 301, 212, 297,
                                     301, 301, 274, 301, 301, 304, 301, 207, 301, 301, 228, 202, 301, 293, 116, 59, 112,
                                     320, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304,
                                     265, 301, 301, 301, 228, 79, 301, 301, 83, 45, 107, 40, 43, 37, 102, 301, 301, 298,
                                     260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214, 301,
                                     301, 123, 58, 112, 301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301,
                                     301, 274, 301, 301, 304, 301, 207, 301, 301, 228, 214, 301, 301, 123, 72, 112, 40,
                                     43, 37, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 178, 324,
                                     257, 256, 228, 214, 301, 301, 123, 55, 112, 40, 43, 37, 102, 301, 301, 298, 260,
                                     301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214, 301, 301,
                                     123, 54, 112, 301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301,
                                     274, 301, 301, 304, 301, 207, 301, 301, 228, 214, 301, 301, 101, 77, 112, 280, 301,
                                     301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 301,
                                     301, 301, 228, 214, 301, 301, 123, 80, 112, 40, 43, 37, 102, 301, 301, 298, 260,
                                     301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214, 301, 301,
                                     123, 56, 112, 301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301,
                                     274, 301, 301, 304, 301, 207, 301, 301, 228, 214, 301, 301, 123, 70, 112, 194, 301,
                                     301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 301,
                                     301, 301, 228, 214, 301, 301, 123, 74, 112, 40, 43, 37, 102, 301, 301, 298, 260,
                                     301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214, 301, 301,
                                     123, 49, 112, 301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301,
                                     274, 301, 301, 304, 301, 207, 301, 301, 228, 214, 301, 301, 100, 57, 112, 301, 301,
                                     301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 301,
                                     301, 301, 228, 214, 301, 301, 123, 44, 112, 40, 43, 37, 102, 301, 301, 298, 260,
                                     301, 301, 212, 297, 301, 301, 274, 304, 301, 324, 257, 256, 228, 214, 301, 301,
                                     123, 69, 112, 301, 301, 301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301,
                                     274, 301, 301, 304, 301, 301, 301, 301, 228, 214, 301, 301, 118, 50, 112, 301, 301,
                                     301, 102, 301, 301, 298, 260, 301, 301, 212, 297, 301, 301, 274, 304, 301, 301,
                                     301, 301, 228, 214, 301, 301, 123, 78, 112, 301, 301, 301, 102, 301, 301, 298, 260,
                                     207, 301, 212, 297, 301, 301, 274, 304, 301, 301, 359, 301, 228, 224, 301, 301,
                                     121, 301, 112, 301, 301, 288, 102, 301, 301, 36, 306, 301, 301, 212, 297, 301, 27,
                                     274, 301, 301, 304, 301, 301, 301, 52, 228, 224, 301, 301, 131, 301, 112, 301, 301,
                                     301, 102, 301, 301, 219, 321, 301, 301, 212, 297, 301, 301, 274, 219, 479, 479,
                                     301, 301, 301, 479, 463, 301, 301, 479, 479, 301, 30, 301, 479, 463, 417, 417, 301,
                                     301, 301, 301, 479, 479, 301, 207, 301, 479, 463, 301, 301, 301, 301, 301, 463,
                                     328, 463, 301, 479, 301, 463, 332, 207, 463, 301, 463, 288, 479, 301, 463, 36, 450,
                                     290, 417, 417, 417, 463, 27, 463, 301, 479, 301, 463, 450, 301, 52, 301, 36, 301,
                                     301, 417, 417, 417, 301, 27, 301, 301, 304, 301, 40, 43, 37, 228, 224, 301, 301,
                                     127, 301, 112, 301, 301, 301, 102, 301, 301, 301, 324, 257, 256, 212, 297, 301,
                                     301, 274, 301, 301, 304, 301, 301, 219, 301, 228, 224, 301, 301, 125, 301, 112,
                                     301, 479, 479, 102, 15, 301, 479, 463, 301, 301, 212, 297, 301, 301, 274, 534, 51,
                                     263, 285, 287, 229, 304, 301, 228, 301, 301, 228, 224, 207, 301, 124, 301, 112,
                                     301, 301, 463, 102, 463, 207, 479, 301, 463, 301, 212, 297, 301, 304, 274, 207,
                                     301, 301, 228, 224, 36, 301, 130, 301, 112, 301, 301, 27, 102, 301, 301, 301, 40,
                                     43, 37, 212, 297, 301, 32, 274, 36, 239, 40, 43, 37, 301, 301, 27, 301, 324, 257,
                                     256, 40, 43, 37, 301, 301, 301, 301, 324, 257, 256, 301, 301, 301, 301, 301, 304,
                                     301, 324, 257, 256, 228, 224, 301, 301, 129, 301, 112, 301, 301, 301, 102, 301,
                                     301, 26, 301, 301, 219, 212, 297, 301, 301, 274, 301, 479, 479, 301, 479, 479, 479,
                                     463, 207, 479, 463, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
                                     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 463, 301, 463, 463,
                                     479, 463, 463, 479, 207, 463, 40, 43, 37, 301, 301, 301, 301, 301, 301, 301, 301,
                                     301, 301, 301, 301, 301, 301, 324, 257, 256, 301, 330, 301, 301, 301, 301, 301,
                                     301, 301, 301, 301, 301, 301, 411, 301, 40, 43, 37, 207, 301, 301, 301, 301, 411,
                                     301, 411, 301, 207, 411, 301, 317, 301, 324, 257, 256, 411, 301, 411, 301, 411,
                                     301, 301, 301, 301, 301, 301, 301, 111, 237, 301, 301, 301, 301, 301, 323, 40, 43,
                                     37, 301, 207, 301, 301, 301, 301, 40, 43, 37, 301, 301, 373, 301, 301, 324, 257,
                                     256, 301, 240, 301, 301, 301, 301, 324, 257, 256, 36, 301, 301, 301, 301, 301, 301,
                                     27, 301, 301, 450, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 450,);

    static public $yy_lookahead = array(12, 13, 14, 36, 16, 17, 1, 19, 20, 12, 13, 71, 72, 25, 17, 48, 11, 29, 30, 31,
                                        32, 81, 34, 26, 36, 28, 2, 39, 14, 26, 33, 43, 44, 45, 46, 47, 33, 49, 98, 51,
                                        52, 23, 54, 71, 72, 71, 58, 12, 13, 14, 36, 16, 17, 81, 19, 20, 84, 85, 84, 85,
                                        25, 75, 76, 77, 29, 79, 31, 32, 54, 34, 98, 36, 98, 36, 39, 8, 9, 10, 43, 44,
                                        45, 46, 47, 14, 49, 48, 51, 52, 53, 54, 71, 72, 35, 58, 12, 13, 14, 67, 16, 17,
                                        81, 19, 20, 84, 85, 1, 15, 25, 21, 18, 53, 29, 13, 31, 32, 11, 34, 98, 36, 22,
                                        15, 39, 35, 54, 28, 43, 44, 45, 46, 47, 26, 49, 36, 51, 52, 36, 54, 33, 41, 48,
                                        58, 12, 13, 14, 48, 16, 17, 64, 19, 20, 70, 46, 69, 99, 25, 75, 59, 52, 29, 79,
                                        31, 32, 70, 34, 71, 36, 86, 75, 39, 51, 90, 79, 43, 44, 45, 46, 47, 35, 49, 37,
                                        51, 52, 90, 54, 1, 102, 103, 58, 12, 13, 14, 98, 16, 17, 11, 19, 20, 63, 64, 65,
                                        66, 25, 35, 69, 37, 29, 34, 31, 32, 26, 34, 17, 36, 12, 13, 39, 33, 72, 17, 43,
                                        44, 45, 46, 47, 72, 49, 81, 51, 52, 98, 54, 71, 72, 81, 58, 12, 13, 14, 93, 16,
                                        17, 81, 19, 20, 12, 13, 71, 72, 25, 17, 98, 50, 29, 1, 31, 32, 81, 34, 98, 36,
                                        22, 71, 39, 11, 36, 1, 43, 44, 45, 46, 47, 72, 49, 98, 51, 52, 48, 54, 26, 41,
                                        81, 58, 12, 13, 14, 33, 16, 17, 98, 19, 20, 53, 93, 71, 72, 25, 75, 76, 15, 29,
                                        79, 31, 32, 81, 34, 22, 36, 12, 13, 39, 11, 71, 17, 43, 44, 45, 46, 47, 72, 49,
                                        98, 51, 52, 15, 54, 18, 72, 81, 58, 12, 13, 14, 72, 16, 17, 81, 19, 20, 98, 99,
                                        15, 81, 25, 18, 98, 18, 29, 93, 31, 32, 1, 34, 64, 36, 46, 48, 39, 69, 72, 46,
                                        43, 44, 45, 46, 47, 52, 49, 81, 51, 52, 91, 54, 93, 48, 80, 58, 12, 13, 14, 93,
                                        16, 17, 22, 19, 20, 92, 18, 94, 95, 25, 46, 103, 35, 29, 37, 31, 32, 53, 34, 17,
                                        36, 41, 53, 39, 94, 95, 95, 43, 44, 45, 46, 47, 72, 49, 46, 51, 52, 15, 54, 22,
                                        52, 81, 58, 12, 13, 14, 72, 16, 17, 1, 19, 20, 50, 75, 76, 81, 25, 79, 98, 80,
                                        29, 89, 31, 32, 89, 34, 18, 36, 96, 51, 39, 96, 98, 1, 43, 44, 45, 46, 47, 26,
                                        49, 46, 51, 52, 75, 54, 33, 52, 79, 58, 12, 13, 14, 72, 16, 17, 14, 19, 20, 17,
                                        28, 65, 81, 25, 68, 1, 91, 29, 93, 31, 32, 79, 34, 37, 36, 11, 17, 39, 17, 98,
                                        14, 43, 44, 45, 46, 47, 9, 49, 96, 51, 26, 27, 54, 1, 1, 2, 58, 33, 94, 95, 3,
                                        4, 5, 6, 7, 8, 34, 1, 2, 12, 13, 13, 14, 16, 36, 17, 19, 20, 26, 17, 54, 42, 25,
                                        36, 72, 33, 29, 14, 31, 32, 17, 17, 64, 81, 46, 12, 13, 69, 70, 72, 17, 73, 74,
                                        75, 38, 39, 40, 79, 81, 17, 82, 83, 54, 17, 86, 87, 88, 17, 90, 17, 91, 55, 56,
                                        57, 51, 64, 71, 54, 100, 101, 69, 70, 53, 50, 73, 74, 75, 91, 53, 80, 79, 12,
                                        13, 82, 83, 17, 17, 86, 87, 88, 5, 90, 81, 98, 64, 26, 92, 28, 97, 69, 70, 91,
                                        33, 73, 74, 75, 76, 78, 93, 79, 79, 91, 82, 83, 79, 91, 86, 87, 88, 64, 90, 104,
                                        71, 72, 69, 70, 12, 13, 73, 74, 75, 17, 81, 79, 79, 84, 85, 82, 83, 79, 26, 86,
                                        87, 88, 91, 90, 79, 33, 64, 98, 91, 104, 97, 69, 70, 104, 104, 73, 74, 75, 76,
                                        104, 104, 79, 104, 1, 82, 83, 36, 11, 86, 87, 88, 15, 90, 11, 104, 64, 46, 104,
                                        48, 104, 69, 70, 26, 53, 73, 74, 75, 104, 26, 33, 79, 104, 36, 82, 83, 33, 104,
                                        86, 87, 88, 64, 90, 104, 104, 48, 69, 70, 104, 104, 73, 74, 75, 101, 104, 104,
                                        79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 14, 90, 104, 17, 64, 104, 104, 104,
                                        97, 69, 70, 12, 13, 73, 74, 75, 17, 104, 104, 79, 104, 104, 82, 83, 104, 104,
                                        86, 87, 88, 104, 90, 104, 104, 64, 104, 49, 104, 51, 69, 70, 54, 104, 73, 74,
                                        75, 104, 104, 104, 79, 50, 104, 82, 83, 104, 104, 86, 87, 88, 64, 90, 104, 104,
                                        104, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104,
                                        104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 104, 104, 104, 69, 70, 104, 104,
                                        73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90,
                                        104, 104, 64, 104, 104, 104, 104, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104,
                                        79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 64, 90, 104, 104, 104, 69, 70, 104,
                                        104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104,
                                        90, 104, 104, 64, 104, 104, 104, 104, 69, 70, 104, 104, 73, 74, 75, 104, 104,
                                        104, 79, 104, 104, 82, 83, 104, 5, 86, 87, 88, 104, 90, 104, 12, 13, 14, 104,
                                        16, 104, 104, 19, 20, 104, 104, 104, 104, 25, 5, 104, 104, 29, 104, 31, 32, 12,
                                        13, 14, 104, 16, 104, 104, 19, 20, 104, 104, 104, 104, 25, 104, 104, 104, 29,
                                        104, 31, 32, 104, 104, 71, 72, 58, 59, 104, 71, 72, 104, 104, 104, 81, 64, 104,
                                        84, 85, 81, 69, 70, 84, 85, 73, 74, 75, 58, 59, 104, 79, 98, 104, 82, 83, 104,
                                        98, 86, 87, 88, 104, 90, 64, 104, 104, 71, 72, 69, 70, 104, 104, 73, 74, 75,
                                        104, 81, 104, 79, 84, 85, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64,
                                        98, 1, 104, 104, 69, 70, 104, 104, 73, 74, 75, 11, 104, 104, 79, 104, 104, 82,
                                        83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 104, 73,
                                        74, 75, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64,
                                        104, 55, 56, 57, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79, 13, 14, 82,
                                        83, 17, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104,
                                        34, 73, 74, 75, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104,
                                        90, 64, 54, 104, 104, 104, 69, 70, 104, 104, 73, 74, 75, 38, 39, 40, 79, 104,
                                        104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104,
                                        104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104,
                                        90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 104, 73, 74, 75, 38, 39, 40,
                                        79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 27, 55, 56, 57, 69, 70,
                                        104, 104, 73, 74, 75, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
                                        104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79,
                                        104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104,
                                        69, 70, 104, 104, 73, 74, 75, 11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86,
                                        87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 104, 73, 74, 75, 38, 39,
                                        40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57,
                                        69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86,
                                        87, 88, 104, 90, 104, 104, 64, 104, 1, 104, 104, 69, 70, 104, 104, 73, 74, 75,
                                        11, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104,
                                        104, 104, 69, 70, 104, 104, 73, 74, 75, 38, 39, 40, 79, 104, 104, 82, 83, 104,
                                        104, 86, 87, 88, 104, 90, 64, 104, 55, 56, 57, 69, 70, 104, 104, 73, 74, 75,
                                        104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 104, 104,
                                        64, 104, 1, 104, 104, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79, 104, 104,
                                        82, 83, 104, 104, 86, 87, 88, 104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 104,
                                        73, 74, 75, 38, 39, 40, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88, 104, 90, 64,
                                        104, 55, 56, 57, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82,
                                        83, 104, 104, 86, 87, 88, 104, 90, 104, 104, 64, 104, 104, 104, 104, 69, 70,
                                        104, 104, 73, 74, 75, 104, 104, 104, 79, 104, 104, 82, 83, 104, 104, 86, 87, 88,
                                        104, 90, 64, 104, 104, 104, 104, 69, 70, 104, 104, 73, 74, 75, 104, 104, 104,
                                        79, 104, 104, 82, 83, 1, 104, 86, 87, 88, 104, 90, 64, 104, 104, 11, 104, 69,
                                        70, 104, 104, 73, 104, 75, 104, 104, 22, 79, 104, 104, 26, 83, 104, 104, 86, 87,
                                        88, 33, 90, 104, 104, 64, 104, 104, 104, 41, 69, 70, 104, 104, 73, 104, 75, 104,
                                        104, 104, 79, 104, 104, 2, 83, 104, 104, 86, 87, 88, 104, 90, 2, 12, 13, 104,
                                        104, 104, 17, 18, 104, 104, 12, 13, 104, 15, 104, 17, 18, 1, 2, 104, 104, 104,
                                        104, 12, 13, 104, 1, 104, 17, 18, 104, 104, 104, 104, 104, 46, 11, 48, 104, 50,
                                        104, 52, 53, 1, 46, 104, 48, 22, 50, 104, 52, 26, 36, 11, 38, 39, 40, 46, 33,
                                        48, 104, 50, 104, 52, 48, 104, 41, 104, 26, 104, 104, 55, 56, 57, 104, 33, 104,
                                        104, 64, 104, 38, 39, 40, 69, 70, 104, 104, 73, 104, 75, 104, 104, 104, 79, 104,
                                        104, 104, 55, 56, 57, 86, 87, 88, 104, 90, 104, 104, 64, 104, 104, 2, 104, 69,
                                        70, 104, 104, 73, 104, 75, 104, 12, 13, 79, 15, 104, 17, 18, 104, 104, 86, 87,
                                        88, 104, 90, 61, 62, 63, 64, 65, 66, 64, 104, 69, 104, 104, 69, 70, 1, 104, 73,
                                        104, 75, 104, 104, 46, 79, 48, 1, 50, 104, 52, 104, 86, 87, 88, 64, 90, 1, 104,
                                        104, 69, 70, 26, 104, 73, 104, 75, 104, 104, 33, 79, 104, 104, 104, 38, 39, 40,
                                        86, 87, 88, 24, 90, 26, 37, 38, 39, 40, 104, 104, 33, 104, 55, 56, 57, 38, 39,
                                        40, 104, 104, 104, 104, 55, 56, 57, 104, 104, 104, 104, 104, 64, 104, 55, 56,
                                        57, 69, 70, 104, 104, 73, 104, 75, 104, 104, 104, 79, 104, 104, 2, 104, 104, 2,
                                        86, 87, 88, 104, 90, 104, 12, 13, 104, 12, 13, 17, 18, 1, 17, 18, 104, 104, 104,
                                        104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
                                        104, 104, 104, 104, 104, 46, 104, 48, 46, 50, 48, 52, 50, 1, 52, 38, 39, 40,
                                        104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 55, 56,
                                        57, 104, 59, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 11, 104, 38,
                                        39, 40, 1, 104, 104, 104, 104, 21, 104, 23, 104, 1, 26, 104, 53, 104, 55, 56,
                                        57, 33, 104, 35, 104, 37, 104, 104, 104, 104, 104, 104, 104, 21, 46, 104, 104,
                                        104, 104, 104, 37, 38, 39, 40, 104, 1, 104, 104, 104, 104, 38, 39, 40, 104, 104,
                                        11, 104, 104, 55, 56, 57, 104, 18, 104, 104, 104, 104, 55, 56, 57, 26, 104, 104,
                                        104, 104, 104, 104, 33, 104, 104, 36, 104, 104, 104, 104, 104, 104, 104, 104,
                                        104, 104, 104, 48,);

    const YY_SHIFT_USE_DFLT = - 34;

    const YY_SHIFT_MAX = 242;

    static public $yy_shift_ofst = array(517, 270, 82, 270, 317, 82, 82, 317, - 12, - 12, 35, 411, 82, 82, 82, 129, 82,
                                         82, 82, 176, 82, 82, 82, 82, 82, 82, 223, 82, 82, 82, 82, 82, 82, 82, 82, 82,
                                         411, 364, 364, 458, 458, 458, 458, 458, 1830, 1706, 1810, 1810, 1810, 1810,
                                         1810, 517, 733, 933, 2001, 1306, 1389, 1223, 1820, 1952, 526, 1917, 1992, 1140,
                                         1057, 1472, 1472, 1472, 2033, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
                                         1472, 1196, 1689, 1196, 1600, 533, 183, 512, 14, 954, - 3, 589, 634, 634, 684,
                                         684, 512, 512, 368, 14, 14, 512, 513, 484, 104, 746, 518, 252, 67, 232, 91,
                                         232, 325, 3, 486, 307, 462, 433, 428, 349, 3, 5, 452, 462, 264, 327, 264, 264,
                                         264, 264, 264, 327, 264, 264, - 34, 1772, 1653, 1662, 1902, 1899, 1675, 1113,
                                         543, 105, 295, 3, 415, 69, 69, 3, 3, 313, 313, 3, 313, 3, 3, 3, 3, 3, 3, 283,
                                         3, 415, 3, 3, 3, 3, 69, 313, 3, 3, 3, 313, 313, 313, 99, 313, 3, 3, 3, 69, 3,
                                         498, 264, 264, 24, 497, 264, 327, 327, 327, 264, 24, 264, - 34, - 34, - 34,
                                         - 34, - 34, 1680, 1977, 678, 201, 652, 238, 97, 96, 357, 228, 382, 344, 308,
                                         142, 57, 37, - 33, 360, 87, 167, 539, 545, 562, 507, 194, 172, 118, 397, 456,
                                         402, 18, 299, 605, 556, 588, 552, 508, 481, 479, 398, 492, 534, 499, 522, 560,
                                         498,);

    const YY_REDUCE_USE_DFLT = - 61;

    const YY_REDUCE_MAX = 196;

    static public $yy_reduce_ofst = array(1737, 488, 575, 633, 550, 658, 521, 604, 770, 1102, 1075, 1407, 1461, 1517,
                                          1351, 1158, 1212, 1295, 1046, 716, 992, 936, 853, 963, 1019, 687, 1268, 1241,
                                          1129, 1185, 1490, 1434, 1378, 1324, 799, 824, 741, 1544, 1573, 1819, 1678,
                                          1740, 1707, 1765, 923, - 28, 571, - 28, 19, 918, 959, 134, 80, 83, - 26, - 26,
                                          - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, 160,
                                          - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, 222, - 26, 222,
                                          92, 175, - 60, - 14, 288, 145, 199, 286, 254, 152, 246, 354, 401, 293, 358,
                                          221, 340, 240, 190, 190, 279, 412, 190, 416, 395, 310, 279, 310, 472, 389,
                                          310, 352, 260, 93, 190, 487, 190, 190, 355, 190, 310, 190, 190, 190, 515, 190,
                                          424, 190, 190, 190, 530, 530, 530, 530, 530, 530, 551, 535, 530, 530, 531,
                                          540, 574, 555, 531, 531, 524, 524, 531, 524, 531, 531, 531, 531, 531, 531,
                                          549, 531, 544, 531, 531, 531, 531, 587, 524, 531, 531, 531, 524, 524, 524,
                                          573, 524, 531, 531, 531, 580, 531, 579, 131, 131, 54, 30, 131, 311, 311, 311,
                                          131, 54, 131, 294, 519, 489, 359, 506,);

    static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
                                                  45, 46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 43, 44,
                                                  45, 46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 53, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 52, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 54, 58,),
                                            array(12, 13, 14, 16, 17, 19, 20, 25, 29, 31, 32, 34, 36, 39, 43, 44, 45,
                                                  46, 47, 49, 51, 54, 58,),
                                            array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(1, 26, 33, 38, 39, 40, 55, 56, 57,),
                                            array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 25, 29, 31, 32,),
                                            array(14, 17, 49, 51, 54,),
                                            array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
                                            array(1, 21, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 38, 39, 40, 55, 56, 57,),
                                            array(1, 27, 38, 39, 40, 55, 56, 57,),
                                            array(1, 37, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 53, 55, 56, 57,), array(1, 2, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57, 59,),
                                            array(1, 37, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 11, 18, 26, 33, 36, 48,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(1, 38, 39, 40, 55, 56, 57,), array(1, 38, 39, 40, 55, 56, 57,),
                                            array(38, 39, 40, 55, 56, 57,), array(1, 11, 22, 26, 33, 41,),
                                            array(38, 39, 40, 55, 56, 57,), array(1, 11, 22, 26, 33, 41,),
                                            array(14, 17, 51, 54,), array(1, 11, 26, 33,), array(1, 26, 33,),
                                            array(14, 36, 54,),
                                            array(5, 12, 13, 14, 16, 19, 20, 25, 29, 31, 32, 58, 59,),
                                            array(12, 13, 17, 26, 28, 33,), array(12, 13, 17, 26, 28, 33,),
                                            array(12, 13, 17, 26, 33,), array(12, 13, 17, 26, 33,),
                                            array(1, 11, 26, 33,), array(1, 11, 26, 33,), array(1, 26, 33,),
                                            array(1, 26, 33,), array(18, 46, 52,), array(14, 36, 54,),
                                            array(14, 36, 54,), array(1, 26, 33,), array(1, 2,),
                                            array(1, 11, 26, 27, 33,), array(1, 11, 26, 33,), array(12, 13, 17, 50,),
                                            array(13, 14, 17, 54,), array(1, 11, 26, 33,), array(8, 9, 10,),
                                            array(12, 13, 17,), array(15, 18, 48,), array(12, 13, 17,),
                                            array(15, 18, 48,), array(26, 33,), array(14, 54,), array(18, 48,),
                                            array(14, 17,), array(26, 33,), array(1, 18,), array(1, 53,),
                                            array(26, 33,), array(1, 11,), array(1, 28,), array(14, 17,), array(1,),
                                            array(18,), array(1,), array(1,), array(1,), array(1,), array(1,),
                                            array(18,), array(1,), array(1,), array(),
                                            array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
                                            array(2, 12, 13, 17, 18, 46, 48, 50, 52, 53,),
                                            array(2, 12, 13, 15, 17, 18, 46, 48, 50, 52,),
                                            array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
                                            array(2, 12, 13, 17, 18, 46, 48, 50, 52,),
                                            array(12, 13, 17, 18, 46, 48, 50, 52,), array(13, 14, 17, 34, 54,),
                                            array(12, 13, 17, 50,), array(15, 46, 52,), array(12, 13, 17,),
                                            array(26, 33,), array(46, 52,), array(14, 54,), array(14, 54,),
                                            array(26, 33,), array(26, 33,), array(46, 52,), array(46, 52,),
                                            array(26, 33,), array(46, 52,), array(26, 33,), array(26, 33,),
                                            array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
                                            array(15, 22,), array(26, 33,), array(46, 52,), array(26, 33,),
                                            array(26, 33,), array(26, 33,), array(26, 33,), array(14, 54,),
                                            array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
                                            array(46, 52,), array(46, 52,), array(46, 52,), array(13, 36,),
                                            array(46, 52,), array(26, 33,), array(26, 33,), array(26, 33,),
                                            array(14, 54,), array(26, 33,), array(36,), array(1,), array(1,), array(2,),
                                            array(9,), array(1,), array(18,), array(18,), array(18,), array(1,),
                                            array(2,), array(1,), array(), array(), array(), array(), array(),
                                            array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57,),
                                            array(11, 21, 23, 26, 33, 35, 37, 46,), array(11, 15, 26, 33, 36, 48,),
                                            array(12, 13, 17, 50,), array(36, 46, 48, 53,), array(22, 41, 53,),
                                            array(22, 41, 59,), array(28, 36, 48,), array(35, 37,), array(36, 48,),
                                            array(17, 50,), array(46, 53,), array(15, 46,), array(35, 37,),
                                            array(35, 53,), array(36, 48,), array(36, 48,), array(22, 41,),
                                            array(21, 35,), array(35, 37,), array(53,), array(53,), array(17,),
                                            array(36,), array(17,), array(34,), array(51,), array(22,), array(37,),
                                            array(15,), array(23,), array(11,), array(5,), array(17,), array(17,),
                                            array(17,), array(46,), array(17,), array(17,), array(51,), array(34,),
                                            array(17,), array(42,), array(17,), array(17,), array(36,), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(), array(), array(),
                                            array(), array(), array(), array(), array(), array(),);

    static public $yy_default = array(341, 518, 498, 533, 533, 498, 498, 533, 533, 533, 533, 533, 533, 533, 533, 533,
                                      533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
                                      533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 401, 533, 377, 401,
                                      401, 401, 368, 338, 533, 533, 533, 533, 533, 406, 533, 533, 533, 533, 533, 533,
                                      533, 520, 521, 422, 440, 382, 496, 406, 412, 497, 519, 408, 413, 403, 429, 430,
                                      428, 430, 533, 415, 401, 533, 533, 401, 401, 401, 401, 447, 421, 401, 401, 510,
                                      533, 533, 401, 391, 415, 415, 463, 533, 415, 533, 463, 453, 463, 453, 379, 533,
                                      453, 533, 401, 395, 415, 401, 415, 415, 533, 425, 453, 415, 433, 431, 397, 418,
                                      507, 432, 419, 505, 452, 452, 452, 452, 452, 452, 533, 465, 479, 463, 386, 456,
                                      533, 533, 388, 387, 461, 457, 364, 459, 384, 360, 385, 361, 380, 378, 533, 363,
                                      458, 365, 369, 381, 366, 533, 490, 376, 375, 372, 491, 460, 489, 463, 488, 370,
                                      374, 390, 533, 389, 463, 421, 396, 499, 354, 398, 511, 508, 485, 392, 500, 447,
                                      504, 504, 463, 504, 463, 440, 436, 440, 464, 440, 430, 430, 440, 533, 440, 533,
                                      436, 436, 533, 533, 533, 448, 430, 533, 533, 533, 443, 533, 509, 533, 533, 533,
                                      430, 533, 533, 409, 533, 346, 533, 533, 533, 436, 533, 533, 533, 438, 533, 442,
                                      533, 533, 479, 451, 503, 394, 486, 383, 483, 400, 410, 481, 482, 402, 450, 502,
                                      514, 513, 479, 501, 420, 427, 426, 339, 487, 480, 350, 351, 352, 353, 349, 347,
                                      344, 345, 455, 348, 355, 356, 358, 399, 484, 371, 357, 340, 454, 342, 414, 343,
                                      434, 531, 530, 466, 467, 468, 462, 417, 526, 441, 416, 528, 443, 444, 516, 517,
                                      446, 515, 424, 423, 445, 495, 532, 525, 492, 475, 493, 393, 522, 477, 437, 494,
                                      469, 506, 435, 442, 512, 523, 439, 470, 529, 473, 527, 476, 474, 478, 472, 524,
                                      471, 449,);

    const YYNOCODE = 105;

    const YYSTACKDEPTH = 500;

    const YYNSTATE = 338;

    const YYNRULE = 195;

    const YYERRORSYMBOL = 60;

    const YYERRSYMDT = 'yy0';

    const YYFALLBACK = 0;

    public static $yyFallback = array();

    public function Trace($TraceFILE, $zTracePrompt)
    {
        if (!$TraceFILE) {
            $zTracePrompt = 0;
        } elseif (!$zTracePrompt) {
            $TraceFILE = 0;
        }
        $this->yyTraceFILE = $TraceFILE;
        $this->yyTracePrompt = $zTracePrompt;
    }

    public function PrintTrace()
    {
        $this->yyTraceFILE = fopen('php://output', 'w');
        $this->yyTracePrompt = '<br>';
    }

    public $yyTraceFILE;

    public $yyTracePrompt;

    public $yyidx;                    /* Index of top element in stack */
    public $yyerrcnt;                 /* Shifts left before out of the error */
    public $yystack = array();  /* The parser's stack */

    public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
                                'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
                                'SIMPLETAG', 'ID', 'PTR', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
                                'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT',
                                'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP', 'MATH',
                                'UNIMATH', 'ISIN', 'INSTANCEOF', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
                                'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB',
                                'DOLLAR', 'LOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK', 'error', 'start',
                                'template', 'template_element', 'smartytag', 'literal', 'text_content',
                                'literal_elements', 'literal_element', 'tag', 'variable', 'modifierlist', 'attributes',
                                'value', 'expr', 'varindexed', 'statement', 'statements', 'foraction', 'varvar',
                                'modparameters', 'attribute', 'ternary', 'array', 'lop', 'scond', 'ns1', 'function',
                                'doublequoted_with_quotes', 'static_class_access', 'object', 'arrayindex', 'indexdef',
                                'varvarele', 'objectchain', 'objectelement', 'method', 'params', 'modifier',
                                'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
                                'doublequotedcontent',);

    public static $yyRuleName = array('start ::= template', 'template ::= template_element',
                                      'template ::= template template_element', 'template ::=',
                                      'template_element ::= smartytag', 'template_element ::= literal',
                                      'template_element ::= PHP', 'template_element ::= NOCACHE',
                                      'template_element ::= text_content', 'text_content ::= TEXT',
                                      'text_content ::= text_content TEXT', 'template_element ::= STRIPON',
                                      'template_element ::= STRIPOFF', 'literal ::= LITERALSTART LITERALEND',
                                      'literal ::= LITERALSTART literal_elements LITERALEND',
                                      'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
                                      'literal_element ::= literal', 'literal_element ::= LITERAL',
                                      'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
                                      'tag ::= LDEL variable modifierlist attributes',
                                      'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
                                      'tag ::= LDEL value modifierlist attributes', 'tag ::= LDEL value attributes',
                                      'tag ::= LDEL expr modifierlist attributes', 'tag ::= LDEL expr attributes',
                                      'tag ::= LDEL DOLLARID EQUAL value', 'tag ::= LDEL DOLLARID EQUAL expr',
                                      'tag ::= LDEL DOLLARID EQUAL expr attributes',
                                      'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
                                      'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
                                      'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
                                      'tag ::= LDEL ID PTR ID modifierlist attributes', 'tag ::= LDELIF expr',
                                      'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
                                      'tag ::= LDELIF statement attributes',
                                      'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
                                      'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
                                      'tag ::= LDELFOR statement TO expr attributes',
                                      'tag ::= LDELFOR statement TO expr STEP expr attributes',
                                      'tag ::= LDELFOREACH attributes',
                                      'tag ::= LDELFOREACH SPACE value AS varvar attributes',
                                      'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
                                      'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
                                      'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
                                      'tag ::= LDELSETFILTER ID modparameters',
                                      'tag ::= LDELSETFILTER ID modparameters modifierlist',
                                      'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
                                      'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
                                      'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
                                      'attributes ::= attributes attribute', 'attributes ::= attribute',
                                      'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
                                      'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
                                      'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
                                      'statements ::= statement', 'statements ::= statements COMMA statement',
                                      'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
                                      'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
                                      'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
                                      'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
                                      'expr ::= expr modifierlist', 'expr ::= expr lop expr', 'expr ::= expr scond',
                                      'expr ::= expr ISIN array', 'expr ::= expr ISIN value',
                                      'expr ::= variable INSTANCEOF ns1', 'expr ::= variable INSTANCEOF variable',
                                      'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
                                      'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
                                      'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
                                      'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
                                      'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
                                      'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
                                      'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
                                      'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
                                      'value ::= value modifierlist', 'value ::= NAMESPACE',
                                      'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
                                      'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
                                      'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
                                      'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
                                      'variable ::= HATCH variable HATCH arrayindex',
                                      'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
                                      'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
                                      'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
                                      'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
                                      'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
                                      'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
                                      'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
                                      'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
                                      'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
                                      'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
                                      'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
                                      'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
                                      'object ::= varindexed objectchain', 'objectchain ::= objectelement',
                                      'objectchain ::= objectchain objectelement',
                                      'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
                                      'objectelement ::= PTR LDEL expr RDEL arrayindex',
                                      'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
                                      'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
                                      'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
                                      'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
                                      'modifierlist ::= modifierlist modifier modparameters',
                                      'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
                                      'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
                                      'modparameters ::=', 'modparameter ::= COLON value',
                                      'modparameter ::= COLON array', 'static_class_access ::= method',
                                      'static_class_access ::= method objectchain', 'static_class_access ::= ID',
                                      'static_class_access ::= DOLLARID arrayindex',
                                      'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
                                      'lop ::= TLOGOP', 'scond ::= SINGLECOND', 'array ::= OPENB arrayelements CLOSEB',
                                      'arrayelements ::= arrayelement',
                                      'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
                                      'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
                                      'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
                                      'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
                                      'doublequoted ::= doublequoted doublequotedcontent',
                                      'doublequoted ::= doublequotedcontent',
                                      'doublequotedcontent ::= BACKTICK variable BACKTICK',
                                      'doublequotedcontent ::= BACKTICK expr BACKTICK',
                                      'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
                                      'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
                                      'doublequotedcontent ::= TEXT',);

    public function tokenName($tokenType)
    {
        if ($tokenType === 0) {
            return 'End of Input';
        }
        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
            return $this->yyTokenName[$tokenType];
        } else {
            return "Unknown";
        }
    }

    public static function yy_destructor($yymajor, $yypminor)
    {
        switch ($yymajor) {
            default:
                break;   /* If no destructor action specified: do nothing */
        }
    }

    public function yy_pop_parser_stack()
    {
        if (empty($this->yystack)) {
            return;
        }
        $yytos = array_pop($this->yystack);
        if ($this->yyTraceFILE && $this->yyidx >= 0) {
            fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . "\n");
        }
        $yymajor = $yytos->major;
        self::yy_destructor($yymajor, $yytos->minor);
        $this->yyidx --;

        return $yymajor;
    }

    public function __destruct()
    {
        while ($this->yystack !== Array()) {
            $this->yy_pop_parser_stack();
        }
        if (is_resource($this->yyTraceFILE)) {
            fclose($this->yyTraceFILE);
        }
    }

    public function yy_get_expected_tokens($token)
    {
        static $res3 = array();
        static $res4 = array();
        $state = $this->yystack[$this->yyidx]->stateno;
        $expected = self::$yyExpectedTokens[$state];
        if (isset($res3[$state][$token])) {
            if ($res3[$state][$token]) {
                return $expected;
            }
        } else {
            if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
                return $expected;
            }
        }
        $stack = $this->yystack;
        $yyidx = $this->yyidx;
        do {
            $yyact = $this->yy_find_shift_action($token);
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
                // reduce action
                $done = 0;
                do {
                    if ($done ++ == 100) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        // too much recursion prevents proper detection
                        // so give up
                        return array_unique($expected);
                    }
                    $yyruleno = $yyact - self::YYNSTATE;
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
                    $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno,
                                                              self::$yyRuleInfo[$yyruleno][0]);
                    if (isset(self::$yyExpectedTokens[$nextstate])) {
                        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
                        if (isset($res4[$nextstate][$token])) {
                            if ($res4[$nextstate][$token]) {
                                $this->yyidx = $yyidx;
                                $this->yystack = $stack;
                                return array_unique($expected);
                            }
                        } else {
                            if ($res4[$nextstate][$token] =
                                in_array($token, self::$yyExpectedTokens[$nextstate], true)
                            ) {
                                $this->yyidx = $yyidx;
                                $this->yystack = $stack;
                                return array_unique($expected);
                            }
                        }
                    }
                    if ($nextstate < self::YYNSTATE) {
                        // we need to shift a non-terminal
                        $this->yyidx ++;
                        $x = new TP_yyStackEntry;
                        $x->stateno = $nextstate;
                        $x->major = self::$yyRuleInfo[$yyruleno][0];
                        $this->yystack[$this->yyidx] = $x;
                        continue 2;
                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        // the last token was just ignored, we can't accept
                        // by ignoring input, this is in essence ignoring a
                        // syntax error!
                        return array_unique($expected);
                    } elseif ($nextstate === self::YY_NO_ACTION) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        // input accepted, but not shifted (I guess)
                        return $expected;
                    } else {
                        $yyact = $nextstate;
                    }
                } while (true);
            }
            break;
        } while (true);
        $this->yyidx = $yyidx;
        $this->yystack = $stack;

        return array_unique($expected);
    }

    public function yy_is_expected_token($token)
    {
        static $res = array();
        static $res2 = array();
        if ($token === 0) {
            return true; // 0 is not part of this
        }
        $state = $this->yystack[$this->yyidx]->stateno;
        if (isset($res[$state][$token])) {
            if ($res[$state][$token]) {
                return true;
            }
        } else {
            if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
                return true;
            }
        }
        $stack = $this->yystack;
        $yyidx = $this->yyidx;
        do {
            $yyact = $this->yy_find_shift_action($token);
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
                // reduce action
                $done = 0;
                do {
                    if ($done ++ == 100) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        // too much recursion prevents proper detection
                        // so give up
                        return true;
                    }
                    $yyruleno = $yyact - self::YYNSTATE;
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
                    $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno,
                                                              self::$yyRuleInfo[$yyruleno][0]);
                    if (isset($res2[$nextstate][$token])) {
                        if ($res2[$nextstate][$token]) {
                            $this->yyidx = $yyidx;
                            $this->yystack = $stack;
                            return true;
                        }
                    } else {
                        if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) &&
                            in_array($token, self::$yyExpectedTokens[$nextstate], true))
                        ) {
                            $this->yyidx = $yyidx;
                            $this->yystack = $stack;
                            return true;
                        }
                    }
                    if ($nextstate < self::YYNSTATE) {
                        // we need to shift a non-terminal
                        $this->yyidx ++;
                        $x = new TP_yyStackEntry;
                        $x->stateno = $nextstate;
                        $x->major = self::$yyRuleInfo[$yyruleno][0];
                        $this->yystack[$this->yyidx] = $x;
                        continue 2;
                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        if (!$token) {
                            // end of input: this is valid
                            return true;
                        }
                        // the last token was just ignored, we can't accept
                        // by ignoring input, this is in essence ignoring a
                        // syntax error!
                        return false;
                    } elseif ($nextstate === self::YY_NO_ACTION) {
                        $this->yyidx = $yyidx;
                        $this->yystack = $stack;
                        // input accepted, but not shifted (I guess)
                        return true;
                    } else {
                        $yyact = $nextstate;
                    }
                } while (true);
            }
            break;
        } while (true);
        $this->yyidx = $yyidx;
        $this->yystack = $stack;

        return true;
    }

    public function yy_find_shift_action($iLookAhead)
    {
        $stateno = $this->yystack[$this->yyidx]->stateno;

        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
        if (!isset(self::$yy_shift_ofst[$stateno])) {
            // no shift actions
            return self::$yy_default[$stateno];
        }
        $i = self::$yy_shift_ofst[$stateno];
        if ($i === self::YY_SHIFT_USE_DFLT) {
            return self::$yy_default[$stateno];
        }
        if ($iLookAhead == self::YYNOCODE) {
            return self::YY_NO_ACTION;
        }
        $i += $iLookAhead;
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
                ($iFallback = self::$yyFallback[$iLookAhead]) != 0
            ) {
                if ($this->yyTraceFILE) {
                    fwrite($this->yyTraceFILE,
                           $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[$iLookAhead] . " => " .
                           $this->yyTokenName[$iFallback] . "\n");
                }

                return $this->yy_find_shift_action($iFallback);
            }

            return self::$yy_default[$stateno];
        } else {
            return self::$yy_action[$i];
        }
    }

    public function yy_find_reduce_action($stateno, $iLookAhead)
    {
        /* $stateno = $this->yystack[$this->yyidx]->stateno; */

        if (!isset(self::$yy_reduce_ofst[$stateno])) {
            return self::$yy_default[$stateno];
        }
        $i = self::$yy_reduce_ofst[$stateno];
        if ($i == self::YY_REDUCE_USE_DFLT) {
            return self::$yy_default[$stateno];
        }
        if ($iLookAhead == self::YYNOCODE) {
            return self::YY_NO_ACTION;
        }
        $i += $iLookAhead;
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
            return self::$yy_default[$stateno];
        } else {
            return self::$yy_action[$i];
        }
    }

    public function yy_shift($yyNewState, $yyMajor, $yypMinor)
    {
        $this->yyidx ++;
        if ($this->yyidx >= self::YYSTACKDEPTH) {
            $this->yyidx --;
            if ($this->yyTraceFILE) {
                fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
            }
            while ($this->yyidx >= 0) {
                $this->yy_pop_parser_stack();
            }
            #line 214 "../smarty/lexer/smarty_internal_templateparser.y"

            $this->internalError = true;
            $this->compiler->trigger_template_error("Stack overflow in template parser");

            return;
        }
        $yytos = new TP_yyStackEntry;
        $yytos->stateno = $yyNewState;
        $yytos->major = $yyMajor;
        $yytos->minor = $yypMinor;
        $this->yystack[] = $yytos;
        if ($this->yyTraceFILE && $this->yyidx > 0) {
            fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
            fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
            for ($i = 1; $i <= $this->yyidx; $i ++) {
                fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[$this->yystack[$i]->major]);
            }
            fwrite($this->yyTraceFILE, "\n");
        }
    }

    public static $yyRuleInfo = array(array(0 => 61, 1 => 1), array(0 => 62, 1 => 1), array(0 => 62, 1 => 2),
                                      array(0 => 62, 1 => 0), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
                                      array(0 => 63, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 1),
                                      array(0 => 66, 1 => 1), array(0 => 66, 1 => 2), array(0 => 63, 1 => 1),
                                      array(0 => 63, 1 => 1), array(0 => 65, 1 => 2), array(0 => 65, 1 => 3),
                                      array(0 => 67, 1 => 2), array(0 => 67, 1 => 0), array(0 => 68, 1 => 1),
                                      array(0 => 68, 1 => 1), array(0 => 64, 1 => 2), array(0 => 64, 1 => 1),
                                      array(0 => 69, 1 => 2), array(0 => 69, 1 => 4), array(0 => 69, 1 => 3),
                                      array(0 => 69, 1 => 2), array(0 => 69, 1 => 4), array(0 => 69, 1 => 3),
                                      array(0 => 69, 1 => 4), array(0 => 69, 1 => 3), array(0 => 69, 1 => 4),
                                      array(0 => 69, 1 => 4), array(0 => 69, 1 => 5), array(0 => 69, 1 => 5),
                                      array(0 => 64, 1 => 1), array(0 => 69, 1 => 3), array(0 => 69, 1 => 2),
                                      array(0 => 69, 1 => 4), array(0 => 69, 1 => 5), array(0 => 69, 1 => 6),
                                      array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 2),
                                      array(0 => 69, 1 => 3), array(0 => 69, 1 => 8), array(0 => 78, 1 => 2),
                                      array(0 => 78, 1 => 1), array(0 => 69, 1 => 5), array(0 => 69, 1 => 7),
                                      array(0 => 69, 1 => 2), array(0 => 69, 1 => 6), array(0 => 69, 1 => 8),
                                      array(0 => 69, 1 => 6), array(0 => 69, 1 => 8), array(0 => 69, 1 => 3),
                                      array(0 => 69, 1 => 4), array(0 => 69, 1 => 2), array(0 => 64, 1 => 1),
                                      array(0 => 69, 1 => 2), array(0 => 69, 1 => 3), array(0 => 69, 1 => 4),
                                      array(0 => 69, 1 => 5), array(0 => 72, 1 => 2), array(0 => 72, 1 => 1),
                                      array(0 => 72, 1 => 0), array(0 => 81, 1 => 4), array(0 => 81, 1 => 2),
                                      array(0 => 81, 1 => 2), array(0 => 81, 1 => 2), array(0 => 81, 1 => 2),
                                      array(0 => 81, 1 => 2), array(0 => 81, 1 => 4), array(0 => 77, 1 => 1),
                                      array(0 => 77, 1 => 3), array(0 => 76, 1 => 3), array(0 => 76, 1 => 3),
                                      array(0 => 76, 1 => 3), array(0 => 76, 1 => 3), array(0 => 74, 1 => 1),
                                      array(0 => 74, 1 => 1), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
                                      array(0 => 74, 1 => 3), array(0 => 74, 1 => 1), array(0 => 74, 1 => 2),
                                      array(0 => 74, 1 => 3), array(0 => 74, 1 => 2), array(0 => 74, 1 => 3),
                                      array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
                                      array(0 => 82, 1 => 7), array(0 => 82, 1 => 7), array(0 => 73, 1 => 1),
                                      array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
                                      array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1),
                                      array(0 => 73, 1 => 3), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
                                      array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
                                      array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
                                      array(0 => 73, 1 => 1), array(0 => 73, 1 => 2), array(0 => 73, 1 => 1),
                                      array(0 => 73, 1 => 3), array(0 => 86, 1 => 1), array(0 => 86, 1 => 1),
                                      array(0 => 70, 1 => 1), array(0 => 70, 1 => 1), array(0 => 70, 1 => 3),
                                      array(0 => 70, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
                                      array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 75, 1 => 2),
                                      array(0 => 75, 1 => 2), array(0 => 91, 1 => 2), array(0 => 91, 1 => 0),
                                      array(0 => 92, 1 => 2), array(0 => 92, 1 => 2), array(0 => 92, 1 => 4),
                                      array(0 => 92, 1 => 2), array(0 => 92, 1 => 2), array(0 => 92, 1 => 4),
                                      array(0 => 92, 1 => 3), array(0 => 92, 1 => 5), array(0 => 92, 1 => 3),
                                      array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 3),
                                      array(0 => 92, 1 => 3), array(0 => 92, 1 => 3), array(0 => 92, 1 => 2),
                                      array(0 => 79, 1 => 1), array(0 => 79, 1 => 1), array(0 => 79, 1 => 2),
                                      array(0 => 93, 1 => 1), array(0 => 93, 1 => 1), array(0 => 93, 1 => 3),
                                      array(0 => 90, 1 => 2), array(0 => 94, 1 => 1), array(0 => 94, 1 => 2),
                                      array(0 => 95, 1 => 3), array(0 => 95, 1 => 3), array(0 => 95, 1 => 5),
                                      array(0 => 95, 1 => 6), array(0 => 95, 1 => 2), array(0 => 87, 1 => 4),
                                      array(0 => 96, 1 => 4), array(0 => 96, 1 => 4), array(0 => 97, 1 => 3),
                                      array(0 => 97, 1 => 1), array(0 => 97, 1 => 0), array(0 => 71, 1 => 3),
                                      array(0 => 71, 1 => 2), array(0 => 98, 1 => 3), array(0 => 98, 1 => 2),
                                      array(0 => 80, 1 => 2), array(0 => 80, 1 => 0), array(0 => 99, 1 => 2),
                                      array(0 => 99, 1 => 2), array(0 => 89, 1 => 1), array(0 => 89, 1 => 2),
                                      array(0 => 89, 1 => 1), array(0 => 89, 1 => 2), array(0 => 89, 1 => 3),
                                      array(0 => 84, 1 => 1), array(0 => 84, 1 => 1), array(0 => 85, 1 => 1),
                                      array(0 => 83, 1 => 3), array(0 => 100, 1 => 1), array(0 => 100, 1 => 3),
                                      array(0 => 100, 1 => 0), array(0 => 101, 1 => 3), array(0 => 101, 1 => 3),
                                      array(0 => 101, 1 => 1), array(0 => 88, 1 => 2), array(0 => 88, 1 => 3),
                                      array(0 => 102, 1 => 2), array(0 => 102, 1 => 1), array(0 => 103, 1 => 3),
                                      array(0 => 103, 1 => 3), array(0 => 103, 1 => 1), array(0 => 103, 1 => 3),
                                      array(0 => 103, 1 => 3), array(0 => 103, 1 => 1), array(0 => 103, 1 => 1),);

    public static $yyReduceMap = array(0   => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9,
                                       17  => 9, 18 => 9, 45 => 9, 68 => 9, 69 => 9, 77 => 9, 78 => 9, 82 => 9, 92 => 9,
                                       97  => 9, 98 => 9, 103 => 9, 105 => 9, 106 => 9, 110 => 9, 112 => 9, 117 => 9,
                                       178 => 9, 183 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 16 => 13, 14 => 14,
                                       76  => 14, 15 => 15, 93 => 15, 95 => 15, 96 => 15, 124 => 15, 19 => 19, 20 => 20,
                                       21  => 21, 24 => 21, 22 => 22, 25 => 22, 23 => 23, 26 => 23, 28 => 23, 27 => 27,
                                       29  => 29, 30 => 29, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36,
                                       37  => 37, 38 => 38, 39 => 39, 40 => 40, 42 => 40, 41 => 41, 43 => 43, 44 => 44,
                                       46  => 46, 47 => 47, 48 => 48, 49 => 49, 51 => 49, 50 => 50, 52 => 50, 53 => 53,
                                       54  => 54, 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 61 => 61,
                                       62  => 62, 71 => 62, 159 => 62, 163 => 62, 167 => 62, 168 => 62, 63 => 63,
                                       160 => 63, 166 => 63, 64 => 64, 65 => 65, 66 => 65, 67 => 67, 144 => 67,
                                       70  => 70, 72 => 72, 73 => 73, 74 => 73, 75 => 75, 79 => 79, 80 => 80, 81 => 80,
                                       83  => 83, 109 => 83, 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 89 => 88,
                                       90  => 90, 91 => 91, 94 => 94, 99 => 99, 100 => 100, 101 => 101, 102 => 102,
                                       104 => 104, 107 => 107, 108 => 108, 111 => 111, 113 => 113, 114 => 114,
                                       115 => 115, 116 => 116, 118 => 118, 119 => 119, 120 => 120, 121 => 121,
                                       122 => 122, 123 => 123, 125 => 125, 180 => 125, 126 => 126, 127 => 127,
                                       128 => 128, 129 => 129, 130 => 130, 131 => 131, 139 => 131, 132 => 132,
                                       133 => 133, 134 => 134, 135 => 134, 137 => 134, 138 => 134, 136 => 136,
                                       140 => 140, 141 => 141, 142 => 142, 184 => 142, 143 => 143, 145 => 145,
                                       146 => 146, 147 => 147, 148 => 148, 149 => 149, 150 => 150, 151 => 151,
                                       152 => 152, 153 => 153, 154 => 154, 155 => 155, 156 => 156, 157 => 157,
                                       158 => 158, 161 => 161, 162 => 162, 164 => 164, 165 => 165, 169 => 169,
                                       170 => 170, 171 => 171, 172 => 172, 173 => 173, 174 => 174, 175 => 175,
                                       176 => 176, 177 => 177, 179 => 179, 181 => 181, 182 => 182, 185 => 185,
                                       186 => 186, 187 => 187, 188 => 188, 189 => 188, 191 => 188, 190 => 190,
                                       192 => 192, 193 => 193, 194 => 194,);

    #line 225 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r0()
    {
        $this->root_buffer->prepend_array($this, $this->template_prefix);
        $this->root_buffer->append_array($this, $this->template_postfix);
        $this->_retvalue = $this->root_buffer->to_smarty_php($this);
    }

    #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r1()
    {
        if ($this->yystack[$this->yyidx + 0]->minor != null) {
            $this->current_buffer->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
        }
    }

    #line 242 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r2()
    {
        if ($this->yystack[$this->yyidx + 0]->minor != null) {
            // because of possible code injection
            $this->current_buffer->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
        }
    }

    #line 256 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r4()
    {
        if ($this->compiler->has_code) {
            $this->_retvalue = $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor);
        } else {
            $this->_retvalue = null;
        }
        $this->compiler->has_variable_string = false;
        $this->block_nesting_level = count($this->compiler->_tag_stack);
    }

    #line 267 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r5()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[$this->yyidx + 0]->minor);
    }

    #line 271 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r6()
    {
        $code = $this->compiler->compileTag('private_php',
                                            array(array('code' => $this->yystack[$this->yyidx + 0]->minor),
                                                  array('type' => $this->lex->phpType)), array());
        if ($this->compiler->has_code && !empty($code)) {
            $tmp = '';
            foreach ($this->compiler->prefix_code as $code) {
                $tmp .= $code;
            }
            $this->compiler->prefix_code = array();
            $this->_retvalue =
                new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
        } else {
            $this->_retvalue = null;
        }
    }

    #line 282 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r7()
    {
        $this->compiler->tag_nocache = true;
        $save = $this->template->compiled->has_nocache_code;
        $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this,
                                                             $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n",
                                                                                                 $this->compiler,
                                                                                                 true));
        $this->template->compiled->has_nocache_code = $save;
    }

    #line 289 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r8()
    {
        $this->_retvalue = $this->compiler->processText($this->yystack[$this->yyidx + 0]->minor);
    }

    #line 293 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r9()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r10()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 302 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r11()
    {
        $this->strip = true;
    }

    #line 306 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r12()
    {
        $this->strip = false;
    }

    #line 311 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r13()
    {
        $this->_retvalue = '';
    }

    #line 315 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r14()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
    }

    #line 319 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r15()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 335 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r19()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
    }

    #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r20()
    {
        $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
                    ' $');
        if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
            $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
                                                           array('value' => $this->compiler->compileVariable('\'' .
                                                                                                             $match[1] .
                                                                                                             '\'')));
        } else {
            $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
                                                           array('value' => $this->compiler->compileVariable('\'' .
                                                                                                             $var .
                                                                                                             '\'')));
        }
    }

    #line 351 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r21()
    {
        $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
                                                       array('value' => $this->yystack[$this->yyidx + 0]->minor));
    }

    #line 355 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r22()
    {
        $this->_retvalue =
            $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor,
                                        array('value'        => $this->yystack[$this->yyidx + - 2]->minor,
                                              'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
    }

    #line 359 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r23()
    {
        $this->_retvalue =
            $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor,
                                        array('value' => $this->yystack[$this->yyidx + - 1]->minor));
    }

    #line 373 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r27()
    {
        $this->_retvalue =
            $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor,
                                        array('value'        => $this->yystack[$this->yyidx + - 2]->minor,
                                              'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
    }

    #line 386 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r29()
    {
        $this->_retvalue = $this->compiler->compileTag('assign',
                                                       array(array('value' => $this->yystack[$this->yyidx + 0]->minor),
                                                             array('var' => '\'' .
                                                                 substr($this->yystack[$this->yyidx + - 2]->minor, 1) .
                                                                 '\'')));
    }

    #line 394 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r31()
    {
        $this->_retvalue = $this->compiler->compileTag('assign',
                                                       array_merge(array(array('value' => $this->yystack[$this->yyidx +
                                                       - 1]->minor), array('var' => '\'' .
                                                           substr($this->yystack[$this->yyidx + - 3]->minor, 1) .
                                                           '\'')), $this->yystack[$this->yyidx + 0]->minor));
    }

    #line 398 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r32()
    {
        $this->_retvalue = $this->compiler->compileTag('assign',
                                                       array_merge(array(array('value' => $this->yystack[$this->yyidx +
                                                       - 1]->minor), array('var' => $this->yystack[$this->yyidx +
                                                       - 3]->minor['var'])), $this->yystack[$this->yyidx + 0]->minor),
                                                       array('smarty_internal_index' => $this->yystack[$this->yyidx +
                                                       - 3]->minor['smarty_internal_index']));
    }

    #line 403 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r33()
    {
        $tag =
            trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
        if ($tag == 'strip') {
            $this->strip = true;
            $this->_retvalue = null;;
        } else {
            if (defined($tag)) {
                if ($this->security) {
                    $this->security->isTrustedConstant($tag, $this->compiler);
                }
                $this->_retvalue =
                    $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
            } else {
                if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
                    $this->_retvalue = $this->compiler->compileTag($match[1], array("'nocache'"));
                } else {
                    $this->_retvalue = $this->compiler->compileTag($tag, array());
                }
            }
        }
    }

    #line 425 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r34()
    {
        if (defined($this->yystack[$this->yyidx + - 1]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + - 1]->minor, $this->compiler);
            }
            $this->_retvalue =
                $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor,
                                            array('value' => $this->yystack[$this->yyidx + - 1]->minor));
        } else {
            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor,
                                                           $this->yystack[$this->yyidx + 0]->minor);
        }
    }

    #line 435 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r35()
    {
        if (defined($this->yystack[$this->yyidx + 0]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
            }
            $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
                                                           array('value' => $this->yystack[$this->yyidx + 0]->minor));
        } else {
            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor, array());
        }
    }

    #line 448 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r36()
    {
        if (defined($this->yystack[$this->yyidx + - 2]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + - 2]->minor, $this->compiler);
            }
            $this->_retvalue =
                $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor,
                                            array('value'        => $this->yystack[$this->yyidx + - 2]->minor,
                                                  'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
        } else {
            $this->_retvalue = '<?php ob_start();?>' .
                $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor,
                                            $this->yystack[$this->yyidx + 0]->minor) . '<?php echo ';
            $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
                                                            array('modifierlist' => $this->yystack[$this->yyidx +
                                                            - 1]->minor, 'value' => 'ob_get_clean()')) . ';?>';
        }
    }

    #line 461 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r37()
    {
        $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor,
                                                       $this->yystack[$this->yyidx + 0]->minor,
                                                       array('object_method' => $this->yystack[$this->yyidx +
                                                       - 1]->minor));
    }

    #line 466 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r38()
    {
        $this->_retvalue = '<?php ob_start();?>' .
            $this->compiler->compileTag($this->yystack[$this->yyidx + - 4]->minor,
                                        $this->yystack[$this->yyidx + 0]->minor,
                                        array('object_method' => $this->yystack[$this->yyidx + - 2]->minor)) .
            '<?php echo ';
        $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(),
                                                        array('modifierlist' => $this->yystack[$this->yyidx +
                                                        - 1]->minor, 'value' => 'ob_get_clean()')) . ';?>';
    }

    #line 472 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r39()
    {
        $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
        $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
                                                       array('if condition' => $this->yystack[$this->yyidx +
                                                       0]->minor));
    }

    #line 477 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r40()
    {
        $tag = trim(substr($this->yystack[$this->yyidx + - 2]->minor, $this->lex->ldel_length));
        $this->_retvalue =
            $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, $this->yystack[$this->yyidx + 0]->minor,
                                        array('if condition' => $this->yystack[$this->yyidx + - 1]->minor));
    }

    #line 482 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r41()
    {
        $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
        $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
                                                       array('if condition' => $this->yystack[$this->yyidx +
                                                       0]->minor));
    }

    #line 493 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r43()
    {
        $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor,
                                                                          array(array('start' => $this->yystack[$this->yyidx +
                                                                          - 6]->minor),
                                                                                array('ifexp' => $this->yystack[$this->yyidx +
                                                                                - 4]->minor),
                                                                                array('var' => $this->yystack[$this->yyidx +
                                                                                - 2]->minor),
                                                                                array('step' => $this->yystack[$this->yyidx +
                                                                                - 1]->minor))), 1);
    }

    #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r44()
    {
        $this->_retvalue = '=' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 505 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r46()
    {
        $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor,
                                                                          array(array('start' => $this->yystack[$this->yyidx +
                                                                          - 3]->minor),
                                                                                array('to' => $this->yystack[$this->yyidx +
                                                                                - 1]->minor))), 0);
    }

    #line 509 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r47()
    {
        $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor,
                                                                          array(array('start' => $this->yystack[$this->yyidx +
                                                                          - 5]->minor),
                                                                                array('to' => $this->yystack[$this->yyidx +
                                                                                - 3]->minor),
                                                                                array('step' => $this->yystack[$this->yyidx +
                                                                                - 1]->minor))), 0);
    }

    #line 514 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r48()
    {
        $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 519 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r49()
    {
        $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor,
                                                                              array(array('from' => $this->yystack[$this->yyidx +
                                                                              - 3]->minor),
                                                                                    array('item' => $this->yystack[$this->yyidx +
                                                                                    - 1]->minor))));
    }

    #line 523 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r50()
    {
        $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor,
                                                                              array(array('from' => $this->yystack[$this->yyidx +
                                                                              - 5]->minor),
                                                                                    array('item' => $this->yystack[$this->yyidx +
                                                                                    - 1]->minor),
                                                                                    array('key' => $this->yystack[$this->yyidx +
                                                                                    - 3]->minor))));
    }

    #line 536 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r53()
    {
        $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
                                                       array('modifier_list' => array(array_merge(array($this->yystack[$this->yyidx +
                                                       - 1]->minor), $this->yystack[$this->yyidx + 0]->minor))));
    }

    #line 540 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r54()
    {
        $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
                                                       array('modifier_list' => array_merge(array(array_merge(array($this->yystack[$this->yyidx +
                                                       - 2]->minor), $this->yystack[$this->yyidx + - 1]->minor)),
                                                                                            $this->yystack[$this->yyidx +
                                                                                            0]->minor)));
    }

    #line 545 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r55()
    {
        $j = strrpos($this->yystack[$this->yyidx + 0]->minor, '.');
        if ($this->yystack[$this->yyidx + 0]->minor[$j + 1] == 'c') {
            // {$smarty.block.child}
            $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
        } else {
            // {$smarty.block.parent}
            $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
        }
    }

    #line 558 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r56()
    {
        $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
                    ' /');
        if ($tag == 'strip') {
            $this->strip = false;
            $this->_retvalue = null;
        } else {
            $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
        }
    }

    #line 567 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r57()
    {
        $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor . 'close', array());
    }

    #line 571 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r58()
    {
        $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor . 'close', array(),
                                                       array('modifier_list' => $this->yystack[$this->yyidx +
                                                       0]->minor));
    }

    #line 576 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r59()
    {
        $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor . 'close', array(),
                                                       array('object_method' => $this->yystack[$this->yyidx +
                                                       0]->minor));
    }

    #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r60()
    {
        $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor . 'close', array(),
                                                       array('object_method'        => $this->yystack[$this->yyidx +
                                                       - 1]->minor, 'modifier_list' => $this->yystack[$this->yyidx +
                                                       0]->minor));
    }

    #line 588 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r61()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
        $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 594 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r62()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
    }

    #line 599 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r63()
    {
        $this->_retvalue = array();
    }

    #line 604 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r64()
    {
        if (defined($this->yystack[$this->yyidx + 0]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
            }
            $this->_retvalue =
                array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor);
        } else {
            $this->_retvalue =
                array($this->yystack[$this->yyidx + - 2]->minor => '\'' . $this->yystack[$this->yyidx + 0]->minor .
                    '\'');
        }
    }

    #line 615 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r65()
    {
        $this->_retvalue =
            array(trim($this->yystack[$this->yyidx + - 1]->minor, " =\n\r\t") => $this->yystack[$this->yyidx +
            0]->minor);
    }

    #line 623 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r67()
    {
        $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
    }

    #line 635 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r70()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 648 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r72()
    {
        $this->yystack[$this->yyidx + - 2]->minor[] = $this->yystack[$this->yyidx + 0]->minor;
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor;
    }

    #line 653 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r73()
    {
        $this->_retvalue = array('var'   => '\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '\'',
                                 'value' => $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 660 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r75()
    {
        $this->_retvalue = array('var'   => $this->yystack[$this->yyidx + - 2]->minor,
                                 'value' => $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 684 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r79()
    {
        $this->_retvalue =
            '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '://' .
            $this->yystack[$this->yyidx + 0]->minor . '\')';
    }

    #line 689 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r80()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . trim($this->yystack[$this->yyidx + - 1]->minor) .
            $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 703 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r83()
    {
        $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
                                                       array('value' => $this->yystack[$this->yyidx + - 1]->minor,
                                                             'modifierlist' => $this->yystack[$this->yyidx +
                                                             0]->minor));
    }

    #line 709 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r84()
    {
        $this->_retvalue = (isset($this->yystack[$this->yyidx + - 1]->minor['pre']) ?
                $this->yystack[$this->yyidx + - 1]->minor['pre'] : '') . $this->yystack[$this->yyidx + - 2]->minor .
            $this->yystack[$this->yyidx + - 1]->minor['op'] . $this->yystack[$this->yyidx + 0]->minor .
            (isset($this->yystack[$this->yyidx + - 1]->minor['pre']) ? ')' : '');
    }

    #line 712 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r85()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + - 1]->minor . ')';
    }

    #line 716 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r86()
    {
        $this->_retvalue =
            'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor .
            ')';
    }

    #line 720 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r87()
    {
        $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',(array)' .
            $this->yystack[$this->yyidx + 0]->minor . ')';
    }

    #line 724 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r88()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor .
            $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 736 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r90()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 5]->minor . ' ? ' .
            $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 2]->minor, 1) . '\'') .
            ' : ' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 740 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r91()
    {
        $this->_retvalue =
            $this->yystack[$this->yyidx + - 5]->minor . ' ? ' . $this->yystack[$this->yyidx + - 2]->minor . ' : ' .
            $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 755 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r94()
    {
        $this->_retvalue = '!' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 776 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r99()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 780 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r100()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.';
    }

    #line 784 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r101()
    {
        $this->_retvalue = '.' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 789 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r102()
    {
        if (defined($this->yystack[$this->yyidx + 0]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
            }
            $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
        } else {
            $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
        }
    }

    #line 806 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r104()
    {
        $this->_retvalue = "(" . $this->yystack[$this->yyidx + - 1]->minor . ")";
    }

    #line 821 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r107()
    {
        self::$prefix_number ++;
        if ($this->yystack[$this->yyidx + - 2]->minor['var'] == '\'smarty\'') {
            $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
                $this->compiler->compileTag('private_special_variable', array(),
                                            $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index']) . ';?>';
        } else {
            $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' .
                $this->compiler->compileVariable($this->yystack[$this->yyidx + - 2]->minor['var']) .
                $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index'] . ';?>';
        }
        $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[$this->yyidx + 0]->minor[0] .
            $this->yystack[$this->yyidx + 0]->minor[1];
    }

    #line 832 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r108()
    {
        self::$prefix_number ++;
        $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[$this->yyidx + 0]->minor);
        $this->compiler->prefix_code[] =
            $this->compiler->appendCode($tmp, '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>');
        $this->_retvalue = '$_tmp' . self::$prefix_number;
    }

    #line 849 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r111()
    {
        if (!in_array(strtolower($this->yystack[$this->yyidx + - 2]->minor), array('self', 'parent')) &&
            (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + - 2]->minor,
                                                                             $this->yystack[$this->yyidx + 0]->minor,
                                                                             $this->compiler))
        ) {
            if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor])) {
                $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor] . '::' .
                    $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
            } else {
                $this->_retvalue =
                    $this->yystack[$this->yyidx + - 2]->minor . '::' . $this->yystack[$this->yyidx + 0]->minor[0] .
                    $this->yystack[$this->yyidx + 0]->minor[1];
            }
        } else {
            $this->compiler->trigger_template_error("static class '" . $this->yystack[$this->yyidx + - 2]->minor .
                                                    "' is undefined or not allowed by security setting");
        }
    }

    #line 868 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r113()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 879 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r114()
    {
        $this->_retvalue =
            $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'');
    }

    #line 882 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r115()
    {
        if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
            $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
                                                      $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
            $this->_retvalue = $smarty_var;
        } else {
            // used for array reset,next,prev,end,current
            $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
            $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
            $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']) .
                $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
        }
    }

    #line 895 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r116()
    {
        $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[$this->yyidx + - 2]->minor . ']->' .
            $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 905 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r118()
    {
        $this->_retvalue =
            $this->compiler->compileConfigVariable("'" . $this->yystack[$this->yyidx + - 1]->minor . "'");
    }

    #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r119()
    {
        $this->_retvalue = '(is_array($tmp = ' .
            $this->compiler->compileConfigVariable("'" . $this->yystack[$this->yyidx + - 2]->minor . "'") . ') ? $tmp' .
            $this->yystack[$this->yyidx + 0]->minor . ' :null)';
    }

    #line 913 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r120()
    {
        $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + - 1]->minor);
    }

    #line 917 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r121()
    {
        $this->_retvalue =
            '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + - 2]->minor) .
            ') ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' : null)';
    }

    #line 921 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r122()
    {
        $this->_retvalue = array('var' => '\'' . substr($this->yystack[$this->yyidx + - 1]->minor, 1) . '\'',
                                 'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 924 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r123()
    {
        $this->_retvalue = array('var'                   => $this->yystack[$this->yyidx + - 1]->minor,
                                 'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 937 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r125()
    {
        return;
    }

    #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r126()
    {
        $this->_retvalue =
            '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'') .
            ']';
    }

    #line 946 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r127()
    {
        $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor) . ']';
    }

    #line 950 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r128()
    {
        $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + - 2]->minor) . '->' .
            $this->yystack[$this->yyidx + 0]->minor . ']';
    }

    #line 954 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r129()
    {
        if (defined($this->yystack[$this->yyidx + 0]->minor)) {
            if ($this->security) {
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
            }
            $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
        } else {
            $this->_retvalue = "['" . $this->yystack[$this->yyidx + 0]->minor . "']";
        }
    }

    #line 965 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r130()
    {
        $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
    }

    #line 970 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r131()
    {
        $this->_retvalue = '[' . $this->yystack[$this->yyidx + - 1]->minor . ']';
    }

    #line 975 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r132()
    {
        $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
                                                                                       $this->yystack[$this->yyidx +
                                                                                       - 1]->minor . '\'][\'index\']') .
            ']';
    }

    #line 979 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r133()
    {
        $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
                                                                                       $this->yystack[$this->yyidx +
                                                                                       - 3]->minor . '\'][\'' .
                                                                                       $this->yystack[$this->yyidx +
                                                                                       - 1]->minor . '\']') . ']';
    }

    #line 982 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r134()
    {
        $this->_retvalue = '[' . $this->yystack[$this->yyidx + - 1]->minor . ']';
    }

    #line 988 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r136()
    {
        $this->_retvalue =
            '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 1]->minor, 1) . '\'') .
            ']';;
    }

    #line 1004 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r140()
    {
        $this->_retvalue = '[]';
    }

    #line 1014 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r141()
    {
        $this->_retvalue = '\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'';
    }

    #line 1018 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r142()
    {
        $this->_retvalue = "''";
    }

    #line 1023 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r143()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1031 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r145()
    {
        $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
                    ' $');
        $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
    }

    #line 1037 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r146()
    {
        $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
    }

    #line 1044 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r147()
    {
        if ($this->yystack[$this->yyidx + - 1]->minor['var'] == '\'smarty\'') {
            $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
                                                           $this->yystack[$this->yyidx +
                                                           - 1]->minor['smarty_internal_index']) .
                $this->yystack[$this->yyidx + 0]->minor;
        } else {
            $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + - 1]->minor['var']) .
                $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index'] .
                $this->yystack[$this->yyidx + 0]->minor;
        }
    }

    #line 1053 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r148()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1058 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r149()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1063 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r150()
    {
        if ($this->security && substr($this->yystack[$this->yyidx + - 1]->minor, 0, 1) == '_') {
            $this->compiler->trigger_template_error(self::Err1);
        }
        $this->_retvalue = '->' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1070 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r151()
    {
        if ($this->security) {
            $this->compiler->trigger_template_error(self::Err2);
        }
        $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[$this->yyidx + - 1]->minor) .
            $this->yystack[$this->yyidx + 0]->minor . '}';
    }

    #line 1077 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r152()
    {
        if ($this->security) {
            $this->compiler->trigger_template_error(self::Err2);
        }
        $this->_retvalue =
            '->{' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
    }

    #line 1084 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r153()
    {
        if ($this->security) {
            $this->compiler->trigger_template_error(self::Err2);
        }
        $this->_retvalue =
            '->{\'' . $this->yystack[$this->yyidx + - 4]->minor . '\'.' . $this->yystack[$this->yyidx + - 2]->minor .
            $this->yystack[$this->yyidx + 0]->minor . '}';
    }

    #line 1092 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r154()
    {
        $this->_retvalue = '->' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1100 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r155()
    {
        if (!$this->security ||
            $this->security->isTrustedPhpFunction($this->yystack[$this->yyidx + - 3]->minor, $this->compiler)
        ) {
            if (strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'isset') === 0 ||
                strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'empty') === 0 ||
                strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'array') === 0 ||
                is_callable($this->yystack[$this->yyidx + - 3]->minor)
            ) {
                $func_name = strtolower($this->yystack[$this->yyidx + - 3]->minor);
                if ($func_name == 'isset') {
                    if (count($this->yystack[$this->yyidx + - 1]->minor) == 0) {
                        $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
                    }
                    $par = implode(',', $this->yystack[$this->yyidx + - 1]->minor);
                    if (strncasecmp($par, '$_smarty_tpl->smarty->ext->_config->_getConfigVariable',
                                    strlen('$_smarty_tpl->smarty->ext->_config->_getConfigVariable')) === 0
                    ) {
                        self::$prefix_number ++;
                        $this->compiler->prefix_code[] =
                            '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
                        $isset_par = '$_tmp' . self::$prefix_number;
                    } else {
                        $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
                    }
                    $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . $isset_par . ")";
                } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
                    if (count($this->yystack[$this->yyidx + - 1]->minor) != 1) {
                        $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
                    }
                    if ($func_name == 'empty') {
                        $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value",
                                                                          $this->yystack[$this->yyidx +
                                                                          - 1]->minor[0]) . ')';
                    } else {
                        $this->_retvalue = $func_name . '(' . $this->yystack[$this->yyidx + - 1]->minor[0] . ')';
                    }
                } else {
                    $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" .
                        implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")";
                }
            } else {
                $this->compiler->trigger_template_error("unknown function \"" .
                                                        $this->yystack[$this->yyidx + - 3]->minor . "\"");
            }
        }
    }

    #line 1139 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r156()
    {
        if ($this->security && substr($this->yystack[$this->yyidx + - 3]->minor, 0, 1) == '_') {
            $this->compiler->trigger_template_error(self::Err1);
        }
        $this->_retvalue =
            $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) .
            ")";
    }

    #line 1146 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r157()
    {
        if ($this->security) {
            $this->compiler->trigger_template_error(self::Err2);
        }
        self::$prefix_number ++;
        $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' .
            $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + - 3]->minor, 1) . '\'') .
            ';?>';
        $this->_retvalue =
            '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ')';
    }

    #line 1157 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r158()
    {
        $this->_retvalue =
            array_merge($this->yystack[$this->yyidx + - 2]->minor, array($this->yystack[$this->yyidx + 0]->minor));
    }

    #line 1174 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r161()
    {
        $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor,
                                       array(array_merge($this->yystack[$this->yyidx + - 1]->minor,
                                                         $this->yystack[$this->yyidx + 0]->minor)));
    }

    #line 1178 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r162()
    {
        $this->_retvalue =
            array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor));
    }

    #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r164()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
    }

    #line 1194 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r165()
    {
        $this->_retvalue =
            array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 1213 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r169()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
    }

    #line 1218 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r170()
    {
        $this->_retvalue =
            array($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
    }

    #line 1223 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r171()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
    }

    #line 1228 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r172()
    {
        $this->_retvalue =
            array($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
    }

    #line 1233 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r173()
    {
        $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor,
                                 $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor,
                                 'property');
    }

    #line 1239 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r174()
    {
        $this->_retvalue['op'] = ' ' . trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
    }

    #line 1243 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r175()
    {
        static $lops = array('eq'          => array('op' => ' == ', 'pre' => null),
                             'ne'          => array('op' => ' != ', 'pre' => null),
                             'neq'         => array('op' => ' != ', 'pre' => null),
                             'gt'          => array('op' => ' > ', 'pre' => null),
                             'ge'          => array('op' => ' >= ', 'pre' => null),
                             'gte'         => array('op' => ' >= ', 'pre' => null),
                             'lt'          => array('op' => ' < ', 'pre' => null),
                             'le'          => array('op' => ' <= ', 'pre' => null),
                             'lte'         => array('op' => ' <= ', 'pre' => null),
                             'mod'         => array('op' => ' % ', 'pre' => null),
                             'and'         => array('op' => ' && ', 'pre' => null),
                             'or'          => array('op' => ' || ', 'pre' => null),
                             'xor'         => array('op' => ' xor ', 'pre' => null),
                             'isdivby'     => array('op' => ' % ', 'pre' => '!('),
                             'isnotdivby'  => array('op' => ' % ', 'pre' => '('),
                             'isevenby'    => array('op' => ' / ', 'pre' => '!(1 & '),
                             'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
                             'isoddby'     => array('op' => ' / ', 'pre' => '(1 & '),
                             'isnotoddby'  => array('op' => ' / ', 'pre' => '!(1 & '),);
        $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
        $this->_retvalue = $lops[$op];
    }

    #line 1269 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r176()
    {
        static $scond = array('iseven'   => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ',
                              'isnotodd' => '!(1 & ',);
        $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
        $this->_retvalue = $scond[$op];
    }

    #line 1283 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r177()
    {
        $this->_retvalue = 'array(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
    }

    #line 1291 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r179()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1299 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r181()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '=>' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1303 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r182()
    {
        $this->_retvalue =
            '\'' . $this->yystack[$this->yyidx + - 2]->minor . '\'=>' . $this->yystack[$this->yyidx + 0]->minor;
    }

    #line 1319 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r185()
    {
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor->to_smarty_php($this);
    }

    #line 1324 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r186()
    {
        $this->yystack[$this->yyidx + - 1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
        $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
    }

    #line 1329 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r187()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 1333 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r188()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[$this->yyidx + - 1]->minor);
    }

    #line 1341 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r190()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
                                                              substr($this->yystack[$this->yyidx + 0]->minor, 1) .
                                                              '\']->value');
    }

    #line 1349 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r192()
    {
        $this->_retvalue =
            new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[$this->yyidx + - 1]->minor . ')');
    }

    #line 1353 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r193()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor);
    }

    #line 1357 "../smarty/lexer/smarty_internal_templateparser.y"
    function yy_r194()
    {
        $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[$this->yyidx + 0]->minor);
    }

    private $_retvalue;

    public function yy_reduce($yyruleno)
    {
        if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
            fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
                    self::$yyRuleName[$yyruleno]);
        }

        $this->_retvalue = $yy_lefthand_side = null;
        if (isset(self::$yyReduceMap[$yyruleno])) {
            // call the action
            $this->_retvalue = null;
            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
            $yy_lefthand_side = $this->_retvalue;
        }
        $yygoto = self::$yyRuleInfo[$yyruleno][0];
        $yysize = self::$yyRuleInfo[$yyruleno][1];
        $this->yyidx -= $yysize;
        for ($i = $yysize; $i; $i --) {
            // pop all of the right-hand side parameters
            array_pop($this->yystack);
        }
        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
        if ($yyact < self::YYNSTATE) {
            if (!$this->yyTraceFILE && $yysize) {
                $this->yyidx ++;
                $x = new TP_yyStackEntry;
                $x->stateno = $yyact;
                $x->major = $yygoto;
                $x->minor = $yy_lefthand_side;
                $this->yystack[$this->yyidx] = $x;
            } else {
                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
            }
        } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
            $this->yy_accept();
        }
    }

    public function yy_parse_failed()
    {
        if ($this->yyTraceFILE) {
            fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
        }
        while ($this->yyidx >= 0) {
            $this->yy_pop_parser_stack();
        }
    }

    public function yy_syntax_error($yymajor, $TOKEN)
    {
        #line 207 "../smarty/lexer/smarty_internal_templateparser.y"

        $this->internalError = true;
        $this->yymajor = $yymajor;
        $this->compiler->trigger_template_error();
    }

    public function yy_accept()
    {
        if ($this->yyTraceFILE) {
            fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
        }
        while ($this->yyidx >= 0) {
            $this->yy_pop_parser_stack();
        }
        #line 200 "../smarty/lexer/smarty_internal_templateparser.y"

        $this->successful = !$this->internalError;
        $this->internalError = false;
        $this->retvalue = $this->_retvalue;
    }

    public function doParse($yymajor, $yytokenvalue)
    {
        $yyerrorhit = 0;   /* True if yymajor has invoked an error */

        if ($this->yyidx === null || $this->yyidx < 0) {
            $this->yyidx = 0;
            $this->yyerrcnt = - 1;
            $x = new TP_yyStackEntry;
            $x->stateno = 0;
            $x->major = 0;
            $this->yystack = array();
            $this->yystack[] = $x;
        }
        $yyendofinput = ($yymajor == 0);

        if ($this->yyTraceFILE) {
            fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
        }

        do {
            $yyact = $this->yy_find_shift_action($yymajor);
            if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
                // force a syntax error
                $yyact = self::YY_ERROR_ACTION;
            }
            if ($yyact < self::YYNSTATE) {
                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
                $this->yyerrcnt --;
                if ($yyendofinput && $this->yyidx >= 0) {
                    $yymajor = 0;
                } else {
                    $yymajor = self::YYNOCODE;
                }
            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
                $this->yy_reduce($yyact - self::YYNSTATE);
            } elseif ($yyact == self::YY_ERROR_ACTION) {
                if ($this->yyTraceFILE) {
                    fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
                }
                if (self::YYERRORSYMBOL) {
                    if ($this->yyerrcnt < 0) {
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
                    }
                    $yymx = $this->yystack[$this->yyidx]->major;
                    if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
                        if ($this->yyTraceFILE) {
                            fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
                                    $this->yyTokenName[$yymajor]);
                        }
                        $this->yy_destructor($yymajor, $yytokenvalue);
                        $yymajor = self::YYNOCODE;
                    } else {
                        while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
                            ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
                            $this->yy_pop_parser_stack();
                        }
                        if ($this->yyidx < 0 || $yymajor == 0) {
                            $this->yy_destructor($yymajor, $yytokenvalue);
                            $this->yy_parse_failed();
                            $yymajor = self::YYNOCODE;
                        } elseif ($yymx != self::YYERRORSYMBOL) {
                            $u2 = 0;
                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
                        }
                    }
                    $this->yyerrcnt = 3;
                    $yyerrorhit = 1;
                } else {
                    if ($this->yyerrcnt <= 0) {
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
                    }
                    $this->yyerrcnt = 3;
                    $this->yy_destructor($yymajor, $yytokenvalue);
                    if ($yyendofinput) {
                        $this->yy_parse_failed();
                    }
                    $yymajor = self::YYNOCODE;
                }
            } else {
                $this->yy_accept();
                $yymajor = self::YYNOCODE;
            }
        } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
    }
}