diff --git a/README b/README
--- a/README
+++ b/README
@@ -35,6 +35,9 @@
 
 Changes
 
+0.5.0 Rework AST to allow full round-trip parsing and output of
+      JavaScript. Breaks AST compatibility with prior versions
+
 0.4.10 Moved Lexer.x into a separate directory, and made a script to
        call alex to generate Lexer.hs. This means alex is not required
        at install time
diff --git a/dist/build/Language/JavaScript/Parser/Grammar5.hs b/dist/build/Language/JavaScript/Parser/Grammar5.hs
--- a/dist/build/Language/JavaScript/Parser/Grammar5.hs
+++ b/dist/build/Language/JavaScript/Parser/Grammar5.hs
@@ -5,3516 +5,4611 @@
   , parseLiteral
   , parsePrimaryExpression
   , parseStatement
-  ) where
-
-import Control.Monad.Error.Class (throwError)
-import Data.Char
-import Language.JavaScript.Parser.Lexer
-import Language.JavaScript.Parser.ParserMonad
-import Language.JavaScript.Parser.SrcLocation
-import qualified Language.JavaScript.Parser.AST as AST
-import qualified Data.Array as Happy_Data_Array
-import qualified GHC.Exts as Happy_GHC_Exts
-
--- parser produced by Happy Version 1.18.9
-
-newtype HappyAbsSyn  = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn7 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut7 #-}
-happyIn8 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut8 #-}
-happyIn9 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut9 #-}
-happyIn10 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut10 #-}
-happyIn11 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyIn12 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut12 #-}
-happyIn13 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: ([ AST.JSNode ]) -> (HappyAbsSyn )
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> ([ AST.JSNode ])
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: ([[AST.JSNode]]) -> (HappyAbsSyn )
-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn ) -> ([[AST.JSNode]])
-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyIn34 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut34 #-}
-happyIn35 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut35 #-}
-happyIn36 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut36 #-}
-happyIn37 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-happyIn38 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-happyIn39 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-happyIn40 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-happyIn41 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-happyIn42 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-happyIn43 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-happyIn44 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-happyIn45 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-happyIn46 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-happyIn47 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-happyIn48 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-happyIn49 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-happyIn50 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-happyIn51 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-happyIn52 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-happyIn53 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-happyIn54 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-happyIn55 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-happyIn56 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-happyIn57 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-happyIn58 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-happyIn59 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-happyIn60 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-happyIn61 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-happyIn62 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut62 #-}
-happyIn63 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut63 #-}
-happyIn64 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut64 #-}
-happyIn65 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut65 #-}
-happyIn66 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut66 #-}
-happyIn67 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut67 #-}
-happyIn68 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut68 #-}
-happyIn69 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut69 #-}
-happyIn70 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut70 #-}
-happyIn71 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut71 #-}
-happyIn72 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut72 #-}
-happyIn73 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut73 #-}
-happyIn74 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut74 #-}
-happyIn75 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut75 #-}
-happyIn76 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut76 #-}
-happyIn77 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut77 #-}
-happyIn78 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut78 #-}
-happyIn79 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut79 #-}
-happyIn80 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut80 #-}
-happyIn81 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut81 #-}
-happyIn82 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut82 #-}
-happyIn83 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut83 #-}
-happyIn84 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut84 #-}
-happyIn85 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut85 #-}
-happyIn86 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut86 #-}
-happyIn87 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut87 #-}
-happyIn88 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut88 #-}
-happyIn89 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut89 #-}
-happyIn90 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn90 #-}
-happyOut90 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut90 #-}
-happyIn91 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn91 #-}
-happyOut91 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut91 #-}
-happyIn92 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn92 #-}
-happyOut92 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut92 #-}
-happyIn93 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn93 #-}
-happyOut93 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut93 #-}
-happyIn94 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn94 #-}
-happyOut94 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut94 #-}
-happyIn95 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn95 #-}
-happyOut95 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut95 #-}
-happyIn96 :: ([AST.JSNode]) -> (HappyAbsSyn )
-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn96 #-}
-happyOut96 :: (HappyAbsSyn ) -> ([AST.JSNode])
-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut96 #-}
-happyIn97 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn97 #-}
-happyOut97 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut97 #-}
-happyIn98 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn98 #-}
-happyOut98 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut98 #-}
-happyIn99 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn99 #-}
-happyOut99 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut99 #-}
-happyIn100 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn100 #-}
-happyOut100 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut100 #-}
-happyIn101 :: (AST.JSNode) -> (HappyAbsSyn )
-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn101 #-}
-happyOut101 :: (HappyAbsSyn ) -> (AST.JSNode)
-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut101 #-}
-happyInTok :: (Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x2d\x1b\xa4\x02\x9e\x1d\xf6\x1a\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x00\x00\x00\x00\x4f\x01\x00\x00\x49\x01\x1d\x00\xcc\x01\x00\x00\xee\x00\xb9\x01\xe9\x00\xab\x03\x9d\x01\x77\x02\x70\x02\x6b\x02\x6a\x02\x13\x01\x00\x00\x00\x00\x6f\x02\x25\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\xc1\x1c\x16\x18\x66\x1d\x37\x00\x65\x00\x37\x00\x6e\x02\x66\x1d\xf6\x1a\x00\x00\x49\x02\x65\x00\x00\x00\x48\x02\x82\x1d\x00\x00\x64\x1b\x00\x00\x44\x02\x00\x00\x66\x1d\x00\x00\x41\x02\x66\x1d\x65\x00\x66\x1d\x43\x02\x40\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\xf1\x1d\x17\x02\x00\x00\x00\x00\x17\x02\xbf\x1a\x00\x00\x65\x00\x3d\x02\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x00\x00\x00\x00\x51\x02\xca\x01\x00\x00\x00\x00\xfc\xff\x3e\x19\x57\x02\x66\x1d\x00\x00\xc5\x01\x07\x01\x00\x00\x66\x1d\x00\x00\x2f\x1d\x11\x02\x00\x00\x00\x00\x00\x00\x54\x02\xc3\x01\x00\x00\x54\x02\xcb\x00\x4f\x02\x47\x02\x46\x02\x00\x00\x07\x19\xca\x17\xd0\x18\x65\x00\xd0\x18\x99\x18\x66\x1d\x88\x1a\x42\x02\x21\x02\xaf\x00\x20\x02\x82\x1d\x3f\x02\x62\x18\x1d\x02\x3c\x02\x66\x1d\x3a\x02\x12\x02\x66\x1d\x65\x00\x66\x1d\x0e\x02\x0c\x02\x7b\x00\x8a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x00\x00\x00\x00\x66\x1d\x00\x00\x00\x00\x00\x00\x19\x1e\x66\x1d\xf8\x1c\x00\x00\x19\x1e\x66\x1d\x88\x1a\x00\x00\x2b\x00\x00\x00\x7d\x17\x2e\x17\xca\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\xee\x00\xa4\x01\xa4\x01\xa4\x01\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xab\x03\xab\x03\xab\x03\xab\x03\x9d\x01\x26\x02\x22\x02\x24\x02\x23\x02\x1f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x53\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x01\x02\x06\x00\xe9\x00\x39\x03\x7a\x01\x1b\x02\x1a\x02\x13\x02\x15\x02\x0c\x01\x00\x00\x00\x00\x14\x02\x10\x02\x65\x00\xc6\x00\x00\x00\x00\x00\xb6\x00\xdf\x16\x00\x00\xfc\xff\x00\x00\x00\x00\xf1\x01\xf2\x01\x00\x00\x00\x00\x66\x1d\xa9\x00\xa1\x00\xef\x01\xee\x01\x66\x1d\xc8\x1d\x00\x00\xb8\x00\x74\x00\x00\x00\x8e\x00\xed\x01\x69\x00\xec\x01\x00\x00\x00\x00\x00\x00\xe4\x01\x65\x00\x88\x1a\x88\x1a\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x51\x1a\xfe\x01\xaf\x01\xce\x01\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x00\x00\x1c\x1c\x00\x00\x00\x00\x66\x1d\x00\x00\x66\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x14\x00\x1d\x00\x00\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xab\x03\xab\x03\xab\x03\xab\x03\x7a\x01\xff\x01\xfd\x01\xfa\x01\xf7\x01\xfb\x01\x00\x00\xf9\x01\xf8\x01\x66\x1d\x66\x1d\x65\x00\x00\x00\x66\x1d\xf6\x01\xbc\x01\x00\x00\x00\x00\xcd\x01\x75\x00\x00\x00\xe6\x01\x00\x00\xc0\x01\xcb\x01\x1a\x1a\x65\x00\xc6\x01\x1a\x1a\xc4\x01\x1a\x1a\xb1\x01\x1a\x1a\x00\x00\x1a\x1a\x00\x00\xaa\x01\x1a\x1a\xbe\x01\x00\x00\xb4\x01\x66\x1d\xe8\x00\x00\x00\x66\x1d\x00\x00\xe3\x19\x00\x00\x00\x00\x00\x00\xab\x01\x0e\x00\x66\x1d\x66\x1d\xe3\x19\xa0\x01\x00\x00\x00\x00\x00\x00\x80\x01\xe3\x19\x66\x1d\x00\x00\x2e\x00\x00\x00\x7b\x01\x00\x00\x99\x01\x5d\x01\x00\x00\xac\x19\x7c\x01\x00\x00\x78\x01\x00\x00\x00\x00\x76\x01\x00\x00\x00\x00\x00\x00\x74\x01\x56\x01\x75\x19\xd1\x00\x75\x19\x51\x01\x00\x00\x75\x19\x00\x00\x75\x19\x75\x19\x00\x00\x75\x19\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x35\x02\xb2\x01\xcc\x17\x48\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x4a\x01\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x16\x9c\x16\x80\x16\x61\x16\x45\x16\x29\x16\xf4\x0a\x81\x03\xc7\x0d\xe1\x00\x8f\x00\xdf\x00\x47\x01\x0a\x16\xf1\x08\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\xd7\x16\x00\x00\x50\x03\x00\x00\x00\x00\x00\x00\x96\x0d\x00\x00\x0e\x01\xee\x15\x51\x00\xd2\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x09\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x0d\x34\x0d\x00\x00\x00\x00\x05\x01\x41\x01\x00\x00\x00\x00\x06\x01\x86\x04\x00\x00\x03\x0d\x00\x00\x3f\x01\x28\x01\x00\x00\xd2\x0c\x00\x00\xc1\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x01\x39\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x08\x00\x00\xb2\x00\x4d\x00\x96\x00\x24\x01\xb3\x15\x43\x08\x00\x00\x00\x00\x02\x00\x00\x00\xd7\x16\x00\x00\x50\x03\x00\x00\x00\x00\xa1\x0c\x00\x00\xe3\x00\x97\x15\x47\x00\x7b\x15\x00\x00\x00\x00\x00\x00\x48\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x10\xee\x0f\xcc\x10\x23\x11\x7a\x11\xc8\x11\x0e\x12\x12\x13\xf0\x12\xd1\x12\xaf\x12\x76\x14\x57\x14\x35\x14\x16\x14\xf4\x13\xd5\x13\xcd\x14\xae\x14\x92\x14\x05\x15\xe9\x14\x5c\x15\x40\x15\x24\x15\x00\x00\x00\x00\xc1\x0f\x00\x00\x00\x00\x00\x00\x86\x01\x70\x0c\x43\x0c\x00\x00\x5e\x01\x12\x0c\xec\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x07\x00\x00\x36\x01\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x94\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x67\x0f\xde\x16\x00\x00\x0f\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x3e\x07\xe7\x06\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x87\x00\x9f\x09\x78\x00\x00\x00\x00\x00\x8f\x0a\x38\x0f\x0a\x0f\xa0\x10\xf7\x10\x4e\x11\xa5\x11\xeb\x11\x90\x12\x6e\x12\x4f\x12\x2d\x12\xb3\x13\x94\x13\x72\x13\x53\x13\x31\x13\xdc\x0e\xb4\x0b\x83\x0b\x00\x00\xae\x0e\x00\x00\x00\x00\x81\x0e\x00\x00\x54\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x0b\x5c\x0a\x07\x00\x00\x00\x25\x0e\x00\x00\x0a\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x34\x00\x00\x00\x79\x01\x00\x00\x1b\x01\x00\x00\x93\x02\x00\x00\xbd\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x08\x00\x75\x10\xdc\x00\x00\x00\x21\x0b\x00\x00\x90\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0a\xf7\x0d\x39\x06\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x05\xf6\x09\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x2f\x04\xb4\xff\xd8\x03\x00\x00\x00\x00\x8b\x05\x00\x00\x34\x05\xdd\x04\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xeb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xaa\xff\xec\xff\xea\xff\xe9\xff\xa5\xff\x9b\xff\x9a\xff\x99\xff\x96\xff\x8c\xff\x86\xff\x82\xff\x81\xff\x74\xff\x6a\xff\x66\xff\x62\xff\x5e\xff\x5a\xff\x56\xff\x52\xff\x4c\xff\x21\xff\x00\x00\x44\xff\x42\xff\x41\xff\x43\xff\x40\xff\x3f\xff\x3e\xff\x3d\xff\x3c\xff\x3b\xff\x3a\xff\x38\xff\x39\xff\x37\xff\x36\xff\x35\xff\xa9\xff\x22\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xf2\xff\x00\x00\xf3\xfe\xe6\xff\x00\x00\x00\x00\xf4\xff\xfa\xff\xe5\xff\x00\x00\xed\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\x00\x00\xec\xff\x00\x00\x00\x00\xe9\xfe\xe8\xfe\x00\x00\xee\xfe\xeb\xfe\xf3\xfe\x00\x00\x00\x00\xea\xfe\xac\xff\xad\xff\xe4\xff\xae\xff\x00\x00\xb3\xff\x00\x00\xb6\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xe6\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xe5\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\x00\x00\x00\x00\x99\xff\x94\xff\x28\xff\xfa\xff\x2c\xff\x93\xff\x00\x00\x00\x00\x02\xff\x00\x00\x10\xff\xfa\xff\xa5\xff\xa4\xff\x00\x00\xf4\xfe\x45\xff\x00\x00\x95\xff\xf9\xfe\x14\xff\xfa\xff\xfa\xff\x12\xff\xfa\xff\x00\x00\xf7\xff\xf6\xff\xec\xff\x30\xff\x00\x00\xb6\xff\xe3\xff\xe0\xff\xdf\xff\xde\xff\xdc\xff\xdb\xff\xf2\xff\xd6\xff\xd5\xff\xd3\xff\xd0\xff\xf4\xff\xce\xff\xcc\xff\xed\xff\xca\xff\xf3\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\x00\x00\x00\x00\xbb\xff\xb8\xff\xc1\xff\x8e\xff\x8d\xff\x8f\xff\x90\xff\x91\xff\x92\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\x97\xff\x00\x00\x4d\xff\x4e\xff\xa2\xff\x00\x00\x00\x00\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x03\xff\x00\x00\xa7\xff\xd4\xff\xcd\xff\x00\x00\x9d\xff\x9f\xff\x00\x00\xa0\xff\x51\xff\x89\xff\x8a\xff\x8b\xff\x87\xff\x88\xff\x84\xff\x83\xff\x85\xff\x7c\xff\x7b\xff\x7f\xff\x7d\xff\x80\xff\x7e\xff\x72\xff\x70\xff\x73\xff\x71\xff\x69\xff\x65\xff\x61\xff\x5d\xff\x59\xff\x00\x00\x4b\xff\xbc\xff\xb7\xff\xc0\xff\x00\x00\xbf\xff\x2f\xff\x33\xff\xe8\xff\x11\xff\x2d\xff\x00\x00\x13\xff\x00\x00\x99\xff\x7a\xff\x6f\xff\x68\xff\x64\xff\x60\xff\x5c\xff\x58\xff\x54\xff\x50\xff\x4a\xff\x46\xff\x00\x00\x00\x00\x00\x00\xa6\xff\x0f\xff\x00\x00\x00\x00\x32\xff\x01\xff\xfe\xfe\x00\xff\x00\x00\x00\x00\x2e\xff\x27\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\xf2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\xb4\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\xfa\xfe\x00\x00\xfd\xfe\xff\xfe\x31\xff\x00\x00\x00\x00\x25\xff\x00\x00\x2a\xff\x47\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\xff\x00\x00\xb9\xff\xbd\xff\x00\x00\xa1\xff\x00\x00\x9e\xff\xa8\xff\x9c\xff\x55\xff\xba\xff\xbe\xff\x00\x00\x00\x00\x99\xff\x4f\xff\x75\xff\x78\xff\x76\xff\x79\xff\x77\xff\x6d\xff\x6b\xff\x6e\xff\x6c\xff\x67\xff\x63\xff\x5f\xff\x5b\xff\x57\xff\x00\x00\x49\xff\x48\xff\x00\x00\x00\x00\x47\xff\x00\x00\x26\xff\x00\x00\x1c\xff\x1e\xff\x1b\xff\x0d\xff\x08\xff\x00\x00\x19\xff\xfa\xff\xab\xff\x00\x00\x00\x00\xef\xfe\x00\x00\x00\x00\xef\xfe\x00\x00\xef\xfe\x00\x00\xf0\xfe\xed\xfe\xef\xfe\xf1\xfe\x00\x00\xef\xfe\x00\x00\x0e\xff\x00\x00\x00\x00\x00\x00\x0a\xff\x00\x00\x20\xff\x00\x00\x1d\xff\x23\xff\x29\xff\x00\x00\x00\x00\x47\xff\x00\x00\x00\x00\xfa\xff\x1a\xff\x16\xff\x53\xff\x00\x00\x00\x00\x47\xff\x1f\xff\x00\x00\x09\xff\x08\xff\x0c\xff\x00\x00\x00\x00\xfc\xfe\xef\xfe\x00\x00\xf6\xfe\x00\x00\xec\xfe\xf7\xfe\x00\x00\xf8\xfe\xf5\xfe\xb0\xff\x00\x00\x00\x00\x05\xff\x00\x00\x06\xff\x00\x00\x15\xff\x00\x00\x18\xff\x00\x00\x07\xff\x0b\xff\x04\xff\xfb\xfe\xaf\xff\x17\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x4d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x08\x00\x0a\x00\x08\x00\x08\x00\x0d\x00\x08\x00\x02\x00\x08\x00\x0c\x00\x12\x00\x13\x00\x14\x00\x02\x00\x08\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x08\x00\x1f\x00\x02\x00\x21\x00\x37\x00\x23\x00\x29\x00\x25\x00\x00\x00\x27\x00\x0c\x00\x29\x00\x02\x00\x2b\x00\x02\x00\x2d\x00\x33\x00\x02\x00\x30\x00\x04\x00\x25\x00\x08\x00\x34\x00\x35\x00\x36\x00\x01\x00\x25\x00\x39\x00\x08\x00\x08\x00\x11\x00\x38\x00\x37\x00\x21\x00\x40\x00\x41\x00\x42\x00\x3d\x00\x3c\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x21\x00\x43\x00\x25\x00\x08\x00\x4f\x00\x50\x00\x51\x00\x4d\x00\x02\x00\x08\x00\x55\x00\x56\x00\x57\x00\x08\x00\x58\x00\x5a\x00\x58\x00\x5c\x00\x59\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x59\x00\x0a\x00\x4d\x00\x02\x00\x0d\x00\x36\x00\x3b\x00\x58\x00\x3d\x00\x12\x00\x13\x00\x14\x00\x3d\x00\x23\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x02\x00\x1f\x00\x48\x00\x21\x00\x3a\x00\x23\x00\x3c\x00\x25\x00\x00\x00\x27\x00\x3a\x00\x29\x00\x3c\x00\x2b\x00\x3a\x00\x2d\x00\x3c\x00\x25\x00\x30\x00\x02\x00\x4c\x00\x4d\x00\x34\x00\x35\x00\x36\x00\x00\x00\x08\x00\x39\x00\x25\x00\x25\x00\x36\x00\x21\x00\x2f\x00\x08\x00\x40\x00\x41\x00\x42\x00\x3d\x00\x02\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x02\x00\x37\x00\x48\x00\x4f\x00\x50\x00\x51\x00\x3d\x00\x00\x00\x25\x00\x55\x00\x56\x00\x57\x00\x3f\x00\x02\x00\x5a\x00\x08\x00\x5c\x00\x48\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x25\x00\x0a\x00\x02\x00\x3a\x00\x0d\x00\x3c\x00\x02\x00\x02\x00\x25\x00\x12\x00\x13\x00\x14\x00\x4b\x00\x24\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x25\x00\x1f\x00\x25\x00\x21\x00\x00\x00\x23\x00\x00\x00\x25\x00\x08\x00\x27\x00\x36\x00\x29\x00\x08\x00\x2b\x00\x08\x00\x2d\x00\x25\x00\x3d\x00\x30\x00\x36\x00\x25\x00\x25\x00\x34\x00\x35\x00\x36\x00\x23\x00\x3d\x00\x39\x00\x48\x00\x0f\x00\x28\x00\x37\x00\x12\x00\x13\x00\x40\x00\x41\x00\x42\x00\x48\x00\x2f\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x1a\x00\x1b\x00\x1c\x00\x23\x00\x4f\x00\x50\x00\x51\x00\x03\x00\x28\x00\x05\x00\x55\x00\x56\x00\x57\x00\x2d\x00\x03\x00\x5a\x00\x05\x00\x5c\x00\x37\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x0a\x00\x1f\x00\x20\x00\x0d\x00\x4d\x00\x4e\x00\x24\x00\x00\x00\x12\x00\x13\x00\x14\x00\x4c\x00\x4d\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x1f\x00\x00\x00\x21\x00\x15\x00\x23\x00\x00\x00\x25\x00\x00\x00\x27\x00\x3e\x00\x29\x00\x37\x00\x2b\x00\x00\x00\x2d\x00\x04\x00\x05\x00\x30\x00\x2f\x00\x08\x00\x09\x00\x34\x00\x35\x00\x36\x00\x04\x00\x05\x00\x39\x00\x10\x00\x08\x00\x09\x00\x52\x00\x53\x00\x54\x00\x40\x00\x41\x00\x42\x00\x10\x00\x15\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x08\x00\x09\x00\x1f\x00\x20\x00\x4f\x00\x50\x00\x51\x00\x24\x00\x1f\x00\x20\x00\x55\x00\x56\x00\x57\x00\x24\x00\x15\x00\x5a\x00\x25\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x25\x00\x0a\x00\x0a\x00\x0b\x00\x0d\x00\x0d\x00\x0e\x00\x53\x00\x54\x00\x12\x00\x13\x00\x14\x00\x08\x00\x09\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x23\x00\x1f\x00\x23\x00\x21\x00\x23\x00\x23\x00\x04\x00\x25\x00\x23\x00\x27\x00\x01\x00\x29\x00\x28\x00\x2b\x00\x25\x00\x2d\x00\x0a\x00\x0b\x00\x30\x00\x0d\x00\x0e\x00\x01\x00\x34\x00\x35\x00\x36\x00\x01\x00\x02\x00\x39\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x40\x00\x41\x00\x42\x00\x18\x00\x19\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x01\x00\x02\x00\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x01\x00\x02\x00\x23\x00\x55\x00\x56\x00\x57\x00\x18\x00\x19\x00\x5a\x00\x23\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x22\x00\x0a\x00\x16\x00\x17\x00\x0d\x00\x25\x00\x22\x00\x01\x00\x22\x00\x12\x00\x13\x00\x14\x00\x30\x00\x22\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x28\x00\x1f\x00\x01\x00\x21\x00\x01\x00\x23\x00\x02\x00\x25\x00\x06\x00\x27\x00\x04\x00\x29\x00\x07\x00\x2b\x00\x22\x00\x2d\x00\x08\x00\x38\x00\x30\x00\x09\x00\x25\x00\x0c\x00\x34\x00\x35\x00\x36\x00\x22\x00\x22\x00\x39\x00\x01\x00\x24\x00\x24\x00\x22\x00\x24\x00\x02\x00\x40\x00\x41\x00\x42\x00\x07\x00\x06\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x08\x00\x04\x00\x09\x00\x24\x00\x4f\x00\x50\x00\x51\x00\x06\x00\x08\x00\x07\x00\x55\x00\x56\x00\x57\x00\x09\x00\x24\x00\x5a\x00\x24\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x04\x00\x0a\x00\x04\x00\x24\x00\x0d\x00\x04\x00\x24\x00\x24\x00\x04\x00\x12\x00\x13\x00\x14\x00\x04\x00\x04\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x04\x00\x1f\x00\x01\x00\x21\x00\x46\x00\x23\x00\x02\x00\x25\x00\x24\x00\x27\x00\x0c\x00\x29\x00\x04\x00\x2b\x00\x24\x00\x2d\x00\x22\x00\x24\x00\x30\x00\x4f\x00\x24\x00\x24\x00\x34\x00\x35\x00\x36\x00\x24\x00\x24\x00\x39\x00\x01\x00\x06\x00\x02\x00\x07\x00\x01\x00\x4f\x00\x40\x00\x41\x00\x42\x00\x08\x00\x04\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x09\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\x32\x00\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x41\x00\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\x49\x00\x4a\x00\x4b\x00\x4c\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x5e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\x39\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x38\x00\x39\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\x04\x00\x05\x00\x35\x00\x36\x00\x08\x00\x09\x00\x39\x00\xff\xff\xff\xff\xff\xff\x0e\x00\x0f\x00\x10\x00\xff\xff\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x57\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\x57\x00\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x57\x00\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x57\x00\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x57\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\x57\x00\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\x57\x00\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\x57\x00\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x01\x00\x0a\x00\x04\x00\x05\x00\x0d\x00\xff\xff\x08\x00\x09\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x57\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x01\x00\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x04\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x02\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x23\x00\xff\xff\x4e\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\xd9\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa5\x00\x0e\x00\x67\x00\x54\x01\x0f\x00\x68\x01\xd9\x00\x98\x00\xf5\x00\x10\x00\x11\x00\x12\x00\xd9\x00\x54\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xa5\x00\x1a\x00\xd9\x00\x1b\x00\xf6\x01\x1c\x00\x47\x01\x1d\x00\xd1\x01\x1e\x00\xf5\x00\x1f\x00\xd9\x00\x20\x00\xd9\x00\x21\x00\x48\x01\xd9\x00\x22\x00\xee\x01\xd6\x01\xaf\x01\x61\x00\x24\x00\x25\x00\x06\x00\xd0\x01\x26\x00\x68\x01\xbc\x01\xb0\x01\x7e\x01\xde\x01\x85\x01\x27\x00\x28\x00\x29\x00\xca\x01\x7f\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x88\x01\xc6\x01\xd1\x01\x98\x00\x30\x00\x31\x00\x32\x00\xf6\x00\x51\x01\x98\x00\x33\x00\x62\x00\x34\x00\x98\x00\x68\x00\xe9\x01\x68\x00\xb9\x01\x55\x01\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x57\x01\x0e\x00\xf6\x00\xb4\x01\x0f\x00\x49\x00\x69\x01\x68\x00\x6a\x01\x10\x00\x11\x00\x12\x00\x4e\x00\x52\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x26\x01\x1a\x00\x59\x00\x1b\x00\x99\x00\x1c\x00\x9a\x00\x1d\x00\xc0\x01\x1e\x00\xac\x00\x1f\x00\x9a\x00\x20\x00\x99\x00\x21\x00\x9a\x00\xb5\x01\x22\x00\xb4\x01\xec\x01\xc4\x01\x61\x00\x24\x00\x25\x00\xaa\x00\x98\x00\x26\x00\x57\x01\xc2\x01\x49\x00\x27\x01\x7c\x01\xab\x00\x27\x00\x28\x00\x29\x00\x4e\x00\xd9\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x49\x00\xd9\x00\xc3\x01\x59\x00\x30\x00\x31\x00\x32\x00\x4e\x00\xad\x00\xb7\x01\x33\x00\x62\x00\x34\x00\xa5\x01\xd9\x00\xe0\x01\xae\x00\xb9\x01\x59\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5f\x01\x0e\x00\xd9\x00\xac\x00\x0f\x00\x9a\x00\x86\x01\xd9\x00\x60\x01\x10\x00\x11\x00\x12\x00\xaa\x01\xf3\xfe\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x67\x01\x1a\x00\x59\x01\x1b\x00\xaa\x00\x1c\x00\xad\x00\x1d\x00\xac\x01\x1e\x00\x49\x00\x1f\x00\xab\x00\x20\x00\xae\x00\x21\x00\x68\x01\x4e\x00\x22\x00\x49\x00\x87\x01\x2a\x01\x61\x00\x24\x00\x25\x00\xf5\x01\x4e\x00\x26\x00\x59\x00\xea\x00\xc6\x01\x61\x01\xeb\x00\xec\x00\x27\x00\x28\x00\x29\x00\x59\x00\x7c\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xef\x00\xf0\x00\xf1\x00\xdc\x01\x30\x00\x31\x00\x32\x00\x6e\x01\xc6\x01\x6f\x01\x33\x00\x62\x00\x34\x00\xdd\x01\xda\x00\xe2\x01\xdb\x00\xb9\x01\x9c\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa9\x00\x0e\x00\xfc\x00\xfd\x00\x0f\x00\xd9\x01\xda\x01\xfa\x00\x2a\x01\x10\x00\x11\x00\x12\x00\xc3\x01\xc4\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x2b\x01\x1a\x00\x2d\x01\x1b\x00\x3e\x01\x1c\x00\x3f\x01\x1d\x00\x48\x01\x1e\x00\x49\x01\x1f\x00\x9c\x00\x20\x00\xa9\x00\x21\x00\x6a\x00\x6b\x00\x22\x00\xf3\x00\x6c\x00\x6d\x00\x61\x00\x24\x00\x25\x00\x6a\x00\x6b\x00\x26\x00\x4d\x01\x6c\x00\x6d\x00\x43\x01\x44\x01\x45\x01\x27\x00\x28\x00\x29\x00\x4e\x01\xf6\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x6c\x00\x00\x01\xf8\x00\xf9\x00\x30\x00\x31\x00\x32\x00\xfa\x00\xfc\x00\xfd\x00\x33\x00\x62\x00\x34\x00\xfa\x00\xfa\x00\xe5\x01\xf3\x01\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xeb\x01\x0e\x00\x74\x01\x75\x01\x0f\x00\x76\x01\x77\x01\x63\x01\x64\x01\x10\x00\x11\x00\x12\x00\x6c\x00\x07\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xf8\x01\x1a\x00\xe7\x01\x1b\x00\xe8\x01\x1c\x00\xec\x01\x1d\x00\xe9\x01\x1e\x00\x06\x00\x1f\x00\xc6\x01\x20\x00\xf1\x01\x21\x00\xe0\x00\xe1\x00\x22\x00\xe2\x00\xe3\x00\xd7\x01\x61\x00\x24\x00\x25\x00\xa4\x01\xa5\x01\x26\x00\x60\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x27\x00\x28\x00\x29\x00\xed\x00\xee\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x2d\x01\x06\x00\xd9\x00\x30\x00\x31\x00\x32\x00\x06\x00\x2d\x01\xe2\x01\x33\x00\x62\x00\x34\x00\xed\x00\xee\x00\xb8\x01\xe5\x01\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xe0\x01\x0e\x00\xf2\x00\xf3\x00\x0f\x00\xc0\x01\xb8\x01\x06\x00\xbc\x01\x10\x00\x11\x00\x12\x00\xc8\x01\xbf\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xc6\x01\x1a\x00\xc9\x01\x1b\x00\xce\x01\x1c\x00\xd9\x00\x1d\x00\x70\x01\x1e\x00\xcf\x01\x1f\x00\x71\x01\x20\x00\xac\x01\x21\x00\x72\x01\xa3\x01\x22\x00\x73\x01\xb2\x01\xa7\x01\x61\x00\x24\x00\x25\x00\xb3\x01\xb6\x01\x26\x00\x6c\x01\x5d\x01\x5e\x01\x9e\x00\x63\x01\x6d\x01\x27\x00\x28\x00\x29\x00\x71\x01\x70\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x72\x01\x84\x01\x73\x01\x7f\x01\x30\x00\x31\x00\x32\x00\xdc\x00\xde\x00\xdd\x00\x33\x00\x62\x00\x34\x00\xdf\x00\x95\x00\xbd\x01\x96\x00\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xc9\xff\x0e\x00\xcb\xff\xa0\x00\x0f\x00\xcf\xff\xa5\x00\xa7\x00\xd8\xff\x10\x00\x11\x00\x12\x00\xfe\x00\xad\xff\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xac\xff\x1a\x00\x06\x00\x1b\x00\x2f\x01\x1c\x00\xd9\x00\x1d\x00\x53\x01\x1e\x00\x4b\x01\x1f\x00\x50\x01\x20\x00\x54\x01\x21\x00\x9e\x00\x95\x00\x22\x00\xff\xff\x96\x00\xa0\x00\x61\x00\x24\x00\x25\x00\xa5\x00\xa7\x00\x26\x00\x06\x00\xdc\x00\xd9\x00\xdd\x00\x06\x00\xff\xff\x27\x00\x28\x00\x29\x00\xde\x00\xfe\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x64\x00\x65\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x61\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x46\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x52\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x00\x00\x00\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xe3\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x61\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x78\x01\x79\x01\x00\x00\x00\x00\x7a\x01\x7b\x01\x69\x00\xa0\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x7c\x01\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x06\x00\x07\x00\x08\x00\xb0\x00\xb1\x00\x0b\x00\x0c\x00\xb2\x00\x6d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xb4\x00\x26\x00\xe4\x00\xe5\x00\x00\x00\x00\x00\xe6\x00\xe7\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\xe8\x00\xe9\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xf3\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xf5\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\x41\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xf1\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xef\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xad\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xae\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x6a\x00\x6b\x00\xa7\x01\x25\x00\x6c\x00\x6d\x00\x26\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x28\x00\x29\x00\x00\x00\xa8\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xee\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xd4\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xcb\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xa1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x2f\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x34\x00\x35\x01\x00\x00\x36\x01\x00\x00\x37\x01\x00\x00\x38\x01\x00\x00\x39\x01\x00\x00\x00\x00\x3a\x01\x00\x00\x3b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\xcd\x00\xce\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\xcf\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x80\x01\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x81\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xff\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x03\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x04\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x06\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x3d\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x40\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x4b\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xaf\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x34\x00\x36\x01\x00\x00\x37\x01\x00\x00\x38\x01\x00\x00\xd3\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\xc9\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x34\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x88\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x89\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x8a\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x8f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x9e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x9f\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x34\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x5b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x60\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x08\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x20\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x22\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\xdd\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x9a\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x34\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x34\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x95\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x96\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x97\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x98\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x18\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1a\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x91\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x92\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x93\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x94\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x11\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x13\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x15\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x16\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x0e\x01\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x10\x01\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x0c\x01\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x09\x01\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x0a\x01\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x97\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x9b\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x97\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x9b\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd2\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd3\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd5\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd6\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x36\x00\x0e\x00\x6a\x00\x6b\x00\x0f\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x59\x01\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x66\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x34\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x34\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\xcd\xff\x00\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\x00\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x00\x00\xd4\xff\xd4\xff\x00\x00\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x00\x00\xd4\xff\x00\x00\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x34\xff\xd4\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x5d\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x00\x00\x34\xff\x34\xff\x00\x00\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x34\xff\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x36\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\xb6\x00\x3f\x00\x00\x00\x00\x00\xb7\x00\x74\x00\x75\x00\xb8\x00\xb9\x00\xba\x00\x79\x00\xbb\x00\xbc\x00\x7c\x00\x7d\x00\xbd\x00\x7f\x00\xbe\x00\xbf\x00\x82\x00\xc0\x00\x84\x00\x85\x00\xc1\x00\xc2\x00\xc3\x00\x89\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x06\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\xfa\xff\x3f\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x44\x00\xfa\xff\x00\x00\x00\x00\x46\x00\x00\x00\xfa\xff\x48\x00\x49\x00\xfa\xff\x06\x00\x00\x00\x4b\x00\x4c\x00\xfa\xff\x4e\x00\xfa\xff\x50\x00\xfa\xff\x52\x00\xfa\xff\x54\x00\xfa\xff\x56\x00\xfa\xff\xfa\xff\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x06\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\x49\x00\xfa\xff\x36\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x4e\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x59\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x29\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x43\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\xaa\x01\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x06\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xd4\xff\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x24\x01\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x8c\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\xd1\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x83\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x24\x01\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x25\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\xd1\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\xd2\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x3d\x01\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x3d\x00\x4e\x00\x60\x00\x50\x00\x3f\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x3d\x00\x4e\x00\x60\x00\x50\x00\x3f\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x72\x00\x00\x00\x94\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x94\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyReduceArr = Happy_Data_Array.array (4, 279) [
-	(4 , happyReduce_4),
-	(5 , happyReduce_5),
-	(6 , happyReduce_6),
-	(7 , happyReduce_7),
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18),
-	(19 , happyReduce_19),
-	(20 , happyReduce_20),
-	(21 , happyReduce_21),
-	(22 , happyReduce_22),
-	(23 , happyReduce_23),
-	(24 , happyReduce_24),
-	(25 , happyReduce_25),
-	(26 , happyReduce_26),
-	(27 , happyReduce_27),
-	(28 , happyReduce_28),
-	(29 , happyReduce_29),
-	(30 , happyReduce_30),
-	(31 , happyReduce_31),
-	(32 , happyReduce_32),
-	(33 , happyReduce_33),
-	(34 , happyReduce_34),
-	(35 , happyReduce_35),
-	(36 , happyReduce_36),
-	(37 , happyReduce_37),
-	(38 , happyReduce_38),
-	(39 , happyReduce_39),
-	(40 , happyReduce_40),
-	(41 , happyReduce_41),
-	(42 , happyReduce_42),
-	(43 , happyReduce_43),
-	(44 , happyReduce_44),
-	(45 , happyReduce_45),
-	(46 , happyReduce_46),
-	(47 , happyReduce_47),
-	(48 , happyReduce_48),
-	(49 , happyReduce_49),
-	(50 , happyReduce_50),
-	(51 , happyReduce_51),
-	(52 , happyReduce_52),
-	(53 , happyReduce_53),
-	(54 , happyReduce_54),
-	(55 , happyReduce_55),
-	(56 , happyReduce_56),
-	(57 , happyReduce_57),
-	(58 , happyReduce_58),
-	(59 , happyReduce_59),
-	(60 , happyReduce_60),
-	(61 , happyReduce_61),
-	(62 , happyReduce_62),
-	(63 , happyReduce_63),
-	(64 , happyReduce_64),
-	(65 , happyReduce_65),
-	(66 , happyReduce_66),
-	(67 , happyReduce_67),
-	(68 , happyReduce_68),
-	(69 , happyReduce_69),
-	(70 , happyReduce_70),
-	(71 , happyReduce_71),
-	(72 , happyReduce_72),
-	(73 , happyReduce_73),
-	(74 , happyReduce_74),
-	(75 , happyReduce_75),
-	(76 , happyReduce_76),
-	(77 , happyReduce_77),
-	(78 , happyReduce_78),
-	(79 , happyReduce_79),
-	(80 , happyReduce_80),
-	(81 , happyReduce_81),
-	(82 , happyReduce_82),
-	(83 , happyReduce_83),
-	(84 , happyReduce_84),
-	(85 , happyReduce_85),
-	(86 , happyReduce_86),
-	(87 , happyReduce_87),
-	(88 , happyReduce_88),
-	(89 , happyReduce_89),
-	(90 , happyReduce_90),
-	(91 , happyReduce_91),
-	(92 , happyReduce_92),
-	(93 , happyReduce_93),
-	(94 , happyReduce_94),
-	(95 , happyReduce_95),
-	(96 , happyReduce_96),
-	(97 , happyReduce_97),
-	(98 , happyReduce_98),
-	(99 , happyReduce_99),
-	(100 , happyReduce_100),
-	(101 , happyReduce_101),
-	(102 , happyReduce_102),
-	(103 , happyReduce_103),
-	(104 , happyReduce_104),
-	(105 , happyReduce_105),
-	(106 , happyReduce_106),
-	(107 , happyReduce_107),
-	(108 , happyReduce_108),
-	(109 , happyReduce_109),
-	(110 , happyReduce_110),
-	(111 , happyReduce_111),
-	(112 , happyReduce_112),
-	(113 , happyReduce_113),
-	(114 , happyReduce_114),
-	(115 , happyReduce_115),
-	(116 , happyReduce_116),
-	(117 , happyReduce_117),
-	(118 , happyReduce_118),
-	(119 , happyReduce_119),
-	(120 , happyReduce_120),
-	(121 , happyReduce_121),
-	(122 , happyReduce_122),
-	(123 , happyReduce_123),
-	(124 , happyReduce_124),
-	(125 , happyReduce_125),
-	(126 , happyReduce_126),
-	(127 , happyReduce_127),
-	(128 , happyReduce_128),
-	(129 , happyReduce_129),
-	(130 , happyReduce_130),
-	(131 , happyReduce_131),
-	(132 , happyReduce_132),
-	(133 , happyReduce_133),
-	(134 , happyReduce_134),
-	(135 , happyReduce_135),
-	(136 , happyReduce_136),
-	(137 , happyReduce_137),
-	(138 , happyReduce_138),
-	(139 , happyReduce_139),
-	(140 , happyReduce_140),
-	(141 , happyReduce_141),
-	(142 , happyReduce_142),
-	(143 , happyReduce_143),
-	(144 , happyReduce_144),
-	(145 , happyReduce_145),
-	(146 , happyReduce_146),
-	(147 , happyReduce_147),
-	(148 , happyReduce_148),
-	(149 , happyReduce_149),
-	(150 , happyReduce_150),
-	(151 , happyReduce_151),
-	(152 , happyReduce_152),
-	(153 , happyReduce_153),
-	(154 , happyReduce_154),
-	(155 , happyReduce_155),
-	(156 , happyReduce_156),
-	(157 , happyReduce_157),
-	(158 , happyReduce_158),
-	(159 , happyReduce_159),
-	(160 , happyReduce_160),
-	(161 , happyReduce_161),
-	(162 , happyReduce_162),
-	(163 , happyReduce_163),
-	(164 , happyReduce_164),
-	(165 , happyReduce_165),
-	(166 , happyReduce_166),
-	(167 , happyReduce_167),
-	(168 , happyReduce_168),
-	(169 , happyReduce_169),
-	(170 , happyReduce_170),
-	(171 , happyReduce_171),
-	(172 , happyReduce_172),
-	(173 , happyReduce_173),
-	(174 , happyReduce_174),
-	(175 , happyReduce_175),
-	(176 , happyReduce_176),
-	(177 , happyReduce_177),
-	(178 , happyReduce_178),
-	(179 , happyReduce_179),
-	(180 , happyReduce_180),
-	(181 , happyReduce_181),
-	(182 , happyReduce_182),
-	(183 , happyReduce_183),
-	(184 , happyReduce_184),
-	(185 , happyReduce_185),
-	(186 , happyReduce_186),
-	(187 , happyReduce_187),
-	(188 , happyReduce_188),
-	(189 , happyReduce_189),
-	(190 , happyReduce_190),
-	(191 , happyReduce_191),
-	(192 , happyReduce_192),
-	(193 , happyReduce_193),
-	(194 , happyReduce_194),
-	(195 , happyReduce_195),
-	(196 , happyReduce_196),
-	(197 , happyReduce_197),
-	(198 , happyReduce_198),
-	(199 , happyReduce_199),
-	(200 , happyReduce_200),
-	(201 , happyReduce_201),
-	(202 , happyReduce_202),
-	(203 , happyReduce_203),
-	(204 , happyReduce_204),
-	(205 , happyReduce_205),
-	(206 , happyReduce_206),
-	(207 , happyReduce_207),
-	(208 , happyReduce_208),
-	(209 , happyReduce_209),
-	(210 , happyReduce_210),
-	(211 , happyReduce_211),
-	(212 , happyReduce_212),
-	(213 , happyReduce_213),
-	(214 , happyReduce_214),
-	(215 , happyReduce_215),
-	(216 , happyReduce_216),
-	(217 , happyReduce_217),
-	(218 , happyReduce_218),
-	(219 , happyReduce_219),
-	(220 , happyReduce_220),
-	(221 , happyReduce_221),
-	(222 , happyReduce_222),
-	(223 , happyReduce_223),
-	(224 , happyReduce_224),
-	(225 , happyReduce_225),
-	(226 , happyReduce_226),
-	(227 , happyReduce_227),
-	(228 , happyReduce_228),
-	(229 , happyReduce_229),
-	(230 , happyReduce_230),
-	(231 , happyReduce_231),
-	(232 , happyReduce_232),
-	(233 , happyReduce_233),
-	(234 , happyReduce_234),
-	(235 , happyReduce_235),
-	(236 , happyReduce_236),
-	(237 , happyReduce_237),
-	(238 , happyReduce_238),
-	(239 , happyReduce_239),
-	(240 , happyReduce_240),
-	(241 , happyReduce_241),
-	(242 , happyReduce_242),
-	(243 , happyReduce_243),
-	(244 , happyReduce_244),
-	(245 , happyReduce_245),
-	(246 , happyReduce_246),
-	(247 , happyReduce_247),
-	(248 , happyReduce_248),
-	(249 , happyReduce_249),
-	(250 , happyReduce_250),
-	(251 , happyReduce_251),
-	(252 , happyReduce_252),
-	(253 , happyReduce_253),
-	(254 , happyReduce_254),
-	(255 , happyReduce_255),
-	(256 , happyReduce_256),
-	(257 , happyReduce_257),
-	(258 , happyReduce_258),
-	(259 , happyReduce_259),
-	(260 , happyReduce_260),
-	(261 , happyReduce_261),
-	(262 , happyReduce_262),
-	(263 , happyReduce_263),
-	(264 , happyReduce_264),
-	(265 , happyReduce_265),
-	(266 , happyReduce_266),
-	(267 , happyReduce_267),
-	(268 , happyReduce_268),
-	(269 , happyReduce_269),
-	(270 , happyReduce_270),
-	(271 , happyReduce_271),
-	(272 , happyReduce_272),
-	(273 , happyReduce_273),
-	(274 , happyReduce_274),
-	(275 , happyReduce_275),
-	(276 , happyReduce_276),
-	(277 , happyReduce_277),
-	(278 , happyReduce_278),
-	(279 , happyReduce_279)
-	]
-
-happy_n_terms = 80 :: Int
-happy_n_nonterms = 95 :: Int
-
-happyReduce_4 = happySpecReduce_1  0# happyReduction_4
-happyReduction_4 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn7
-		 (AST.NS (AST.JSLiteral ";") (ss happy_var_1)
-	)}
-
-happyReduce_5 = happySpecReduce_0  0# happyReduction_5
-happyReduction_5  =  happyIn7
-		 (AST.NS (AST.JSLiteral "") SpanEmpty
-	)
-
-happyReduce_6 = happySpecReduce_1  1# happyReduction_6
-happyReduction_6 happy_x_1
-	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_7 = happySpecReduce_1  1# happyReduction_7
-happyReduction_7 happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_8 = happySpecReduce_1  1# happyReduction_8
-happyReduction_8 happy_x_1
-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_9 = happySpecReduce_1  1# happyReduction_9
-happyReduction_9 happy_x_1
-	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_10 = happySpecReduce_1  1# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_11 = happySpecReduce_1  2# happyReduction_11
-happyReduction_11 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn9
-		 (AST.NS (AST.JSLiteral "null") (ss happy_var_1)
-	)}
-
-happyReduce_12 = happySpecReduce_1  3# happyReduction_12
-happyReduction_12 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn10
-		 (AST.NS (AST.JSLiteral "true")  (ss happy_var_1)
-	)}
-
-happyReduce_13 = happySpecReduce_1  3# happyReduction_13
-happyReduction_13 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn10
-		 (AST.NS (AST.JSLiteral "false") (ss happy_var_1)
-	)}
-
-happyReduce_14 = happySpecReduce_1  4# happyReduction_14
-happyReduction_14 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn11
-		 (AST.NS (AST.JSDecimal (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_15 = happySpecReduce_1  4# happyReduction_15
-happyReduction_15 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn11
-		 (AST.NS (AST.JSHexInteger (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_16 = happySpecReduce_1  5# happyReduction_16
-happyReduction_16 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn12
-		 (AST.NS (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_17 = happySpecReduce_1  6# happyReduction_17
-happyReduction_17 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn13
-		 (AST.NS (AST.JSRegEx (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_18 = happySpecReduce_1  7# happyReduction_18
-happyReduction_18 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (AST.NS (AST.JSLiteral "this") (ss happy_var_1)
-	)}
-
-happyReduce_19 = happySpecReduce_1  7# happyReduction_19
-happyReduction_19 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (happy_var_1 {- PrimaryExpression1 -}
-	)}
-
-happyReduce_20 = happySpecReduce_1  7# happyReduction_20
-happyReduction_20 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (happy_var_1 {- PrimaryExpression2 -}
-	)}
-
-happyReduce_21 = happySpecReduce_1  7# happyReduction_21
-happyReduction_21 happy_x_1
-	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (happy_var_1 {- PrimaryExpression3 -}
-	)}
-
-happyReduce_22 = happySpecReduce_1  7# happyReduction_22
-happyReduction_22 happy_x_1
-	 =  case happyOut20 happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (happy_var_1 {- PrimaryExpression4 -}
-	)}
-
-happyReduce_23 = happySpecReduce_3  7# happyReduction_23
-happyReduction_23 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	happyIn14
-		 (AST.NS (AST.JSExpressionParen happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_24 = happySpecReduce_1  8# happyReduction_24
-happyReduction_24 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn15
-		 (AST.NS (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_25 = happySpecReduce_1  8# happyReduction_25
-happyReduction_25 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn15
-		 (AST.NS (AST.JSIdentifier "get") (ss happy_var_1)
-	)}
-
-happyReduce_26 = happySpecReduce_1  8# happyReduction_26
-happyReduction_26 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn15
-		 (AST.NS (AST.JSIdentifier "set") (ss happy_var_1)
-	)}
-
-happyReduce_27 = happySpecReduce_1  9# happyReduction_27
-happyReduction_27 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (happy_var_1
-	)}
-
-happyReduce_28 = happySpecReduce_1  9# happyReduction_28
-happyReduction_28 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "break") (ss happy_var_1)
-	)}
-
-happyReduce_29 = happySpecReduce_1  9# happyReduction_29
-happyReduction_29 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "case") (ss happy_var_1)
-	)}
-
-happyReduce_30 = happySpecReduce_1  9# happyReduction_30
-happyReduction_30 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "catch") (ss happy_var_1)
-	)}
-
-happyReduce_31 = happySpecReduce_1  9# happyReduction_31
-happyReduction_31 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "const") (ss happy_var_1)
-	)}
-
-happyReduce_32 = happySpecReduce_1  9# happyReduction_32
-happyReduction_32 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "continue") (ss happy_var_1)
-	)}
-
-happyReduce_33 = happySpecReduce_1  9# happyReduction_33
-happyReduction_33 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "debugger") (ss happy_var_1)
-	)}
-
-happyReduce_34 = happySpecReduce_1  9# happyReduction_34
-happyReduction_34 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "default") (ss happy_var_1)
-	)}
-
-happyReduce_35 = happySpecReduce_1  9# happyReduction_35
-happyReduction_35 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "delete") (ss happy_var_1)
-	)}
-
-happyReduce_36 = happySpecReduce_1  9# happyReduction_36
-happyReduction_36 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "do") (ss happy_var_1)
-	)}
-
-happyReduce_37 = happySpecReduce_1  9# happyReduction_37
-happyReduction_37 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "else") (ss happy_var_1)
-	)}
-
-happyReduce_38 = happySpecReduce_1  9# happyReduction_38
-happyReduction_38 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "enum") (ss happy_var_1)
-	)}
-
-happyReduce_39 = happySpecReduce_1  9# happyReduction_39
-happyReduction_39 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "false") (ss happy_var_1)
-	)}
-
-happyReduce_40 = happySpecReduce_1  9# happyReduction_40
-happyReduction_40 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "finally") (ss happy_var_1)
-	)}
-
-happyReduce_41 = happySpecReduce_1  9# happyReduction_41
-happyReduction_41 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "for")  (ss happy_var_1)
-	)}
-
-happyReduce_42 = happySpecReduce_1  9# happyReduction_42
-happyReduction_42 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "function") (ss happy_var_1)
-	)}
-
-happyReduce_43 = happySpecReduce_1  9# happyReduction_43
-happyReduction_43 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "get") (ss happy_var_1)
-	)}
-
-happyReduce_44 = happySpecReduce_1  9# happyReduction_44
-happyReduction_44 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "if") (ss happy_var_1)
-	)}
-
-happyReduce_45 = happySpecReduce_1  9# happyReduction_45
-happyReduction_45 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "in") (ss happy_var_1)
-	)}
-
-happyReduce_46 = happySpecReduce_1  9# happyReduction_46
-happyReduction_46 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "instanceof") (ss happy_var_1)
-	)}
-
-happyReduce_47 = happySpecReduce_1  9# happyReduction_47
-happyReduction_47 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "new") (ss happy_var_1)
-	)}
-
-happyReduce_48 = happySpecReduce_1  9# happyReduction_48
-happyReduction_48 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "null") (ss happy_var_1)
-	)}
-
-happyReduce_49 = happySpecReduce_1  9# happyReduction_49
-happyReduction_49 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "return") (ss happy_var_1)
-	)}
-
-happyReduce_50 = happySpecReduce_1  9# happyReduction_50
-happyReduction_50 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "set") (ss happy_var_1)
-	)}
-
-happyReduce_51 = happySpecReduce_1  9# happyReduction_51
-happyReduction_51 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "switch") (ss happy_var_1)
-	)}
-
-happyReduce_52 = happySpecReduce_1  9# happyReduction_52
-happyReduction_52 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "this") (ss happy_var_1)
-	)}
-
-happyReduce_53 = happySpecReduce_1  9# happyReduction_53
-happyReduction_53 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "throw") (ss happy_var_1)
-	)}
-
-happyReduce_54 = happySpecReduce_1  9# happyReduction_54
-happyReduction_54 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "true") (ss happy_var_1)
-	)}
-
-happyReduce_55 = happySpecReduce_1  9# happyReduction_55
-happyReduction_55 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "try") (ss happy_var_1)
-	)}
-
-happyReduce_56 = happySpecReduce_1  9# happyReduction_56
-happyReduction_56 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "typeof") (ss happy_var_1)
-	)}
-
-happyReduce_57 = happySpecReduce_1  9# happyReduction_57
-happyReduction_57 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "var") (ss happy_var_1)
-	)}
-
-happyReduce_58 = happySpecReduce_1  9# happyReduction_58
-happyReduction_58 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "void") (ss happy_var_1)
-	)}
-
-happyReduce_59 = happySpecReduce_1  9# happyReduction_59
-happyReduction_59 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "while") (ss happy_var_1)
-	)}
-
-happyReduce_60 = happySpecReduce_1  9# happyReduction_60
-happyReduction_60 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier "with") (ss happy_var_1)
-	)}
-
-happyReduce_61 = happySpecReduce_1  9# happyReduction_61
-happyReduction_61 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 (AST.NS (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_62 = happySpecReduce_2  10# happyReduction_62
-happyReduction_62 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn17
-		 (AST.NS (AST.JSArrayLiteral []) (ss happy_var_1)
-	)}
-
-happyReduce_63 = happySpecReduce_3  10# happyReduction_63
-happyReduction_63 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_2 of { happy_var_2 -> 
-	happyIn17
-		 (AST.NS (AST.JSArrayLiteral happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_64 = happySpecReduce_3  10# happyReduction_64
-happyReduction_64 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	happyIn17
-		 (AST.NS (AST.JSArrayLiteral happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_65 = happyReduce 5# 10# happyReduction_65
-happyReduction_65 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut19 happy_x_4 of { happy_var_4 -> 
-	happyIn17
-		 (AST.NS (AST.JSArrayLiteral (happy_var_2++happy_var_4)) (ss happy_var_1)
-	) `HappyStk` happyRest}}}
-
-happyReduce_66 = happyReduce 4# 10# happyReduction_66
-happyReduction_66 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	happyIn17
-		 (AST.NS (AST.JSArrayLiteral (happy_var_2++[AST.NS (AST.JSLiteral ",") (ss happy_var_3)])) (ss happy_var_1)
-	) `HappyStk` happyRest}}}
-
-happyReduce_67 = happySpecReduce_2  11# happyReduction_67
-happyReduction_67 happy_x_2
-	happy_x_1
-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_2 of { happy_var_2 -> 
-	happyIn18
-		 (((happy_var_1)++(happy_var_2)) {- ElementList -}
-	)}}
-
-happyReduce_68 = happySpecReduce_1  11# happyReduction_68
-happyReduction_68 happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	happyIn18
-		 (happy_var_1 {- ElementList -}
-	)}
-
-happyReduce_69 = happyReduce 4# 11# happyReduction_69
-happyReduction_69 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOut52 happy_x_4 of { happy_var_4 -> 
-	happyIn18
-		 (((happy_var_1)++[(AST.NS (AST.JSElision []) (ss happy_var_2))]++(happy_var_3)++(happy_var_4)) {- ElementList -}
-	) `HappyStk` happyRest}}}}
-
-happyReduce_70 = happySpecReduce_3  11# happyReduction_70
-happyReduction_70 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (((happy_var_1)++[(AST.NS (AST.JSElision []) (ss happy_var_2))]++(happy_var_3)) {- ElementList -}
-	)}}}
-
-happyReduce_71 = happySpecReduce_1  12# happyReduction_71
-happyReduction_71 happy_x_1
-	 =  happyIn19
-		 ([AST.NS (AST.JSElision []) SpanEmpty]
-	)
-
-happyReduce_72 = happySpecReduce_2  12# happyReduction_72
-happyReduction_72 happy_x_2
-	happy_x_1
-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
-	happyIn19
-		 ((happy_var_1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)])
-	)}
-
-happyReduce_73 = happySpecReduce_2  13# happyReduction_73
-happyReduction_73 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn20
-		 (AST.NS (AST.JSObjectLiteral []) (ss happy_var_1)
-	)}
-
-happyReduce_74 = happySpecReduce_3  13# happyReduction_74
-happyReduction_74 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut21 happy_x_2 of { happy_var_2 -> 
-	happyIn20
-		 (AST.NS (AST.JSObjectLiteral happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_75 = happyReduce 4# 13# happyReduction_75
-happyReduction_75 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut21 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	happyIn20
-		 (AST.NS (AST.JSObjectLiteral (happy_var_2++[AST.NS (AST.JSLiteral ",") (ss happy_var_3)])) (ss happy_var_1)
-	) `HappyStk` happyRest}}}
-
-happyReduce_76 = happySpecReduce_1  14# happyReduction_76
-happyReduction_76 happy_x_1
-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 ([happy_var_1] {- PropertyNameandValueList1 -}
-	)}
-
-happyReduce_77 = happySpecReduce_3  14# happyReduction_77
-happyReduction_77 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	case happyOut22 happy_x_3 of { happy_var_3 -> 
-	happyIn21
-		 ((happy_var_1 ++ [happy_var_3]) {- PropertyNameandValueList2 -}
-	)}}
-
-happyReduce_78 = happySpecReduce_3  15# happyReduction_78
-happyReduction_78 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut23 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	happyIn22
-		 ((AST.NS (AST.JSPropertyNameandValue happy_var_1 happy_var_3) (ex happy_var_1))
-	)}}
-
-happyReduce_79 = happyReduce 7# 15# happyReduction_79
-happyReduction_79 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	case happyOut97 happy_x_6 of { happy_var_6 -> 
-	happyIn22
-		 ((AST.NS (AST.JSPropertyAccessor "get" happy_var_2 [] happy_var_6) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_80 = happyReduce 8# 15# happyReduction_80
-happyReduction_80 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	case happyOut24 happy_x_4 of { happy_var_4 -> 
-	case happyOut97 happy_x_7 of { happy_var_7 -> 
-	happyIn22
-		 ((AST.NS (AST.JSPropertyAccessor "set" happy_var_2 [happy_var_4] happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_81 = happySpecReduce_1  16# happyReduction_81
-happyReduction_81 happy_x_1
-	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
-	happyIn23
-		 (happy_var_1 {- PropertyName1 -}
-	)}
-
-happyReduce_82 = happySpecReduce_1  16# happyReduction_82
-happyReduction_82 happy_x_1
-	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
-	happyIn23
-		 (happy_var_1 {- PropertyName2 -}
-	)}
-
-happyReduce_83 = happySpecReduce_1  16# happyReduction_83
-happyReduction_83 happy_x_1
-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
-	happyIn23
-		 (happy_var_1 {- PropertyName3 -}
-	)}
-
-happyReduce_84 = happySpecReduce_1  17# happyReduction_84
-happyReduction_84 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn24
-		 (happy_var_1 {- PropertySetParameterList -}
-	)}
-
-happyReduce_85 = happySpecReduce_1  18# happyReduction_85
-happyReduction_85 happy_x_1
-	 =  case happyOut14 happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 ([happy_var_1] {- MemberExpression -}
-	)}
-
-happyReduce_86 = happySpecReduce_1  18# happyReduction_86
-happyReduction_86 happy_x_1
-	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 ([happy_var_1] {- MemberExpression -}
-	)}
-
-happyReduce_87 = happyReduce 4# 18# happyReduction_87
-happyReduction_87 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	happyIn25
-		 ([AST.NS (AST.JSMemberSquare happy_var_1 happy_var_3) (mex happy_var_1)]
-	) `HappyStk` happyRest}}
-
-happyReduce_88 = happySpecReduce_3  18# happyReduction_88
-happyReduction_88 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut16 happy_x_3 of { happy_var_3 -> 
-	happyIn25
-		 ([AST.NS (AST.JSMemberDot happy_var_1 happy_var_3) (mex happy_var_1)]
-	)}}
-
-happyReduce_89 = happySpecReduce_3  18# happyReduction_89
-happyReduction_89 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn25
-		 ((((AST.NS (AST.JSLiteral "new ") (ss happy_var_1)):happy_var_2)++[happy_var_3])
-	)}}}
-
-happyReduce_90 = happySpecReduce_1  19# happyReduction_90
-happyReduction_90 happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (happy_var_1 {- NewExpression -}
-	)}
-
-happyReduce_91 = happySpecReduce_2  19# happyReduction_91
-happyReduction_91 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut26 happy_x_2 of { happy_var_2 -> 
-	happyIn26
-		 ((AST.NS (AST.JSLiteral "new ") (ss happy_var_1)):happy_var_2
-	)}}
-
-happyReduce_92 = happySpecReduce_2  20# happyReduction_92
-happyReduction_92 happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	happyIn27
-		 (happy_var_1++[happy_var_2] {- CallExpression -}
-	)}}
-
-happyReduce_93 = happySpecReduce_2  20# happyReduction_93
-happyReduction_93 happy_x_2
-	happy_x_1
-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	happyIn27
-		 ((happy_var_1++[(AST.NS (AST.JSCallExpression "()" [happy_var_2]) (mex happy_var_1))])
-	)}}
-
-happyReduce_94 = happyReduce 4# 20# happyReduction_94
-happyReduction_94 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut27 happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	happyIn27
-		 ((happy_var_1++[(AST.NS (AST.JSCallExpression "[]" [happy_var_3]) (mex happy_var_1))])
-	) `HappyStk` happyRest}}
-
-happyReduce_95 = happySpecReduce_3  20# happyReduction_95
-happyReduction_95 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
-	case happyOut16 happy_x_3 of { happy_var_3 -> 
-	happyIn27
-		 ((happy_var_1++[(AST.NS (AST.JSCallExpression "."  [happy_var_3]) (mex happy_var_1))])
-	)}}
-
-happyReduce_96 = happySpecReduce_2  21# happyReduction_96
-happyReduction_96 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn28
-		 ((AST.NS (AST.JSArguments []) (ss happy_var_1))
-	)}
-
-happyReduce_97 = happySpecReduce_3  21# happyReduction_97
-happyReduction_97 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut29 happy_x_2 of { happy_var_2 -> 
-	happyIn28
-		 ((AST.NS (AST.JSArguments happy_var_2) (ss happy_var_1))
-	)}}
-
-happyReduce_98 = happySpecReduce_1  22# happyReduction_98
-happyReduction_98 happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	happyIn29
-		 ([happy_var_1] {- ArgumentList -}
-	)}
-
-happyReduce_99 = happySpecReduce_3  22# happyReduction_99
-happyReduction_99 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	happyIn29
-		 (happy_var_1++[happy_var_3] {- ArgumentList2 -}
-	)}}
-
-happyReduce_100 = happySpecReduce_1  23# happyReduction_100
-happyReduction_100 happy_x_1
-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
-	happyIn30
-		 (happy_var_1 {- LeftHandSideExpression1 -}
-	)}
-
-happyReduce_101 = happySpecReduce_1  23# happyReduction_101
-happyReduction_101 happy_x_1
-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
-	happyIn30
-		 (happy_var_1 {- LeftHandSideExpression12 -}
-	)}
-
-happyReduce_102 = happySpecReduce_1  24# happyReduction_102
-happyReduction_102 happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	happyIn31
-		 (happy_var_1 {- PostfixExpression -}
-	)}
-
-happyReduce_103 = happySpecReduce_2  24# happyReduction_103
-happyReduction_103 happy_x_2
-	happy_x_1
-	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
-	happyIn31
-		 ([(AST.NS (AST.JSExpressionPostfix "++" happy_var_1) (mex happy_var_1))]
-	)}
-
-happyReduce_104 = happySpecReduce_2  24# happyReduction_104
-happyReduction_104 happy_x_2
-	happy_x_1
-	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
-	happyIn31
-		 ([(AST.NS (AST.JSExpressionPostfix "--" happy_var_1) (mex happy_var_1))]
-	)}
-
-happyReduce_105 = happySpecReduce_1  25# happyReduction_105
-happyReduction_105 happy_x_1
-	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
-	happyIn32
-		 (happy_var_1 {- UnaryExpression -}
-	)}
-
-happyReduce_106 = happySpecReduce_2  25# happyReduction_106
-happyReduction_106 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "delete ") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_107 = happySpecReduce_2  25# happyReduction_107
-happyReduction_107 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "void ") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_108 = happySpecReduce_2  25# happyReduction_108
-happyReduction_108 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "typeof ") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_109 = happySpecReduce_2  25# happyReduction_109
-happyReduction_109 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "++") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_110 = happySpecReduce_2  25# happyReduction_110
-happyReduction_110 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "--") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_111 = happySpecReduce_2  25# happyReduction_111
-happyReduction_111 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "+") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_112 = happySpecReduce_2  25# happyReduction_112
-happyReduction_112 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "-") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_113 = happySpecReduce_2  25# happyReduction_113
-happyReduction_113 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "~") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_114 = happySpecReduce_2  25# happyReduction_114
-happyReduction_114 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (((AST.NS (AST.JSUnary "!") (ss happy_var_1)):happy_var_2)
-	)}}
-
-happyReduce_115 = happySpecReduce_1  26# happyReduction_115
-happyReduction_115 happy_x_1
-	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
-	happyIn33
-		 (happy_var_1 {- MultiplicativeExpression -}
-	)}
-
-happyReduce_116 = happySpecReduce_3  26# happyReduction_116
-happyReduction_116 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_3 of { happy_var_3 -> 
-	happyIn33
-		 ([(AST.NS (AST.JSExpressionBinary "*" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_117 = happySpecReduce_3  26# happyReduction_117
-happyReduction_117 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_3 of { happy_var_3 -> 
-	happyIn33
-		 ([(AST.NS (AST.JSExpressionBinary "/" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_118 = happySpecReduce_3  26# happyReduction_118
-happyReduction_118 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	case happyOut32 happy_x_3 of { happy_var_3 -> 
-	happyIn33
-		 ([(AST.NS (AST.JSExpressionBinary "%" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_119 = happySpecReduce_3  27# happyReduction_119
-happyReduction_119 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	case happyOut33 happy_x_3 of { happy_var_3 -> 
-	happyIn34
-		 ([(AST.NS (AST.JSExpressionBinary "+" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_120 = happySpecReduce_3  27# happyReduction_120
-happyReduction_120 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	case happyOut33 happy_x_3 of { happy_var_3 -> 
-	happyIn34
-		 ([(AST.NS (AST.JSExpressionBinary "-" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_121 = happySpecReduce_1  27# happyReduction_121
-happyReduction_121 happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	happyIn34
-		 (happy_var_1 {- (goRegExp happy_var_1)-} {- AdditiveExpression -}
-	)}
-
-happyReduce_122 = happySpecReduce_3  28# happyReduction_122
-happyReduction_122 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	happyIn35
-		 ([(AST.NS (AST.JSExpressionBinary "<<" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_123 = happySpecReduce_3  28# happyReduction_123
-happyReduction_123 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	happyIn35
-		 ([(AST.NS (AST.JSExpressionBinary ">>" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_124 = happySpecReduce_3  28# happyReduction_124
-happyReduction_124 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	happyIn35
-		 ([(AST.NS (AST.JSExpressionBinary ">>>" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_125 = happySpecReduce_1  28# happyReduction_125
-happyReduction_125 happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	happyIn35
-		 (happy_var_1 {- ShiftExpression -}
-	)}
-
-happyReduce_126 = happySpecReduce_1  29# happyReduction_126
-happyReduction_126 happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	happyIn36
-		 (happy_var_1 {- RelationalExpression -}
-	)}
-
-happyReduce_127 = happySpecReduce_3  29# happyReduction_127
-happyReduction_127 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_128 = happySpecReduce_3  29# happyReduction_128
-happyReduction_128 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_129 = happySpecReduce_3  29# happyReduction_129
-happyReduction_129 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_130 = happySpecReduce_3  29# happyReduction_130
-happyReduction_130 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_131 = happySpecReduce_3  29# happyReduction_131
-happyReduction_131 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_132 = happySpecReduce_3  29# happyReduction_132
-happyReduction_132 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 ([(AST.NS (AST.JSExpressionBinary " in " happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_133 = happySpecReduce_1  30# happyReduction_133
-happyReduction_133 happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	happyIn37
-		 (happy_var_1 {- RelationalExpressionNoIn -}
-	)}
-
-happyReduce_134 = happySpecReduce_3  30# happyReduction_134
-happyReduction_134 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ([(AST.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_135 = happySpecReduce_3  30# happyReduction_135
-happyReduction_135 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ([(AST.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_136 = happySpecReduce_3  30# happyReduction_136
-happyReduction_136 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ([(AST.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_137 = happySpecReduce_3  30# happyReduction_137
-happyReduction_137 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ([(AST.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_138 = happySpecReduce_3  30# happyReduction_138
-happyReduction_138 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ([(AST.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_139 = happySpecReduce_1  31# happyReduction_139
-happyReduction_139 happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	happyIn38
-		 (happy_var_1 {- EqualityExpression -}
-	)}
-
-happyReduce_140 = happySpecReduce_3  31# happyReduction_140
-happyReduction_140 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_141 = happySpecReduce_3  31# happyReduction_141
-happyReduction_141 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_142 = happySpecReduce_3  31# happyReduction_142
-happyReduction_142 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_143 = happySpecReduce_3  31# happyReduction_143
-happyReduction_143 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_144 = happySpecReduce_1  32# happyReduction_144
-happyReduction_144 happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	happyIn39
-		 (happy_var_1 {- EqualityExpressionNoIn -}
-	)}
-
-happyReduce_145 = happySpecReduce_3  32# happyReduction_145
-happyReduction_145 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn39
-		 ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_146 = happySpecReduce_3  32# happyReduction_146
-happyReduction_146 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn39
-		 ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_147 = happySpecReduce_3  32# happyReduction_147
-happyReduction_147 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn39
-		 ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_148 = happySpecReduce_3  32# happyReduction_148
-happyReduction_148 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn39
-		 ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_149 = happySpecReduce_1  33# happyReduction_149
-happyReduction_149 happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	happyIn40
-		 (happy_var_1 {- BitwiseAndExpression -}
-	)}
-
-happyReduce_150 = happySpecReduce_3  33# happyReduction_150
-happyReduction_150 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	case happyOut38 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_151 = happySpecReduce_1  34# happyReduction_151
-happyReduction_151 happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	happyIn41
-		 (happy_var_1 {- BitwiseAndExpression -}
-	)}
-
-happyReduce_152 = happySpecReduce_3  34# happyReduction_152
-happyReduction_152 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn41
-		 ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_153 = happySpecReduce_1  35# happyReduction_153
-happyReduction_153 happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	happyIn42
-		 (happy_var_1 {- BitwiseXOrExpression -}
-	)}
-
-happyReduce_154 = happySpecReduce_3  35# happyReduction_154
-happyReduction_154 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	case happyOut40 happy_x_3 of { happy_var_3 -> 
-	happyIn42
-		 ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_155 = happySpecReduce_1  36# happyReduction_155
-happyReduction_155 happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	happyIn43
-		 (happy_var_1 {- BitwiseXOrExpression -}
-	)}
-
-happyReduce_156 = happySpecReduce_3  36# happyReduction_156
-happyReduction_156 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
-	case happyOut41 happy_x_3 of { happy_var_3 -> 
-	happyIn43
-		 ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_157 = happySpecReduce_1  37# happyReduction_157
-happyReduction_157 happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	happyIn44
-		 (happy_var_1 {- BitwiseOrExpression -}
-	)}
-
-happyReduce_158 = happySpecReduce_3  37# happyReduction_158
-happyReduction_158 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	happyIn44
-		 ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_159 = happySpecReduce_1  38# happyReduction_159
-happyReduction_159 happy_x_1
-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
-	happyIn45
-		 (happy_var_1 {- BitwiseOrExpression -}
-	)}
-
-happyReduce_160 = happySpecReduce_3  38# happyReduction_160
-happyReduction_160 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_3 of { happy_var_3 -> 
-	happyIn45
-		 ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_161 = happySpecReduce_1  39# happyReduction_161
-happyReduction_161 happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	happyIn46
-		 (happy_var_1 {- LogicalAndExpression -}
-	)}
-
-happyReduce_162 = happySpecReduce_3  39# happyReduction_162
-happyReduction_162 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOut44 happy_x_3 of { happy_var_3 -> 
-	happyIn46
-		 ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_163 = happySpecReduce_1  40# happyReduction_163
-happyReduction_163 happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	happyIn47
-		 (happy_var_1 {- LogicalAndExpression -}
-	)}
-
-happyReduce_164 = happySpecReduce_3  40# happyReduction_164
-happyReduction_164 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	case happyOut45 happy_x_3 of { happy_var_3 -> 
-	happyIn47
-		 ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_165 = happySpecReduce_1  41# happyReduction_165
-happyReduction_165 happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (happy_var_1 {- LogicalOrExpression -}
-	)}
-
-happyReduce_166 = happySpecReduce_3  41# happyReduction_166
-happyReduction_166 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	case happyOut46 happy_x_3 of { happy_var_3 -> 
-	happyIn48
-		 ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_167 = happySpecReduce_1  42# happyReduction_167
-happyReduction_167 happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	happyIn49
-		 (happy_var_1 {- LogicalOrExpression -}
-	)}
-
-happyReduce_168 = happySpecReduce_3  42# happyReduction_168
-happyReduction_168 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	happyIn49
-		 ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))]
-	)}}
-
-happyReduce_169 = happySpecReduce_1  43# happyReduction_169
-happyReduction_169 happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (happy_var_1 {- ConditionalExpression -}
-	)}
-
-happyReduce_170 = happyReduce 5# 43# happyReduction_170
-happyReduction_170 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut48 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	case happyOut52 happy_x_5 of { happy_var_5 -> 
-	happyIn50
-		 ([AST.NS (AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5) (mex happy_var_1)]
-	) `HappyStk` happyRest}}}
-
-happyReduce_171 = happySpecReduce_1  44# happyReduction_171
-happyReduction_171 happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	happyIn51
-		 (happy_var_1 {- ConditionalExpression -}
-	)}
-
-happyReduce_172 = happyReduce 5# 44# happyReduction_172
-happyReduction_172 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOut53 happy_x_3 of { happy_var_3 -> 
-	case happyOut53 happy_x_5 of { happy_var_5 -> 
-	happyIn51
-		 ([AST.NS (AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5) (mex happy_var_1)]
-	) `HappyStk` happyRest}}}
-
-happyReduce_173 = happySpecReduce_1  45# happyReduction_173
-happyReduction_173 happy_x_1
-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (happy_var_1 {- AssignmentExpression -}
-	)}
-
-happyReduce_174 = happySpecReduce_3  45# happyReduction_174
-happyReduction_174 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	case happyOut54 happy_x_2 of { happy_var_2 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	happyIn52
-		 ((happy_var_1++[happy_var_2]++happy_var_3)
-	)}}}
-
-happyReduce_175 = happySpecReduce_1  46# happyReduction_175
-happyReduction_175 happy_x_1
-	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
-	happyIn53
-		 (happy_var_1 {- AssignmentExpression -}
-	)}
-
-happyReduce_176 = happySpecReduce_3  46# happyReduction_176
-happyReduction_176 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	case happyOut54 happy_x_2 of { happy_var_2 -> 
-	case happyOut53 happy_x_3 of { happy_var_3 -> 
-	happyIn53
-		 ((happy_var_1++[happy_var_2]++happy_var_3)
-	)}}}
-
-happyReduce_177 = happySpecReduce_1  47# happyReduction_177
-happyReduction_177 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 (AST.NS (AST.JSOperator (token_literal happy_var_1)) (ss happy_var_1)
-	)}
-
-happyReduce_178 = happySpecReduce_1  47# happyReduction_178
-happyReduction_178 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 (AST.NS (AST.JSOperator "=") (ss happy_var_1)
-	)}
-
-happyReduce_179 = happySpecReduce_1  48# happyReduction_179
-happyReduction_179 happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (AST.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -}
-	)}
-
-happyReduce_180 = happySpecReduce_3  48# happyReduction_180
-happyReduction_180 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	happyIn55
-		 (flattenExpression happy_var_1 happy_var_3
-	)}}
-
-happyReduce_181 = happySpecReduce_1  49# happyReduction_181
-happyReduction_181 happy_x_1
-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
-	happyIn56
-		 (AST.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -}
-	)}
-
-happyReduce_182 = happySpecReduce_3  49# happyReduction_182
-happyReduction_182 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut53 happy_x_3 of { happy_var_3 -> 
-	happyIn56
-		 (flattenExpression happy_var_1 happy_var_3
-	)}}
-
-happyReduce_183 = happySpecReduce_1  50# happyReduction_183
-happyReduction_183 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn57
-		 ([happy_var_1] {- ExpressionOpt -}
-	)}
-
-happyReduce_184 = happySpecReduce_0  50# happyReduction_184
-happyReduction_184  =  happyIn57
-		 ([]   {- ExpressionOpt -}
-	)
-
-happyReduce_185 = happySpecReduce_1  51# happyReduction_185
-happyReduction_185 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn58
-		 ([happy_var_1] {- ExpressionOpt -}
-	)}
-
-happyReduce_186 = happySpecReduce_0  51# happyReduction_186
-happyReduction_186  =  happyIn58
-		 ([]   {- ExpressionOpt -}
-	)
-
-happyReduce_187 = happySpecReduce_1  52# happyReduction_187
-happyReduction_187 happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	happyIn59
-		 (happy_var_1 {- Statement1 -}
-	)}
-
-happyReduce_188 = happySpecReduce_1  52# happyReduction_188
-happyReduction_188 happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	happyIn59
-		 (happy_var_1 {- Statement3 -}
-	)}
-
-happyReduce_189 = happySpecReduce_1  53# happyReduction_189
-happyReduction_189 happy_x_1
-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty1 -}
-	)}
-
-happyReduce_190 = happySpecReduce_1  53# happyReduction_190
-happyReduction_190 happy_x_1
-	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty2 -}
-	)}
-
-happyReduce_191 = happySpecReduce_1  53# happyReduction_191
-happyReduction_191 happy_x_1
-	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty4 -}
-	)}
-
-happyReduce_192 = happySpecReduce_1  53# happyReduction_192
-happyReduction_192 happy_x_1
-	 =  case happyOut73 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty5 -}
-	)}
-
-happyReduce_193 = happySpecReduce_1  53# happyReduction_193
-happyReduction_193 happy_x_1
-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty6 -}
-	)}
-
-happyReduce_194 = happySpecReduce_1  53# happyReduction_194
-happyReduction_194 happy_x_1
-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty7 -}
-	)}
-
-happyReduce_195 = happySpecReduce_1  53# happyReduction_195
-happyReduction_195 happy_x_1
-	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty8 -}
-	)}
-
-happyReduce_196 = happySpecReduce_1  53# happyReduction_196
-happyReduction_196 happy_x_1
-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty9 -}
-	)}
-
-happyReduce_197 = happySpecReduce_1  53# happyReduction_197
-happyReduction_197 happy_x_1
-	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty10 -}
-	)}
-
-happyReduce_198 = happySpecReduce_1  53# happyReduction_198
-happyReduction_198 happy_x_1
-	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty11 -}
-	)}
-
-happyReduce_199 = happySpecReduce_1  53# happyReduction_199
-happyReduction_199 happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty12 -}
-	)}
-
-happyReduce_200 = happySpecReduce_1  53# happyReduction_200
-happyReduction_200 happy_x_1
-	 =  case happyOut87 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty13 -}
-	)}
-
-happyReduce_201 = happySpecReduce_1  53# happyReduction_201
-happyReduction_201 happy_x_1
-	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty14 -}
-	)}
-
-happyReduce_202 = happySpecReduce_1  53# happyReduction_202
-happyReduction_202 happy_x_1
-	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1 {- StatementNoEmpty15 -}
-	)}
-
-happyReduce_203 = happySpecReduce_2  54# happyReduction_203
-happyReduction_203 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn61
-		 ((AST.NS (AST.JSStatementBlock (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))
-	)}
-
-happyReduce_204 = happySpecReduce_3  54# happyReduction_204
-happyReduction_204 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut63 happy_x_2 of { happy_var_2 -> 
-	happyIn61
-		 ((AST.NS (AST.JSStatementBlock happy_var_2) (ss happy_var_1))
-	)}}
-
-happyReduce_205 = happySpecReduce_2  55# happyReduction_205
-happyReduction_205 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn62
-		 ((AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))
-	)}
-
-happyReduce_206 = happySpecReduce_3  55# happyReduction_206
-happyReduction_206 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut63 happy_x_2 of { happy_var_2 -> 
-	happyIn62
-		 ((AST.NS (AST.JSBlock happy_var_2) (ss happy_var_1))
-	)}}
-
-happyReduce_207 = happySpecReduce_1  56# happyReduction_207
-happyReduction_207 happy_x_1
-	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
-	happyIn63
-		 ((AST.NS (AST.JSStatementList [happy_var_1]) (ex happy_var_1))
-	)}
-
-happyReduce_208 = happySpecReduce_2  56# happyReduction_208
-happyReduction_208 happy_x_2
-	happy_x_1
-	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
-	case happyOut59 happy_x_2 of { happy_var_2 -> 
-	happyIn63
-		 ((combineStatements happy_var_1 happy_var_2)
-	)}}
-
-happyReduce_209 = happySpecReduce_3  57# happyReduction_209
-happyReduction_209 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut65 happy_x_2 of { happy_var_2 -> 
-	happyIn64
-		 (AST.NS (AST.JSVariables "var" happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_210 = happySpecReduce_3  57# happyReduction_210
-happyReduction_210 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut65 happy_x_2 of { happy_var_2 -> 
-	happyIn64
-		 (AST.NS (AST.JSVariables "const" happy_var_2) (ss happy_var_1)
-	)}}
-
-happyReduce_211 = happySpecReduce_1  58# happyReduction_211
-happyReduction_211 happy_x_1
-	 =  case happyOut67 happy_x_1 of { happy_var_1 -> 
-	happyIn65
-		 ([happy_var_1] {- VariableDeclarationList -}
-	)}
-
-happyReduce_212 = happySpecReduce_3  58# happyReduction_212
-happyReduction_212 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut65 happy_x_1 of { happy_var_1 -> 
-	case happyOut67 happy_x_3 of { happy_var_3 -> 
-	happyIn65
-		 ((happy_var_1 ++ [happy_var_3]) {- VariableDeclarationList -}
-	)}}
-
-happyReduce_213 = happySpecReduce_1  59# happyReduction_213
-happyReduction_213 happy_x_1
-	 =  case happyOut68 happy_x_1 of { happy_var_1 -> 
-	happyIn66
-		 ([happy_var_1] {- VariableDeclarationList -}
-	)}
-
-happyReduce_214 = happySpecReduce_3  59# happyReduction_214
-happyReduction_214 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_3 of { happy_var_3 -> 
-	happyIn66
-		 ((happy_var_1 ++ [happy_var_3]) {- VariableDeclarationList -}
-	)}}
-
-happyReduce_215 = happySpecReduce_1  60# happyReduction_215
-happyReduction_215 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn67
-		 ((AST.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1) )
-	)}
-
-happyReduce_216 = happySpecReduce_2  60# happyReduction_216
-happyReduction_216 happy_x_2
-	happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut69 happy_x_2 of { happy_var_2 -> 
-	happyIn67
-		 ((AST.NS (AST.JSVarDecl happy_var_1 happy_var_2) (ex happy_var_1))
-	)}}
-
-happyReduce_217 = happySpecReduce_2  61# happyReduction_217
-happyReduction_217 happy_x_2
-	happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut70 happy_x_2 of { happy_var_2 -> 
-	happyIn68
-		 ((AST.NS (AST.JSVarDecl happy_var_1 happy_var_2) (ex happy_var_1))
-	)}}
-
-happyReduce_218 = happySpecReduce_1  61# happyReduction_218
-happyReduction_218 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn68
-		 ((AST.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1))
-	)}
-
-happyReduce_219 = happySpecReduce_2  62# happyReduction_219
-happyReduction_219 happy_x_2
-	happy_x_1
-	 =  case happyOut52 happy_x_2 of { happy_var_2 -> 
-	happyIn69
-		 (happy_var_2 {- Initializer -}
-	)}
-
-happyReduce_220 = happySpecReduce_2  63# happyReduction_220
-happyReduction_220 happy_x_2
-	happy_x_1
-	 =  case happyOut53 happy_x_2 of { happy_var_2 -> 
-	happyIn70
-		 (happy_var_2 {- InitializerNoIn -}
-	)}
-
-happyReduce_221 = happySpecReduce_1  64# happyReduction_221
-happyReduction_221 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn71
-		 ((AST.NS (AST.JSLiteral ";") (ss happy_var_1))
-	)}
-
-happyReduce_222 = happySpecReduce_1  65# happyReduction_222
-happyReduction_222 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn72
-		 (happy_var_1 {- ExpressionStatement -}
-	)}
-
-happyReduce_223 = happyReduce 6# 66# happyReduction_223
-happyReduction_223 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	case happyOut75 happy_x_5 of { happy_var_5 -> 
-	case happyOut74 happy_x_6 of { happy_var_6 -> 
-	happyIn73
-		 ((if (happy_var_6 /= []) then  
-                       (if (length happy_var_6 == 1) 
-                        then 
-                          (AST.NS (AST.JSIfElse happy_var_3 happy_var_5 (head happy_var_6)) (ss happy_var_1)) 
-                        else 
-                          (AST.NS 
-                             (AST.JSIfElse 
-                                happy_var_3 
-                                (AST.NS 
-                                   (AST.JSBlock (AST.NS (AST.JSStatementList [happy_var_5]) (ss happy_var_1)) ) 
-                                   (ss happy_var_1) 
-                                   )
-                                (last happy_var_6)
-                             ) 
-                             (ss happy_var_1)
-                           ) 
-                       )   
-                     else (AST.NS (AST.JSIf happy_var_3 happy_var_5) (ss happy_var_1)))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_224 = happySpecReduce_2  67# happyReduction_224
-happyReduction_224 happy_x_2
-	happy_x_1
-	 =  case happyOut59 happy_x_2 of { happy_var_2 -> 
-	happyIn74
-		 ([happy_var_2]
-	)}
-
-happyReduce_225 = happySpecReduce_0  67# happyReduction_225
-happyReduction_225  =  happyIn74
-		 ([]
-	)
-
-happyReduce_226 = happySpecReduce_2  68# happyReduction_226
-happyReduction_226 happy_x_2
-	happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 ((AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList [happy_var_1]) (ex happy_var_1))) (ex happy_var_1))
-	)}
-
-happyReduce_227 = happySpecReduce_1  68# happyReduction_227
-happyReduction_227 happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 (happy_var_1 {- StatementSemi -}
-	)}
-
-happyReduce_228 = happySpecReduce_1  68# happyReduction_228
-happyReduction_228 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 (AST.NS (AST.JSLiteral ";") (ss happy_var_1)
-	)}
-
-happyReduce_229 = happyReduce 7# 69# happyReduction_229
-happyReduction_229 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut59 happy_x_2 of { happy_var_2 -> 
-	case happyOut55 happy_x_5 of { happy_var_5 -> 
-	case happyOut7 happy_x_7 of { happy_var_7 -> 
-	happyIn76
-		 ((AST.NS (AST.JSDoWhile happy_var_2 happy_var_5 happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_230 = happyReduce 5# 69# happyReduction_230
-happyReduction_230 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	case happyOut59 happy_x_5 of { happy_var_5 -> 
-	happyIn76
-		 ((AST.NS (AST.JSWhile happy_var_3 happy_var_5) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_231 = happyReduce 9# 69# happyReduction_231
-happyReduction_231 (happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut58 happy_x_3 of { happy_var_3 -> 
-	case happyOut57 happy_x_5 of { happy_var_5 -> 
-	case happyOut57 happy_x_7 of { happy_var_7 -> 
-	case happyOut59 happy_x_9 of { happy_var_9 -> 
-	happyIn76
-		 ((AST.NS (AST.JSFor happy_var_3 happy_var_5 happy_var_7 happy_var_9) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_232 = happyReduce 10# 69# happyReduction_232
-happyReduction_232 (happy_x_10 `HappyStk`
-	happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut66 happy_x_4 of { happy_var_4 -> 
-	case happyOut57 happy_x_6 of { happy_var_6 -> 
-	case happyOut57 happy_x_8 of { happy_var_8 -> 
-	case happyOut59 happy_x_10 of { happy_var_10 -> 
-	happyIn76
-		 ((AST.NS (AST.JSForVar happy_var_4 happy_var_6 happy_var_8 happy_var_10) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_233 = happyReduce 7# 69# happyReduction_233
-happyReduction_233 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut30 happy_x_3 of { happy_var_3 -> 
-	case happyOut55 happy_x_5 of { happy_var_5 -> 
-	case happyOut59 happy_x_7 of { happy_var_7 -> 
-	happyIn76
-		 ((AST.NS (AST.JSForIn happy_var_3 happy_var_5 happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_234 = happyReduce 8# 69# happyReduction_234
-happyReduction_234 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_4 of { happy_var_4 -> 
-	case happyOut55 happy_x_6 of { happy_var_6 -> 
-	case happyOut59 happy_x_8 of { happy_var_8 -> 
-	happyIn76
-		 ((AST.NS (AST.JSForVarIn happy_var_4 happy_var_6 happy_var_8) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_235 = happySpecReduce_2  70# happyReduction_235
-happyReduction_235 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut7 happy_x_2 of { happy_var_2 -> 
-	happyIn77
-		 ((AST.NS (AST.JSContinue [happy_var_2]) (ss happy_var_1))
-	)}}
-
-happyReduce_236 = happySpecReduce_3  70# happyReduction_236
-happyReduction_236 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn77
-		 ((AST.NS (AST.JSContinue [happy_var_2,happy_var_3]) (ss happy_var_1))
-	)}}}
-
-happyReduce_237 = happySpecReduce_2  71# happyReduction_237
-happyReduction_237 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut7 happy_x_2 of { happy_var_2 -> 
-	happyIn78
-		 ((AST.NS (AST.JSBreak []   [happy_var_2]) (ss happy_var_1))
-	)}}
-
-happyReduce_238 = happySpecReduce_3  71# happyReduction_238
-happyReduction_238 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 ((AST.NS (AST.JSBreak [happy_var_2] [happy_var_3]) (ss happy_var_1))
-	)}}}
-
-happyReduce_239 = happySpecReduce_2  72# happyReduction_239
-happyReduction_239 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut7 happy_x_2 of { happy_var_2 -> 
-	happyIn79
-		 ((AST.NS (AST.JSReturn [happy_var_2])    (ss happy_var_1))
-	)}}
-
-happyReduce_240 = happySpecReduce_3  72# happyReduction_240
-happyReduction_240 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn79
-		 ((AST.NS (AST.JSReturn [happy_var_2,happy_var_3]) (ss happy_var_1))
-	)}}}
-
-happyReduce_241 = happyReduce 6# 73# happyReduction_241
-happyReduction_241 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	case happyOut59 happy_x_5 of { happy_var_5 -> 
-	case happyOut7 happy_x_6 of { happy_var_6 -> 
-	happyIn80
-		 ((AST.NS (AST.JSWith happy_var_3 [happy_var_5,happy_var_6]) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_242 = happyReduce 5# 74# happyReduction_242
-happyReduction_242 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	case happyOut82 happy_x_5 of { happy_var_5 -> 
-	happyIn81
-		 ((AST.NS (AST.JSSwitch happy_var_3 happy_var_5) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_243 = happySpecReduce_3  75# happyReduction_243
-happyReduction_243 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut83 happy_x_2 of { happy_var_2 -> 
-	happyIn82
-		 (happy_var_2            {- CaseBlock1 -}
-	)}
-
-happyReduce_244 = happyReduce 5# 75# happyReduction_244
-happyReduction_244 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut83 happy_x_2 of { happy_var_2 -> 
-	case happyOut85 happy_x_3 of { happy_var_3 -> 
-	case happyOut83 happy_x_4 of { happy_var_4 -> 
-	happyIn82
-		 ((happy_var_2++(happy_var_3:happy_var_4)) {- CaseBlock2 -}
-	) `HappyStk` happyRest}}}
-
-happyReduce_245 = happySpecReduce_1  76# happyReduction_245
-happyReduction_245 happy_x_1
-	 =  case happyOut84 happy_x_1 of { happy_var_1 -> 
-	happyIn83
-		 ([happy_var_1] {- CaseClauses1 -}
-	)}
-
-happyReduce_246 = happySpecReduce_2  76# happyReduction_246
-happyReduction_246 happy_x_2
-	happy_x_1
-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
-	case happyOut84 happy_x_2 of { happy_var_2 -> 
-	happyIn83
-		 ((happy_var_1++[happy_var_2]) {- CaseClauses2 -}
-	)}}
-
-happyReduce_247 = happySpecReduce_0  76# happyReduction_247
-happyReduction_247  =  happyIn83
-		 ([]
-	)
-
-happyReduce_248 = happyReduce 4# 77# happyReduction_248
-happyReduction_248 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	case happyOut63 happy_x_4 of { happy_var_4 -> 
-	happyIn84
-		 ((AST.NS (AST.JSCase happy_var_2 happy_var_4) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_249 = happySpecReduce_3  77# happyReduction_249
-happyReduction_249 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	happyIn84
-		 ((AST.NS (AST.JSCase happy_var_2 (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))
-	)}}
-
-happyReduce_250 = happySpecReduce_2  78# happyReduction_250
-happyReduction_250 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn85
-		 ((AST.NS (AST.JSDefault (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))
-	)}
-
-happyReduce_251 = happySpecReduce_3  78# happyReduction_251
-happyReduction_251 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut63 happy_x_3 of { happy_var_3 -> 
-	happyIn85
-		 ((AST.NS (AST.JSDefault happy_var_3) (ss happy_var_1))
-	)}}
-
-happyReduce_252 = happySpecReduce_3  79# happyReduction_252
-happyReduction_252 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut59 happy_x_3 of { happy_var_3 -> 
-	happyIn86
-		 ((AST.NS (AST.JSLabelled happy_var_1 happy_var_3) (ex happy_var_1))
-	)}}
-
-happyReduce_253 = happySpecReduce_2  80# happyReduction_253
-happyReduction_253 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	happyIn87
-		 ((AST.NS (AST.JSThrow happy_var_2) (ss happy_var_1))
-	)}}
-
-happyReduce_254 = happySpecReduce_3  81# happyReduction_254
-happyReduction_254 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut62 happy_x_2 of { happy_var_2 -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	happyIn88
-		 ((AST.NS (AST.JSTry happy_var_2 happy_var_3) (ss happy_var_1))         {- TryStatement1 -}
-	)}}}
-
-happyReduce_255 = happySpecReduce_3  81# happyReduction_255
-happyReduction_255 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut62 happy_x_2 of { happy_var_2 -> 
-	case happyOut91 happy_x_3 of { happy_var_3 -> 
-	happyIn88
-		 ((AST.NS (AST.JSTry happy_var_2 [happy_var_3]) (ss happy_var_1))       {- TryStatement2 -}
-	)}}}
-
-happyReduce_256 = happyReduce 4# 81# happyReduction_256
-happyReduction_256 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut62 happy_x_2 of { happy_var_2 -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	case happyOut91 happy_x_4 of { happy_var_4 -> 
-	happyIn88
-		 ((AST.NS (AST.JSTry happy_var_2 (happy_var_3++[happy_var_4])) (ss happy_var_1)) {- TryStatement3 -}
-	) `HappyStk` happyRest}}}}
-
-happyReduce_257 = happySpecReduce_1  82# happyReduction_257
-happyReduction_257 happy_x_1
-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
-	happyIn89
-		 ([happy_var_1]       {- Catches 1 -}
-	)}
-
-happyReduce_258 = happySpecReduce_2  82# happyReduction_258
-happyReduction_258 happy_x_2
-	happy_x_1
-	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
-	case happyOut90 happy_x_2 of { happy_var_2 -> 
-	happyIn89
-		 ((happy_var_1++[happy_var_2]) {- Catches 2 -}
-	)}}
-
-happyReduce_259 = happyReduce 5# 83# happyReduction_259
-happyReduction_259 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_3 of { happy_var_3 -> 
-	case happyOut62 happy_x_5 of { happy_var_5 -> 
-	happyIn90
-		 ((AST.NS (AST.JSCatch happy_var_3 [] happy_var_5) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_260 = happyReduce 7# 83# happyReduction_260
-happyReduction_260 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_3 of { happy_var_3 -> 
-	case happyOut50 happy_x_5 of { happy_var_5 -> 
-	case happyOut62 happy_x_7 of { happy_var_7 -> 
-	happyIn90
-		 ((AST.NS (AST.JSCatch happy_var_3 happy_var_5 happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_261 = happySpecReduce_2  84# happyReduction_261
-happyReduction_261 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut62 happy_x_2 of { happy_var_2 -> 
-	happyIn91
-		 ((AST.NS (AST.JSFinally happy_var_2) (ss happy_var_1))
-	)}}
-
-happyReduce_262 = happySpecReduce_2  85# happyReduction_262
-happyReduction_262 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn92
-		 ((AST.NS (AST.JSLiteral "debugger") (ss happy_var_1))
-	)}
-
-happyReduce_263 = happyReduce 8# 86# happyReduction_263
-happyReduction_263 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	case happyOut96 happy_x_4 of { happy_var_4 -> 
-	case happyOut97 happy_x_7 of { happy_var_7 -> 
-	happyIn93
-		 ((AST.NS (AST.JSFunction happy_var_2 happy_var_4 happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_264 = happyReduce 7# 86# happyReduction_264
-happyReduction_264 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	case happyOut97 happy_x_6 of { happy_var_6 -> 
-	happyIn93
-		 ((AST.NS (AST.JSFunction happy_var_2 [] happy_var_6) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_265 = happyReduce 7# 87# happyReduction_265
-happyReduction_265 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut97 happy_x_6 of { happy_var_6 -> 
-	happyIn94
-		 ((AST.NS (AST.JSFunctionExpression happy_var_2 [] happy_var_6) (ss happy_var_1))
-	) `HappyStk` happyRest}}}
-
-happyReduce_266 = happyReduce 8# 87# happyReduction_266
-happyReduction_266 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut96 happy_x_4 of { happy_var_4 -> 
-	case happyOut97 happy_x_7 of { happy_var_7 -> 
-	happyIn94
-		 ((AST.NS (AST.JSFunctionExpression happy_var_2 happy_var_4 happy_var_7) (ss happy_var_1))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_267 = happySpecReduce_1  88# happyReduction_267
-happyReduction_267 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn95
-		 ([happy_var_1] {- IdentifierOpt -}
-	)}
-
-happyReduce_268 = happySpecReduce_0  88# happyReduction_268
-happyReduction_268  =  happyIn95
-		 ([]   {- IdentifierOpt -}
-	)
-
-happyReduce_269 = happySpecReduce_1  89# happyReduction_269
-happyReduction_269 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn96
-		 ([happy_var_1] {- FormalParameterList -}
-	)}
-
-happyReduce_270 = happySpecReduce_3  89# happyReduction_270
-happyReduction_270 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_3 of { happy_var_3 -> 
-	happyIn96
-		 ((happy_var_1++[happy_var_3])
-	)}}
-
-happyReduce_271 = happySpecReduce_1  90# happyReduction_271
-happyReduction_271 happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	happyIn97
-		 ((AST.NS (AST.JSFunctionBody [happy_var_1]) (ex happy_var_1))
-	)}
-
-happyReduce_272 = happySpecReduce_0  90# happyReduction_272
-happyReduction_272  =  happyIn97
-		 ((AST.NS (AST.JSFunctionBody [])   SpanEmpty)
-	)
-
-happyReduce_273 = happySpecReduce_1  91# happyReduction_273
-happyReduction_273 happy_x_1
-	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
-	happyIn98
-		 (happy_var_1 {- Program -}
-	)}
-
-happyReduce_274 = happySpecReduce_1  92# happyReduction_274
-happyReduction_274 happy_x_1
-	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
-	happyIn99
-		 ((AST.NS (AST.JSSourceElements [happy_var_1]) (ex happy_var_1))
-	)}
-
-happyReduce_275 = happySpecReduce_2  92# happyReduction_275
-happyReduction_275 happy_x_2
-	happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	case happyOut101 happy_x_2 of { happy_var_2 -> 
-	happyIn99
-		 ((combineSourceElements happy_var_1 happy_var_2)
-	)}}
-
-happyReduce_276 = happySpecReduce_1  93# happyReduction_276
-happyReduction_276 happy_x_1
-	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
-	happyIn100
-		 ((AST.NS (AST.JSSourceElementsTop [happy_var_1]) (ex happy_var_1))
-	)}
-
-happyReduce_277 = happySpecReduce_2  93# happyReduction_277
-happyReduction_277 happy_x_2
-	happy_x_1
-	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
-	case happyOut101 happy_x_2 of { happy_var_2 -> 
-	happyIn100
-		 ((combineSourceElementsTop happy_var_1 happy_var_2)
-	)}}
-
-happyReduce_278 = happySpecReduce_1  94# happyReduction_278
-happyReduction_278 happy_x_1
-	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
-	happyIn101
-		 (happy_var_1 {- SourceElement1 -}
-	)}
-
-happyReduce_279 = happySpecReduce_1  94# happyReduction_279
-happyReduction_279 happy_x_1
-	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
-	happyIn101
-		 (happy_var_1 {- SourceElement2 -}
-	)}
-
-happyNewToken action sts stk
-	= lexCont(\tk -> 
-	let cont i = happyDoAction i tk action sts stk in
-	case tk of {
-	EOFToken {} -> happyDoAction 79# tk action sts stk;
-	SemiColonToken {} -> cont 1#;
-	CommaToken {} -> cont 2#;
-	HookToken {} -> cont 3#;
-	ColonToken {} -> cont 4#;
-	OrToken {} -> cont 5#;
-	AndToken {} -> cont 6#;
-	BitwiseOrToken {} -> cont 7#;
-	BitwiseXorToken {} -> cont 8#;
-	BitwiseAndToken {} -> cont 9#;
-	StrictEqToken {} -> cont 10#;
-	EqToken {} -> cont 11#;
-	SimpleAssignToken {} -> cont 12#;
-	StrictNeToken {} -> cont 13#;
-	NeToken {} -> cont 14#;
-	LshToken {} -> cont 15#;
-	LeToken {} -> cont 16#;
-	LtToken {} -> cont 17#;
-	UrshToken {} -> cont 18#;
-	RshToken {} -> cont 19#;
-	GeToken {} -> cont 20#;
-	GtToken {} -> cont 21#;
-	IncrementToken {} -> cont 22#;
-	DecrementToken {} -> cont 23#;
-	PlusToken {} -> cont 24#;
-	MinusToken {} -> cont 25#;
-	MulToken {} -> cont 26#;
-	DivToken {} -> cont 27#;
-	ModToken {} -> cont 28#;
-	NotToken {} -> cont 29#;
-	BitwiseNotToken {} -> cont 30#;
-	DotToken {} -> cont 31#;
-	LeftBracketToken {} -> cont 32#;
-	RightBracketToken {} -> cont 33#;
-	LeftCurlyToken {} -> cont 34#;
-	RightCurlyToken {} -> cont 35#;
-	LeftParenToken {} -> cont 36#;
-	RightParenToken {} -> cont 37#;
-	CondcommentEndToken {} -> cont 38#;
-	BreakToken {} -> cont 39#;
-	CaseToken {} -> cont 40#;
-	CatchToken {} -> cont 41#;
-	ConstToken {} -> cont 42#;
-	ContinueToken {} -> cont 43#;
-	DebuggerToken {} -> cont 44#;
-	DefaultToken {} -> cont 45#;
-	DeleteToken {} -> cont 46#;
-	DoToken {} -> cont 47#;
-	ElseToken {} -> cont 48#;
-	EnumToken {} -> cont 49#;
-	FalseToken {} -> cont 50#;
-	FinallyToken {} -> cont 51#;
-	ForToken {} -> cont 52#;
-	FunctionToken {} -> cont 53#;
-	GetToken {} -> cont 54#;
-	IfToken {} -> cont 55#;
-	InToken {} -> cont 56#;
-	InstanceofToken {} -> cont 57#;
-	NewToken {} -> cont 58#;
-	NullToken {} -> cont 59#;
-	ReturnToken {} -> cont 60#;
-	SetToken {} -> cont 61#;
-	SwitchToken {} -> cont 62#;
-	ThisToken {} -> cont 63#;
-	ThrowToken {} -> cont 64#;
-	TrueToken {} -> cont 65#;
-	TryToken {} -> cont 66#;
-	TypeofToken {} -> cont 67#;
-	VarToken {} -> cont 68#;
-	VoidToken {} -> cont 69#;
-	WhileToken {} -> cont 70#;
-	WithToken {} -> cont 71#;
-	IdentifierToken {} -> cont 72#;
-	DecimalToken {} -> cont 73#;
-	HexIntegerToken {} -> cont 74#;
-	StringToken {} -> cont 75#;
-	RegExToken {} -> cont 76#;
-	AssignToken {} -> cont 77#;
-	FutureToken {} -> cont 78#;
-	_ -> happyError' tk
-	})
-
-happyError_ 79# tk = happyError' tk
-happyError_ _ tk = happyError' tk
-
-happyThen :: () => P a -> (a -> P b) -> P b
-happyThen = (thenP)
-happyReturn :: () => a -> P a
-happyReturn = (returnP)
-happyThen1 = happyThen
-happyReturn1 :: () => a -> P a
-happyReturn1 = happyReturn
-happyError' :: () => (Token) -> P a
-happyError' tk = parseError tk
-
-parseProgram = happySomeParser where
-  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut98 x))
-
-parseLiteral = happySomeParser where
-  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut8 x))
-
-parsePrimaryExpression = happySomeParser where
-  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut14 x))
-
-parseStatement = happySomeParser where
-  happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut59 x))
-
-happySeq = happyDontSeq
-
-
--- combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x] (ss $1)) )
-combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineSourceElements (AST.NS (AST.JSSourceElements xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElements (xs++[x1])) s1) 
-
--- combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x] (ss $1)) )
-combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineSourceElementsTop (AST.NS (AST.JSSourceElementsTop xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElementsTop (xs++[x1])) s1)
-
--- combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )
--- combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )
-combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineStatements (AST.NS (AST.JSStatementList xs) s1) (AST.NS (AST.JSStatementList ys) s2) = (AST.NS (AST.JSStatementList (xs++ys) ) s1)
-combineStatements (AST.NS (AST.JSStatementList xs) s1) y = (AST.NS (AST.JSStatementList (xs++[y])) s1)
-
-parseError :: Token -> P a 
-parseError = throwError . UnexpectedToken 
-
--- flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode
--- flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)
---                         where
---                           litComma :: [AST.JSNode]
---                           litComma = [(AST.JSLiteral ",")]
-flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode
-flattenExpression (AST.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1)
-                        where
-                          litComma :: [AST.JSNode]
-                          litComma = [AST.NS (AST.JSLiteral ",") SpanEmpty]
-
-mex :: [AST.JSNode] -> SrcSpan
-mex [] = SpanEmpty
-mex xs = ex (head xs)
-
-ex :: AST.JSNode -> SrcSpan
-ex (AST.NS _node span) = span
-
-ss token = toSrcSpan (token_span token) 
-
-{-
-ex :: AST.JSNode -> AST.JSNode
-ex (AST.NS node span) = node
-
-mex :: [AST.JSNode] -> [AST.JSNode]
-mex xs = map ex xs
-
-combine :: [AST.JSNode] -> AST.JSNode
-combine [] = AST.NSS [] SpanEmpty
-combine xs = AST.NSS (mex xs) span
-  where
-    (AST.NS _ span) = head xs
+  -- debug
+  , fp
+  ) where
+
+-- import Control.Monad.Error.Class (throwError)
+import Data.Char
+import Language.JavaScript.Parser.Lexer
+import Language.JavaScript.Parser.ParseError
+import Language.JavaScript.Parser.ParserMonad
+import Language.JavaScript.Parser.SrcLocation
+import Language.JavaScript.Parser.Token
+import qualified Language.JavaScript.Parser.AST as AST
+import qualified Data.Array as Happy_Data_Array
+import qualified GHC.Exts as Happy_GHC_Exts
+
+-- parser produced by Happy Version 1.18.9
+
+newtype HappyAbsSyn  = HappyAbsSyn HappyAny
+#if __GLASGOW_HASKELL__ >= 607
+type HappyAny = Happy_GHC_Exts.Any
+#else
+type HappyAny = forall a . a
+#endif
+happyIn7 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn7 #-}
+happyOut7 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut7 #-}
+happyIn8 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn8 #-}
+happyOut8 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut8 #-}
+happyIn9 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn9 #-}
+happyOut9 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut9 #-}
+happyIn10 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn10 #-}
+happyOut10 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut10 #-}
+happyIn11 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn11 #-}
+happyOut11 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut11 #-}
+happyIn12 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn12 #-}
+happyOut12 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut12 #-}
+happyIn13 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn13 #-}
+happyOut13 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut13 #-}
+happyIn14 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn14 #-}
+happyOut14 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut14 #-}
+happyIn15 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn15 #-}
+happyOut15 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut15 #-}
+happyIn16 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn16 #-}
+happyOut16 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut16 #-}
+happyIn17 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn17 #-}
+happyOut17 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut17 #-}
+happyIn18 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn18 #-}
+happyOut18 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut18 #-}
+happyIn19 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn19 #-}
+happyOut19 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut19 #-}
+happyIn20 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn20 #-}
+happyOut20 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut20 #-}
+happyIn21 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn21 #-}
+happyOut21 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut21 #-}
+happyIn22 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn22 #-}
+happyOut22 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut22 #-}
+happyIn23 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn23 #-}
+happyOut23 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut23 #-}
+happyIn24 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn24 #-}
+happyOut24 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut24 #-}
+happyIn25 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn25 #-}
+happyOut25 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut25 #-}
+happyIn26 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn26 #-}
+happyOut26 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut26 #-}
+happyIn27 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn27 #-}
+happyOut27 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut27 #-}
+happyIn28 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn28 #-}
+happyOut28 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut28 #-}
+happyIn29 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn29 #-}
+happyOut29 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut29 #-}
+happyIn30 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn30 #-}
+happyOut30 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut30 #-}
+happyIn31 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn31 #-}
+happyOut31 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut31 #-}
+happyIn32 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn32 #-}
+happyOut32 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut32 #-}
+happyIn33 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn33 #-}
+happyOut33 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut33 #-}
+happyIn34 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn34 #-}
+happyOut34 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut34 #-}
+happyIn35 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn35 #-}
+happyOut35 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut35 #-}
+happyIn36 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn36 #-}
+happyOut36 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut36 #-}
+happyIn37 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn37 #-}
+happyOut37 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut37 #-}
+happyIn38 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn38 #-}
+happyOut38 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut38 #-}
+happyIn39 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn39 #-}
+happyOut39 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut39 #-}
+happyIn40 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn40 #-}
+happyOut40 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut40 #-}
+happyIn41 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn41 #-}
+happyOut41 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut41 #-}
+happyIn42 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn42 #-}
+happyOut42 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut42 #-}
+happyIn43 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn43 #-}
+happyOut43 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut43 #-}
+happyIn44 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn44 #-}
+happyOut44 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut44 #-}
+happyIn45 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn45 #-}
+happyOut45 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut45 #-}
+happyIn46 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn46 #-}
+happyOut46 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut46 #-}
+happyIn47 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn47 #-}
+happyOut47 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut47 #-}
+happyIn48 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn48 #-}
+happyOut48 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut48 #-}
+happyIn49 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn49 #-}
+happyOut49 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut49 #-}
+happyIn50 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn50 #-}
+happyOut50 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut50 #-}
+happyIn51 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn51 #-}
+happyOut51 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut51 #-}
+happyIn52 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn52 #-}
+happyOut52 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut52 #-}
+happyIn53 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn53 #-}
+happyOut53 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut53 #-}
+happyIn54 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn54 #-}
+happyOut54 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut54 #-}
+happyIn55 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn55 #-}
+happyOut55 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut55 #-}
+happyIn56 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn56 #-}
+happyOut56 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut56 #-}
+happyIn57 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn57 #-}
+happyOut57 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut57 #-}
+happyIn58 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn58 #-}
+happyOut58 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut58 #-}
+happyIn59 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn59 #-}
+happyOut59 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut59 #-}
+happyIn60 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn60 #-}
+happyOut60 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut60 #-}
+happyIn61 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn61 #-}
+happyOut61 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut61 #-}
+happyIn62 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn62 #-}
+happyOut62 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut62 #-}
+happyIn63 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn63 #-}
+happyOut63 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut63 #-}
+happyIn64 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn64 #-}
+happyOut64 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut64 #-}
+happyIn65 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn65 #-}
+happyOut65 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut65 #-}
+happyIn66 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn66 #-}
+happyOut66 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut66 #-}
+happyIn67 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn67 #-}
+happyOut67 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut67 #-}
+happyIn68 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn68 #-}
+happyOut68 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut68 #-}
+happyIn69 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn69 #-}
+happyOut69 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut69 #-}
+happyIn70 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn70 #-}
+happyOut70 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut70 #-}
+happyIn71 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn71 #-}
+happyOut71 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut71 #-}
+happyIn72 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn72 #-}
+happyOut72 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut72 #-}
+happyIn73 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn73 #-}
+happyOut73 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut73 #-}
+happyIn74 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn74 #-}
+happyOut74 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut74 #-}
+happyIn75 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn75 #-}
+happyOut75 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut75 #-}
+happyIn76 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn76 #-}
+happyOut76 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut76 #-}
+happyIn77 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn77 #-}
+happyOut77 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut77 #-}
+happyIn78 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn78 #-}
+happyOut78 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut78 #-}
+happyIn79 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn79 #-}
+happyOut79 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut79 #-}
+happyIn80 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn80 #-}
+happyOut80 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut80 #-}
+happyIn81 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn81 #-}
+happyOut81 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut81 #-}
+happyIn82 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn82 #-}
+happyOut82 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut82 #-}
+happyIn83 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn83 #-}
+happyOut83 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut83 #-}
+happyIn84 :: ([ AST.JSNode ]) -> (HappyAbsSyn )
+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn84 #-}
+happyOut84 :: (HappyAbsSyn ) -> ([ AST.JSNode ])
+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut84 #-}
+happyIn85 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn85 #-}
+happyOut85 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut85 #-}
+happyIn86 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn86 #-}
+happyOut86 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut86 #-}
+happyIn87 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn87 #-}
+happyOut87 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut87 #-}
+happyIn88 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn88 #-}
+happyOut88 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut88 #-}
+happyIn89 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn89 #-}
+happyOut89 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut89 #-}
+happyIn90 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn90 #-}
+happyOut90 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut90 #-}
+happyIn91 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn91 #-}
+happyOut91 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut91 #-}
+happyIn92 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn92 #-}
+happyOut92 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut92 #-}
+happyIn93 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn93 #-}
+happyOut93 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut93 #-}
+happyIn94 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn94 #-}
+happyOut94 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut94 #-}
+happyIn95 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn95 #-}
+happyOut95 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut95 #-}
+happyIn96 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn96 #-}
+happyOut96 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut96 #-}
+happyIn97 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn97 #-}
+happyOut97 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut97 #-}
+happyIn98 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn98 #-}
+happyOut98 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut98 #-}
+happyIn99 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn99 #-}
+happyOut99 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut99 #-}
+happyIn100 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn100 #-}
+happyOut100 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut100 #-}
+happyIn101 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn101 #-}
+happyOut101 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut101 #-}
+happyIn102 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn102 #-}
+happyOut102 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut102 #-}
+happyIn103 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn103 #-}
+happyOut103 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut103 #-}
+happyIn104 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn104 #-}
+happyOut104 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut104 #-}
+happyIn105 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn105 #-}
+happyOut105 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut105 #-}
+happyIn106 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn106 #-}
+happyOut106 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut106 #-}
+happyIn107 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn107 #-}
+happyOut107 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut107 #-}
+happyIn108 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn108 #-}
+happyOut108 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut108 #-}
+happyIn109 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn109 #-}
+happyOut109 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut109 #-}
+happyIn110 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn110 #-}
+happyOut110 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut110 #-}
+happyIn111 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn111 #-}
+happyOut111 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut111 #-}
+happyIn112 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn112 #-}
+happyOut112 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut112 #-}
+happyIn113 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn113 #-}
+happyOut113 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut113 #-}
+happyIn114 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn114 #-}
+happyOut114 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut114 #-}
+happyIn115 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn115 #-}
+happyOut115 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut115 #-}
+happyIn116 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn116 #-}
+happyOut116 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut116 #-}
+happyIn117 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn117 #-}
+happyOut117 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut117 #-}
+happyIn118 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn118 #-}
+happyOut118 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut118 #-}
+happyIn119 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn119 #-}
+happyOut119 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut119 #-}
+happyIn120 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn120 #-}
+happyOut120 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut120 #-}
+happyIn121 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn121 #-}
+happyOut121 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut121 #-}
+happyIn122 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn122 #-}
+happyOut122 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut122 #-}
+happyIn123 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn123 #-}
+happyOut123 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut123 #-}
+happyIn124 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn124 #-}
+happyOut124 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut124 #-}
+happyIn125 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn125 #-}
+happyOut125 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut125 #-}
+happyIn126 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn126 #-}
+happyOut126 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut126 #-}
+happyIn127 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn127 #-}
+happyOut127 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut127 #-}
+happyIn128 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn128 #-}
+happyOut128 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut128 #-}
+happyIn129 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn129 #-}
+happyOut129 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut129 #-}
+happyIn130 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn130 #-}
+happyOut130 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut130 #-}
+happyIn131 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn131 #-}
+happyOut131 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut131 #-}
+happyIn132 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn132 #-}
+happyOut132 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut132 #-}
+happyIn133 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn133 #-}
+happyOut133 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut133 #-}
+happyIn134 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn134 #-}
+happyOut134 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut134 #-}
+happyIn135 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn135 #-}
+happyOut135 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut135 #-}
+happyIn136 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn136 #-}
+happyOut136 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut136 #-}
+happyIn137 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn137 #-}
+happyOut137 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut137 #-}
+happyIn138 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn138 #-}
+happyOut138 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut138 #-}
+happyIn139 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn139 #-}
+happyOut139 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut139 #-}
+happyIn140 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn140 #-}
+happyOut140 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut140 #-}
+happyIn141 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn141 #-}
+happyOut141 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut141 #-}
+happyIn142 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn142 #-}
+happyOut142 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut142 #-}
+happyIn143 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn143 #-}
+happyOut143 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut143 #-}
+happyIn144 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn144 #-}
+happyOut144 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut144 #-}
+happyIn145 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn145 #-}
+happyOut145 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut145 #-}
+happyIn146 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn146 #-}
+happyOut146 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut146 #-}
+happyIn147 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn147 #-}
+happyOut147 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut147 #-}
+happyIn148 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn148 #-}
+happyOut148 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut148 #-}
+happyIn149 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn149 #-}
+happyOut149 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut149 #-}
+happyIn150 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn150 #-}
+happyOut150 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut150 #-}
+happyIn151 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn151 #-}
+happyOut151 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut151 #-}
+happyIn152 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn152 #-}
+happyOut152 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut152 #-}
+happyIn153 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn153 #-}
+happyOut153 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut153 #-}
+happyIn154 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn154 #-}
+happyOut154 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut154 #-}
+happyIn155 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn155 #-}
+happyOut155 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut155 #-}
+happyIn156 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn156 #-}
+happyOut156 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut156 #-}
+happyIn157 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn157 #-}
+happyOut157 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut157 #-}
+happyIn158 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn158 #-}
+happyOut158 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut158 #-}
+happyIn159 :: ([AST.JSNode]) -> (HappyAbsSyn )
+happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn159 #-}
+happyOut159 :: (HappyAbsSyn ) -> ([AST.JSNode])
+happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut159 #-}
+happyIn160 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn160 #-}
+happyOut160 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut160 #-}
+happyIn161 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn161 #-}
+happyOut161 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut161 #-}
+happyIn162 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn162 #-}
+happyOut162 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut162 #-}
+happyIn163 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn163 #-}
+happyOut163 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut163 #-}
+happyIn164 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn164 #-}
+happyOut164 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut164 #-}
+happyIn165 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn165 #-}
+happyOut165 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut165 #-}
+happyIn166 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn166 #-}
+happyOut166 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut166 #-}
+happyIn167 :: (AST.JSNode) -> (HappyAbsSyn )
+happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn167 #-}
+happyOut167 :: (HappyAbsSyn ) -> (AST.JSNode)
+happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut167 #-}
+happyInTok :: (Token) -> (HappyAbsSyn )
+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn ) -> (Token)
+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\x52\x2b\xb2\x0f\x92\x13\x52\x2b\xb2\x03\x00\x00\x41\x2d\x61\x2a\x89\x2b\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x7a\x01\x7a\x01\x91\x03\x52\x2b\x91\x03\x91\x03\xef\x00\xef\x00\xde\x28\x91\x03\x91\x03\x41\x2d\x90\x03\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x65\x01\x00\x00\x65\x01\xfc\xff\xa7\x02\x00\x00\xcb\x02\x9b\x02\x5f\x01\x9e\x01\x79\x02\x9c\x03\x97\x03\x96\x03\x8f\x03\x30\x01\x00\x00\x00\x00\x92\x03\x62\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x0f\x4c\x03\x00\x00\x49\x03\x41\x03\x45\x03\x7a\x01\x00\x00\x00\x00\x45\x03\x15\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\x00\x00\x00\x00\x41\x2d\x00\x00\x41\x2d\x41\x2d\x00\x00\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x00\x00\x00\x00\xf7\x2b\x41\x2d\xc2\x1d\x00\x00\x00\x00\x41\x2d\xc2\x1d\x00\x00\x52\x2b\x00\x00\x00\x00\x1b\x2b\x09\x01\x84\x03\x41\x2d\x41\x2d\x00\x00\xa4\x02\x00\x00\x80\x03\x00\x00\x80\x03\xc0\x2b\x41\x2d\x3f\x03\x41\x2d\x74\x03\xa4\x02\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x89\x2b\x00\x00\x00\x00\xc9\x29\x7b\x03\x7a\x03\x79\x03\x00\x00\x1b\x2b\x78\x03\x37\x01\x71\x03\xe4\x2a\x0a\x2d\x70\x03\x6f\x03\x56\x03\xe0\x00\x55\x03\x1c\x11\x6d\x03\x6c\x03\x4a\x03\x68\x03\xd3\x2c\x66\x03\x46\x03\x9c\x2c\x18\x01\x65\x2c\x42\x03\x40\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x2b\x00\x00\x7b\x00\x00\x00\x2e\x2c\x00\x00\x3b\x00\x3e\x03\x3b\x00\x7b\x00\x32\x00\x5f\x01\x49\x01\x79\x02\x4e\x03\x58\x03\x51\x03\x4d\x03\x30\x01\x00\x00\x00\x00\x50\x03\x4f\x03\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x2d\x03\x2c\x03\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x2a\x00\x00\x00\x00\x7c\x29\x2d\x29\x6c\x00\x00\x00\x6c\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x02\xcb\x02\x89\x02\x89\x02\x89\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x9e\x01\x9e\x01\x9e\x01\x9e\x01\x79\x02\x44\x03\x43\x03\x3b\x03\x3c\x03\x39\x03\x00\x00\x00\x00\x18\x03\x18\x03\x2e\x2c\x00\x00\xf4\x0f\xb2\x00\xb2\x00\x10\x03\x00\x00\x3b\x00\x10\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x07\x03\x7b\x00\x2e\x2c\x00\x00\x2e\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x08\x03\x52\x2b\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2f\x03\x6f\x02\xf3\x02\x52\x2b\x2e\x2c\x52\x2b\x00\x00\x00\x00\x00\x00\x89\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x26\x03\xfe\x02\x3b\x00\x00\x00\x2e\x2c\x7b\x00\x2e\x2c\x2e\x2c\x00\x00\xfc\xff\x00\x00\x3b\x00\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x9e\x01\x9e\x01\x9e\x01\x9e\x01\x79\x02\x20\x03\x25\x03\x1f\x03\x24\x03\x1e\x03\x00\x00\x23\x03\x22\x03\x21\x03\xf7\x02\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\xf8\x02\xff\x02\xff\x02\x7b\x00\x52\x2b\xff\x02\x52\x2b\xfd\x02\x52\x2b\x00\x00\x52\x2b\xfd\x02\x00\x00\x52\x2b\x52\x2b\xfc\x02\xfc\x02\x2e\x2c\x2e\x2c\xf1\x00\x00\x00\x00\x00\x00\x00\x2e\x2c\x2e\x2c\x52\x2b\x00\x00\x1b\x03\x00\x00\x3b\x00\x1a\x03\x52\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x2b\x2e\x2c\x00\x00\x00\x00\xf5\x02\x00\x00\x15\x03\x00\x00\xf0\x02\x00\x00\xfe\x00\xf2\x02\x00\x00\x52\x2b\xea\x02\xea\x02\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x02\xe9\x02\x52\x2b\x2a\x02\x52\x2b\x52\x2b\xe5\x02\x00\x00\x52\x2b\x00\x00\x52\x2b\x00\x00\x52\x2b\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\x9d\x03\xe2\xff\x79\x00\x61\x05\x00\x00\x00\x00\x72\x18\x65\x06\x03\x10\x00\x00\x97\x28\x7c\x28\x23\x28\x08\x28\xaf\x27\x94\x27\x3b\x27\x20\x27\xc7\x26\xd1\x00\x83\x00\x04\x03\xe1\x0e\x02\x03\x00\x03\x2c\x00\x09\x00\xf8\x05\xfb\x02\xfa\x02\x0c\x18\x1d\x00\xe4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x52\x01\x00\x00\x4a\x01\xa9\x00\x5b\x02\x00\x00\xce\x02\x3b\x02\xc2\x02\xd9\x01\x70\x02\xd9\x02\xcd\x02\xd4\x02\xcf\x02\xf6\x01\x00\x00\x00\x00\xec\x02\xad\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\xa1\x02\x00\x00\x00\x00\xa0\x02\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x35\x04\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x02\xd5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x13\x1d\x00\x00\x32\x1e\xb1\x1c\x00\x00\x00\x00\xb4\x1e\x00\x00\x34\x1f\x00\x00\xb2\x1f\x00\x00\x2e\x20\x00\x00\x1a\x22\xfb\x21\x9f\x21\x80\x21\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x24\x78\x24\x5a\x24\xff\x23\xe1\x23\x86\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x25\x4b\x25\xf1\x24\x00\x00\x00\x00\x00\x00\xdf\x25\xc3\x25\xac\x26\x53\x26\x38\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x1c\x00\x00\x00\x00\xae\x13\xa6\x17\xdc\x01\x00\x00\x00\x00\x40\x17\xa5\x01\x00\x00\x51\x0e\x00\x00\x00\x00\xf9\x06\x7a\x00\xc7\x02\xda\x16\x74\x16\x00\x00\x51\x01\x00\x00\xd2\x02\x00\x00\xd0\x02\xcd\x10\x0e\x16\x99\x02\xa8\x15\xeb\xff\x27\x01\x00\x00\x26\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x01\x42\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x41\x09\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x10\x00\x00\xd0\xff\x00\x00\xed\x1b\x00\x00\x15\x02\xc5\x02\x05\x02\x69\x00\xfe\xff\xc2\x02\x63\x02\x6c\x02\x8a\x02\x91\x02\x82\x02\x73\x02\xd5\x01\x00\x00\x00\x00\x8d\x02\x7c\x02\x00\x00\x00\x00\x00\x00\xc6\x01\xc5\x01\x80\x02\x1c\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x08\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x0b\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x02\xa2\x02\x29\x00\x29\x00\x29\x00\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\xd9\x01\xd9\x01\xd9\x01\xd9\x01\x68\x02\x44\x02\x4b\x02\x43\x02\x32\x02\x1a\x02\x00\x00\x00\x00\x37\x02\x35\x02\x8b\x1b\x00\x00\xa3\x01\x17\x00\x05\x00\x31\x02\x00\x00\xaa\x01\x2f\x02\x5d\x01\x00\x00\x00\x00\x00\x00\x2c\x02\xda\xff\x29\x1b\x00\x00\xc7\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x02\x00\xc1\x0d\xd5\x12\x64\x1a\xd5\x1d\x01\x1a\x8e\x1e\x10\x1f\x90\x1f\x0e\x20\x24\x21\x05\x21\xa9\x20\x8a\x20\x68\x23\x0d\x23\xef\x22\x94\x22\x76\x22\x42\x15\x9e\x19\xd7\xff\x5b\x00\x0e\x02\x31\x0d\xdc\x14\x71\x0f\x00\x00\x00\x00\x00\x00\x73\x12\x00\x00\x00\x00\x00\x00\x00\x00\x14\x02\xd4\xff\x54\x01\x00\x00\x76\x14\xc4\xff\x06\x12\x3b\x19\x00\x00\x8a\x00\x00\x00\xe4\x00\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\xd9\x01\xd9\x01\xd9\x01\xd9\x01\x39\x02\xe7\x01\xe3\x01\xe2\x01\xf2\x01\xbe\x01\x00\x00\xc8\x01\xd0\x01\xd1\x01\xf8\xff\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xa8\x01\x9d\x01\x53\x01\x03\x03\x95\x01\x69\x02\x92\x01\xcb\x04\x00\x00\xcf\x01\x90\x01\x00\x00\x35\x01\x9b\x00\x8f\x01\x18\x00\x75\x1d\x10\x14\x16\x00\x00\x00\x00\x00\x00\x00\x9e\x11\xd8\x18\xa1\x0c\x00\x00\x81\x01\x00\x00\x92\x00\x83\x01\x11\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x0b\x36\x11\x00\x00\x00\x00\x7e\x01\x00\x00\x75\x01\x00\x00\xe6\xff\x00\x00\xe2\x00\x4e\x01\x00\x00\x01\x00\x3b\x01\x39\x01\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x15\x00\x19\x08\x19\x00\x89\x07\xf1\x0a\xd8\x00\x00\x00\x61\x0a\x00\x00\xd1\x09\x00\x00\xd1\x09\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\xe3\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xfe\xac\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\x6b\xff\xad\xff\xab\xff\xaa\xff\x66\xff\x5c\xff\x5b\xff\x5a\xff\x57\xff\x4d\xff\x47\xff\x43\xff\x42\xff\x35\xff\x2b\xff\x27\xff\x23\xff\x1f\xff\x1b\xff\x17\xff\x13\xff\x0d\xff\xe2\xfe\x00\x00\x05\xff\x03\xff\x02\xff\x04\xff\x01\xff\x00\xff\xff\xfe\xfe\xfe\xfd\xfe\xfc\xfe\xfb\xfe\xf9\xfe\xfa\xfe\xf8\xfe\xf7\xfe\xf6\xfe\x6a\xff\x00\x00\xf1\xff\xef\xff\xee\xff\xea\xff\xe9\xff\xe7\xff\xe8\xff\xf5\xff\xf7\xff\xf9\xff\xc6\xff\xcd\xff\xc7\xff\xfa\xff\xed\xff\xca\xff\xb3\xff\xc8\xff\xbc\xff\xa7\xff\xcc\xff\x00\x00\xb5\xff\xc5\xff\xa6\xff\xc3\xff\xae\xff\xc0\xff\xb4\xff\xbf\xff\xeb\xff\xce\xff\xec\xff\xc9\xff\xc4\xff\xa8\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\x00\x00\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xb4\xfe\xa7\xfe\xa6\xfe\x00\x00\x00\x00\xa9\xfe\xaf\xfe\xa8\xfe\xbb\xff\x00\x00\x00\x00\xae\xfe\xad\xfe\x77\xff\x6d\xff\x6e\xff\xa5\xff\x6f\xff\x00\x00\x74\xff\x00\x00\xf6\xff\xa4\xff\xa3\xff\xa2\xff\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\xa7\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x8f\xff\xa6\xff\x8d\xff\x8c\xff\x8b\xff\x8a\xff\x89\xff\x88\xff\x87\xff\x86\xff\x85\xff\x84\xff\x83\xff\x66\xff\x65\xff\xba\xfe\xac\xfe\x00\x00\xf3\xff\x00\x00\x00\x00\xd1\xff\xd6\xff\x00\x00\xd5\xff\x00\x00\xd4\xff\x00\x00\xd2\xff\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xd9\xff\xd8\xff\xd7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\x00\x00\x00\x00\x00\x00\xe3\xff\xe1\xff\xe2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xe5\xff\xe4\xff\x59\xff\x58\xff\x0e\xff\x0f\xff\x00\x00\xd0\xff\xcf\xff\x00\x00\x00\x00\x00\x00\x63\xff\xf0\xff\x00\x00\x00\x00\x64\xff\x00\x00\xf2\xff\xb5\xfe\x00\x00\x00\x00\xc3\xfe\x00\x00\x00\x00\xd1\xfe\xfa\xff\xd3\xfe\xfa\xff\xd5\xfe\xfa\xff\x06\xff\x00\x00\x00\x00\x00\x00\xe9\xfe\xfa\xff\xed\xfe\xfa\xff\x5a\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x54\xff\x55\xff\x56\xff\x52\xff\x53\xff\x82\xff\x79\xff\x00\x00\x00\x00\x7c\xff\xf4\xff\x77\xff\xb8\xff\xb7\xff\xad\xff\xf1\xfe\x00\x00\xc6\xff\xa1\xff\xc7\xff\x9f\xff\x9d\xff\xca\xff\xb3\xff\x97\xff\x96\xff\x94\xff\x91\xff\xb5\xff\xc5\xff\x8d\xff\xae\xff\x8b\xff\xb4\xff\x89\xff\x88\xff\x87\xff\x86\xff\x85\xff\x84\xff\x00\x00\xa9\xff\xf8\xff\xf4\xfe\xf0\xfe\x81\xff\x78\xff\x7d\xff\x80\xff\x00\x00\xef\xfe\x00\x00\xee\xfe\x00\x00\xe8\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xff\x3b\xff\x30\xff\x29\xff\x25\xff\x21\xff\x1d\xff\x19\xff\x15\xff\x11\xff\x0b\xff\x07\xff\x00\x00\xd4\xfe\xd2\xfe\xd0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xfe\xbf\xfe\xc1\xfe\xbe\xff\xbd\xff\xf3\xfe\x00\x00\xc4\xfe\x68\xff\x95\xff\x8e\xff\x00\x00\x61\xff\x00\x00\x60\xff\x00\x00\x5e\xff\x12\xff\x4a\xff\x4b\xff\x4c\xff\x48\xff\x49\xff\x44\xff\x45\xff\x46\xff\x3d\xff\x3c\xff\x40\xff\x3e\xff\x41\xff\x3f\xff\x33\xff\x31\xff\x34\xff\x32\xff\x2a\xff\x26\xff\x22\xff\x1e\xff\x00\x00\x1a\xff\x0c\xff\x67\xff\x00\x00\x00\x00\x00\x00\x76\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xfe\x00\x00\x00\x00\x00\x00\x75\xff\x73\xff\x72\xff\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x62\xff\x69\xff\xf2\xfe\xbe\xfe\xc0\xfe\xbb\xfe\x00\x00\x00\x00\x00\x00\x08\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xfe\x00\x00\xeb\xfe\x00\x00\x00\x00\x00\x00\xe5\xfe\xec\xfe\x7e\xff\x00\x00\x7a\xff\x7f\xff\x7b\xff\xdc\xfe\xdd\xfe\xdf\xfe\x00\x00\xda\xfe\x00\x00\x00\x00\x08\xff\x00\x00\xe7\xfe\x5a\xff\x10\xff\x00\x00\x36\xff\x39\xff\x37\xff\x3a\xff\x38\xff\x2e\xff\x2c\xff\x2f\xff\x2d\xff\x28\xff\x24\xff\x20\xff\x1c\xff\x00\x00\x18\xff\x0a\xff\x09\xff\x00\x00\xfa\xff\xc9\xfe\xce\xfe\x00\x00\x5d\xff\x16\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xfe\x00\x00\xb0\xfe\x00\x00\xb1\xfe\xab\xfe\xb0\xfe\x00\x00\xb2\xfe\xb0\xfe\xb0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xfe\xc2\xff\xcf\xfe\x08\xff\x00\x00\x00\x00\xe4\xfe\x00\x00\xea\xfe\x00\x00\xfa\xff\x00\x00\xe1\xfe\xcb\xff\xde\xfe\xe0\xfe\xdb\xfe\x00\x00\x08\xff\xd7\xfe\x14\xff\x00\x00\xcd\xfe\x00\x00\xca\xfe\xc9\xfe\xc1\xff\x00\x00\x00\x00\xbd\xfe\xb0\xfe\x00\x00\x00\x00\xb7\xfe\x00\x00\xaa\xfe\xb8\xfe\xb9\xfe\xb6\xfe\x71\xff\x00\x00\x00\x00\xc7\xfe\x00\x00\xc6\xfe\x00\x00\x00\x00\xd6\xfe\x00\x00\xd9\xfe\xc5\xfe\xcc\xfe\xc8\xfe\xbc\xfe\x70\xff\xd8\xfe"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\x2a\x00\x01\x00\x2f\x00\x03\x00\x03\x00\x05\x00\x02\x00\x0c\x00\x00\x00\x09\x00\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2a\x00\x47\x00\x47\x00\x03\x00\x02\x00\x04\x00\x03\x00\x1e\x00\x04\x00\x38\x00\x03\x00\x03\x00\x47\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x2a\x00\x2b\x00\x50\x00\x47\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x10\x00\x11\x00\x3a\x00\x3b\x00\x02\x00\x0c\x00\x3e\x00\x7c\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4d\x00\x49\x00\x7b\x00\x47\x00\x4c\x00\x38\x00\x39\x00\x47\x00\x38\x00\x51\x00\x52\x00\x53\x00\x7e\x00\x82\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x47\x00\x5e\x00\x25\x00\x60\x00\x07\x00\x62\x00\x09\x00\x64\x00\x97\x00\x66\x00\x7d\x00\x68\x00\x38\x00\x6a\x00\x6e\x00\x6c\x00\x02\x00\x02\x00\x6f\x00\x8b\x00\x8c\x00\x47\x00\x73\x00\x74\x00\x75\x00\x02\x00\x04\x00\x78\x00\x01\x00\x97\x00\x03\x00\x9b\x00\x05\x00\x4d\x00\x7f\x00\x80\x00\x81\x00\x8b\x00\x8c\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x76\x00\x8a\x00\x21\x00\x76\x00\x8e\x00\x8f\x00\x90\x00\x76\x00\x76\x00\x02\x00\x94\x00\x95\x00\x96\x00\x23\x00\x07\x00\x99\x00\x2e\x00\x01\x00\x98\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x8c\x00\x8d\x00\x09\x00\x8c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x98\x00\x47\x00\x36\x00\x3c\x00\x3d\x00\x2a\x00\x2b\x00\x3c\x00\x3d\x00\x3d\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x04\x00\x49\x00\x48\x00\x07\x00\x4c\x00\x25\x00\x2c\x00\x2d\x00\x2e\x00\x47\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x3a\x00\x3b\x00\x25\x00\x37\x00\x3e\x00\x02\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x7a\x00\x49\x00\x7c\x00\x02\x00\x4c\x00\x36\x00\x07\x00\x08\x00\x07\x00\x51\x00\x52\x00\x53\x00\x3d\x00\x01\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x6e\x00\x5e\x00\x48\x00\x60\x00\x79\x00\x62\x00\x7b\x00\x64\x00\x02\x00\x66\x00\x04\x00\x68\x00\x24\x00\x6a\x00\x04\x00\x6c\x00\x92\x00\x93\x00\x6f\x00\x91\x00\x92\x00\x93\x00\x73\x00\x74\x00\x75\x00\x06\x00\x07\x00\x78\x00\x23\x00\x9c\x00\x36\x00\x6e\x00\x47\x00\x28\x00\x7f\x00\x80\x00\x81\x00\x3d\x00\x2d\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x36\x00\x00\x00\x00\x00\x48\x00\x8e\x00\x8f\x00\x90\x00\x3d\x00\x07\x00\x07\x00\x94\x00\x95\x00\x96\x00\x29\x00\x03\x00\x99\x00\x05\x00\x01\x00\x48\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x33\x00\x04\x00\x09\x00\x04\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x79\x00\x01\x00\x7b\x00\x05\x00\x36\x00\x05\x00\x02\x00\x00\x00\x0a\x00\x01\x00\x0a\x00\x3d\x00\x02\x00\x05\x00\x07\x00\x10\x00\x11\x00\x07\x00\x0a\x00\x14\x00\x15\x00\x02\x00\x48\x00\x2c\x00\x2d\x00\x2e\x00\x07\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x36\x00\x0f\x00\x3a\x00\x3b\x00\x12\x00\x13\x00\x3e\x00\x3d\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x08\x00\x49\x00\x48\x00\x02\x00\x4c\x00\x39\x00\x00\x00\x1f\x00\x20\x00\x51\x00\x52\x00\x53\x00\x24\x00\x09\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x03\x00\x5e\x00\x04\x00\x60\x00\x04\x00\x62\x00\x03\x00\x64\x00\x47\x00\x66\x00\x54\x00\x68\x00\x54\x00\x6a\x00\x03\x00\x6c\x00\x06\x00\x07\x00\x6f\x00\x04\x00\x54\x00\x04\x00\x73\x00\x74\x00\x75\x00\x03\x00\x02\x00\x78\x00\x10\x00\x11\x00\x36\x00\x07\x00\x14\x00\x15\x00\x7f\x00\x80\x00\x81\x00\x3d\x00\x02\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x06\x00\x07\x00\x02\x00\x48\x00\x8e\x00\x8f\x00\x90\x00\x07\x00\x02\x00\x02\x00\x94\x00\x95\x00\x96\x00\x07\x00\x07\x00\x99\x00\x07\x00\x01\x00\x00\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x38\x00\x39\x00\x09\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x25\x00\x43\x00\x44\x00\x43\x00\x44\x00\x47\x00\x48\x00\x47\x00\x48\x00\x47\x00\x48\x00\x4d\x00\x4e\x00\x4f\x00\x4e\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x24\x00\x08\x00\x2c\x00\x2d\x00\x2e\x00\x29\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x02\x00\x26\x00\x3a\x00\x3b\x00\x28\x00\x07\x00\x3e\x00\x27\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x02\x00\x49\x00\x02\x00\x24\x00\x4c\x00\x07\x00\x09\x00\x07\x00\x29\x00\x51\x00\x52\x00\x53\x00\x47\x00\x48\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x1e\x00\x5e\x00\x02\x00\x60\x00\x47\x00\x62\x00\x03\x00\x64\x00\x03\x00\x66\x00\x01\x00\x68\x00\x01\x00\x6a\x00\x08\x00\x6c\x00\x43\x00\x44\x00\x6f\x00\x25\x00\x47\x00\x48\x00\x73\x00\x74\x00\x75\x00\x43\x00\x44\x00\x78\x00\x4f\x00\x47\x00\x48\x00\x10\x00\x11\x00\x23\x00\x7f\x00\x80\x00\x81\x00\x4f\x00\x28\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x20\x00\x21\x00\x22\x00\x23\x00\x8e\x00\x8f\x00\x90\x00\x17\x00\x18\x00\x19\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x99\x00\x26\x00\x01\x00\x27\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x01\x00\x02\x00\x09\x00\x28\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x01\x00\x1f\x00\x0a\x00\x0b\x00\x09\x00\x0d\x00\x0e\x00\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x07\x00\x2c\x00\x2d\x00\x2e\x00\x25\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x18\x00\x19\x00\x3a\x00\x3b\x00\x01\x00\x02\x00\x3e\x00\x26\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x27\x00\x49\x00\x18\x00\x19\x00\x4c\x00\x14\x00\x15\x00\x16\x00\x28\x00\x51\x00\x52\x00\x53\x00\x16\x00\x17\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x00\x00\x60\x00\x31\x00\x62\x00\x08\x00\x64\x00\x07\x00\x66\x00\x00\x00\x68\x00\x00\x00\x6a\x00\x08\x00\x6c\x00\x01\x00\x01\x00\x6f\x00\x17\x00\x18\x00\x19\x00\x73\x00\x74\x00\x75\x00\x3f\x00\x3f\x00\x78\x00\x14\x00\x15\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x3f\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x07\x00\x25\x00\x28\x00\x08\x00\x8e\x00\x8f\x00\x90\x00\x26\x00\x01\x00\x01\x00\x94\x00\x95\x00\x96\x00\x27\x00\x01\x00\x99\x00\x01\x00\x01\x00\x01\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x25\x00\x22\x00\x09\x00\x23\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x25\x00\x28\x00\x04\x00\x25\x00\x01\x00\x01\x00\x25\x00\x22\x00\x28\x00\x23\x00\x22\x00\x01\x00\x01\x00\x06\x00\x02\x00\x07\x00\x01\x00\x04\x00\x09\x00\x22\x00\x38\x00\x25\x00\x08\x00\x30\x00\x2c\x00\x2d\x00\x2e\x00\x22\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x0c\x00\x24\x00\x3a\x00\x3b\x00\x06\x00\x04\x00\x3e\x00\x07\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x08\x00\x49\x00\x09\x00\x22\x00\x4c\x00\x01\x00\x24\x00\x02\x00\x06\x00\x51\x00\x52\x00\x53\x00\x09\x00\x07\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x08\x00\x5e\x00\x24\x00\x60\x00\x24\x00\x62\x00\x24\x00\x64\x00\x22\x00\x66\x00\x04\x00\x68\x00\x04\x00\x6a\x00\x24\x00\x6c\x00\x04\x00\x04\x00\x6f\x00\x04\x00\x04\x00\x04\x00\x73\x00\x74\x00\x75\x00\x24\x00\x24\x00\x78\x00\x04\x00\x04\x00\x04\x00\x04\x00\x0c\x00\x01\x00\x7f\x00\x80\x00\x81\x00\x46\x00\x02\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x04\x00\x24\x00\x01\x00\x4f\x00\x8e\x00\x8f\x00\x90\x00\x02\x00\x06\x00\x51\x00\x94\x00\x95\x00\x96\x00\x51\x00\x4f\x00\x99\x00\x07\x00\x01\x00\x08\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x51\x00\x09\x00\x09\x00\x04\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4f\x00\x22\x00\x01\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\xff\xff\xff\xff\x01\x00\x9a\x00\x03\x00\xff\xff\x05\x00\xff\xff\x9f\x00\xa0\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\xff\xff\x05\x00\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xa0\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x96\x00\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xa0\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x04\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\xff\xff\x96\x00\x00\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\x9d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x32\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x41\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\x01\x00\x94\x00\x03\x00\x96\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\x3e\x00\x4e\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\xff\xff\x67\x00\xff\xff\x69\x00\x01\x00\x6b\x00\x03\x00\x6d\x00\x05\x00\x20\x00\x70\x00\x22\x00\x72\x00\x24\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\xff\xff\x6f\x00\xff\xff\x71\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\xff\xff\x6f\x00\xff\xff\x71\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x71\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x71\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x01\x00\x02\x00\x03\x00\x20\x00\x05\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\x01\x00\x62\x00\x03\x00\x64\x00\x05\x00\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\x04\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\x01\x00\x5f\x00\x03\x00\x61\x00\x05\x00\x63\x00\xff\xff\x65\x00\xff\xff\x67\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x96\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x3e\x00\x65\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\x64\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x3e\x00\x63\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\x3e\x00\x61\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\x3e\x00\x5f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x96\x00\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x01\x00\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x96\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\x96\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x01\x00\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\x02\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+happyTable :: HappyAddr
+happyTable = HappyA# "\x00\x00\xd5\x01\x06\x00\x12\x02\x07\x00\xed\x01\x08\x00\x97\x01\xf1\x00\x04\x01\x09\x00\xc0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4a\x01\x88\x00\x0c\x01\xfd\x00\x9a\x01\x1d\x02\xfd\x00\xbe\x01\x3a\x02\x05\x02\xfd\x00\xfd\x00\xf2\x01\x7d\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xed\x00\xee\x00\xf3\x01\xfc\x00\x06\x01\x13\x00\x14\x00\x15\x00\x05\x02\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xe3\x00\xe4\x00\x1e\x00\x1f\x00\xbd\x00\xf1\x00\x7f\x00\x0f\x02\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xf2\x00\x29\x00\xc7\x01\x98\x01\x2a\x00\x05\x02\x1e\x02\x05\x01\x05\x02\x2b\x00\x2c\x00\x2d\x00\xd6\x01\x13\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x98\x01\x35\x00\x40\x01\x36\x00\xd3\x01\x37\x00\xd4\x01\x38\x00\x89\x00\x39\x00\x4b\x01\x3a\x00\xdc\x00\x3b\x00\xbf\x01\x3c\x00\xbd\x00\x03\x02\x3d\x00\x32\x02\x07\x02\x07\x01\x80\x00\x3f\x00\x40\x00\xbd\x00\x3d\x02\x41\x00\x06\x00\x89\x00\x79\x00\x7e\x00\x08\x00\xf2\x00\x42\x00\x43\x00\x44\x00\x06\x02\x07\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x3c\x02\xee\x01\x20\x01\x24\x02\x4b\x00\x4c\x00\x4d\x00\xa9\x01\xfe\x00\x18\x02\x4e\x00\x81\x00\x4f\x00\x95\x00\xbb\x00\x2f\x02\x04\x02\x06\x00\x99\x01\x07\x00\xfb\x01\x08\x00\xfc\x01\x1f\x02\x20\x02\x09\x00\x1f\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x9b\x01\xc0\x01\x65\x00\x62\x01\x63\x01\xed\x00\xee\x00\x62\x01\x63\x01\x6a\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x7a\x00\x7b\x00\x93\x01\x29\x00\x75\x00\x94\x01\x2a\x00\x40\x01\x13\x00\x14\x00\x15\x00\x0c\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xed\x00\xee\x00\x1e\x00\x1f\x00\x40\x01\x66\x00\x7f\x00\x37\x02\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc1\x01\x29\x00\xc2\x01\x0c\x02\x2a\x00\x65\x00\xbb\x00\x31\x02\xbb\x00\x2b\x00\x2c\x00\x2d\x00\x6a\x00\x06\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xbf\x01\x35\x00\x75\x00\x36\x00\x0d\x01\x37\x00\x0e\x01\x38\x00\xbd\x00\x39\x00\xfc\x00\x3a\x00\xbc\xff\x3b\x00\x2c\x02\x3c\x00\xa7\x01\xa8\x01\x3d\x00\x64\x01\x65\x01\x66\x01\x80\x00\x3f\x00\x40\x00\xa4\x01\xbb\x00\x41\x00\x95\x00\x7c\x00\xbc\xff\xef\x00\x0c\x01\x09\x02\x42\x00\x43\x00\x44\x00\xbc\xff\x22\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x65\x00\x47\x01\x49\x01\xbc\xff\x4b\x00\x4c\x00\x4d\x00\x6a\x00\x48\x01\x48\x01\x4e\x00\x81\x00\x4f\x00\x68\x01\xc0\x00\x26\x02\xc1\x00\x06\x00\x75\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\x69\x01\x2d\x02\x09\x00\x2e\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xf2\x00\x0f\x01\xf2\x00\x0e\x01\xf7\x00\xce\xff\xf3\x00\x30\x02\x5f\x01\xf8\x00\xf2\x00\xf4\x00\xce\xff\x11\x02\xf7\x00\xbb\x00\xd8\x00\xd9\x00\xbb\x00\xf8\x00\xda\x00\xdb\x00\xf5\x01\xce\xff\x13\x00\x14\x00\x15\x00\xf6\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xcd\xff\xe1\x00\x1e\x00\x1f\x00\xe2\x00\xe3\x00\x7f\x00\xcd\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x33\x02\x29\x00\xcd\xff\x34\x02\x2a\x00\xdd\x00\x17\x02\xf7\x00\x59\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x19\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x25\x02\x35\x00\x28\x02\x36\x00\x2b\x02\x37\x00\xfd\x01\x38\x00\xff\x01\x39\x00\x8f\x01\x3a\x00\xf5\x00\x3b\x00\x00\x02\x3c\x00\xa5\x01\xbb\x00\x3d\x00\x8c\x00\xf9\x00\x9c\x01\x80\x00\x3f\x00\x40\x00\x01\x02\xf8\x01\x41\x00\xd8\x00\xd9\x00\x65\x00\xf6\x01\xda\x00\xdb\x00\x42\x00\x43\x00\x44\x00\x6a\x00\x02\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x45\x01\x46\x01\xa2\x01\x75\x00\x4b\x00\x4c\x00\x4d\x00\xa3\x01\xab\x01\xac\x01\x4e\x00\x81\x00\x4f\x00\xbb\x00\xbb\x00\x27\x02\xbb\x00\x06\x00\x09\x02\x07\x00\xfb\x01\x08\x00\xfc\x01\xdc\x00\xdd\x00\x09\x00\x0a\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xb1\x01\x8d\x00\x8e\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x8f\x00\x90\x00\x8f\x00\x6c\x01\x91\x00\x92\x00\x93\x00\x9d\x01\x93\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xaf\x01\x0b\x02\x13\x00\x14\x00\x15\x00\xb0\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xc3\x01\xb2\x01\x1e\x00\x1f\x00\xb3\x01\xbb\x00\x7f\x00\xb4\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc5\x01\x29\x00\x3e\x01\xbd\x00\x2a\x00\xbb\x00\x15\x02\xbb\x00\xbe\x00\x2b\x00\x2c\x00\x2d\x00\x8f\x00\x70\x01\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xd2\x01\x35\x00\xf4\x01\x36\x00\xef\x01\x37\x00\xf7\x01\x38\x00\xf9\x01\x39\x00\x9f\x01\x3a\x00\xa0\x01\x3b\x00\xa1\x01\x3c\x00\x8d\x00\x8e\x00\x3d\x00\xc1\x00\x8f\x00\x90\x00\x80\x00\x3f\x00\x40\x00\x8d\x00\x8e\x00\x41\x00\x90\x01\x8f\x00\x90\x00\xe3\x00\xe4\x00\x95\x00\x42\x00\x43\x00\x44\x00\x91\x01\x09\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xb5\x01\xb6\x01\xb7\x01\xb8\x01\x4b\x00\x4c\x00\x4d\x00\xdd\x00\xde\x00\xdf\x00\x4e\x00\x81\x00\x4f\x00\xeb\x00\xec\x00\x29\x02\xc3\x00\x06\x00\xc7\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\x52\x00\xbd\x00\x09\x00\xc5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xb9\x01\xba\x01\xbb\x01\xbc\x01\xaa\x01\xbd\x01\xce\x00\xcf\x00\xad\x01\xd0\x00\xd1\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xc9\x00\xca\x00\xcb\x00\xcc\x00\xae\x01\x13\x00\x14\x00\x15\x00\xb1\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x55\x00\x56\x00\x1e\x00\x1f\x00\x06\x00\xbd\x00\x7f\x00\xb2\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xb4\x01\x29\x00\x55\x00\x56\x00\x2a\x00\xe5\x00\xe6\x00\xe7\x00\xb3\x01\x2b\x00\x2c\x00\x2d\x00\x53\x00\x54\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xc4\x01\x35\x00\xb9\x00\x36\x00\x4d\x01\x37\x00\xfa\x00\x38\x00\xbb\x00\x39\x00\x5d\x01\x3a\x00\x5e\x01\x3b\x00\x92\x01\x3c\x00\x95\x01\x96\x01\x3d\x00\xdd\x00\xde\x00\xdf\x00\x80\x00\x3f\x00\x40\x00\x8a\x00\x8b\x00\x41\x00\xe5\x00\xe6\x00\xe7\x00\xe9\x00\xea\x00\xeb\x00\x42\x00\x43\x00\x44\x00\xb9\x00\xba\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xbb\x00\xc1\x00\xc5\x00\xfa\x00\x4b\x00\x4c\x00\x4d\x00\xc3\x00\x00\x01\x01\x01\x4e\x00\x81\x00\x4f\x00\xc7\x00\x08\x01\xfa\x01\x09\x01\x06\x00\x0b\x01\x07\x00\xfb\x01\x08\x00\xfc\x01\x40\x01\x5a\x00\x09\x00\x95\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x40\x01\x09\x02\xfc\x00\x40\x01\x06\x00\x52\x00\x40\x01\x5a\x00\x09\x02\x95\x00\x5a\x00\x06\x00\x52\x00\xc3\x00\xbd\x00\xc5\x00\x52\x00\xfc\x00\xc9\x00\x5a\x00\xdc\x00\x40\x01\xc7\x00\x15\x02\x13\x00\x14\x00\x15\x00\x5a\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xf1\x00\x5b\x00\x1e\x00\x1f\x00\xc3\x00\xfc\x00\x7f\x00\xc5\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc7\x00\x29\x00\xc9\x00\x5a\x00\x2a\x00\x52\x00\x5b\x00\xbd\x00\xc3\x00\x2b\x00\x2c\x00\x2d\x00\xc9\x00\xc5\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xc7\x00\x35\x00\x5b\x00\x36\x00\xc4\xff\x37\x00\xc9\xff\x38\x00\xbf\xff\x39\x00\x8a\xff\x3a\x00\x8c\xff\x3b\x00\xc3\xff\x3c\x00\x8f\xff\x90\xff\x3d\x00\x99\xff\x9c\xff\xa0\xff\x80\x00\x3f\x00\x40\x00\xcc\xff\xc8\xff\x41\x00\xa4\xff\xfc\x00\x6e\xff\x6d\xff\xf1\x00\x06\x00\x42\x00\x43\x00\x44\x00\x73\x00\xbd\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xfc\x00\x5b\x00\x06\x00\x88\x00\x4b\x00\x4c\x00\x4d\x00\xbd\x00\xc3\x00\xff\xff\x4e\x00\x81\x00\x4f\x00\xff\xff\x88\x00\xfe\x01\xc5\x00\x06\x00\xc7\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\xff\xff\xc9\x00\x09\x00\xfc\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x88\x00\x5a\x00\x06\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x00\x00\x00\x00\x06\x00\x82\x00\x07\x00\x00\x00\x08\x00\x00\x00\x83\x00\x84\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x85\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\x3d\x00\x79\x00\x00\x00\x08\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x86\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\xb8\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x4f\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x2a\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x8e\xff\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x02\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x00\x00\x00\x00\xb7\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\x03\x01\x07\x00\x20\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x21\x01\x22\x01\x26\x00\x27\x00\x23\x01\x90\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x91\x00\x92\x00\x93\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x25\x01\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\x69\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x6a\x01\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x39\x02\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x3b\x02\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\xa6\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\x40\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x38\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x36\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x16\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xd1\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xec\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x6b\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x62\x00\xce\x01\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x43\x00\x44\x00\x6e\x00\xcf\x01\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x76\x00\x77\x00\x78\x00\x79\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x06\x00\x4e\x00\x79\x00\x4f\x00\x08\x00\x1a\x01\x1b\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x95\x00\x00\x00\x00\x00\x00\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x00\x00\x20\x00\xb7\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x1c\x01\x1d\x01\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x1e\x01\x08\x00\xc8\x01\x1b\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\xc9\x01\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xca\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x50\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x00\x00\x56\x01\x00\x00\x57\x01\x00\x00\x58\x01\x06\x00\x59\x01\x79\x00\x5a\x01\x08\x00\x59\x00\x5b\x01\x5a\x00\x5c\x01\x5b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x3c\x00\x08\x00\x00\x00\xea\x01\x00\x00\x35\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x3c\x00\x08\x00\x00\x00\xea\x01\x00\x00\x1c\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\xea\x01\x79\x00\x0e\x02\x08\x00\xcb\x01\x43\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xcc\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\xea\x01\x79\x00\xeb\x01\x08\x00\x42\x01\x43\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x44\x01\x06\x00\x72\x01\x79\x00\x59\x00\x08\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x73\x01\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x74\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x22\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x10\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x4e\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x60\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x61\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x6f\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x71\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xff\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x3d\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\x1b\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\x0d\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xd8\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xe7\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xe9\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf1\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc6\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x75\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x8c\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x8e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x06\x00\x37\x00\x79\x00\x38\x00\x08\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x23\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x95\xff\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x06\x00\x53\x01\x79\x00\x54\x01\x08\x00\x55\x01\x00\x00\x56\x01\x00\x00\xe8\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x4f\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x37\x00\x00\x00\x38\x00\x00\x00\x8d\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x20\x00\xe6\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x37\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x20\x00\xe5\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x20\x00\xe4\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x89\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x20\x00\xe3\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x88\x01\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xdf\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe0\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe1\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe2\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x84\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x85\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x86\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x87\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xda\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdb\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdc\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdd\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xde\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x7e\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x7f\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x80\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x81\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x82\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x83\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7b\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7c\x01\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7d\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x4f\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x79\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x7a\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x76\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x77\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x78\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x11\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x12\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x13\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x14\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x15\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x16\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x17\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x18\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x06\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x19\x01\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x4f\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x4f\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x8e\xff\x00\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x00\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x00\x00\x95\xff\x95\xff\x00\x00\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x00\x00\x95\xff\x00\x00\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\xf5\xfe\x95\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\x00\x00\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x52\x00\x00\x00\xf5\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x52\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x27\x01\x97\x00\x98\x00\x28\x01\x29\x01\x2a\x01\x9c\x00\x2b\x01\x2c\x01\x9f\x00\xa0\x00\x2d\x01\xa2\x00\x2e\x01\x2f\x01\xa5\x00\x30\x01\xa7\x00\xa8\x00\x31\x01\x32\x01\x33\x01\xac\x00\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x52\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x06\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x52\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x52\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\xbd\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x20\x01\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x71\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x40\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xec\xff\xec\xff\xec\xff\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\x00\x00\xec\xff\xec\xff\xec\xff\xec\xff\xec\xff\xeb\xff\xeb\xff\xeb\xff\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\x00\x00\xeb\xff\xeb\xff\xeb\xff\xeb\xff\xeb\xff\xc0\xff\xc0\xff\xc0\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\x00\x00\xc0\xff\xc0\xff\xc0\xff\xc0\xff\xc0\xff\xed\xff\xed\xff\xed\xff\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\x00\x00\xed\xff\xed\xff\xed\xff\xed\xff\xed\xff\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyReduceArr = Happy_Data_Array.array (4, 345) [
+	(4 , happyReduce_4),
+	(5 , happyReduce_5),
+	(6 , happyReduce_6),
+	(7 , happyReduce_7),
+	(8 , happyReduce_8),
+	(9 , happyReduce_9),
+	(10 , happyReduce_10),
+	(11 , happyReduce_11),
+	(12 , happyReduce_12),
+	(13 , happyReduce_13),
+	(14 , happyReduce_14),
+	(15 , happyReduce_15),
+	(16 , happyReduce_16),
+	(17 , happyReduce_17),
+	(18 , happyReduce_18),
+	(19 , happyReduce_19),
+	(20 , happyReduce_20),
+	(21 , happyReduce_21),
+	(22 , happyReduce_22),
+	(23 , happyReduce_23),
+	(24 , happyReduce_24),
+	(25 , happyReduce_25),
+	(26 , happyReduce_26),
+	(27 , happyReduce_27),
+	(28 , happyReduce_28),
+	(29 , happyReduce_29),
+	(30 , happyReduce_30),
+	(31 , happyReduce_31),
+	(32 , happyReduce_32),
+	(33 , happyReduce_33),
+	(34 , happyReduce_34),
+	(35 , happyReduce_35),
+	(36 , happyReduce_36),
+	(37 , happyReduce_37),
+	(38 , happyReduce_38),
+	(39 , happyReduce_39),
+	(40 , happyReduce_40),
+	(41 , happyReduce_41),
+	(42 , happyReduce_42),
+	(43 , happyReduce_43),
+	(44 , happyReduce_44),
+	(45 , happyReduce_45),
+	(46 , happyReduce_46),
+	(47 , happyReduce_47),
+	(48 , happyReduce_48),
+	(49 , happyReduce_49),
+	(50 , happyReduce_50),
+	(51 , happyReduce_51),
+	(52 , happyReduce_52),
+	(53 , happyReduce_53),
+	(54 , happyReduce_54),
+	(55 , happyReduce_55),
+	(56 , happyReduce_56),
+	(57 , happyReduce_57),
+	(58 , happyReduce_58),
+	(59 , happyReduce_59),
+	(60 , happyReduce_60),
+	(61 , happyReduce_61),
+	(62 , happyReduce_62),
+	(63 , happyReduce_63),
+	(64 , happyReduce_64),
+	(65 , happyReduce_65),
+	(66 , happyReduce_66),
+	(67 , happyReduce_67),
+	(68 , happyReduce_68),
+	(69 , happyReduce_69),
+	(70 , happyReduce_70),
+	(71 , happyReduce_71),
+	(72 , happyReduce_72),
+	(73 , happyReduce_73),
+	(74 , happyReduce_74),
+	(75 , happyReduce_75),
+	(76 , happyReduce_76),
+	(77 , happyReduce_77),
+	(78 , happyReduce_78),
+	(79 , happyReduce_79),
+	(80 , happyReduce_80),
+	(81 , happyReduce_81),
+	(82 , happyReduce_82),
+	(83 , happyReduce_83),
+	(84 , happyReduce_84),
+	(85 , happyReduce_85),
+	(86 , happyReduce_86),
+	(87 , happyReduce_87),
+	(88 , happyReduce_88),
+	(89 , happyReduce_89),
+	(90 , happyReduce_90),
+	(91 , happyReduce_91),
+	(92 , happyReduce_92),
+	(93 , happyReduce_93),
+	(94 , happyReduce_94),
+	(95 , happyReduce_95),
+	(96 , happyReduce_96),
+	(97 , happyReduce_97),
+	(98 , happyReduce_98),
+	(99 , happyReduce_99),
+	(100 , happyReduce_100),
+	(101 , happyReduce_101),
+	(102 , happyReduce_102),
+	(103 , happyReduce_103),
+	(104 , happyReduce_104),
+	(105 , happyReduce_105),
+	(106 , happyReduce_106),
+	(107 , happyReduce_107),
+	(108 , happyReduce_108),
+	(109 , happyReduce_109),
+	(110 , happyReduce_110),
+	(111 , happyReduce_111),
+	(112 , happyReduce_112),
+	(113 , happyReduce_113),
+	(114 , happyReduce_114),
+	(115 , happyReduce_115),
+	(116 , happyReduce_116),
+	(117 , happyReduce_117),
+	(118 , happyReduce_118),
+	(119 , happyReduce_119),
+	(120 , happyReduce_120),
+	(121 , happyReduce_121),
+	(122 , happyReduce_122),
+	(123 , happyReduce_123),
+	(124 , happyReduce_124),
+	(125 , happyReduce_125),
+	(126 , happyReduce_126),
+	(127 , happyReduce_127),
+	(128 , happyReduce_128),
+	(129 , happyReduce_129),
+	(130 , happyReduce_130),
+	(131 , happyReduce_131),
+	(132 , happyReduce_132),
+	(133 , happyReduce_133),
+	(134 , happyReduce_134),
+	(135 , happyReduce_135),
+	(136 , happyReduce_136),
+	(137 , happyReduce_137),
+	(138 , happyReduce_138),
+	(139 , happyReduce_139),
+	(140 , happyReduce_140),
+	(141 , happyReduce_141),
+	(142 , happyReduce_142),
+	(143 , happyReduce_143),
+	(144 , happyReduce_144),
+	(145 , happyReduce_145),
+	(146 , happyReduce_146),
+	(147 , happyReduce_147),
+	(148 , happyReduce_148),
+	(149 , happyReduce_149),
+	(150 , happyReduce_150),
+	(151 , happyReduce_151),
+	(152 , happyReduce_152),
+	(153 , happyReduce_153),
+	(154 , happyReduce_154),
+	(155 , happyReduce_155),
+	(156 , happyReduce_156),
+	(157 , happyReduce_157),
+	(158 , happyReduce_158),
+	(159 , happyReduce_159),
+	(160 , happyReduce_160),
+	(161 , happyReduce_161),
+	(162 , happyReduce_162),
+	(163 , happyReduce_163),
+	(164 , happyReduce_164),
+	(165 , happyReduce_165),
+	(166 , happyReduce_166),
+	(167 , happyReduce_167),
+	(168 , happyReduce_168),
+	(169 , happyReduce_169),
+	(170 , happyReduce_170),
+	(171 , happyReduce_171),
+	(172 , happyReduce_172),
+	(173 , happyReduce_173),
+	(174 , happyReduce_174),
+	(175 , happyReduce_175),
+	(176 , happyReduce_176),
+	(177 , happyReduce_177),
+	(178 , happyReduce_178),
+	(179 , happyReduce_179),
+	(180 , happyReduce_180),
+	(181 , happyReduce_181),
+	(182 , happyReduce_182),
+	(183 , happyReduce_183),
+	(184 , happyReduce_184),
+	(185 , happyReduce_185),
+	(186 , happyReduce_186),
+	(187 , happyReduce_187),
+	(188 , happyReduce_188),
+	(189 , happyReduce_189),
+	(190 , happyReduce_190),
+	(191 , happyReduce_191),
+	(192 , happyReduce_192),
+	(193 , happyReduce_193),
+	(194 , happyReduce_194),
+	(195 , happyReduce_195),
+	(196 , happyReduce_196),
+	(197 , happyReduce_197),
+	(198 , happyReduce_198),
+	(199 , happyReduce_199),
+	(200 , happyReduce_200),
+	(201 , happyReduce_201),
+	(202 , happyReduce_202),
+	(203 , happyReduce_203),
+	(204 , happyReduce_204),
+	(205 , happyReduce_205),
+	(206 , happyReduce_206),
+	(207 , happyReduce_207),
+	(208 , happyReduce_208),
+	(209 , happyReduce_209),
+	(210 , happyReduce_210),
+	(211 , happyReduce_211),
+	(212 , happyReduce_212),
+	(213 , happyReduce_213),
+	(214 , happyReduce_214),
+	(215 , happyReduce_215),
+	(216 , happyReduce_216),
+	(217 , happyReduce_217),
+	(218 , happyReduce_218),
+	(219 , happyReduce_219),
+	(220 , happyReduce_220),
+	(221 , happyReduce_221),
+	(222 , happyReduce_222),
+	(223 , happyReduce_223),
+	(224 , happyReduce_224),
+	(225 , happyReduce_225),
+	(226 , happyReduce_226),
+	(227 , happyReduce_227),
+	(228 , happyReduce_228),
+	(229 , happyReduce_229),
+	(230 , happyReduce_230),
+	(231 , happyReduce_231),
+	(232 , happyReduce_232),
+	(233 , happyReduce_233),
+	(234 , happyReduce_234),
+	(235 , happyReduce_235),
+	(236 , happyReduce_236),
+	(237 , happyReduce_237),
+	(238 , happyReduce_238),
+	(239 , happyReduce_239),
+	(240 , happyReduce_240),
+	(241 , happyReduce_241),
+	(242 , happyReduce_242),
+	(243 , happyReduce_243),
+	(244 , happyReduce_244),
+	(245 , happyReduce_245),
+	(246 , happyReduce_246),
+	(247 , happyReduce_247),
+	(248 , happyReduce_248),
+	(249 , happyReduce_249),
+	(250 , happyReduce_250),
+	(251 , happyReduce_251),
+	(252 , happyReduce_252),
+	(253 , happyReduce_253),
+	(254 , happyReduce_254),
+	(255 , happyReduce_255),
+	(256 , happyReduce_256),
+	(257 , happyReduce_257),
+	(258 , happyReduce_258),
+	(259 , happyReduce_259),
+	(260 , happyReduce_260),
+	(261 , happyReduce_261),
+	(262 , happyReduce_262),
+	(263 , happyReduce_263),
+	(264 , happyReduce_264),
+	(265 , happyReduce_265),
+	(266 , happyReduce_266),
+	(267 , happyReduce_267),
+	(268 , happyReduce_268),
+	(269 , happyReduce_269),
+	(270 , happyReduce_270),
+	(271 , happyReduce_271),
+	(272 , happyReduce_272),
+	(273 , happyReduce_273),
+	(274 , happyReduce_274),
+	(275 , happyReduce_275),
+	(276 , happyReduce_276),
+	(277 , happyReduce_277),
+	(278 , happyReduce_278),
+	(279 , happyReduce_279),
+	(280 , happyReduce_280),
+	(281 , happyReduce_281),
+	(282 , happyReduce_282),
+	(283 , happyReduce_283),
+	(284 , happyReduce_284),
+	(285 , happyReduce_285),
+	(286 , happyReduce_286),
+	(287 , happyReduce_287),
+	(288 , happyReduce_288),
+	(289 , happyReduce_289),
+	(290 , happyReduce_290),
+	(291 , happyReduce_291),
+	(292 , happyReduce_292),
+	(293 , happyReduce_293),
+	(294 , happyReduce_294),
+	(295 , happyReduce_295),
+	(296 , happyReduce_296),
+	(297 , happyReduce_297),
+	(298 , happyReduce_298),
+	(299 , happyReduce_299),
+	(300 , happyReduce_300),
+	(301 , happyReduce_301),
+	(302 , happyReduce_302),
+	(303 , happyReduce_303),
+	(304 , happyReduce_304),
+	(305 , happyReduce_305),
+	(306 , happyReduce_306),
+	(307 , happyReduce_307),
+	(308 , happyReduce_308),
+	(309 , happyReduce_309),
+	(310 , happyReduce_310),
+	(311 , happyReduce_311),
+	(312 , happyReduce_312),
+	(313 , happyReduce_313),
+	(314 , happyReduce_314),
+	(315 , happyReduce_315),
+	(316 , happyReduce_316),
+	(317 , happyReduce_317),
+	(318 , happyReduce_318),
+	(319 , happyReduce_319),
+	(320 , happyReduce_320),
+	(321 , happyReduce_321),
+	(322 , happyReduce_322),
+	(323 , happyReduce_323),
+	(324 , happyReduce_324),
+	(325 , happyReduce_325),
+	(326 , happyReduce_326),
+	(327 , happyReduce_327),
+	(328 , happyReduce_328),
+	(329 , happyReduce_329),
+	(330 , happyReduce_330),
+	(331 , happyReduce_331),
+	(332 , happyReduce_332),
+	(333 , happyReduce_333),
+	(334 , happyReduce_334),
+	(335 , happyReduce_335),
+	(336 , happyReduce_336),
+	(337 , happyReduce_337),
+	(338 , happyReduce_338),
+	(339 , happyReduce_339),
+	(340 , happyReduce_340),
+	(341 , happyReduce_341),
+	(342 , happyReduce_342),
+	(343 , happyReduce_343),
+	(344 , happyReduce_344),
+	(345 , happyReduce_345)
+	]
+
+happy_n_terms = 82 :: Int
+happy_n_nonterms = 161 :: Int
+
+happyReduce_4 = happySpecReduce_1  0# happyReduction_4
+happyReduction_4 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn7
+		 (AST.NT (AST.JSLiteral ";") (ss happy_var_1) (gc happy_var_1)
+	)}
+
+happyReduce_5 = happySpecReduce_0  0# happyReduction_5
+happyReduction_5  =  happyIn7
+		 (AST.NT (AST.JSLiteral "") tokenPosnEmpty []
+	)
+
+happyReduce_6 = happySpecReduce_1  1# happyReduction_6
+happyReduction_6 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn8
+		 (fp (AST.NT (AST.JSLiteral "(") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_7 = happySpecReduce_1  2# happyReduction_7
+happyReduction_7 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn9
+		 (fp (AST.NT (AST.JSLiteral ")") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_8 = happySpecReduce_1  3# happyReduction_8
+happyReduction_8 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn10
+		 (fp (AST.NT (AST.JSLiteral "{") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_9 = happySpecReduce_1  4# happyReduction_9
+happyReduction_9 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn11
+		 (fp (AST.NT (AST.JSLiteral "}") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_10 = happySpecReduce_1  5# happyReduction_10
+happyReduction_10 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn12
+		 (fp (AST.NT (AST.JSLiteral "[") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_11 = happySpecReduce_1  6# happyReduction_11
+happyReduction_11 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn13
+		 (fp (AST.NT (AST.JSLiteral "]") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_12 = happySpecReduce_1  7# happyReduction_12
+happyReduction_12 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn14
+		 (fp (AST.NT (AST.JSLiteral ",") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_13 = happySpecReduce_1  8# happyReduction_13
+happyReduction_13 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn15
+		 (fp (AST.NT (AST.JSLiteral ":") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_14 = happySpecReduce_1  9# happyReduction_14
+happyReduction_14 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn16
+		 (fp (AST.NT (AST.JSLiteral ";") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_15 = happySpecReduce_1  10# happyReduction_15
+happyReduction_15 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn17
+		 (fp (AST.NT (AST.JSLiteral ".") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_16 = happySpecReduce_1  11# happyReduction_16
+happyReduction_16 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn18
+		 (fp (AST.NT (AST.JSLiteral "++") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_17 = happySpecReduce_1  12# happyReduction_17
+happyReduction_17 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn19
+		 (fp (AST.NT (AST.JSLiteral "--") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_18 = happySpecReduce_1  13# happyReduction_18
+happyReduction_18 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn20
+		 (fp (AST.NT (AST.JSLiteral "delete") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_19 = happySpecReduce_1  14# happyReduction_19
+happyReduction_19 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn21
+		 (fp (AST.NT (AST.JSLiteral "void") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_20 = happySpecReduce_1  15# happyReduction_20
+happyReduction_20 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn22
+		 (fp (AST.NT (AST.JSLiteral "typeof") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_21 = happySpecReduce_1  16# happyReduction_21
+happyReduction_21 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn23
+		 (fp (AST.NT (AST.JSLiteral "+") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_22 = happySpecReduce_1  17# happyReduction_22
+happyReduction_22 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn24
+		 (fp (AST.NT (AST.JSLiteral "-") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_23 = happySpecReduce_1  18# happyReduction_23
+happyReduction_23 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (fp (AST.NT (AST.JSLiteral "~") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_24 = happySpecReduce_1  19# happyReduction_24
+happyReduction_24 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn26
+		 (fp (AST.NT (AST.JSLiteral "!") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_25 = happySpecReduce_1  20# happyReduction_25
+happyReduction_25 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn27
+		 (fp (AST.NT (AST.JSLiteral "*") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_26 = happySpecReduce_1  21# happyReduction_26
+happyReduction_26 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn28
+		 (fp (AST.NT (AST.JSLiteral "/") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_27 = happySpecReduce_1  22# happyReduction_27
+happyReduction_27 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn29
+		 (fp (AST.NT (AST.JSLiteral "%") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_28 = happySpecReduce_1  23# happyReduction_28
+happyReduction_28 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (fp (AST.NT (AST.JSLiteral "<<") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_29 = happySpecReduce_1  24# happyReduction_29
+happyReduction_29 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (fp (AST.NT (AST.JSLiteral ">>") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_30 = happySpecReduce_1  25# happyReduction_30
+happyReduction_30 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn32
+		 (fp (AST.NT (AST.JSLiteral ">>>") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_31 = happySpecReduce_1  26# happyReduction_31
+happyReduction_31 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn33
+		 (fp (AST.NT (AST.JSLiteral "<=") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_32 = happySpecReduce_1  27# happyReduction_32
+happyReduction_32 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn34
+		 (fp (AST.NT (AST.JSLiteral "<") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_33 = happySpecReduce_1  28# happyReduction_33
+happyReduction_33 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn35
+		 (fp (AST.NT (AST.JSLiteral ">=") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_34 = happySpecReduce_1  29# happyReduction_34
+happyReduction_34 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn36
+		 (fp (AST.NT (AST.JSLiteral ">") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_35 = happySpecReduce_1  30# happyReduction_35
+happyReduction_35 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn37
+		 (fp (AST.NT (AST.JSLiteral "in") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_36 = happySpecReduce_1  31# happyReduction_36
+happyReduction_36 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn38
+		 (fp (AST.NT (AST.JSLiteral "instanceof") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_37 = happySpecReduce_1  32# happyReduction_37
+happyReduction_37 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn39
+		 (fp (AST.NT (AST.JSLiteral "===") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_38 = happySpecReduce_1  33# happyReduction_38
+happyReduction_38 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn40
+		 (fp (AST.NT (AST.JSLiteral "==") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_39 = happySpecReduce_1  34# happyReduction_39
+happyReduction_39 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn41
+		 (fp (AST.NT (AST.JSLiteral "!==") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_40 = happySpecReduce_1  35# happyReduction_40
+happyReduction_40 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn42
+		 (fp (AST.NT (AST.JSLiteral "!=") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_41 = happySpecReduce_1  36# happyReduction_41
+happyReduction_41 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn43
+		 (fp (AST.NT (AST.JSLiteral "||") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_42 = happySpecReduce_1  37# happyReduction_42
+happyReduction_42 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn44
+		 (fp (AST.NT (AST.JSLiteral "&&") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_43 = happySpecReduce_1  38# happyReduction_43
+happyReduction_43 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn45
+		 (fp (AST.NT (AST.JSLiteral "|") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_44 = happySpecReduce_1  39# happyReduction_44
+happyReduction_44 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn46
+		 (fp (AST.NT (AST.JSLiteral "&") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_45 = happySpecReduce_1  40# happyReduction_45
+happyReduction_45 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn47
+		 (fp (AST.NT (AST.JSLiteral "^") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_46 = happySpecReduce_1  41# happyReduction_46
+happyReduction_46 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn48
+		 (fp (AST.NT (AST.JSLiteral "?") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_47 = happySpecReduce_1  42# happyReduction_47
+happyReduction_47 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (fp (AST.NT (AST.JSLiteral "=") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_48 = happySpecReduce_1  43# happyReduction_48
+happyReduction_48 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn50
+		 (fp (AST.NT (AST.JSLiteral (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_49 = happySpecReduce_1  44# happyReduction_49
+happyReduction_49 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn51
+		 (fp (AST.NT (AST.JSLiteral "var") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_50 = happySpecReduce_1  45# happyReduction_50
+happyReduction_50 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn52
+		 (fp (AST.NT (AST.JSLiteral "const") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_51 = happySpecReduce_1  46# happyReduction_51
+happyReduction_51 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn53
+		 (fp (AST.NT (AST.JSLiteral "if") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_52 = happySpecReduce_1  47# happyReduction_52
+happyReduction_52 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (fp (AST.NT (AST.JSLiteral "else") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_53 = happySpecReduce_1  48# happyReduction_53
+happyReduction_53 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn55
+		 (fp (AST.NT (AST.JSLiteral "do") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_54 = happySpecReduce_1  49# happyReduction_54
+happyReduction_54 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (fp (AST.NT (AST.JSLiteral "while") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_55 = happySpecReduce_1  50# happyReduction_55
+happyReduction_55 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn57
+		 (fp (AST.NT (AST.JSLiteral "for") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_56 = happySpecReduce_1  51# happyReduction_56
+happyReduction_56 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn58
+		 (fp (AST.NT (AST.JSLiteral "continue") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_57 = happySpecReduce_1  52# happyReduction_57
+happyReduction_57 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn59
+		 (fp (AST.NT (AST.JSLiteral "break") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_58 = happySpecReduce_1  53# happyReduction_58
+happyReduction_58 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn60
+		 (fp (AST.NT (AST.JSLiteral "return") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_59 = happySpecReduce_1  54# happyReduction_59
+happyReduction_59 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn61
+		 (fp (AST.NT (AST.JSLiteral "with") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_60 = happySpecReduce_1  55# happyReduction_60
+happyReduction_60 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 (fp (AST.NT (AST.JSLiteral "switch") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_61 = happySpecReduce_1  56# happyReduction_61
+happyReduction_61 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn63
+		 (fp (AST.NT (AST.JSLiteral "case") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_62 = happySpecReduce_1  57# happyReduction_62
+happyReduction_62 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn64
+		 (fp (AST.NT (AST.JSLiteral "default") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_63 = happySpecReduce_1  58# happyReduction_63
+happyReduction_63 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn65
+		 (fp (AST.NT (AST.JSLiteral "throw") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_64 = happySpecReduce_1  59# happyReduction_64
+happyReduction_64 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn66
+		 (fp (AST.NT (AST.JSLiteral "try") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_65 = happySpecReduce_1  60# happyReduction_65
+happyReduction_65 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn67
+		 (fp (AST.NT (AST.JSLiteral "catch") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_66 = happySpecReduce_1  61# happyReduction_66
+happyReduction_66 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn68
+		 (fp (AST.NT (AST.JSLiteral "finally") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_67 = happySpecReduce_1  62# happyReduction_67
+happyReduction_67 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn69
+		 (fp (AST.NT (AST.JSLiteral "function") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_68 = happySpecReduce_1  63# happyReduction_68
+happyReduction_68 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn70
+		 (fp (AST.NT (AST.JSLiteral "") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_69 = happySpecReduce_1  64# happyReduction_69
+happyReduction_69 happy_x_1
+	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (happy_var_1
+	)}
+
+happyReduce_70 = happySpecReduce_1  64# happyReduction_70
+happyReduction_70 happy_x_1
+	 =  case happyOut73 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (happy_var_1
+	)}
+
+happyReduce_71 = happySpecReduce_1  64# happyReduction_71
+happyReduction_71 happy_x_1
+	 =  case happyOut74 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (happy_var_1
+	)}
+
+happyReduce_72 = happySpecReduce_1  64# happyReduction_72
+happyReduction_72 happy_x_1
+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (happy_var_1
+	)}
+
+happyReduce_73 = happySpecReduce_1  64# happyReduction_73
+happyReduction_73 happy_x_1
+	 =  case happyOut76 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (happy_var_1
+	)}
+
+happyReduce_74 = happySpecReduce_1  65# happyReduction_74
+happyReduction_74 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn72
+		 (fp (AST.NT (AST.JSLiteral "null") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_75 = happySpecReduce_1  66# happyReduction_75
+happyReduction_75 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn73
+		 (fp (AST.NT (AST.JSLiteral "true")  (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_76 = happySpecReduce_1  66# happyReduction_76
+happyReduction_76 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn73
+		 (fp (AST.NT (AST.JSLiteral "false") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_77 = happySpecReduce_1  67# happyReduction_77
+happyReduction_77 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn74
+		 (fp (AST.NT (AST.JSDecimal (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_78 = happySpecReduce_1  67# happyReduction_78
+happyReduction_78 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn74
+		 (fp (AST.NT (AST.JSHexInteger (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_79 = happySpecReduce_1  68# happyReduction_79
+happyReduction_79 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn75
+		 (fp (AST.NT (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_80 = happySpecReduce_1  69# happyReduction_80
+happyReduction_80 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn76
+		 (fp (AST.NT (AST.JSRegEx (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_81 = happySpecReduce_1  70# happyReduction_81
+happyReduction_81 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn77
+		 (fp (AST.NT (AST.JSLiteral "this") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_82 = happySpecReduce_1  70# happyReduction_82
+happyReduction_82 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn77
+		 (happy_var_1 {- PrimaryExpression1 -}
+	)}
+
+happyReduce_83 = happySpecReduce_1  70# happyReduction_83
+happyReduction_83 happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	happyIn77
+		 (happy_var_1 {- PrimaryExpression2 -}
+	)}
+
+happyReduce_84 = happySpecReduce_1  70# happyReduction_84
+happyReduction_84 happy_x_1
+	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
+	happyIn77
+		 (happy_var_1 {- PrimaryExpression3 -}
+	)}
+
+happyReduce_85 = happySpecReduce_1  70# happyReduction_85
+happyReduction_85 happy_x_1
+	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
+	happyIn77
+		 (happy_var_1 {- PrimaryExpression4 -}
+	)}
+
+happyReduce_86 = happySpecReduce_3  70# happyReduction_86
+happyReduction_86 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	case happyOut118 happy_x_2 of { happy_var_2 -> 
+	case happyOut9 happy_x_3 of { happy_var_3 -> 
+	happyIn77
+		 (fp (AST.NN (AST.JSExpressionParen happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_87 = happySpecReduce_1  71# happyReduction_87
+happyReduction_87 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn78
+		 ((AST.NT (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_88 = happySpecReduce_1  71# happyReduction_88
+happyReduction_88 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn78
+		 ((AST.NT (AST.JSIdentifier "get") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_89 = happySpecReduce_1  71# happyReduction_89
+happyReduction_89 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn78
+		 ((AST.NT (AST.JSIdentifier "set") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_90 = happySpecReduce_1  72# happyReduction_90
+happyReduction_90 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (happy_var_1
+	)}
+
+happyReduce_91 = happySpecReduce_1  72# happyReduction_91
+happyReduction_91 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "break") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_92 = happySpecReduce_1  72# happyReduction_92
+happyReduction_92 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "case") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_93 = happySpecReduce_1  72# happyReduction_93
+happyReduction_93 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "catch") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_94 = happySpecReduce_1  72# happyReduction_94
+happyReduction_94 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "const") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_95 = happySpecReduce_1  72# happyReduction_95
+happyReduction_95 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "continue") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_96 = happySpecReduce_1  72# happyReduction_96
+happyReduction_96 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "debugger") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_97 = happySpecReduce_1  72# happyReduction_97
+happyReduction_97 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "default") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_98 = happySpecReduce_1  72# happyReduction_98
+happyReduction_98 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "delete") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_99 = happySpecReduce_1  72# happyReduction_99
+happyReduction_99 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "do") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_100 = happySpecReduce_1  72# happyReduction_100
+happyReduction_100 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "else") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_101 = happySpecReduce_1  72# happyReduction_101
+happyReduction_101 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "enum") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_102 = happySpecReduce_1  72# happyReduction_102
+happyReduction_102 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "false") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_103 = happySpecReduce_1  72# happyReduction_103
+happyReduction_103 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "finally") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_104 = happySpecReduce_1  72# happyReduction_104
+happyReduction_104 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "for")  (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_105 = happySpecReduce_1  72# happyReduction_105
+happyReduction_105 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "function") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_106 = happySpecReduce_1  72# happyReduction_106
+happyReduction_106 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "get") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_107 = happySpecReduce_1  72# happyReduction_107
+happyReduction_107 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "if") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_108 = happySpecReduce_1  72# happyReduction_108
+happyReduction_108 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "in") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_109 = happySpecReduce_1  72# happyReduction_109
+happyReduction_109 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "instanceof") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_110 = happySpecReduce_1  72# happyReduction_110
+happyReduction_110 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "new") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_111 = happySpecReduce_1  72# happyReduction_111
+happyReduction_111 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "null") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_112 = happySpecReduce_1  72# happyReduction_112
+happyReduction_112 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "return") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_113 = happySpecReduce_1  72# happyReduction_113
+happyReduction_113 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "set") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_114 = happySpecReduce_1  72# happyReduction_114
+happyReduction_114 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "switch") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_115 = happySpecReduce_1  72# happyReduction_115
+happyReduction_115 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "this") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_116 = happySpecReduce_1  72# happyReduction_116
+happyReduction_116 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "throw") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_117 = happySpecReduce_1  72# happyReduction_117
+happyReduction_117 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "true") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_118 = happySpecReduce_1  72# happyReduction_118
+happyReduction_118 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "try") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_119 = happySpecReduce_1  72# happyReduction_119
+happyReduction_119 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "typeof") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_120 = happySpecReduce_1  72# happyReduction_120
+happyReduction_120 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "var") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_121 = happySpecReduce_1  72# happyReduction_121
+happyReduction_121 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "void") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_122 = happySpecReduce_1  72# happyReduction_122
+happyReduction_122 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "while") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_123 = happySpecReduce_1  72# happyReduction_123
+happyReduction_123 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier "with") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_124 = happySpecReduce_1  72# happyReduction_124
+happyReduction_124 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 (fp (AST.NT (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_125 = happySpecReduce_2  73# happyReduction_125
+happyReduction_125 happy_x_2
+	happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_2 of { happy_var_2 -> 
+	happyIn80
+		 (fp (AST.NN (AST.JSArrayLiteral happy_var_1 [] happy_var_2))
+	)}}
+
+happyReduce_126 = happySpecReduce_3  73# happyReduction_126
+happyReduction_126 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	case happyOut82 happy_x_2 of { happy_var_2 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn80
+		 (fp (AST.NN (AST.JSArrayLiteral happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_127 = happySpecReduce_3  73# happyReduction_127
+happyReduction_127 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	case happyOut81 happy_x_2 of { happy_var_2 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn80
+		 (fp (AST.NN (AST.JSArrayLiteral happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_128 = happyReduce 5# 73# happyReduction_128
+happyReduction_128 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut12 happy_x_1 of { happy_var_1 -> 
+	case happyOut81 happy_x_2 of { happy_var_2 -> 
+	case happyOut14 happy_x_3 of { happy_var_3 -> 
+	case happyOut82 happy_x_4 of { happy_var_4 -> 
+	case happyOut13 happy_x_5 of { happy_var_5 -> 
+	happyIn80
+		 (fp (AST.NN (AST.JSArrayLiteral happy_var_1 (happy_var_2++[happy_var_3]++happy_var_4) happy_var_5))
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_129 = happyReduce 4# 73# happyReduction_129
+happyReduction_129 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut12 happy_x_1 of { happy_var_1 -> 
+	case happyOut81 happy_x_2 of { happy_var_2 -> 
+	case happyOut14 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_4 of { happy_var_4 -> 
+	happyIn80
+		 (fp (AST.NN (AST.JSArrayLiteral happy_var_1 (happy_var_2++[happy_var_3])     happy_var_4))
+	) `HappyStk` happyRest}}}}
+
+happyReduce_130 = happySpecReduce_2  74# happyReduction_130
+happyReduction_130 happy_x_2
+	happy_x_1
+	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
+	case happyOut115 happy_x_2 of { happy_var_2 -> 
+	happyIn81
+		 (((happy_var_1)++(happy_var_2)) {- ElementList -}
+	)}}
+
+happyReduce_131 = happySpecReduce_1  74# happyReduction_131
+happyReduction_131 happy_x_1
+	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
+	happyIn81
+		 (happy_var_1           {- ElementList -}
+	)}
+
+happyReduce_132 = happyReduce 4# 74# happyReduction_132
+happyReduction_132 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut81 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut82 happy_x_3 of { happy_var_3 -> 
+	case happyOut115 happy_x_4 of { happy_var_4 -> 
+	happyIn81
+		 (((happy_var_1)++[fp (AST.NN (AST.JSElision happy_var_2))]++(happy_var_3)++(happy_var_4)) {- ElementList -}
+	) `HappyStk` happyRest}}}}
+
+happyReduce_133 = happySpecReduce_3  74# happyReduction_133
+happyReduction_133 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	happyIn81
+		 (((happy_var_1)++[fp (AST.NN (AST.JSElision happy_var_2))]++(happy_var_3)) {- ElementList -}
+	)}}}
+
+happyReduce_134 = happySpecReduce_1  75# happyReduction_134
+happyReduction_134 happy_x_1
+	 =  case happyOut14 happy_x_1 of { happy_var_1 -> 
+	happyIn82
+		 ([        fp (AST.NN (AST.JSElision happy_var_1))]
+	)}
+
+happyReduce_135 = happySpecReduce_2  75# happyReduction_135
+happyReduction_135 happy_x_2
+	happy_x_1
+	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	happyIn82
+		 ((happy_var_1 ++ [fp (AST.NN (AST.JSElision happy_var_2))])
+	)}}
+
+happyReduce_136 = happySpecReduce_2  76# happyReduction_136
+happyReduction_136 happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut11 happy_x_2 of { happy_var_2 -> 
+	happyIn83
+		 (fp (AST.NN (AST.JSObjectLiteral happy_var_1 [] happy_var_2)         )
+	)}}
+
+happyReduce_137 = happySpecReduce_3  76# happyReduction_137
+happyReduction_137 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut84 happy_x_2 of { happy_var_2 -> 
+	case happyOut11 happy_x_3 of { happy_var_3 -> 
+	happyIn83
+		 (fp (AST.NN (AST.JSObjectLiteral happy_var_1 happy_var_2 happy_var_3)         )
+	)}}}
+
+happyReduce_138 = happyReduce 4# 76# happyReduction_138
+happyReduction_138 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut84 happy_x_2 of { happy_var_2 -> 
+	case happyOut14 happy_x_3 of { happy_var_3 -> 
+	case happyOut11 happy_x_4 of { happy_var_4 -> 
+	happyIn83
+		 (fp (AST.NN (AST.JSObjectLiteral happy_var_1 (happy_var_2++[happy_var_3]) happy_var_4) )
+	) `HappyStk` happyRest}}}}
+
+happyReduce_139 = happySpecReduce_1  77# happyReduction_139
+happyReduction_139 happy_x_1
+	 =  case happyOut85 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 ([happy_var_1] {- PropertyNameandValueList1 -}
+	)}
+
+happyReduce_140 = happySpecReduce_3  77# happyReduction_140
+happyReduction_140 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut84 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut85 happy_x_3 of { happy_var_3 -> 
+	happyIn84
+		 ((happy_var_1++[happy_var_2]++[happy_var_3]) {- PropertyNameandValueList2 -}
+	)}}}
+
+happyReduce_141 = happySpecReduce_3  78# happyReduction_141
+happyReduction_141 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	happyIn85
+		 (fp (AST.NN (AST.JSPropertyNameandValue happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_142 = happyReduce 7# 78# happyReduction_142
+happyReduction_142 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut86 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut10 happy_x_5 of { happy_var_5 -> 
+	case happyOut160 happy_x_6 of { happy_var_6 -> 
+	case happyOut11 happy_x_7 of { happy_var_7 -> 
+	happyIn85
+		 (fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "get") (ss happy_var_1) (gc happy_var_1)) happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7))
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_143 = happyReduce 8# 78# happyReduction_143
+happyReduction_143 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut86 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut87 happy_x_4 of { happy_var_4 -> 
+	case happyOut9 happy_x_5 of { happy_var_5 -> 
+	case happyOut10 happy_x_6 of { happy_var_6 -> 
+	case happyOut160 happy_x_7 of { happy_var_7 -> 
+	case happyOut11 happy_x_8 of { happy_var_8 -> 
+	happyIn85
+		 (fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "set") (ss happy_var_1) (gc happy_var_1)) happy_var_2 happy_var_3 [happy_var_4] happy_var_5 happy_var_6 happy_var_7 happy_var_8))
+	) `HappyStk` happyRest}}}}}}}}
+
+happyReduce_144 = happySpecReduce_1  79# happyReduction_144
+happyReduction_144 happy_x_1
+	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
+	happyIn86
+		 (happy_var_1 {- PropertyName1 -}
+	)}
+
+happyReduce_145 = happySpecReduce_1  79# happyReduction_145
+happyReduction_145 happy_x_1
+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
+	happyIn86
+		 (happy_var_1 {- PropertyName2 -}
+	)}
+
+happyReduce_146 = happySpecReduce_1  79# happyReduction_146
+happyReduction_146 happy_x_1
+	 =  case happyOut74 happy_x_1 of { happy_var_1 -> 
+	happyIn86
+		 (happy_var_1 {- PropertyName3 -}
+	)}
+
+happyReduce_147 = happySpecReduce_1  80# happyReduction_147
+happyReduction_147 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn87
+		 (happy_var_1 {- PropertySetParameterList -}
+	)}
+
+happyReduce_148 = happySpecReduce_1  81# happyReduction_148
+happyReduction_148 happy_x_1
+	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
+	happyIn88
+		 ([happy_var_1] {- MemberExpression -}
+	)}
+
+happyReduce_149 = happySpecReduce_1  81# happyReduction_149
+happyReduction_149 happy_x_1
+	 =  case happyOut157 happy_x_1 of { happy_var_1 -> 
+	happyIn88
+		 ([happy_var_1] {- MemberExpression -}
+	)}
+
+happyReduce_150 = happyReduce 4# 81# happyReduction_150
+happyReduction_150 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut88 happy_x_1 of { happy_var_1 -> 
+	case happyOut12 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_4 of { happy_var_4 -> 
+	happyIn88
+		 ([fp (AST.NN (AST.JSMemberSquare happy_var_1 happy_var_2 happy_var_3 happy_var_4))]
+	) `HappyStk` happyRest}}}}
+
+happyReduce_151 = happySpecReduce_3  81# happyReduction_151
+happyReduction_151 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
+	case happyOut17 happy_x_2 of { happy_var_2 -> 
+	case happyOut79 happy_x_3 of { happy_var_3 -> 
+	happyIn88
+		 ([fp (AST.NN (AST.JSMemberDot happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_152 = happySpecReduce_3  81# happyReduction_152
+happyReduction_152 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut88 happy_x_2 of { happy_var_2 -> 
+	case happyOut91 happy_x_3 of { happy_var_3 -> 
+	happyIn88
+		 ((((fp (AST.NT (AST.JSLiteral "new") (ss happy_var_1) (gc happy_var_1))):happy_var_2)++[happy_var_3])
+	)}}}
+
+happyReduce_153 = happySpecReduce_1  82# happyReduction_153
+happyReduction_153 happy_x_1
+	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
+	happyIn89
+		 (happy_var_1 {- NewExpression -}
+	)}
+
+happyReduce_154 = happySpecReduce_2  82# happyReduction_154
+happyReduction_154 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut89 happy_x_2 of { happy_var_2 -> 
+	happyIn89
+		 ((fp (AST.NT (AST.JSLiteral "new") (ss happy_var_1) (gc happy_var_1))):happy_var_2
+	)}}
+
+happyReduce_155 = happySpecReduce_2  83# happyReduction_155
+happyReduction_155 happy_x_2
+	happy_x_1
+	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
+	case happyOut91 happy_x_2 of { happy_var_2 -> 
+	happyIn90
+		 (happy_var_1++[happy_var_2] {- CallExpression -}
+	)}}
+
+happyReduce_156 = happySpecReduce_2  83# happyReduction_156
+happyReduction_156 happy_x_2
+	happy_x_1
+	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
+	case happyOut91 happy_x_2 of { happy_var_2 -> 
+	happyIn90
+		 ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "()" [] [happy_var_2] []))])
+	)}}
+
+happyReduce_157 = happyReduce 4# 83# happyReduction_157
+happyReduction_157 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut90 happy_x_1 of { happy_var_1 -> 
+	case happyOut12 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_4 of { happy_var_4 -> 
+	happyIn90
+		 ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "[]" [happy_var_2] [happy_var_3] [happy_var_4]))])
+	) `HappyStk` happyRest}}}}
+
+happyReduce_158 = happySpecReduce_3  83# happyReduction_158
+happyReduction_158 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
+	case happyOut17 happy_x_2 of { happy_var_2 -> 
+	case happyOut79 happy_x_3 of { happy_var_3 -> 
+	happyIn90
+		 ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "."  [happy_var_2] [happy_var_3] []))])
+	)}}}
+
+happyReduce_159 = happySpecReduce_2  84# happyReduction_159
+happyReduction_159 happy_x_2
+	happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	case happyOut9 happy_x_2 of { happy_var_2 -> 
+	happyIn91
+		 (fp (AST.NN (AST.JSArguments happy_var_1 [] happy_var_2))
+	)}}
+
+happyReduce_160 = happySpecReduce_3  84# happyReduction_160
+happyReduction_160 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	case happyOut92 happy_x_2 of { happy_var_2 -> 
+	case happyOut9 happy_x_3 of { happy_var_3 -> 
+	happyIn91
+		 (fp (AST.NN (AST.JSArguments happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_161 = happySpecReduce_1  85# happyReduction_161
+happyReduction_161 happy_x_1
+	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
+	happyIn92
+		 (happy_var_1 {- ArgumentList -}
+	)}
+
+happyReduce_162 = happySpecReduce_3  85# happyReduction_162
+happyReduction_162 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	happyIn92
+		 (happy_var_1++[happy_var_2]++happy_var_3 {- ArgumentList2 -}
+	)}}}
+
+happyReduce_163 = happySpecReduce_1  86# happyReduction_163
+happyReduction_163 happy_x_1
+	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
+	happyIn93
+		 (happy_var_1 {- LeftHandSideExpression1 -}
+	)}
+
+happyReduce_164 = happySpecReduce_1  86# happyReduction_164
+happyReduction_164 happy_x_1
+	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
+	happyIn93
+		 (happy_var_1 {- LeftHandSideExpression12 -}
+	)}
+
+happyReduce_165 = happySpecReduce_1  87# happyReduction_165
+happyReduction_165 happy_x_1
+	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
+	happyIn94
+		 (happy_var_1 {- PostfixExpression -}
+	)}
+
+happyReduce_166 = happySpecReduce_2  87# happyReduction_166
+happyReduction_166 happy_x_2
+	happy_x_1
+	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn94
+		 ([fp (AST.NN (AST.JSExpressionPostfix "++" happy_var_1 happy_var_2))]
+	)}}
+
+happyReduce_167 = happySpecReduce_2  87# happyReduction_167
+happyReduction_167 happy_x_2
+	happy_x_1
+	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
+	case happyOut19 happy_x_2 of { happy_var_2 -> 
+	happyIn94
+		 ([fp (AST.NN (AST.JSExpressionPostfix "--" happy_var_1 happy_var_2))]
+	)}}
+
+happyReduce_168 = happySpecReduce_1  88# happyReduction_168
+happyReduction_168 happy_x_1
+	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
+	happyIn95
+		 (happy_var_1 {- UnaryExpression -}
+	)}
+
+happyReduce_169 = happySpecReduce_2  88# happyReduction_169
+happyReduction_169 happy_x_2
+	happy_x_1
+	 =  case happyOut20 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "delete " happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_170 = happySpecReduce_2  88# happyReduction_170
+happyReduction_170 happy_x_2
+	happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "void "   happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_171 = happySpecReduce_2  88# happyReduction_171
+happyReduction_171 happy_x_2
+	happy_x_1
+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "typeof " happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_172 = happySpecReduce_2  88# happyReduction_172
+happyReduction_172 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "++"      happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_173 = happySpecReduce_2  88# happyReduction_173
+happyReduction_173 happy_x_2
+	happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "--"      happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_174 = happySpecReduce_2  88# happyReduction_174
+happyReduction_174 happy_x_2
+	happy_x_1
+	 =  case happyOut23 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "+"       happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_175 = happySpecReduce_2  88# happyReduction_175
+happyReduction_175 happy_x_2
+	happy_x_1
+	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "-"       happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_176 = happySpecReduce_2  88# happyReduction_176
+happyReduction_176 happy_x_2
+	happy_x_1
+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "~"       happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_177 = happySpecReduce_2  88# happyReduction_177
+happyReduction_177 happy_x_2
+	happy_x_1
+	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (((fp (AST.NN (AST.JSUnary "!"       happy_var_1))):happy_var_2)
+	)}}
+
+happyReduce_178 = happySpecReduce_1  89# happyReduction_178
+happyReduction_178 happy_x_1
+	 =  case happyOut95 happy_x_1 of { happy_var_1 -> 
+	happyIn96
+		 (happy_var_1 {- MultiplicativeExpression -}
+	)}
+
+happyReduce_179 = happySpecReduce_3  89# happyReduction_179
+happyReduction_179 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
+	case happyOut27 happy_x_2 of { happy_var_2 -> 
+	case happyOut95 happy_x_3 of { happy_var_3 -> 
+	happyIn96
+		 ([fp (AST.NN (AST.JSExpressionBinary "*" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_180 = happySpecReduce_3  89# happyReduction_180
+happyReduction_180 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
+	case happyOut28 happy_x_2 of { happy_var_2 -> 
+	case happyOut95 happy_x_3 of { happy_var_3 -> 
+	happyIn96
+		 ([fp (AST.NN (AST.JSExpressionBinary "/" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_181 = happySpecReduce_3  89# happyReduction_181
+happyReduction_181 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
+	case happyOut29 happy_x_2 of { happy_var_2 -> 
+	case happyOut95 happy_x_3 of { happy_var_3 -> 
+	happyIn96
+		 ([fp (AST.NN (AST.JSExpressionBinary "%" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_182 = happySpecReduce_3  90# happyReduction_182
+happyReduction_182 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> 
+	case happyOut23 happy_x_2 of { happy_var_2 -> 
+	case happyOut96 happy_x_3 of { happy_var_3 -> 
+	happyIn97
+		 ([fp (AST.NN (AST.JSExpressionBinary "+" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_183 = happySpecReduce_3  90# happyReduction_183
+happyReduction_183 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_2 of { happy_var_2 -> 
+	case happyOut96 happy_x_3 of { happy_var_3 -> 
+	happyIn97
+		 ([fp (AST.NN (AST.JSExpressionBinary "-" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_184 = happySpecReduce_1  90# happyReduction_184
+happyReduction_184 happy_x_1
+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
+	happyIn97
+		 (happy_var_1 {- (goRegExp happy_var_1)-} {- AdditiveExpression -}
+	)}
+
+happyReduce_185 = happySpecReduce_3  91# happyReduction_185
+happyReduction_185 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	case happyOut30 happy_x_2 of { happy_var_2 -> 
+	case happyOut97 happy_x_3 of { happy_var_3 -> 
+	happyIn98
+		 ([fp (AST.NN (AST.JSExpressionBinary "<<"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_186 = happySpecReduce_3  91# happyReduction_186
+happyReduction_186 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	case happyOut31 happy_x_2 of { happy_var_2 -> 
+	case happyOut97 happy_x_3 of { happy_var_3 -> 
+	happyIn98
+		 ([fp (AST.NN (AST.JSExpressionBinary ">>"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_187 = happySpecReduce_3  91# happyReduction_187
+happyReduction_187 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	case happyOut32 happy_x_2 of { happy_var_2 -> 
+	case happyOut97 happy_x_3 of { happy_var_3 -> 
+	happyIn98
+		 ([fp (AST.NN (AST.JSExpressionBinary ">>>" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_188 = happySpecReduce_1  91# happyReduction_188
+happyReduction_188 happy_x_1
+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> 
+	happyIn98
+		 (happy_var_1 {- ShiftExpression -}
+	)}
+
+happyReduce_189 = happySpecReduce_1  92# happyReduction_189
+happyReduction_189 happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	happyIn99
+		 (happy_var_1 {- RelationalExpression -}
+	)}
+
+happyReduce_190 = happySpecReduce_3  92# happyReduction_190
+happyReduction_190 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut34 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary "<"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_191 = happySpecReduce_3  92# happyReduction_191
+happyReduction_191 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut36 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary ">"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_192 = happySpecReduce_3  92# happyReduction_192
+happyReduction_192 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut33 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary "<=" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_193 = happySpecReduce_3  92# happyReduction_193
+happyReduction_193 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut35 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary ">=" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_194 = happySpecReduce_3  92# happyReduction_194
+happyReduction_194 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut38 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_195 = happySpecReduce_3  92# happyReduction_195
+happyReduction_195 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn99
+		 ([fp (AST.NN (AST.JSExpressionBinary " in "         happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_196 = happySpecReduce_1  93# happyReduction_196
+happyReduction_196 happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	happyIn100
+		 (happy_var_1 {- RelationalExpressionNoIn -}
+	)}
+
+happyReduce_197 = happySpecReduce_3  93# happyReduction_197
+happyReduction_197 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	case happyOut34 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn100
+		 ([fp (AST.NN (AST.JSExpressionBinary "<"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_198 = happySpecReduce_3  93# happyReduction_198
+happyReduction_198 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	case happyOut36 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn100
+		 ([fp (AST.NN (AST.JSExpressionBinary ">"  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_199 = happySpecReduce_3  93# happyReduction_199
+happyReduction_199 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	case happyOut33 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn100
+		 ([fp (AST.NN (AST.JSExpressionBinary "<=" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_200 = happySpecReduce_3  93# happyReduction_200
+happyReduction_200 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	case happyOut35 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn100
+		 ([fp (AST.NN (AST.JSExpressionBinary ">=" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_201 = happySpecReduce_3  93# happyReduction_201
+happyReduction_201 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	case happyOut38 happy_x_2 of { happy_var_2 -> 
+	case happyOut98 happy_x_3 of { happy_var_3 -> 
+	happyIn100
+		 ([fp (AST.NN (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_202 = happySpecReduce_1  94# happyReduction_202
+happyReduction_202 happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	happyIn101
+		 (happy_var_1 {- EqualityExpression -}
+	)}
+
+happyReduce_203 = happySpecReduce_3  94# happyReduction_203
+happyReduction_203 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	case happyOut40 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 ([fp (AST.NN (AST.JSExpressionBinary "=="  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_204 = happySpecReduce_3  94# happyReduction_204
+happyReduction_204 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	case happyOut42 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 ([fp (AST.NN (AST.JSExpressionBinary "!="  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_205 = happySpecReduce_3  94# happyReduction_205
+happyReduction_205 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	case happyOut39 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 ([fp (AST.NN (AST.JSExpressionBinary "===" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_206 = happySpecReduce_3  94# happyReduction_206
+happyReduction_206 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	case happyOut41 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 ([fp (AST.NN (AST.JSExpressionBinary "!==" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_207 = happySpecReduce_1  95# happyReduction_207
+happyReduction_207 happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	happyIn102
+		 (happy_var_1 {- EqualityExpressionNoIn -}
+	)}
+
+happyReduce_208 = happySpecReduce_3  95# happyReduction_208
+happyReduction_208 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	case happyOut40 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn102
+		 ([fp (AST.NN (AST.JSExpressionBinary "=="  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_209 = happySpecReduce_3  95# happyReduction_209
+happyReduction_209 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	case happyOut42 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn102
+		 ([fp (AST.NN (AST.JSExpressionBinary "!="  happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_210 = happySpecReduce_3  95# happyReduction_210
+happyReduction_210 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	case happyOut39 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn102
+		 ([fp (AST.NN (AST.JSExpressionBinary "===" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_211 = happySpecReduce_3  95# happyReduction_211
+happyReduction_211 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	case happyOut41 happy_x_2 of { happy_var_2 -> 
+	case happyOut99 happy_x_3 of { happy_var_3 -> 
+	happyIn102
+		 ([fp (AST.NN (AST.JSExpressionBinary "!==" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_212 = happySpecReduce_1  96# happyReduction_212
+happyReduction_212 happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	happyIn103
+		 (happy_var_1 {- BitwiseAndExpression -}
+	)}
+
+happyReduce_213 = happySpecReduce_3  96# happyReduction_213
+happyReduction_213 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut103 happy_x_1 of { happy_var_1 -> 
+	case happyOut46 happy_x_2 of { happy_var_2 -> 
+	case happyOut101 happy_x_3 of { happy_var_3 -> 
+	happyIn103
+		 ([fp (AST.NN (AST.JSExpressionBinary "&" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_214 = happySpecReduce_1  97# happyReduction_214
+happyReduction_214 happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	happyIn104
+		 (happy_var_1 {- BitwiseAndExpression -}
+	)}
+
+happyReduce_215 = happySpecReduce_3  97# happyReduction_215
+happyReduction_215 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut104 happy_x_1 of { happy_var_1 -> 
+	case happyOut46 happy_x_2 of { happy_var_2 -> 
+	case happyOut102 happy_x_3 of { happy_var_3 -> 
+	happyIn104
+		 ([fp (AST.NN (AST.JSExpressionBinary "&" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_216 = happySpecReduce_1  98# happyReduction_216
+happyReduction_216 happy_x_1
+	 =  case happyOut103 happy_x_1 of { happy_var_1 -> 
+	happyIn105
+		 (happy_var_1 {- BitwiseXOrExpression -}
+	)}
+
+happyReduce_217 = happySpecReduce_3  98# happyReduction_217
+happyReduction_217 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	case happyOut103 happy_x_3 of { happy_var_3 -> 
+	happyIn105
+		 ([fp (AST.NN (AST.JSExpressionBinary "^" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_218 = happySpecReduce_1  99# happyReduction_218
+happyReduction_218 happy_x_1
+	 =  case happyOut104 happy_x_1 of { happy_var_1 -> 
+	happyIn106
+		 (happy_var_1 {- BitwiseXOrExpression -}
+	)}
+
+happyReduce_219 = happySpecReduce_3  99# happyReduction_219
+happyReduction_219 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	case happyOut104 happy_x_3 of { happy_var_3 -> 
+	happyIn106
+		 ([fp (AST.NN (AST.JSExpressionBinary "^" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_220 = happySpecReduce_1  100# happyReduction_220
+happyReduction_220 happy_x_1
+	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
+	happyIn107
+		 (happy_var_1 {- BitwiseOrExpression -}
+	)}
+
+happyReduce_221 = happySpecReduce_3  100# happyReduction_221
+happyReduction_221 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
+	case happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOut105 happy_x_3 of { happy_var_3 -> 
+	happyIn107
+		 ([fp (AST.NN (AST.JSExpressionBinary "|" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_222 = happySpecReduce_1  101# happyReduction_222
+happyReduction_222 happy_x_1
+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
+	happyIn108
+		 (happy_var_1 {- BitwiseOrExpression -}
+	)}
+
+happyReduce_223 = happySpecReduce_3  101# happyReduction_223
+happyReduction_223 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut108 happy_x_1 of { happy_var_1 -> 
+	case happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOut106 happy_x_3 of { happy_var_3 -> 
+	happyIn108
+		 ([fp (AST.NN (AST.JSExpressionBinary "|" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_224 = happySpecReduce_1  102# happyReduction_224
+happyReduction_224 happy_x_1
+	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
+	happyIn109
+		 (happy_var_1 {- LogicalAndExpression -}
+	)}
+
+happyReduce_225 = happySpecReduce_3  102# happyReduction_225
+happyReduction_225 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut109 happy_x_1 of { happy_var_1 -> 
+	case happyOut44 happy_x_2 of { happy_var_2 -> 
+	case happyOut107 happy_x_3 of { happy_var_3 -> 
+	happyIn109
+		 ([fp (AST.NN (AST.JSExpressionBinary "&&" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_226 = happySpecReduce_1  103# happyReduction_226
+happyReduction_226 happy_x_1
+	 =  case happyOut108 happy_x_1 of { happy_var_1 -> 
+	happyIn110
+		 (happy_var_1 {- LogicalAndExpression -}
+	)}
+
+happyReduce_227 = happySpecReduce_3  103# happyReduction_227
+happyReduction_227 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
+	case happyOut44 happy_x_2 of { happy_var_2 -> 
+	case happyOut108 happy_x_3 of { happy_var_3 -> 
+	happyIn110
+		 ([fp (AST.NN (AST.JSExpressionBinary "&&" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_228 = happySpecReduce_1  104# happyReduction_228
+happyReduction_228 happy_x_1
+	 =  case happyOut109 happy_x_1 of { happy_var_1 -> 
+	happyIn111
+		 (happy_var_1 {- LogicalOrExpression -}
+	)}
+
+happyReduce_229 = happySpecReduce_3  104# happyReduction_229
+happyReduction_229 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut111 happy_x_1 of { happy_var_1 -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	case happyOut109 happy_x_3 of { happy_var_3 -> 
+	happyIn111
+		 ([fp (AST.NN (AST.JSExpressionBinary "||" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_230 = happySpecReduce_1  105# happyReduction_230
+happyReduction_230 happy_x_1
+	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
+	happyIn112
+		 (happy_var_1 {- LogicalOrExpression -}
+	)}
+
+happyReduce_231 = happySpecReduce_3  105# happyReduction_231
+happyReduction_231 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut112 happy_x_1 of { happy_var_1 -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	case happyOut110 happy_x_3 of { happy_var_3 -> 
+	happyIn112
+		 ([fp (AST.NN (AST.JSExpressionBinary "||" happy_var_1 happy_var_2 happy_var_3))]
+	)}}}
+
+happyReduce_232 = happySpecReduce_1  106# happyReduction_232
+happyReduction_232 happy_x_1
+	 =  case happyOut111 happy_x_1 of { happy_var_1 -> 
+	happyIn113
+		 (happy_var_1 {- ConditionalExpression -}
+	)}
+
+happyReduce_233 = happyReduce 5# 106# happyReduction_233
+happyReduction_233 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut111 happy_x_1 of { happy_var_1 -> 
+	case happyOut48 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	case happyOut15 happy_x_4 of { happy_var_4 -> 
+	case happyOut115 happy_x_5 of { happy_var_5 -> 
+	happyIn113
+		 ([fp (AST.NN (AST.JSExpressionTernary happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))]
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_234 = happySpecReduce_1  107# happyReduction_234
+happyReduction_234 happy_x_1
+	 =  case happyOut112 happy_x_1 of { happy_var_1 -> 
+	happyIn114
+		 (happy_var_1 {- ConditionalExpression -}
+	)}
+
+happyReduce_235 = happyReduce 5# 107# happyReduction_235
+happyReduction_235 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut112 happy_x_1 of { happy_var_1 -> 
+	case happyOut48 happy_x_2 of { happy_var_2 -> 
+	case happyOut116 happy_x_3 of { happy_var_3 -> 
+	case happyOut15 happy_x_4 of { happy_var_4 -> 
+	case happyOut116 happy_x_5 of { happy_var_5 -> 
+	happyIn114
+		 ([fp (AST.NN (AST.JSExpressionTernary happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))]
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_236 = happySpecReduce_1  108# happyReduction_236
+happyReduction_236 happy_x_1
+	 =  case happyOut113 happy_x_1 of { happy_var_1 -> 
+	happyIn115
+		 (happy_var_1 {- AssignmentExpression -}
+	)}
+
+happyReduce_237 = happySpecReduce_3  108# happyReduction_237
+happyReduction_237 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
+	case happyOut117 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	happyIn115
+		 ((happy_var_1++[happy_var_2]++happy_var_3)
+	)}}}
+
+happyReduce_238 = happySpecReduce_1  109# happyReduction_238
+happyReduction_238 happy_x_1
+	 =  case happyOut114 happy_x_1 of { happy_var_1 -> 
+	happyIn116
+		 (happy_var_1 {- AssignmentExpression -}
+	)}
+
+happyReduce_239 = happySpecReduce_3  109# happyReduction_239
+happyReduction_239 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
+	case happyOut117 happy_x_2 of { happy_var_2 -> 
+	case happyOut116 happy_x_3 of { happy_var_3 -> 
+	happyIn116
+		 ((happy_var_1++[happy_var_2]++happy_var_3)
+	)}}}
+
+happyReduce_240 = happySpecReduce_1  110# happyReduction_240
+happyReduction_240 happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	happyIn117
+		 (fp (AST.NN (AST.JSOperator happy_var_1))
+	)}
+
+happyReduce_241 = happySpecReduce_1  110# happyReduction_241
+happyReduction_241 happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	happyIn117
+		 (fp (AST.NN (AST.JSOperator happy_var_1))
+	)}
+
+happyReduce_242 = happySpecReduce_1  111# happyReduction_242
+happyReduction_242 happy_x_1
+	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
+	happyIn118
+		 (fp (AST.NN (AST.JSExpression happy_var_1)) {- Expression -}
+	)}
+
+happyReduce_243 = happySpecReduce_3  111# happyReduction_243
+happyReduction_243 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	happyIn118
+		 (fp (AST.NN (AST.JSExpression (happy_var_1:[happy_var_2]++happy_var_3))) {- Expression2 -}
+	)}}}
+
+happyReduce_244 = happySpecReduce_1  112# happyReduction_244
+happyReduction_244 happy_x_1
+	 =  case happyOut116 happy_x_1 of { happy_var_1 -> 
+	happyIn119
+		 (fp (AST.NN (AST.JSExpression happy_var_1)) {- ExpressionNoIn -}
+	)}
+
+happyReduce_245 = happySpecReduce_3  112# happyReduction_245
+happyReduction_245 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut116 happy_x_3 of { happy_var_3 -> 
+	happyIn119
+		 (fp (AST.NN (AST.JSExpression (happy_var_1:[happy_var_2]++happy_var_3))) {- ExpressionNoIn2 -}
+	)}}}
+
+happyReduce_246 = happySpecReduce_1  113# happyReduction_246
+happyReduction_246 happy_x_1
+	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
+	happyIn120
+		 ([happy_var_1] {- ExpressionOpt -}
+	)}
+
+happyReduce_247 = happySpecReduce_0  113# happyReduction_247
+happyReduction_247  =  happyIn120
+		 ([]   {- ExpressionOpt -}
+	)
+
+happyReduce_248 = happySpecReduce_1  114# happyReduction_248
+happyReduction_248 happy_x_1
+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> 
+	happyIn121
+		 ([happy_var_1] {- ExpressionOpt -}
+	)}
+
+happyReduce_249 = happySpecReduce_0  114# happyReduction_249
+happyReduction_249  =  happyIn121
+		 ([]   {- ExpressionOpt -}
+	)
+
+happyReduce_250 = happySpecReduce_1  115# happyReduction_250
+happyReduction_250 happy_x_1
+	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
+	happyIn122
+		 (happy_var_1 {- Statement1 -}
+	)}
+
+happyReduce_251 = happySpecReduce_1  115# happyReduction_251
+happyReduction_251 happy_x_1
+	 =  case happyOut134 happy_x_1 of { happy_var_1 -> 
+	happyIn122
+		 (happy_var_1 {- Statement3 -}
+	)}
+
+happyReduce_252 = happySpecReduce_1  116# happyReduction_252
+happyReduction_252 happy_x_1
+	 =  case happyOut124 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty1 -}
+	)}
+
+happyReduce_253 = happySpecReduce_1  116# happyReduction_253
+happyReduction_253 happy_x_1
+	 =  case happyOut127 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty2 -}
+	)}
+
+happyReduce_254 = happySpecReduce_1  116# happyReduction_254
+happyReduction_254 happy_x_1
+	 =  case happyOut135 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty4 -}
+	)}
+
+happyReduce_255 = happySpecReduce_1  116# happyReduction_255
+happyReduction_255 happy_x_1
+	 =  case happyOut136 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty5 -}
+	)}
+
+happyReduce_256 = happySpecReduce_1  116# happyReduction_256
+happyReduction_256 happy_x_1
+	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty6 -}
+	)}
+
+happyReduce_257 = happySpecReduce_1  116# happyReduction_257
+happyReduction_257 happy_x_1
+	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty7 -}
+	)}
+
+happyReduce_258 = happySpecReduce_1  116# happyReduction_258
+happyReduction_258 happy_x_1
+	 =  case happyOut141 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty8 -}
+	)}
+
+happyReduce_259 = happySpecReduce_1  116# happyReduction_259
+happyReduction_259 happy_x_1
+	 =  case happyOut142 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty9 -}
+	)}
+
+happyReduce_260 = happySpecReduce_1  116# happyReduction_260
+happyReduction_260 happy_x_1
+	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty10 -}
+	)}
+
+happyReduce_261 = happySpecReduce_1  116# happyReduction_261
+happyReduction_261 happy_x_1
+	 =  case happyOut149 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty11 -}
+	)}
+
+happyReduce_262 = happySpecReduce_1  116# happyReduction_262
+happyReduction_262 happy_x_1
+	 =  case happyOut144 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty12 -}
+	)}
+
+happyReduce_263 = happySpecReduce_1  116# happyReduction_263
+happyReduction_263 happy_x_1
+	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty13 -}
+	)}
+
+happyReduce_264 = happySpecReduce_1  116# happyReduction_264
+happyReduction_264 happy_x_1
+	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty14 -}
+	)}
+
+happyReduce_265 = happySpecReduce_1  116# happyReduction_265
+happyReduction_265 happy_x_1
+	 =  case happyOut155 happy_x_1 of { happy_var_1 -> 
+	happyIn123
+		 (happy_var_1 {- StatementNoEmpty15 -}
+	)}
+
+happyReduce_266 = happySpecReduce_2  117# happyReduction_266
+happyReduction_266 happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut11 happy_x_2 of { happy_var_2 -> 
+	happyIn124
+		 (fp (AST.NN (AST.JSStatementBlock happy_var_1 (AST.NN (AST.JSStatementList [])) happy_var_2))
+	)}}
+
+happyReduce_267 = happySpecReduce_3  117# happyReduction_267
+happyReduction_267 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut126 happy_x_2 of { happy_var_2 -> 
+	case happyOut11 happy_x_3 of { happy_var_3 -> 
+	happyIn124
+		 (fp (AST.NN (AST.JSStatementBlock happy_var_1 happy_var_2                                happy_var_3))
+	)}}}
+
+happyReduce_268 = happySpecReduce_2  118# happyReduction_268
+happyReduction_268 happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut11 happy_x_2 of { happy_var_2 -> 
+	happyIn125
+		 (fp (AST.NN (AST.JSBlock [happy_var_1] (AST.NN (AST.JSStatementList [])) [happy_var_2]))
+	)}}
+
+happyReduce_269 = happySpecReduce_3  118# happyReduction_269
+happyReduction_269 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut126 happy_x_2 of { happy_var_2 -> 
+	case happyOut11 happy_x_3 of { happy_var_3 -> 
+	happyIn125
+		 (fp (AST.NN (AST.JSBlock [happy_var_1] happy_var_2                                [happy_var_3]))
+	)}}}
+
+happyReduce_270 = happySpecReduce_1  119# happyReduction_270
+happyReduction_270 happy_x_1
+	 =  case happyOut122 happy_x_1 of { happy_var_1 -> 
+	happyIn126
+		 (fp (AST.NN (AST.JSStatementList [happy_var_1]))
+	)}
+
+happyReduce_271 = happySpecReduce_2  119# happyReduction_271
+happyReduction_271 happy_x_2
+	happy_x_1
+	 =  case happyOut126 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	happyIn126
+		 ((combineStatements happy_var_1 happy_var_2)
+	)}}
+
+happyReduce_272 = happySpecReduce_3  120# happyReduction_272
+happyReduction_272 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
+	case happyOut128 happy_x_2 of { happy_var_2 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn127
+		 (fp (AST.NN (AST.JSVariables happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_273 = happySpecReduce_3  120# happyReduction_273
+happyReduction_273 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
+	case happyOut128 happy_x_2 of { happy_var_2 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn127
+		 (fp (AST.NN (AST.JSVariables happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_274 = happySpecReduce_1  121# happyReduction_274
+happyReduction_274 happy_x_1
+	 =  case happyOut130 happy_x_1 of { happy_var_1 -> 
+	happyIn128
+		 ([happy_var_1] {- VariableDeclarationList -}
+	)}
+
+happyReduce_275 = happySpecReduce_3  121# happyReduction_275
+happyReduction_275 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut128 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut130 happy_x_3 of { happy_var_3 -> 
+	happyIn128
+		 ((happy_var_1++[happy_var_2]++[happy_var_3]) {- VariableDeclarationList -}
+	)}}}
+
+happyReduce_276 = happySpecReduce_1  122# happyReduction_276
+happyReduction_276 happy_x_1
+	 =  case happyOut131 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 ([happy_var_1] {- VariableDeclarationList -}
+	)}
+
+happyReduce_277 = happySpecReduce_3  122# happyReduction_277
+happyReduction_277 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut129 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut131 happy_x_3 of { happy_var_3 -> 
+	happyIn129
+		 ((happy_var_1++[happy_var_2]++[happy_var_3]) {- VariableDeclarationListNoIn -}
+	)}}}
+
+happyReduce_278 = happySpecReduce_1  123# happyReduction_278
+happyReduction_278 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn130
+		 (fp (AST.NN (AST.JSVarDecl happy_var_1 []))
+	)}
+
+happyReduce_279 = happySpecReduce_2  123# happyReduction_279
+happyReduction_279 happy_x_2
+	happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	case happyOut132 happy_x_2 of { happy_var_2 -> 
+	happyIn130
+		 (fp (AST.NN (AST.JSVarDecl happy_var_1 happy_var_2))
+	)}}
+
+happyReduce_280 = happySpecReduce_2  124# happyReduction_280
+happyReduction_280 happy_x_2
+	happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	case happyOut133 happy_x_2 of { happy_var_2 -> 
+	happyIn131
+		 (fp (AST.NN (AST.JSVarDecl happy_var_1 happy_var_2))
+	)}}
+
+happyReduce_281 = happySpecReduce_1  124# happyReduction_281
+happyReduction_281 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn131
+		 (fp (AST.NN (AST.JSVarDecl happy_var_1 []))
+	)}
+
+happyReduce_282 = happySpecReduce_2  125# happyReduction_282
+happyReduction_282 happy_x_2
+	happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	case happyOut115 happy_x_2 of { happy_var_2 -> 
+	happyIn132
+		 (happy_var_1:happy_var_2 {- Initializer -}
+	)}}
+
+happyReduce_283 = happySpecReduce_2  126# happyReduction_283
+happyReduction_283 happy_x_2
+	happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	case happyOut116 happy_x_2 of { happy_var_2 -> 
+	happyIn133
+		 (happy_var_1:happy_var_2 {- InitializerNoIn -}
+	)}}
+
+happyReduce_284 = happySpecReduce_1  127# happyReduction_284
+happyReduction_284 happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	happyIn134
+		 (happy_var_1
+	)}
+
+happyReduce_285 = happySpecReduce_1  128# happyReduction_285
+happyReduction_285 happy_x_1
+	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
+	happyIn135
+		 (happy_var_1 {- ExpressionStatement -}
+	)}
+
+happyReduce_286 = happyReduce 6# 129# happyReduction_286
+happyReduction_286 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut53 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut138 happy_x_5 of { happy_var_5 -> 
+	case happyOut137 happy_x_6 of { happy_var_6 -> 
+	happyIn136
+		 ((if (happy_var_6 /= []) then
+                       (if (length happy_var_6 == 1)
+                        then
+                          (fp (AST.NN (AST.JSIf happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6) ))
+                        else
+                          (fp (AST.NN
+                             (AST.JSIf
+                                happy_var_1 happy_var_2
+                                happy_var_3
+                                happy_var_4
+                                (fp (AST.NN
+                                   (AST.JSBlock [] (AST.NN (AST.JSStatementList [happy_var_5])) [] )
+                                   ))
+                                happy_var_6
+                             )
+
+                           ))
+                       )
+                     else (fp (AST.NN (AST.JSIf happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 []) )) )
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_287 = happySpecReduce_2  130# happyReduction_287
+happyReduction_287 happy_x_2
+	happy_x_1
+	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	happyIn137
+		 ([happy_var_1,happy_var_2]
+	)}}
+
+happyReduce_288 = happySpecReduce_0  130# happyReduction_288
+happyReduction_288  =  happyIn137
+		 ([]
+	)
+
+happyReduce_289 = happySpecReduce_2  131# happyReduction_289
+happyReduction_289 happy_x_2
+	happy_x_1
+	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	happyIn138
+		 (fp (AST.NN (AST.JSBlock [] (AST.NN (AST.JSStatementList [happy_var_1,happy_var_2])) []))
+	)}}
+
+happyReduce_290 = happySpecReduce_1  131# happyReduction_290
+happyReduction_290 happy_x_1
+	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
+	happyIn138
+		 (happy_var_1 {- StatementSemi -}
+	)}
+
+happyReduce_291 = happySpecReduce_1  131# happyReduction_291
+happyReduction_291 happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	happyIn138
+		 (happy_var_1
+	)}
+
+happyReduce_292 = happyReduce 7# 132# happyReduction_292
+happyReduction_292 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut55 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	case happyOut56 happy_x_3 of { happy_var_3 -> 
+	case happyOut8 happy_x_4 of { happy_var_4 -> 
+	case happyOut118 happy_x_5 of { happy_var_5 -> 
+	case happyOut9 happy_x_6 of { happy_var_6 -> 
+	case happyOut7 happy_x_7 of { happy_var_7 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSDoWhile happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7))
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_293 = happyReduce 5# 132# happyReduction_293
+happyReduction_293 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut56 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut122 happy_x_5 of { happy_var_5 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSWhile happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_294 = happyReduce 9# 132# happyReduction_294
+happyReduction_294 (happy_x_9 `HappyStk`
+	happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut121 happy_x_3 of { happy_var_3 -> 
+	case happyOut16 happy_x_4 of { happy_var_4 -> 
+	case happyOut120 happy_x_5 of { happy_var_5 -> 
+	case happyOut16 happy_x_6 of { happy_var_6 -> 
+	case happyOut120 happy_x_7 of { happy_var_7 -> 
+	case happyOut9 happy_x_8 of { happy_var_8 -> 
+	case happyOut122 happy_x_9 of { happy_var_9 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSFor happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8 happy_var_9))
+	) `HappyStk` happyRest}}}}}}}}}
+
+happyReduce_295 = happyReduce 10# 132# happyReduction_295
+happyReduction_295 (happy_x_10 `HappyStk`
+	happy_x_9 `HappyStk`
+	happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut51 happy_x_3 of { happy_var_3 -> 
+	case happyOut129 happy_x_4 of { happy_var_4 -> 
+	case happyOut16 happy_x_5 of { happy_var_5 -> 
+	case happyOut120 happy_x_6 of { happy_var_6 -> 
+	case happyOut16 happy_x_7 of { happy_var_7 -> 
+	case happyOut120 happy_x_8 of { happy_var_8 -> 
+	case happyOut9 happy_x_9 of { happy_var_9 -> 
+	case happyOut122 happy_x_10 of { happy_var_10 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSForVar happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8 happy_var_9 happy_var_10))
+	) `HappyStk` happyRest}}}}}}}}}}
+
+happyReduce_296 = happyReduce 7# 132# happyReduction_296
+happyReduction_296 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut93 happy_x_3 of { happy_var_3 -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	case happyOut118 happy_x_5 of { happy_var_5 -> 
+	case happyOut9 happy_x_6 of { happy_var_6 -> 
+	case happyOut122 happy_x_7 of { happy_var_7 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSForIn happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7))
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_297 = happyReduce 8# 132# happyReduction_297
+happyReduction_297 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut51 happy_x_3 of { happy_var_3 -> 
+	case happyOut131 happy_x_4 of { happy_var_4 -> 
+	case happyOut37 happy_x_5 of { happy_var_5 -> 
+	case happyOut118 happy_x_6 of { happy_var_6 -> 
+	case happyOut9 happy_x_7 of { happy_var_7 -> 
+	case happyOut122 happy_x_8 of { happy_var_8 -> 
+	happyIn139
+		 (fp (AST.NN (AST.JSForVarIn happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8))
+	) `HappyStk` happyRest}}}}}}}}
+
+happyReduce_298 = happySpecReduce_2  133# happyReduction_298
+happyReduction_298 happy_x_2
+	happy_x_1
+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
+	case happyOut7 happy_x_2 of { happy_var_2 -> 
+	happyIn140
+		 (fp (AST.NN (AST.JSContinue happy_var_1 []   happy_var_2))
+	)}}
+
+happyReduce_299 = happySpecReduce_3  133# happyReduction_299
+happyReduction_299 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
+	case happyOut78 happy_x_2 of { happy_var_2 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn140
+		 (fp (AST.NN (AST.JSContinue happy_var_1 [happy_var_2] happy_var_3))
+	)}}}
+
+happyReduce_300 = happySpecReduce_2  134# happyReduction_300
+happyReduction_300 happy_x_2
+	happy_x_1
+	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
+	case happyOut7 happy_x_2 of { happy_var_2 -> 
+	happyIn141
+		 (fp (AST.NN (AST.JSBreak happy_var_1 []   happy_var_2))
+	)}}
+
+happyReduce_301 = happySpecReduce_3  134# happyReduction_301
+happyReduction_301 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
+	case happyOut78 happy_x_2 of { happy_var_2 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn141
+		 (fp (AST.NN (AST.JSBreak happy_var_1 [happy_var_2] happy_var_3))
+	)}}}
+
+happyReduce_302 = happySpecReduce_2  135# happyReduction_302
+happyReduction_302 happy_x_2
+	happy_x_1
+	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
+	case happyOut7 happy_x_2 of { happy_var_2 -> 
+	happyIn142
+		 (fp (AST.NN (AST.JSReturn happy_var_1 []   happy_var_2))
+	)}}
+
+happyReduce_303 = happySpecReduce_3  135# happyReduction_303
+happyReduction_303 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
+	case happyOut118 happy_x_2 of { happy_var_2 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn142
+		 (fp (AST.NN (AST.JSReturn happy_var_1 [happy_var_2] happy_var_3))
+	)}}}
+
+happyReduce_304 = happyReduce 6# 136# happyReduction_304
+happyReduction_304 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut61 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut122 happy_x_5 of { happy_var_5 -> 
+	case happyOut7 happy_x_6 of { happy_var_6 -> 
+	happyIn143
+		 (fp (AST.NN (AST.JSWith happy_var_1 happy_var_2 happy_var_3 happy_var_4 [happy_var_5,happy_var_6]))
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_305 = happyReduce 5# 137# happyReduction_305
+happyReduction_305 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut62 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut145 happy_x_5 of { happy_var_5 -> 
+	happyIn144
+		 ((AST.NN (AST.JSSwitch happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_306 = happySpecReduce_3  138# happyReduction_306
+happyReduction_306 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut146 happy_x_2 of { happy_var_2 -> 
+	case happyOut11 happy_x_3 of { happy_var_3 -> 
+	happyIn145
+		 ((happy_var_1:happy_var_2)++[happy_var_3]           {- CaseBlock1 -}
+	)}}}
+
+happyReduce_307 = happyReduce 5# 138# happyReduction_307
+happyReduction_307 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut146 happy_x_2 of { happy_var_2 -> 
+	case happyOut148 happy_x_3 of { happy_var_3 -> 
+	case happyOut146 happy_x_4 of { happy_var_4 -> 
+	case happyOut11 happy_x_5 of { happy_var_5 -> 
+	happyIn145
+		 ((happy_var_1:happy_var_2)++[happy_var_3]++happy_var_4++[happy_var_5] {- CaseBlock2 -}
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_308 = happySpecReduce_1  139# happyReduction_308
+happyReduction_308 happy_x_1
+	 =  case happyOut147 happy_x_1 of { happy_var_1 -> 
+	happyIn146
+		 ([happy_var_1] {- CaseClauses1 -}
+	)}
+
+happyReduce_309 = happySpecReduce_2  139# happyReduction_309
+happyReduction_309 happy_x_2
+	happy_x_1
+	 =  case happyOut146 happy_x_1 of { happy_var_1 -> 
+	case happyOut147 happy_x_2 of { happy_var_2 -> 
+	happyIn146
+		 ((happy_var_1++[happy_var_2]) {- CaseClauses2 -}
+	)}}
+
+happyReduce_310 = happySpecReduce_0  139# happyReduction_310
+happyReduction_310  =  happyIn146
+		 ([fp (AST.NT (AST.JSLiteral "") tokenPosnEmpty []) ]
+	)
+
+happyReduce_311 = happyReduce 4# 140# happyReduction_311
+happyReduction_311 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut63 happy_x_1 of { happy_var_1 -> 
+	case happyOut118 happy_x_2 of { happy_var_2 -> 
+	case happyOut15 happy_x_3 of { happy_var_3 -> 
+	case happyOut126 happy_x_4 of { happy_var_4 -> 
+	happyIn147
+		 (fp (AST.NN (AST.JSCase happy_var_1 happy_var_2 happy_var_3 happy_var_4))
+	) `HappyStk` happyRest}}}}
+
+happyReduce_312 = happySpecReduce_3  140# happyReduction_312
+happyReduction_312 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
+	case happyOut118 happy_x_2 of { happy_var_2 -> 
+	case happyOut15 happy_x_3 of { happy_var_3 -> 
+	happyIn147
+		 (fp (AST.NN (AST.JSCase happy_var_1 happy_var_2 happy_var_3 (AST.NN (AST.JSStatementList []))))
+	)}}}
+
+happyReduce_313 = happySpecReduce_2  141# happyReduction_313
+happyReduction_313 happy_x_2
+	happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	happyIn148
+		 (fp (AST.NN (AST.JSDefault happy_var_1 happy_var_2 (AST.NN (AST.JSStatementList []))))
+	)}}
+
+happyReduce_314 = happySpecReduce_3  141# happyReduction_314
+happyReduction_314 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut126 happy_x_3 of { happy_var_3 -> 
+	happyIn148
+		 (fp (AST.NN (AST.JSDefault happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_315 = happySpecReduce_3  142# happyReduction_315
+happyReduction_315 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut122 happy_x_3 of { happy_var_3 -> 
+	happyIn149
+		 (fp (AST.NN (AST.JSLabelled happy_var_1 happy_var_2 happy_var_3))
+	)}}}
+
+happyReduce_316 = happySpecReduce_2  143# happyReduction_316
+happyReduction_316 happy_x_2
+	happy_x_1
+	 =  case happyOut65 happy_x_1 of { happy_var_1 -> 
+	case happyOut118 happy_x_2 of { happy_var_2 -> 
+	happyIn150
+		 (fp (AST.NN (AST.JSThrow happy_var_1 happy_var_2))
+	)}}
+
+happyReduce_317 = happySpecReduce_3  144# happyReduction_317
+happyReduction_317 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
+	case happyOut125 happy_x_2 of { happy_var_2 -> 
+	case happyOut152 happy_x_3 of { happy_var_3 -> 
+	happyIn151
+		 (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 happy_var_3)         ) {- TryStatement1 -}
+	)}}}
+
+happyReduce_318 = happySpecReduce_3  144# happyReduction_318
+happyReduction_318 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
+	case happyOut125 happy_x_2 of { happy_var_2 -> 
+	case happyOut154 happy_x_3 of { happy_var_3 -> 
+	happyIn151
+		 (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 [happy_var_3])       ) {- TryStatement2 -}
+	)}}}
+
+happyReduce_319 = happyReduce 4# 144# happyReduction_319
+happyReduction_319 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut66 happy_x_1 of { happy_var_1 -> 
+	case happyOut125 happy_x_2 of { happy_var_2 -> 
+	case happyOut152 happy_x_3 of { happy_var_3 -> 
+	case happyOut154 happy_x_4 of { happy_var_4 -> 
+	happyIn151
+		 (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 (happy_var_3++[happy_var_4])) ) {- TryStatement3 -}
+	) `HappyStk` happyRest}}}}
+
+happyReduce_320 = happySpecReduce_1  145# happyReduction_320
+happyReduction_320 happy_x_1
+	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
+	happyIn152
+		 ([happy_var_1]       {- Catches 1 -}
+	)}
+
+happyReduce_321 = happySpecReduce_2  145# happyReduction_321
+happyReduction_321 happy_x_2
+	happy_x_1
+	 =  case happyOut152 happy_x_1 of { happy_var_1 -> 
+	case happyOut153 happy_x_2 of { happy_var_2 -> 
+	happyIn152
+		 ((happy_var_1++[happy_var_2]) {- Catches 2 -}
+	)}}
+
+happyReduce_322 = happyReduce 5# 146# happyReduction_322
+happyReduction_322 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut67 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut78 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut125 happy_x_5 of { happy_var_5 -> 
+	happyIn153
+		 (fp (AST.NN (AST.JSCatch happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5) )
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_323 = happyReduce 7# 146# happyReduction_323
+happyReduction_323 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut67 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	case happyOut78 happy_x_3 of { happy_var_3 -> 
+	case happyOut53 happy_x_4 of { happy_var_4 -> 
+	case happyOut113 happy_x_5 of { happy_var_5 -> 
+	case happyOut9 happy_x_6 of { happy_var_6 -> 
+	case happyOut125 happy_x_7 of { happy_var_7 -> 
+	happyIn153
+		 (fp (AST.NN (AST.JSCatch happy_var_1 happy_var_2 happy_var_3 (happy_var_4:happy_var_5) happy_var_6 happy_var_7))
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_324 = happySpecReduce_2  147# happyReduction_324
+happyReduction_324 happy_x_2
+	happy_x_1
+	 =  case happyOut68 happy_x_1 of { happy_var_1 -> 
+	case happyOut125 happy_x_2 of { happy_var_2 -> 
+	happyIn154
+		 (fp (AST.NN (AST.JSFinally happy_var_1 happy_var_2))
+	)}}
+
+happyReduce_325 = happySpecReduce_2  148# happyReduction_325
+happyReduction_325 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn155
+		 (fp (AST.NT (AST.JSLiteral "debugger") (ss happy_var_1) (gc happy_var_1))
+	)}
+
+happyReduce_326 = happyReduce 8# 149# happyReduction_326
+happyReduction_326 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut69 happy_x_1 of { happy_var_1 -> 
+	case happyOut78 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut159 happy_x_4 of { happy_var_4 -> 
+	case happyOut9 happy_x_5 of { happy_var_5 -> 
+	case happyOut10 happy_x_6 of { happy_var_6 -> 
+	case happyOut160 happy_x_7 of { happy_var_7 -> 
+	case happyOut11 happy_x_8 of { happy_var_8 -> 
+	happyIn156
+		 (fp (AST.NN (AST.JSFunction happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8) )
+	) `HappyStk` happyRest}}}}}}}}
+
+happyReduce_327 = happyReduce 7# 149# happyReduction_327
+happyReduction_327 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut69 happy_x_1 of { happy_var_1 -> 
+	case happyOut78 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut10 happy_x_5 of { happy_var_5 -> 
+	case happyOut160 happy_x_6 of { happy_var_6 -> 
+	case happyOut11 happy_x_7 of { happy_var_7 -> 
+	happyIn156
+		 (fp (AST.NN (AST.JSFunction happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7) )
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_328 = happyReduce 7# 150# happyReduction_328
+happyReduction_328 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut69 happy_x_1 of { happy_var_1 -> 
+	case happyOut158 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut9 happy_x_4 of { happy_var_4 -> 
+	case happyOut10 happy_x_5 of { happy_var_5 -> 
+	case happyOut160 happy_x_6 of { happy_var_6 -> 
+	case happyOut11 happy_x_7 of { happy_var_7 -> 
+	happyIn157
+		 (fp (AST.NN (AST.JSFunctionExpression happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7) )
+	) `HappyStk` happyRest}}}}}}}
+
+happyReduce_329 = happyReduce 8# 150# happyReduction_329
+happyReduction_329 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut69 happy_x_1 of { happy_var_1 -> 
+	case happyOut158 happy_x_2 of { happy_var_2 -> 
+	case happyOut8 happy_x_3 of { happy_var_3 -> 
+	case happyOut159 happy_x_4 of { happy_var_4 -> 
+	case happyOut9 happy_x_5 of { happy_var_5 -> 
+	case happyOut10 happy_x_6 of { happy_var_6 -> 
+	case happyOut160 happy_x_7 of { happy_var_7 -> 
+	case happyOut11 happy_x_8 of { happy_var_8 -> 
+	happyIn157
+		 (fp (AST.NN (AST.JSFunctionExpression happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8) )
+	) `HappyStk` happyRest}}}}}}}}
+
+happyReduce_330 = happySpecReduce_1  151# happyReduction_330
+happyReduction_330 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn158
+		 ([happy_var_1] {- IdentifierOpt -}
+	)}
+
+happyReduce_331 = happySpecReduce_0  151# happyReduction_331
+happyReduction_331  =  happyIn158
+		 ([]   {- IdentifierOpt -}
+	)
+
+happyReduce_332 = happySpecReduce_1  152# happyReduction_332
+happyReduction_332 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn159
+		 ([happy_var_1] {- FormalParameterList -}
+	)}
+
+happyReduce_333 = happySpecReduce_3  152# happyReduction_333
+happyReduction_333 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut159 happy_x_1 of { happy_var_1 -> 
+	case happyOut14 happy_x_2 of { happy_var_2 -> 
+	case happyOut78 happy_x_3 of { happy_var_3 -> 
+	happyIn159
+		 ((happy_var_1++[happy_var_2]++[happy_var_3])
+	)}}}
+
+happyReduce_334 = happySpecReduce_1  153# happyReduction_334
+happyReduction_334 happy_x_1
+	 =  case happyOut165 happy_x_1 of { happy_var_1 -> 
+	happyIn160
+		 ((AST.NN (AST.JSFunctionBody [happy_var_1]) )
+	)}
+
+happyReduce_335 = happySpecReduce_0  153# happyReduction_335
+happyReduction_335  =  happyIn160
+		 ((AST.NN (AST.JSFunctionBody []  ) )
+	)
+
+happyReduce_336 = happySpecReduce_2  154# happyReduction_336
+happyReduction_336 happy_x_2
+	happy_x_1
+	 =  case happyOut166 happy_x_1 of { happy_var_1 -> 
+	case happyOut70 happy_x_2 of { happy_var_2 -> 
+	happyIn161
+		 ((combineTop happy_var_1 happy_var_2) {- Program -}
+	)}}
+
+happyReduce_337 = happySpecReduce_2  155# happyReduction_337
+happyReduction_337 happy_x_2
+	happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	happyIn162
+		 (happy_var_1
+	)}
+
+happyReduce_338 = happySpecReduce_2  156# happyReduction_338
+happyReduction_338 happy_x_2
+	happy_x_1
+	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
+	happyIn163
+		 (happy_var_1
+	)}
+
+happyReduce_339 = happySpecReduce_2  157# happyReduction_339
+happyReduction_339 happy_x_2
+	happy_x_1
+	 =  case happyOut122 happy_x_1 of { happy_var_1 -> 
+	happyIn164
+		 (happy_var_1
+	)}
+
+happyReduce_340 = happySpecReduce_1  158# happyReduction_340
+happyReduction_340 happy_x_1
+	 =  case happyOut167 happy_x_1 of { happy_var_1 -> 
+	happyIn165
+		 (fp (AST.NN (AST.JSSourceElements [happy_var_1]) )
+	)}
+
+happyReduce_341 = happySpecReduce_2  158# happyReduction_341
+happyReduction_341 happy_x_2
+	happy_x_1
+	 =  case happyOut165 happy_x_1 of { happy_var_1 -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn165
+		 ((combineSourceElements happy_var_1 happy_var_2)
+	)}}
+
+happyReduce_342 = happySpecReduce_1  159# happyReduction_342
+happyReduction_342 happy_x_1
+	 =  case happyOut167 happy_x_1 of { happy_var_1 -> 
+	happyIn166
+		 (fp (AST.NN (AST.JSSourceElementsTop [happy_var_1]) )
+	)}
+
+happyReduce_343 = happySpecReduce_2  159# happyReduction_343
+happyReduction_343 happy_x_2
+	happy_x_1
+	 =  case happyOut166 happy_x_1 of { happy_var_1 -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn166
+		 ((combineSourceElementsTop happy_var_1 happy_var_2)
+	)}}
+
+happyReduce_344 = happySpecReduce_1  160# happyReduction_344
+happyReduction_344 happy_x_1
+	 =  case happyOut122 happy_x_1 of { happy_var_1 -> 
+	happyIn167
+		 (happy_var_1 {- SourceElement1 -}
+	)}
+
+happyReduce_345 = happySpecReduce_1  160# happyReduction_345
+happyReduction_345 happy_x_1
+	 =  case happyOut156 happy_x_1 of { happy_var_1 -> 
+	happyIn167
+		 (happy_var_1 {- SourceElement2 -}
+	)}
+
+happyNewToken action sts stk
+	= lexCont(\tk -> 
+	let cont i = happyDoAction i tk action sts stk in
+	case tk of {
+	EOFToken {} -> happyDoAction 81# tk action sts stk;
+	SemiColonToken {} -> cont 1#;
+	CommaToken {} -> cont 2#;
+	HookToken {} -> cont 3#;
+	ColonToken {} -> cont 4#;
+	OrToken {} -> cont 5#;
+	AndToken {} -> cont 6#;
+	BitwiseOrToken {} -> cont 7#;
+	BitwiseXorToken {} -> cont 8#;
+	BitwiseAndToken {} -> cont 9#;
+	StrictEqToken {} -> cont 10#;
+	EqToken {} -> cont 11#;
+	SimpleAssignToken {} -> cont 12#;
+	StrictNeToken {} -> cont 13#;
+	NeToken {} -> cont 14#;
+	LshToken {} -> cont 15#;
+	LeToken {} -> cont 16#;
+	LtToken {} -> cont 17#;
+	UrshToken {} -> cont 18#;
+	RshToken {} -> cont 19#;
+	GeToken {} -> cont 20#;
+	GtToken {} -> cont 21#;
+	IncrementToken {} -> cont 22#;
+	DecrementToken {} -> cont 23#;
+	PlusToken {} -> cont 24#;
+	MinusToken {} -> cont 25#;
+	MulToken {} -> cont 26#;
+	DivToken {} -> cont 27#;
+	ModToken {} -> cont 28#;
+	NotToken {} -> cont 29#;
+	BitwiseNotToken {} -> cont 30#;
+	DotToken {} -> cont 31#;
+	LeftBracketToken {} -> cont 32#;
+	RightBracketToken {} -> cont 33#;
+	LeftCurlyToken {} -> cont 34#;
+	RightCurlyToken {} -> cont 35#;
+	LeftParenToken {} -> cont 36#;
+	RightParenToken {} -> cont 37#;
+	CondcommentEndToken {} -> cont 38#;
+	BreakToken {} -> cont 39#;
+	CaseToken {} -> cont 40#;
+	CatchToken {} -> cont 41#;
+	ConstToken {} -> cont 42#;
+	ContinueToken {} -> cont 43#;
+	DebuggerToken {} -> cont 44#;
+	DefaultToken {} -> cont 45#;
+	DeleteToken {} -> cont 46#;
+	DoToken {} -> cont 47#;
+	ElseToken {} -> cont 48#;
+	EnumToken {} -> cont 49#;
+	FalseToken {} -> cont 50#;
+	FinallyToken {} -> cont 51#;
+	ForToken {} -> cont 52#;
+	FunctionToken {} -> cont 53#;
+	GetToken {} -> cont 54#;
+	IfToken {} -> cont 55#;
+	InToken {} -> cont 56#;
+	InstanceofToken {} -> cont 57#;
+	NewToken {} -> cont 58#;
+	NullToken {} -> cont 59#;
+	ReturnToken {} -> cont 60#;
+	SetToken {} -> cont 61#;
+	SwitchToken {} -> cont 62#;
+	ThisToken {} -> cont 63#;
+	ThrowToken {} -> cont 64#;
+	TrueToken {} -> cont 65#;
+	TryToken {} -> cont 66#;
+	TypeofToken {} -> cont 67#;
+	VarToken {} -> cont 68#;
+	VoidToken {} -> cont 69#;
+	WhileToken {} -> cont 70#;
+	WithToken {} -> cont 71#;
+	IdentifierToken {} -> cont 72#;
+	DecimalToken {} -> cont 73#;
+	HexIntegerToken {} -> cont 74#;
+	StringToken {} -> cont 75#;
+	RegExToken {} -> cont 76#;
+	AssignToken {} -> cont 77#;
+	FutureToken {} -> cont 78#;
+	TailToken {} -> cont 79#;
+	EOFToken {} -> cont 80#;
+	_ -> happyError' tk
+	})
+
+happyError_ 81# tk = happyError' tk
+happyError_ _ tk = happyError' tk
+
+happyThen :: () => Alex a -> (a -> Alex b) -> Alex b
+happyThen = (>>=)
+happyReturn :: () => a -> Alex a
+happyReturn = (return)
+happyThen1 = happyThen
+happyReturn1 :: () => a -> Alex a
+happyReturn1 = happyReturn
+happyError' :: () => (Token) -> Alex a
+happyError' tk = parseError tk
+
+parseProgram = happySomeParser where
+  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut161 x))
+
+parseLiteral = happySomeParser where
+  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut162 x))
+
+parsePrimaryExpression = happySomeParser where
+  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut163 x))
+
+parseStatement = happySomeParser where
+  happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut164 x))
+
+happySeq = happyDontSeq
+
+
+combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode
+combineSourceElements (AST.NN (AST.JSSourceElements xs)) x1 = fp (AST.NN (AST.JSSourceElements (xs++[x1])))
+
+combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
+combineSourceElementsTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))
+
+combineTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
+combineTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))
+
+combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode
+combineStatements (AST.NN (AST.JSStatementList xs)) (AST.NN (AST.JSStatementList ys)) = fp (AST.NN (AST.JSStatementList (xs++ys) ))
+combineStatements (AST.NN (AST.JSStatementList xs)) y = fp (AST.NN (AST.JSStatementList (xs++[y])))
+
+parseError :: Token -> Alex a
+-- parseError = throwError . UnexpectedToken
+parseError tok = alexError (show tok)
+
+-- --------------------------------
+
+{-
+mex :: [AST.JSNode] -> TokenPosn
+mex [] = tokenPosnEmpty
+mex xs = ex (head xs)
+
+ex :: AST.JSNode -> TokenPosn
+ex (AST.NN _node span _c) = span
+-}
+
+--ss token = toSrcSpan (token_span token)
+ss :: Token -> TokenPosn
+ss token = token_span token
+
+-- ------------------------------
+
+gc :: Token -> [CommentAnnotation]
+gc token = token_comment token
+mgc :: [Token] -> [CommentAnnotation]
+mgc xs = concatMap gc xs
+
+{-
+-- Get node comment
+gnc   (AST.NN _ _ ca)  = ca
+mgnc [(AST.NN _ _ ca)] = ca
+
+-- Prepend a comment
+pc :: AST.JSNode -> [CommentAnnotation] -> AST.JSNode
+pc (AST.NN node span cs2) cs1 = (AST.NN node span (cs1++cs2))
+
+mpc :: [AST.JSNode] -> [CommentAnnotation] -> [AST.JSNode]
+-- mpc [(AST.NN node span cs2)]    cs1 = [(AST.NN node span (cs1++cs2))]
+mpc ((AST.NN node span cs2):xs) cs1 =  (AST.NN node span (cs1++cs2)):xs
+-}
+
+-- ---------------------------------------------------------------------
+
+fp :: AST.JSNode -> AST.JSNode
+fp (AST.NN x)      = (AST.NN x)
+fp (AST.NT x p cs) = (AST.NT x p cs)
+{-
+fp (AST.NN x p cs) = (AST.NN x p' cs)
+  where
+    p' = case (filter (/= NoComment) cs) of
+      [] -> p
+      [(CommentA posn _)]    -> posn
+      ((CommentA posn _):_)  -> posn
 -}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
diff --git a/language-javascript.cabal b/language-javascript.cabal
--- a/language-javascript.cabal
+++ b/language-javascript.cabal
@@ -1,7 +1,10 @@
 Name:                language-javascript
-Version:             0.4.10
+Version:             0.5.0
 Synopsis:            Parser for JavaScript
 Description:         Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended as frontend to hjsmin.
+                     .
+                     Note: Version 0.5.0 breaks compatibility with prior versions, the AST has been reworked to allow
+                     round trip processing of JavaScript.
 Homepage:            https://github.com/alanz/language-javascript
 License:             BSD3
 License-file:        LICENSE
@@ -29,15 +32,18 @@
                    , mtl              >= 1.1     && < 2.9
                    , containers       >= 0.2     && < 0.5
                    , utf8-light       >= 0.4     && < 1.0
+                   -- For the round trip output
+                   , blaze-builder    >= 0.2     && < 1
+                   , bytestring       >= 0.9.1   && < 1
+                   , utf8-string      >= 0.3.7   && < 1
   build-tools:       happy >= 1.18.5
-                   -- , alex >= 3.0
-
   hs-source-dirs: src
   Exposed-modules:     Language.JavaScript.Parser
                        Language.JavaScript.Parser.Parser
                        Language.JavaScript.Parser.Lexer
                        Language.JavaScript.Parser.Grammar5
                        Language.JavaScript.Parser.AST
+                       Language.JavaScript.Pretty.Printer
   Other-modules:       Language.JavaScript.Parser.LexerUtils
                        Language.JavaScript.Parser.ParseError
                        Language.JavaScript.Parser.ParserMonad
@@ -45,7 +51,6 @@
                        Language.JavaScript.Parser.StringEscape
                        Language.JavaScript.Parser.Token
   Build-tools:         happy
-                      -- , alex
   ghc-options:         -Wall
 
 executable             runtests
diff --git a/runtests.hs b/runtests.hs
--- a/runtests.hs
+++ b/runtests.hs
@@ -1,4 +1,3 @@
-
 import Test.Framework (defaultMain, testGroup, Test)
 import Test.Framework.Providers.HUnit
 import Test.HUnit hiding (Test)
@@ -6,11 +5,12 @@
 
 import Control.Monad (liftM)
 import Language.JavaScript.Parser.Parser
+import Language.JavaScript.Parser
 --import Language.JavaScript.Parser.Grammar
 import Language.JavaScript.Parser.Grammar5
 
 main :: IO ()
-main = defaultMain [testSuite]
+main = defaultMain [testSuite,{- ++AZ++temporary++ commentSuite ,-}commentPrintSuite]
 
 one :: IO ()
 one = defaultMain [oneSuite]
@@ -61,28 +61,28 @@
     , testCase "Identifier2"       (testPE "this_"   "Right (JSIdentifier \"this_\")")
 
     , testCase "ArrayLiteral1"     (testPE "[]"      "Right (JSArrayLiteral [])")
-    , testCase "ArrayLiteral2"     (testPE "[,]"     "Right (JSArrayLiteral [JSElision []])")
-    , testCase "ArrayLiteral3"     (testPE "[,,]"    "Right (JSArrayLiteral [JSElision [],JSElision []])")
-    , testCase "ArrayLiteral4"     (testPE "[,,x]"   "Right (JSArrayLiteral [JSElision [],JSElision [],JSIdentifier \"x\"])")
-    , testCase "ArrayLiteral5"     (testPE "[,,x]"   "Right (JSArrayLiteral [JSElision [],JSElision [],JSIdentifier \"x\"])")
-    , testCase "ArrayLiteral6"     (testPE "[,x,,x]" "Right (JSArrayLiteral [JSElision [],JSIdentifier \"x\",JSElision [],JSElision [],JSIdentifier \"x\"])")
+    , testCase "ArrayLiteral2"     (testPE "[,]"     "Right (JSArrayLiteral [JSElision JSLiteral \",\"])")
+    , testCase "ArrayLiteral3"     (testPE "[,,]"    "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\"])")
+    , testCase "ArrayLiteral4"     (testPE "[,,x]"   "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])")
+    , testCase "ArrayLiteral5"     (testPE "[,,x]"   "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])")
+    , testCase "ArrayLiteral6"     (testPE "[,x,,x]" "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSIdentifier \"x\",JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])")
     , testCase "ArrayLiteral7"     (testPE "[x]"     "Right (JSArrayLiteral [JSIdentifier \"x\"])")
     , testCase "ArrayLiteral8"     (testPE "[x,]"    "Right (JSArrayLiteral [JSIdentifier \"x\",JSLiteral \",\"])")
 
-    , testCase "ObjectLiteral1"    (testPE "{}"       "Right (JSObjectLiteral [])")
-    , testCase "ObjectLiteral2"    (testPE "{x:1}"    "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"]])")
-    , testCase "ObjectLiteral3"    (testPE "{x:1,y:2}"     "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"2\"]])")
+    , testCase "ObjectLiteral1"    (testPE "{}"        "Right (JSObjectLiteral [])")
+    , testCase "ObjectLiteral2"    (testPE "{x:1}"     "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"]])")
+    , testCase "ObjectLiteral3"    (testPE "{x:1,y:2}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"2\"]])")
 
-    , testCase "ObjectLiteral4"    (testPE "{evaluate:evaluate,load:function load(s){if(x)return s;1}}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"evaluate\") [JSIdentifier \"evaluate\"],JSPropertyNameandValue (JSIdentifier \"load\") [JSFunctionExpression [JSIdentifier \"load\"] [JSIdentifier \"s\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSIdentifier \"x\"]) (JSReturn [JSExpression [JSIdentifier \"s\"],JSLiteral \";\"]),JSExpression [JSDecimal \"1\"]]])]])")
+    , testCase "ObjectLiteral4"    (testPE "{evaluate:evaluate,load:function load(s){if(x)return s;1}}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"evaluate\") [JSIdentifier \"evaluate\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"load\") [JSFunctionExpression [JSIdentifier \"load\"] [JSIdentifier \"s\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSIdentifier \"x\"]) (JSReturn [JSExpression [JSIdentifier \"s\"]] JSLiteral \";\") ([]),JSExpression [JSDecimal \"1\"]]])]])")
 
     , testCase "ObjectLiteral5"    (testPE "{x:1,}"    "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSLiteral \",\"])")
 
-    , testCase "ObjectLiteral6"    (testProg "a={\n  values: 7,\n}\n" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"values\") [JSDecimal \"7\"],JSLiteral \",\"]]])")
+    , testCase "ObjectLiteral6"    (testProg "a={\n  values: 7,\n}\n" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"values\") [JSDecimal \"7\"],JSLiteral \",\"]],JSLiteral \"\"])")
 
     -- Edition 5 extensions
-    , testCase "ObjectLiteral7"    (testProg "x={get foo() {return 1},set foo(a) {x=a}}"  "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyAccessor \"get\" (JSIdentifier \"foo\") [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSDecimal \"1\"],JSLiteral \"\"]]]),JSPropertyAccessor \"set\" (JSIdentifier \"foo\") [JSIdentifier \"a\"] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"a\"]]])]]])")
+    , testCase "ObjectLiteral7"    (testProg "x={get foo() {return 1},set foo(a) {x=a}}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyAccessor NT (JSLiteral \"get\") (TokenPn 3 1 4) [NoComment] (JSIdentifier \"foo\") [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSDecimal \"1\"]] JSLiteral \"\"]]),JSLiteral \",\",JSPropertyAccessor NT (JSLiteral \"set\") (TokenPn 24 1 25) [NoComment] (JSIdentifier \"foo\") [JSIdentifier \"a\"] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"a\"]]])]],JSLiteral \"\"])")
 
-    , testCase "ObjectLiteral8"    (testProg "a={if:1,interface:2}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"if\") [JSDecimal \"1\"],JSPropertyNameandValue (JSIdentifier \"interface\") [JSDecimal \"2\"]]]])")
+    , testCase "ObjectLiteral8"    (testProg "a={if:1,interface:2}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"if\") [JSDecimal \"1\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"interface\") [JSDecimal \"2\"]]],JSLiteral \"\"])")
 
     , testCase "ExpressionParen"   (testPE "(56)"     "Right (JSExpressionParen (JSExpression [JSDecimal \"56\"]))")
 
@@ -132,85 +132,85 @@
     , testCase "Statement28"       (testStmt "y--"     "Right (JSExpression [JSExpressionPostfix \"--\" [JSIdentifier \"y\"]])")
 
       -- Member Expressions
-    , testCase "MemberExpression1" (testStmt "function(){}"    "Right (JSExpression [JSFunctionExpression [] [] (JSFunctionBody [])])")
-    , testCase "MemberExpression1" (testStmt "function(a){}"    "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\"] (JSFunctionBody [])])")
-    , testCase "MemberExpression1" (testStmt "function(a,b){}"  "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\",JSIdentifier \"b\"] (JSFunctionBody [])])")
+    , testCase "MemberExpression1a" (testStmt "function(){}"    "Right (JSExpression [JSFunctionExpression [] [] (JSFunctionBody [])])")
+    , testCase "MemberExpression1b" (testStmt "function(a){}"    "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\"] (JSFunctionBody [])])")
+    , testCase "MemberExpression1c" (testStmt "function(a,b){}"  "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\",JSLiteral \",\",JSIdentifier \"b\"] (JSFunctionBody [])])")
 
-    , testCase "MemberExpression1" (testStmt "x[y]"     "Right (JSExpression [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])])")
-    , testCase "MemberExpression1" (testStmt "x[y][z]"  "Right (JSExpression [JSMemberSquare [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])] (JSExpression [JSIdentifier \"z\"])])")
-    , testCase "MemberExpression1" (testStmt "x.y"      "Right (JSExpression [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")
-    , testCase "MemberExpression1" (testStmt "x.y.z"    "Right (JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")] (JSIdentifier \"z\")])")
+    , testCase "MemberExpression1d" (testStmt "x[y]"     "Right (JSExpression [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])])")
+    , testCase "MemberExpression1e" (testStmt "x[y][z]"  "Right (JSExpression [JSMemberSquare [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])] (JSExpression [JSIdentifier \"z\"])])")
+    , testCase "MemberExpression1f" (testStmt "x.y"      "Right (JSExpression [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")
+    , testCase "MemberExpression1g" (testStmt "x.y.z"    "Right (JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")] (JSIdentifier \"z\")])")
 
-    , testCase "MemberExpression1" (testStmt "new x()"  "Right (JSExpression [JSLiteral \"new \",JSIdentifier \"x\",JSArguments []])")
+    , testCase "MemberExpression1h" (testStmt "new x()"  "Right (JSExpression [JSLiteral \"new\",JSIdentifier \"x\",JSArguments []])")
 
-    , testCase "NewExpression1" (testStmt "new x.y"  "Right (JSExpression [JSLiteral \"new \",JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")
+    , testCase "NewExpression1" (testStmt "new x.y"  "Right (JSExpression [JSLiteral \"new\",JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")
 
     , testCase "CallExpression1" (testStmt "x()"     "Right (JSExpression [JSIdentifier \"x\",JSArguments []])")
     , testCase "CallExpression2" (testStmt "x()()"   "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \"()\" [JSArguments []]])")
     , testCase "CallExpression3" (testStmt "x()[4]"  "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \"[]\" [JSExpression [JSDecimal \"4\"]]])")
     , testCase "CallExpression4" (testStmt "x().x"   "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \".\" [JSIdentifier \"x\"]])")
-    , testCase "CallExpression5" (testStmt "x(a,b=2).x"   "Right (JSExpression [JSIdentifier \"x\",JSArguments [[JSIdentifier \"a\"],[JSIdentifier \"b\",JSOperator \"=\",JSDecimal \"2\"]],JSCallExpression \".\" [JSIdentifier \"x\"]])")
+    , testCase "CallExpression5" (testStmt "x(a,b=2).x"  "Right (JSExpression [JSIdentifier \"x\",JSArguments [JSIdentifier \"a\",JSLiteral \",\",JSIdentifier \"b\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSCallExpression \".\" [JSIdentifier \"x\"]])")
 
-    , testCase "AssignExpression1" (testStmt "x=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x*=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"*=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x/=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"/=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x%=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"%=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x+=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"+=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x-=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"-=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x<<=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"<<=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x>>=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \">>=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x>>>=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \">>>=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x&=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"&=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x^=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"^=\",JSDecimal \"1\"])")
-    , testCase "AssignExpression1" (testStmt "x|=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator \"|=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression1"  (testStmt "x=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression2"  (testStmt "x*=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"*=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression3"  (testStmt "x/=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"/=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression4"  (testStmt "x%=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"%=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression5"  (testStmt "x+=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"+=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression6"  (testStmt "x-=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"-=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression7"  (testStmt "x<<=1"  "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"<<=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression8"  (testStmt "x>>=1"  "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \">>=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression9"  (testStmt "x>>>=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \">>>=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression10" (testStmt "x&=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"&=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression11" (testStmt "x^=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"^=\",JSDecimal \"1\"])")
+    , testCase "AssignExpression12" (testStmt "x|=1"   "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"|=\",JSDecimal \"1\"])")
 
 
     , testCase "Block1" (testStmt "{}"     "Right (JSStatementBlock (JSStatementList []))")
-    , testCase "Block2" (testStmt "{x=1}"  "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]]))")
-    , testCase "Block3" (testStmt "{x=1;y=2}"   "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]]))")
+    , testCase "Block2" (testStmt "{x=1}"  "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]]))")
+    , testCase "Block3" (testStmt "{x=1;y=2}" "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSDecimal \"2\"]]))")
     , testCase "Block4" (testStmt "{{}}"     "Right (JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [])]))")
     , testCase "Block5" (testStmt "{{{}}}"   "Right (JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [])])]))")
 
-    , testCase "If1" (testStmt "if (1) {}"   "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])))")
+    , testCase "If1" (testStmt "if (1) {}"  "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])) ([]))")
 
-    , testCase "IfElse1" (testStmt "if (1) {} else {}"   "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])) (JSStatementBlock (JSStatementList [])))")
-    , testCase "IfElse2" (testStmt "if (1) x=1; else {}" "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSStatementBlock (JSStatementList [])))")
+    , testCase "IfElse1" (testStmt "if (1) {} else {}"   "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSStatementBlock (JSStatementList [])])) ([JSLiteral \"else\",JSStatementBlock (JSStatementList [])]))")
+    , testCase "IfElse2" (testStmt "if (1) x=1; else {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\"])])) ([JSLiteral \"else\",JSStatementBlock (JSStatementList [])]))")
 
-    , testCase "DoWhile1" (testStmt "do {x=1} while (true);"   "Right (JSDoWhile (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))")
+    , testCase "DoWhile1" (testStmt "do {x=1} while (true);"   "Right (JSDoWhile (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]])) (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))")
     , testCase "While1"   (testStmt "while(true);"             "Right (JSWhile (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))")
 
     , testCase "For1"   (testStmt "for(;;);"             "Right (JSFor [] [] [] (JSLiteral \";\"))")
-    , testCase "For2"   (testStmt "for(x=1;x<10;x++);"   "Right (JSFor [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]] [JSExpression [JSExpressionBinary \"<\" [JSIdentifier \"x\"] [JSDecimal \"10\"]]] [JSExpression [JSExpressionPostfix \"++\" [JSIdentifier \"x\"]]] (JSLiteral \";\"))")
+    , testCase "For2"   (testStmt "for(x=1;x<10;x++);"   "Right (JSFor [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]] [JSExpression [JSExpressionBinary \"<\" [JSIdentifier \"x\"] [JSDecimal \"10\"]]] [JSExpression [JSExpressionPostfix \"++\" [JSIdentifier \"x\"]]] (JSLiteral \";\"))")
 
     , testCase "ForVar1"   (testStmt "for(var x;;);"            "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") []] [] [] (JSLiteral \";\"))")
-    , testCase "ForVar2"   (testStmt "for(var x=1;;);"          "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"]] [] [] (JSLiteral \";\"))")
+    , testCase "ForVar2"   (testStmt "for(var x=1;;);"          "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"]] [] [] (JSLiteral \";\"))")
     , testCase "ForVar2"   (testStmt "for(var x;y;z){}"         "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") []] [JSExpression [JSIdentifier \"y\"]] [JSExpression [JSIdentifier \"z\"]] (JSStatementBlock (JSStatementList [])))")
 
     , testCase "ForIn1"   (testStmt "for(x in 5){}"         "Right (JSForIn [JSIdentifier \"x\"] (JSExpression [JSDecimal \"5\"]) (JSStatementBlock (JSStatementList [])))")
 
     , testCase "ForVarIn1" (testStmt "for(var x in 5){}"    "Right (JSForVarIn (JSVarDecl (JSIdentifier \"x\") []) (JSExpression [JSDecimal \"5\"]) (JSStatementBlock (JSStatementList [])))")
 
-    , testCase "Var1" (testStmt "var x=1;"        "Right (JSVariables \"var\" [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"]])")
-    , testCase "Var2" (testStmt "const x=1,y=2;"  "Right (JSVariables \"const\" [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"],JSVarDecl (JSIdentifier \"y\") [JSDecimal \"2\"]])")
+    , testCase "Var1" (testStmt "var x=1;"        "Right (JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"]])")
+    , testCase "Var2" (testStmt "const x=1,y=2;"  "Right (JSVariables JSLiteral \"const\" [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \",\",JSVarDecl (JSIdentifier \"y\") [JSLiteral \"=\",JSDecimal \"2\"]])")
 
-    , testCase "Continue1" (testStmt "continue;"       "Right (JSContinue [JSLiteral \";\"])")
-    , testCase "Continue2" (testStmt "continue x;"     "Right (JSContinue [JSIdentifier \"x\",JSLiteral \";\"])")
+    , testCase "Continue1" (testStmt "continue;"       "Right (JSContinue [] JSLiteral \";\")")
+    , testCase "Continue2" (testStmt "continue x;"     "Right (JSContinue [JSIdentifier \"x\"] JSLiteral \";\")")
 
-    , testCase "Break1" (testStmt "break;"       "Right (JSBreak [] [JSLiteral \";\"])")
-    , testCase "Break2" (testStmt "break x;"     "Right (JSBreak [JSIdentifier \"x\"] [JSLiteral \";\"])")
+    , testCase "Break1" (testStmt "break;"       "Right (JSBreak [] JSLiteral \";\")")
+    , testCase "Break2" (testStmt "break x;"     "Right (JSBreak [JSIdentifier \"x\"] JSLiteral \";\")")
 
-    , testCase "Return1" (testStmt "return;"       "Right (JSReturn [JSLiteral \";\"])")
-    , testCase "Return2" (testStmt "return x;"     "Right (JSReturn [JSExpression [JSIdentifier \"x\"],JSLiteral \";\"])")
+    , testCase "Return1" (testStmt "return;"     "Right (JSReturn [] JSLiteral \";\")")
+    , testCase "Return2" (testStmt "return x;"   "Right (JSReturn [JSExpression [JSIdentifier \"x\"]] JSLiteral \";\")")
 
-    , testCase "With1" (testStmt "with (x) {};"    "Right (JSWith (JSExpression [JSIdentifier \"x\"]) [JSStatementBlock (JSStatementList []),JSLiteral \";\"])")
+    , testCase "With1" (testStmt "with (x) {};"   "Right (JSWith (JSExpression [JSIdentifier \"x\"]) [JSStatementBlock (JSStatementList []),JSLiteral \";\"])")
 
-    , testCase "Labelled1" (testStmt "abc:x=1"    "Right (JSLabelled (JSIdentifier \"abc\") (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]))")
+    , testCase "Labelled1" (testStmt "abc:x=1"    "Right (JSLabelled (JSIdentifier \"abc\") (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]))")
 
-    , testCase "Switch1" (testStmt "switch (x) {}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [])")
-    , testCase "Switch2" (testStmt "switch (x) {case 1:break;}"          "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")
-    , testCase "Switch3" (testStmt "switch (x) {case 0:\ncase 1:break;}"  "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSCase (JSExpression [JSDecimal \"0\"]) (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")
-    , testCase "Switch4" (testStmt "switch (x) {default:break;}"          "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSDefault (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")
-    , testCase "Switch5" (testStmt "switch (x) {default:\ncase 1:break;}"   "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSDefault (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")
+    , testCase "Switch1" (testStmt "switch (x) {}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSLiteral \"}\"])")
+    , testCase "Switch2" (testStmt "switch (x) {case 1:break;}"  "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])")
+    , testCase "Switch3" (testStmt "switch (x) {case 0:\ncase 1:break;}"  "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSCase (JSExpression [JSDecimal \"0\"]) (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])")
+    , testCase "Switch4" (testStmt "switch (x) {default:break;}"         "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSDefault (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"\",JSLiteral \"}\"])")
+    , testCase "Switch5" (testStmt "switch (x) {default:\ncase 1:break;}"  "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSDefault (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])")
 
     , testCase "Throw1" (testStmt "throw 1"   "Right (JSThrow (JSExpression [JSDecimal \"1\"]))")
 
@@ -220,124 +220,521 @@
 
     , testCase "Try4" (testStmt "try{}catch(a){}catch(b){}finally{}"   "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList [])),JSFinally (JSBlock (JSStatementList []))])")
     , testCase "Try5" (testStmt "try{}catch(a){}catch(b){}"            "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])")
-    , testCase "Try6" (testStmt "try{}catch(a if true){}catch(b){}"     "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [JSLiteral \"true\"] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])")
+    , testCase "Try6" (testStmt "try{}catch(a if true){}catch(b){}"    "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [JSLiteral \"if\",JSLiteral \"true\"] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])")
 
-    , testCase "Function1" (testProg "function a(){}"      "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [] (JSFunctionBody [])])")
-    , testCase "Function2" (testProg "function a(b,c){}"   "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [JSIdentifier \"b\",JSIdentifier \"c\"] (JSFunctionBody [])])")
+    , testCase "Function1" (testProg "function a(){}"      "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [] (JSFunctionBody []),JSLiteral \"\"])")
+    , testCase "Function2" (testProg "function a(b,c){}"  "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [JSIdentifier \"b\",JSLiteral \",\",JSIdentifier \"c\"] (JSFunctionBody []),JSLiteral \"\"])")
 
-    , testCase "Comment1" (testProg "//blah\nx=1;//foo\na"   "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"]])")
+    , testCase "Comment1" (testProg "//blah\nx=1;//foo\na"   "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"],JSLiteral \"\"])")
 
-    , testCase "Comment2" (testProg "/*x=1\ny=2\n*/z=2;//foo\na"   "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"]])")
+    , testCase "Comment2" (testProg "/*x=1\ny=2\n*/z=2;//foo\na"  "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"],JSLiteral \"\"])")
 
-    , testCase "min_100_animals1" (testProg "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\"" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"Animal\") [JSIdentifier \"name\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSUnary \"!\",JSIdentifier \"name\"]) (JSBlock (JSStatementList [JSThrow (JSExpression [JSLiteral \"new \",JSIdentifier \"Error\",JSArguments [[JSStringLiteral '\\'' \"Must specify an animal name\"]]])])),JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\"),JSOperator \"=\",JSIdentifier \"name\"]]]),JSLiteral \";\",JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"Animal\"] (JSIdentifier \"prototype\")] (JSIdentifier \"toString\"),JSOperator \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")],JSLiteral \"\"]]])],JSLiteral \";\",JSExpression [JSIdentifier \"o\",JSOperator \"=\",JSLiteral \"new \",JSIdentifier \"Animal\",JSArguments [[JSStringLiteral '\"' \"bob\"]]],JSLiteral \";\",JSExpression [JSExpressionBinary \"==\" [JSMemberDot [JSIdentifier \"o\"] (JSIdentifier \"toString\"),JSArguments []] [JSStringLiteral '\"' \"bob\"]]])")
+    , testCase "min_100_animals1" (testProg "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\""
+                                   "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"Animal\") [JSIdentifier \"name\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSUnary \"!\",JSIdentifier \"name\"]) (JSBlock (JSStatementList [JSThrow (JSExpression [JSLiteral \"new\",JSIdentifier \"Error\",JSArguments [JSStringLiteral '\\'' \"Must specify an animal name\"]]),JSLiteral \";\"])) ([]),JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\"),JSOperator JSLiteral \"=\",JSIdentifier \"name\"]]]),JSLiteral \";\",JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"Animal\"] (JSIdentifier \"prototype\")] (JSIdentifier \"toString\"),JSOperator JSLiteral \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")]] JSLiteral \"\"]])],JSLiteral \";\",JSExpression [JSIdentifier \"o\",JSOperator JSLiteral \"=\",JSLiteral \"new\",JSIdentifier \"Animal\",JSArguments [JSStringLiteral '\"' \"bob\"]],JSLiteral \";\",JSExpression [JSExpressionBinary \"==\" [JSMemberDot [JSIdentifier \"o\"] (JSIdentifier \"toString\"),JSArguments []] [JSStringLiteral '\"' \"bob\"]],JSLiteral \"\"])")
 
-    , testCase "min_100_animals2" (testProg "Animal=function(){return this.name};" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"Animal\",JSOperator \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")],JSLiteral \"\"]]])],JSLiteral \";\"])")
+    , testCase "min_100_animals2" (testProg "Animal=function(){return this.name};" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"Animal\",JSOperator JSLiteral \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")]] JSLiteral \"\"]])],JSLiteral \";\",JSLiteral \"\"])")
 
-    , testCase "min_100_animals3" (testProg "if(a)x=1;y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])),JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]])")
+    , testCase "min_100_animals3" (testProg "if(a)x=1;y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\"])) ([]),JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])")
 
-    , testCase "min_100_animals4" (testProg "if(a)x=a()y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"a\",JSArguments []]),JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]])")
+    , testCase "min_100_animals4" (testProg "if(a)x=a()y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"a\",JSArguments []]) ([]),JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])")
 
-    , testCase "05_regex"  (testProg "newlines=spaces.match(/\\n/g)" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"newlines\",JSOperator \"=\",JSMemberDot [JSIdentifier \"spaces\"] (JSIdentifier \"match\"),JSArguments [[JSRegEx \"/\\\\n/g\"]]]])")
+    , testCase "05_regex"  (testProg "newlines=spaces.match(/\\n/g)" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"newlines\",JSOperator JSLiteral \"=\",JSMemberDot [JSIdentifier \"spaces\"] (JSIdentifier \"match\"),JSArguments [JSRegEx \"/\\\\n/g\"]],JSLiteral \"\"])")
 
-    , testCase "05_regex2" (testProg "x=/\\n/g" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSRegEx \"/\\\\n/g\"]])")
+    , testCase "05_regex2" (testProg "x=/\\n/g" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSRegEx \"/\\\\n/g\"],JSLiteral \"\"])")
 
-    , testCase "05_regex3" (testProg "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"i\",JSArguments [[JSRegEx \"/[?|^&(){}\\\\[\\\\]+\\\\-*\\\\/\\\\.]/g\"],[JSStringLiteral '\"' \"\\\\\\\\$&\"]]]])")
+    , testCase "05_regex3" (testProg "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"i\",JSArguments [JSRegEx \"/[?|^&(){}\\\\[\\\\]+\\\\-*\\\\/\\\\.]/g\",JSLiteral \",\",JSStringLiteral '\"' \"\\\\\\\\$&\"]],JSLiteral \"\"])")
 
-    , testCase "05_regex4" (testProg "x=i(/^$/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"i\",JSArguments [[JSRegEx \"/^$/g\"],[JSStringLiteral '\"' \"\\\\\\\\$&\"]]]])")
+    , testCase "05_regex4" (testProg "x=i(/^$/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"i\",JSArguments [JSRegEx \"/^$/g\",JSLiteral \",\",JSStringLiteral '\"' \"\\\\\\\\$&\"]],JSLiteral \"\"])")
 
-   , testCase "05_regex5" (testProg "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);" "Right (JSSourceElementsTop [JSIfElse (JSExpression [JSMemberDot [JSRegEx \"/^[a-z]/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]]) (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSMemberDot [JSIdentifier \"t\"] (JSIdentifier \"toUpperCase\"),JSArguments []],JSLiteral \";\",JSExpression [JSMemberSquare [JSIdentifier \"keywords\"] (JSExpression [JSIdentifier \"t\"]),JSOperator \"=\",JSIdentifier \"i\"]])) (JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSExpressionParen (JSExpression [JSExpressionTernary [JSMemberDot [JSRegEx \"/^\\\\W/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]] [JSMemberSquare [JSIdentifier \"opTypeNames\"] (JSExpression [JSIdentifier \"t\"])] [JSIdentifier \"t\"]])]),JSLiteral \";\"])")
+   , testCase "05_regex5" (testProg "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);"
+                           "Right (JSSourceElementsTop [JSIf (JSExpression [JSMemberDot [JSRegEx \"/^[a-z]/\"] (JSIdentifier \"test\"),JSArguments [JSIdentifier \"t\"]]) (JSBlock (JSStatementList [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"consts\",JSOperator JSLiteral \"+=\",JSMemberDot [JSIdentifier \"t\"] (JSIdentifier \"toUpperCase\"),JSArguments []],JSLiteral \";\",JSExpression [JSMemberSquare [JSIdentifier \"keywords\"] (JSExpression [JSIdentifier \"t\"]),JSOperator JSLiteral \"=\",JSIdentifier \"i\"]])])) ([JSLiteral \"else\",JSExpression [JSIdentifier \"consts\",JSOperator JSLiteral \"+=\",JSExpressionParen (JSExpression [JSExpressionTernary [JSMemberDot [JSRegEx \"/^\\\\W/\"] (JSIdentifier \"test\"),JSArguments [JSIdentifier \"t\"]] [JSMemberSquare [JSIdentifier \"opTypeNames\"] (JSExpression [JSIdentifier \"t\"])] [JSIdentifier \"t\"]])]]),JSLiteral \";\",JSLiteral \"\"])")
 
-   , testCase "if_semi" (testProg "if(x);x=1" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"x\"]) (JSLiteral \";\"),JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])")
+   , testCase "if_semi" (testProg "if(x);x=1" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"x\"]) (JSLiteral \";\") ([]),JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \"\"])")
 
-   , testCase "67_bob" (testProg "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))" "Right (JSSourceElementsTop [JSExpression [JSExpressionParen (JSExpression [JSIdentifier \"match\",JSOperator \"=\",JSRegEx \"/^\\\"(?:\\\\\\\\.|[^\\\"])*\\\"|^'(?:[^']|\\\\\\\\.)*'/\",JSArguments [[JSIdentifier \"input\"]]])]])")
+   , testCase "67_bob" (testProg "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))" "Right (JSSourceElementsTop [JSExpression [JSExpressionParen (JSExpression [JSIdentifier \"match\",JSOperator JSLiteral \"=\",JSRegEx \"/^\\\"(?:\\\\\\\\.|[^\\\"])*\\\"|^'(?:[^']|\\\\\\\\.)*'/\",JSArguments [JSIdentifier \"input\"]])],JSLiteral \"\"])")
 
-   , testCase "122_jsexec" (testProg "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"v\",JSOperator \"=\",JSExpressionBinary \" in \" [JSIdentifier \"getValue\",JSArguments [[JSIdentifier \"execute\",JSArguments [[JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"0\"])],[JSIdentifier \"x\"]]]]] [JSIdentifier \"getValue\",JSArguments [[JSIdentifier \"execute\",JSArguments [[JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"1\"])],[JSIdentifier \"x\"]]]]]],JSLiteral \";\"])")
+   , testCase "122_jsexec" (testProg "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"v\",JSOperator JSLiteral \"=\",JSExpressionBinary \" in \" [JSIdentifier \"getValue\",JSArguments [JSIdentifier \"execute\",JSArguments [JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"0\"]),JSLiteral \",\",JSIdentifier \"x\"]]] [JSIdentifier \"getValue\",JSArguments [JSIdentifier \"execute\",JSArguments [JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"1\"]),JSLiteral \",\",JSIdentifier \"x\"]]]],JSLiteral \";\",JSLiteral \"\"])")
 
-   , testCase "bug1" (testProg "/* */\nfunction f() {\n/*  */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody [])])")
-   , testCase "bug1" (testProg "/* **/\nfunction f() {\n/*  */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody [])])")
+   , testCase "bug1a" (testProg "/* */\nfunction f() {\n/*  */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody []),JSLiteral \"\"])")
+   , testCase "bug1b" (testProg "/* **/\nfunction f() {\n/*  */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody []),JSLiteral \"\"])")
 
-   , testCase "unicode1-ws" (testProg "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
+   , testCase "unicode1-ws" (testProg "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
 
-   , testCase "unicode2-lt" (testProg "//comment\x000Ax=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
-   , testCase "unicode3-lt" (testProg "//comment\x000Dx=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
-   , testCase "unicode4-lt" (testProg "//comment\x2028x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
-   , testCase "unicode5-lt" (testProg "//comment\x2029x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
+   , testCase "unicode2-lt" (testProg "//comment\x000Ax=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "unicode3-lt" (testProg "//comment\x000Dx=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "unicode4-lt" (testProg "//comment\x2028x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "unicode5-lt" (testProg "//comment\x2029x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
 
-   , testCase "unicode2" (testProg "àáâãäå = 1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")
+   , testCase "unicode2" (testProg "àáâãäå = 1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")
 
-   , testCase "unicode3" (testProg "$aà = 1;_b=2;\0065a=2"  "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"$a\\224\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"_b\",JSOperator \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"Aa\",JSOperator \"=\",JSDecimal \"2\"]])")
+   , testCase "unicode3" (testProg "$aà = 1;_b=2;\0065a=2"  "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"$a\\224\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"_b\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"Aa\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])")
 
-   , testCase "unicode4" (testProg "x=\"àáâãäå\";y='\3012a\0068'" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"\\224\\225\\226\\227\\228\\229\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSStringLiteral '\\'' \"\\3012aD\"]])")
+   , testCase "unicode4" (testProg "x=\"àáâãäå\";y='\3012a\0068'" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"\\224\\225\\226\\227\\228\\229\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSStringLiteral '\\'' \"\\3012aD\"],JSLiteral \"\"])")
 
-   , testCase "unicode5" (testFile "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"]")
+   , testCase "unicode5" (testFile "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"]")
 
-   , testCase "bug2.a" (testProg "function() {\nz = function /*z*/(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSFunctionExpression [] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"],JSLiteral \";\"]]])],JSLiteral \";\"]])]])")
+   , testCase "bug2.a" (testProg "function() {\nz = function /*z*/(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSFunctionExpression [] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"]] JSLiteral \";\"]])],JSLiteral \";\"]])],JSLiteral \"\"])")
 
-   , testCase "bug2.b" (testProg "function() {\nz = function z(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSFunctionExpression [JSIdentifier \"z\"] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"],JSLiteral \";\"]]])],JSLiteral \";\"]])]])")
+   , testCase "bug2.b" (testProg "function() {\nz = function z(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSFunctionExpression [JSIdentifier \"z\"] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"]] JSLiteral \";\"]])],JSLiteral \";\"]])],JSLiteral \"\"])")
 
    -- https://github.com/alanz/hjsmin/issues/#issue/3
-   , testCase "bug3" (testProg "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"myLatlng\") [JSLiteral \"new \",JSMemberDot [JSMemberDot [JSIdentifier \"google\"] (JSIdentifier \"maps\")] (JSIdentifier \"LatLng\"),JSArguments [[JSDecimal \"56.8379100\"],[JSDecimal \"60.5806664\"]]]]])")
+   , testCase "bug3" (testProg "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"myLatlng\") [JSLiteral \"=\",JSLiteral \"new\",JSMemberDot [JSMemberDot [JSIdentifier \"google\"] (JSIdentifier \"maps\")] (JSIdentifier \"LatLng\"),JSArguments [JSDecimal \"56.8379100\",JSLiteral \",\",JSDecimal \"60.5806664\"]]],JSLiteral \"\"])")
 
    -- https://github.com/alanz/hjsmin/issues/#issue/4
-   , testCase "bug4" (testProg "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\"]])")
+   , testCase "bug4" (testProg "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\"],JSLiteral \"\"])")
 
 
 
-   , testCase "02_sm.js"   (testProg "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"one1\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"five\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])")
+   , testCase "02_sm.js"   (testProg "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"one1\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"five\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])]),JSLiteral \"\"])")
 
-   , testCase "02_sm.js.2" (testProg "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"get\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"set\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])")
+   , testCase "02_sm.js.2" (testProg "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"get\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"set\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])]),JSLiteral \"\"])")
 
-   , testCase "loc1" (testProgUn "x = 1\n  y=2;" "Right (NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier \"x\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}),NS (JSOperator \"=\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 3}),NS (JSDecimal \"1\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 5})]) (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}),NS (JSExpression [NS (JSIdentifier \"y\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 3}),NS (JSOperator \"=\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 4}),NS (JSDecimal \"2\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 5})]) (SpanPoint {span_filename = \"\", span_row = 2, span_column = 3}),NS (JSLiteral \";\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 6})]) (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}))")
+   , testCase "loc1" (testProgUn "x = 1\n  y=2;" "Right (NN (JSSourceElementsTop [NN (JSExpression [NT (JSIdentifier \"x\") (TokenPn 0 1 1) [NoComment],NN (JSOperator (NT (JSLiteral \"=\") (TokenPn 2 1 3) [WhiteSpace (TokenPn 1 1 2) \" \"])),NT (JSDecimal \"1\") (TokenPn 4 1 5) [WhiteSpace (TokenPn 3 1 4) \" \"]]),NN (JSExpression [NT (JSIdentifier \"y\") (TokenPn 8 2 3) [WhiteSpace (TokenPn 5 1 6) \"\\n  \"],NN (JSOperator (NT (JSLiteral \"=\") (TokenPn 9 2 4) [NoComment])),NT (JSDecimal \"2\") (TokenPn 10 2 5) [NoComment]]),NT (JSLiteral \";\") (TokenPn 11 2 6) [NoComment],NT (JSLiteral \"\") (TokenPn 0 0 0) [NoComment]]))")
 
    -- https://github.com/alanz/language-javascript/issues/2
-   , testCase "issue2" (testProg "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n   alert('clicked!');\n});" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"img\") [JSMemberDot [JSIdentifier \"document\"] (JSIdentifier \"createElement\"),JSArguments [[JSStringLiteral '\\'' \"img\"]]]],JSExpression [JSMemberDot [JSIdentifier \"img\"] (JSIdentifier \"src\"),JSOperator \"=\",JSStringLiteral '\"' \"mylogo.jpg\"],JSLiteral \";\",JSExpression [JSIdentifier \"$\",JSArguments [[JSIdentifier \"img\"]],JSCallExpression \".\" [JSIdentifier \"click\"],JSCallExpression \"()\" [JSArguments [[JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"alert\",JSArguments [[JSStringLiteral '\\'' \"clicked!\"]]],JSLiteral \";\"]])]]]],JSLiteral \";\"])")
+   , testCase "issue2" (testProg "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n   alert('clicked!');\n});" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"img\") [JSLiteral \"=\",JSMemberDot [JSIdentifier \"document\"] (JSIdentifier \"createElement\"),JSArguments [JSStringLiteral '\\'' \"img\"]]],JSExpression [JSMemberDot [JSIdentifier \"img\"] (JSIdentifier \"src\"),JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"mylogo.jpg\"],JSLiteral \";\",JSExpression [JSIdentifier \"$\",JSArguments [JSIdentifier \"img\"],JSCallExpression \".\" [JSIdentifier \"click\"],JSCallExpression \"()\" [JSArguments [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"alert\",JSArguments [JSStringLiteral '\\'' \"clicked!\"]],JSLiteral \";\"]])]]],JSLiteral \";\",JSLiteral \"\"])")
 
 
    -- Working in ECMASCRIPT 5.1 changes
-   , testCase "lineTerminatorInString1" (testProg "x='abc\\\ndef';"    "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\\'' \"abcdef\"],JSLiteral \";\"])")
-   , testCase "lineTerminatorInString2" (testProg "x=\"abc\\\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")
-   , testCase "lineTerminatorInString3" (testProg "x=\"abc\\\rdef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")
-   , testCase "lineTerminatorInString4" (testProg "x=\"abc\\\x2028 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abc def\"],JSLiteral \";\"])")
-   , testCase "lineTerminatorInString5" (testProg "x=\"abc\\\x2029 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abc def\"],JSLiteral \";\"])")
-   , testCase "lineTerminatorInString6" (testProg "x=\"abc\\\r\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")
+   , testCase "lineTerminatorInString1" (testProg "x='abc\\\ndef';"   "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\\'' \"abc\\\\\\ndef\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "lineTerminatorInString2" (testProg "x=\"abc\\\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\ndef\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "lineTerminatorInString3" (testProg "x=\"abc\\\rdef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\rdef\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "lineTerminatorInString4" (testProg "x=\"abc\\\x2028 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\8232 def\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "lineTerminatorInString5" (testProg "x=\"abc\\\x2029 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\8233 def\"],JSLiteral \";\",JSLiteral \"\"])")
+   , testCase "lineTerminatorInString6" (testProg "x=\"abc\\\r\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\r\\ndef\"],JSLiteral \";\",JSLiteral \"\"])")
 
 
      -- https://github.com/alanz/language-javascript/issues/4
-   , testCase "issue4ok"   (testProg "var k = {\ny: somename\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"somename\"]]]]])")
-   , testCase "issue4bug1" (testProg "var k = {\ny: code\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"code\"]]]]])")
-   , testCase "issue4bug2" (testProg "var k = {\ny: mode\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"mode\"]]]]])")
+   , testCase "issue4ok"   (testProg "var k = {\ny: somename\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"somename\"]]]],JSLiteral \"\"])")
+   , testCase "issue4bug1" (testProg "var k = {\ny: code\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"code\"]]]],JSLiteral \"\"])")
+   , testCase "issue4bug2" (testProg "var k = {\ny: mode\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"mode\"]]]],JSLiteral \"\"])")
 
      -- https://github.com/alanz/language-javascript/issues/5
-   , testCase "issue5bug1" (testProg "x = { y: 1e8 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"1e8\"]]]])")
-   , testCase "issue5ok2" (testProg "{ y: 1e8 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"1e8\"])])])")
-   , testCase "issue5ok3" (testProg "{ y: 18 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"18\"])])])")
-   , testCase "issue5ok4" (testProg "x = { y: 18 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"18\"]]]])")
+   , testCase "issue5bug1" (testProg "x = { y: 1e8 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"1e8\"]]],JSLiteral \"\"])")
+   , testCase "issue5ok2" (testProg "{ y: 1e8 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"1e8\"])]),JSLiteral \"\"])")
+   , testCase "issue5ok3" (testProg "{ y: 18 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"18\"])]),JSLiteral \"\"])")
+   , testCase "issue5ok4" (testProg "x = { y: 18 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"18\"]]],JSLiteral \"\"])")
 
 
     ]
 
 srcHelloWorld = "Hello"
 caseHelloWorld =
-  "JSSourceElementsTop [JSExpression [JSIdentifier \"Hello\"]]"
+  "JSSourceElementsTop [JSExpression [JSIdentifier \"Hello\"],JSLiteral \"\"]"
   -- @=? (show $ parse srcHelloWorld "src")
   @=? (showStripped $ readJs srcHelloWorld)
 
 
 -- ---------------------------------------------------------------------
+
+commentSuite :: Test
+commentSuite = testGroup "Comments"
+    [
+      testCase "helloWorld"        caseHelloWorld
+    , testCase "LiteralNull"       (testLiteralC "/*a*/null"     "Right (NS (JSLiteral \"null\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"])")
+    , testCase "LiteralFalse"      (testLiteralC "/*b*/false"    "Right (NS (JSLiteral \"false\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*b*/\"])")
+    , testCase "LiteralTrue"       (testLiteralC "true"          "Right (NS (JSLiteral \"true\") (TokenPn 0 1 1) [NoComment])")
+    , testCase "LiteralTrue"       (testLiteralC "/*c*/true"     "Right (NS (JSLiteral \"true\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*c*/\"])")
+
+    , testCase "LiteralHexInteger" (testLiteralC "/*d*/0x1234fF" "Right (NS (JSHexInteger \"0x1234fF\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*d*/\"])")
+    , testCase "LiteralDecimal"    (testLiteralC "/*e*/1.0e4"    "Right (NS (JSDecimal \"1.0e4\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*e*/\"])")
+    , testCase "LiteralString1"    (testLiteralC "/*f*/\"hello\\nworld\"" "Right (NS (JSStringLiteral '\"' \"hello\\\\nworld\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*f*/\"])")
+    , testCase "LiteralString2"    (testLiteralC "/*g*/'hello\\nworld'"   "Right (NS (JSStringLiteral '\\'' \"hello\\\\nworld\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*g*/\"])")
+
+
+    , testCase "LiteralThis"       (testPEC "/*h*/this"  "Right (NS (JSLiteral \"this\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*h*/\"])")
+
+    , testCase "LiteralRegex1"     (testPEC "/*i*//blah/"  "Right (NS (JSRegEx \"/blah/\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*i*/\"])")
+
+    , testCase "Identifier2"       (testPEC "//j\nthis_"   "Right (NS (JSIdentifier \"this_\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"//j\"])")
+
+    , testCase "ArrayLiteral1"     (testPEC "/*a*/[/*b*/]"      "Right (NS (JSArrayLiteral []) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 6 1 7) \"/*b*/\"])")
+    , testCase "ArrayLiteral2"     (testPEC "/*a*/[/*b*/,/*c*/]"     "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 12 1 13) \"/*c*/\"])")
+    , testCase "ArrayLiteral3"     (testPEC "/*a*/[/*b*/,/*c*/,/*d*/]"    "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSElision []) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 18 1 19) \"/*d*/\"])")
+    , testCase "ArrayLiteral4"     (testPEC "/*a*/[/*b/*,/*c*/,/*d*/x/*e*/]"   "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b/*,/*c*/\"],NS (JSIdentifier \"x\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")
+    , testCase "ArrayLiteral5"     (testPEC "/*a*/[/*b*/,/*c*/,/*d*/x/*e*/]"   "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSElision []) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSIdentifier \"x\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")
+    , testCase "ArrayLiteral6"     (testPEC "/*a*/[/*b*/,/*c*/x/*d*/,/*e*/,/*f*/x/*g*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSIdentifier \"x\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSElision []) (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"],NS (JSElision []) (TokenPn 24 1 25) [CommentA (TokenPn 24 1 25) \"/*e*/\"],NS (JSIdentifier \"x\") (TokenPn 30 1 31) [CommentA (TokenPn 30 1 31) \"/*f*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 36 1 37) \"/*g*/\"])")
+    , testCase "ArrayLiteral7"     (testPEC "/*a*/[/*b*/x/*c*/]"     "Right (NS (JSArrayLiteral [NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 12 1 13) \"/*c*/\"])")
+    , testCase "ArrayLiteral8"     (testPEC "/*a*/[/*b*/x/*c*/,/*d*/]"    "Right (NS (JSArrayLiteral [NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSLiteral \",\") (TokenPn 17 1 18) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 18 1 19) \"/*d*/\"])")
+
+    , testCase "ObjectLiteral1"    (testPEC "/*a*/{/*b*/}"       "Right (NS (JSObjectLiteral []) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 6 1 7) \"/*b*/\"])")
+    , testCase "ObjectLiteral2"    (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/}"    "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")
+    , testCase "ObjectLiteral3"    (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/}"     "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSPropertyNameandValue (NS (JSIdentifier \"y\") (TokenPn 30 1 31) [CommentA (TokenPn 30 1 31) \"/*f*/\"]) [NS (JSDecimal \"2\") (TokenPn 42 1 43) [CommentA (TokenPn 42 1 43) \"/*h*/\"]]) (TokenPn 36 1 37) [CommentA (TokenPn 24 1 25) \"/*e*/\",CommentA (TokenPn 36 1 37) \"/*g*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 48 1 49) \"/*i*/\"])")
+
+    , testCase "ObjectLiteral5"    (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/}"    "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSLiteral \",\") (TokenPn 29 1 30) [CommentA (TokenPn 24 1 25) \"/*e*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 30 1 31) \"/*f*/\"])")
+
+    -- Edition 5 extensions
+    , testCase "ObjectLiteral7"    (testProgC "/*a*/x/*b*/=/*c*/{/*d*/get/*e*/ foo/*f*/(/*g*/)/*h*/ {/*i*/return/*j*/ 1/*k*/}/*l*/,/*m*/set/*n*/ foo/*o*/(/*p*/a/*q*/) /*r*/{/*s*/x/*t*/=/*u*/a/*v*/}/*w*/}"  "Right (NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"],NS (JSOperator \"=\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSObjectLiteral [NS (JSPropertyAccessor \"get\" (NS (JSIdentifier \"foo\") (TokenPn 26 1 27) [CommentA (TokenPn 26 1 27) \"/*e*/\"]) [] (NS (JSFunctionBody [NS (JSSourceElements [NS (JSReturn [NS (JSExpression [NS (JSDecimal \"1\") (TokenPn 65 1 66) [CommentA (TokenPn 65 1 66) \"/*j*/\"]]) (TokenPn 65 1 66) [],NS (JSLiteral \"\") (TokenPn 0 0 0) []]) (TokenPn 54 1 55) [CommentA (TokenPn 54 1 55) \"/*i*/\"]]) (TokenPn 54 1 55) []]) (TokenPn 54 1 55) [])) (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\",CommentA (TokenPn 35 1 36) \"/*f*/\",CommentA (TokenPn 41 1 42) \"/*g*/\",CommentA (TokenPn 47 1 48) \"/*h*/\",CommentA (TokenPn 72 1 73) \"/*k*/\"],NS (JSPropertyAccessor \"set\" (NS (JSIdentifier \"foo\") (TokenPn 92 1 93) [CommentA (TokenPn 92 1 93) \"/*n*/\"]) [NS (JSIdentifier \"a\") (TokenPn 107 1 108) [CommentA (TokenPn 107 1 108) \"/*p*/\"]] (NS (JSFunctionBody [NS (JSSourceElements [NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 126 1 127) [CommentA (TokenPn 126 1 127) \"/*s*/\"],NS (JSOperator \"=\") (TokenPn 132 1 133) [CommentA (TokenPn 132 1 133) \"/*t*/\"],NS (JSIdentifier \"a\") (TokenPn 138 1 139) [CommentA (TokenPn 138 1 139) \"/*u*/\"]]) (TokenPn 126 1 127) []]) (TokenPn 126 1 127) []]) (TokenPn 126 1 127) [])) (TokenPn 84 1 85) [CommentA (TokenPn 78 1 79) \"/*l*/\",CommentA (TokenPn 84 1 85) \"/*m*/\",CommentA (TokenPn 101 1 102) \"/*o*/\",CommentA (TokenPn 113 1 114) \"/*q*/\",CommentA (TokenPn 120 1 121) \"/*r*/\",CommentA (TokenPn 144 1 145) \"/*v*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\",CommentA (TokenPn 150 1 151) \"/*w*/\"]]) (TokenPn 0 1 1) []]) (TokenPn 0 1 1) [])")
+
+    , testCase "ExpressionParen"   (testPEC "/*a*/(/*b*/56/*c*/)"     "Right (NS (JSExpressionParen (NS (JSExpression [NS (JSDecimal \"56\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 13 1 14) \"/*c*/\"])")
+
+    , testCase "Statement1"        (testStmtC "/*a*/x"        "Right (NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]]) (TokenPn 0 1 1) [])")
+
+    , testCase "Statement2"        (testStmtC "/*a*/null"     "Right (NS (JSExpression [NS (JSLiteral \"null\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]]) (TokenPn 0 1 1) [])")
+
+    , testCase "Statement3"        (testStmtC "/*a*/true/*b*/?/*c*/1/*d*/:/*e*/2" "Right (NS (JSExpression [NS (JSExpressionTernary [NS (JSLiteral \"true\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSDecimal \"1\") (TokenPn 15 1 16) [CommentA (TokenPn 15 1 16) \"/*c*/\"]] [NS (JSDecimal \"2\") (TokenPn 27 1 28) [CommentA (TokenPn 27 1 28) \"/*e*/\"]]) (TokenPn 9 1 10) [CommentA (TokenPn 9 1 10) \"/*b*/\",CommentA (TokenPn 21 1 22) \"/*d*/\"]]) (TokenPn 9 1 10) [])")
+
+    , testCase "Statement4"        (testStmtC "/*a*/x/*b*/||/*c*/y"    "Right (NS (JSExpression [NS (JSExpressionBinary \"||\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement5"        (testStmtC "/*a*/x/*b*/&&/*c*/y"    "Right (NS (JSExpression [NS (JSExpressionBinary \"&&\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement6a"       (testStmtC "/*a*/x/*b*/|/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"|\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement6b"       (testStmtC "/*a*/x/*b*/^/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"^\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement7"        (testStmtC "/*a*/x/*b*/&/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"&\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement8"        (testStmtC "/*a*/x/*b*/==/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"==\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement9"        (testStmtC "/*a*/x/*b*/!=/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"!=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement10"       (testStmtC "/*a*/x/*b*/===/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"===\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 14 1 15) [CommentA (TokenPn 14 1 15) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement11"       (testStmtC "/*a*/x/*b*/!==/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"!==\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 14 1 15) [CommentA (TokenPn 14 1 15) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement12a"       (testStmtC "/*a*/x/*b*/</*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"<\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement12b"       (testStmtC "/*a*/x/*b*/>/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \">\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement12c"       (testStmtC "/*a*/x/*b*/<=/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \"<=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement12d"       (testStmtC "/*a*/x/*b*/>=/*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \">=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")
+
+    , testCase "Statement12e"       (testStmtC "/*a*/x /*b*/instanceof /*c*/y"     "Right (NS (JSExpression [NS (JSExpressionBinary \" instanceof \" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 23 1 24) [CommentA (TokenPn 23 1 24) \"/*c*/\"]]) (TokenPn 7 1 8) [CommentA (TokenPn 7 1 8) \"/*b*/\"]]) (TokenPn 7 1 8) [])")
+
+    ]
+
+-- ---------------------------------------------------------------------
+
+commentPrintSuite :: Test
+commentPrintSuite = testGroup "Comments"
+    [
+      testCase "Multi-comment"     (testRoundTrip "/*a*/\n//foo\nnull")
+
+
+    , testCase "LiteralNull"       (testRoundTrip "/*a*/null")
+    , testCase "LiteralFalse"      (testRoundTrip "/*b*/false")
+    , testCase "LiteralTrue"       (testRoundTrip "true")
+    , testCase "LiteralTrue"       (testRoundTrip "/*c*/true")
+
+    , testCase "LiteralHexInteger" (testRoundTrip "/*d*/0x1234fF")
+    , testCase "LiteralDecimal"    (testRoundTrip "/*e*/1.0e4")
+    , testCase "LiteralString1"    (testRoundTrip "/*f*/\"hello\\nworld\"")
+    , testCase "LiteralString2"    (testRoundTrip "/*g*/'hello\\nworld'")
+
+
+    , testCase "LiteralThis"       (testRoundTrip "/*h*/this")
+
+    , testCase "LiteralRegex1"     (testRoundTrip "/*i*//blah/")
+
+    , testCase "Identifier2"       (testRoundTrip "//j\nthis_")
+
+    , testCase "ArrayLiteral1"     (testRoundTrip "/*a*/[/*b*/]")
+    , testCase "ArrayLiteral2"     (testRoundTrip "/*a*/[/*b*/,/*c*/]")
+    , testCase "ArrayLiteral3"     (testRoundTrip "/*a*/[/*b*/,/*c*/,/*d*/]")
+    , testCase "ArrayLiteral4"     (testRoundTrip "/*a*/[/*b/*,/*c*/,/*d*/x/*e*/]")
+    , testCase "ArrayLiteral5"     (testRoundTrip "/*a*/[/*b*/,/*c*/,/*d*/x/*e*/]")
+    , testCase "ArrayLiteral6"     (testRoundTrip "/*a*/[/*b*/,/*c*/x/*d*/,/*e*/,/*f*/x/*g*/]")
+    , testCase "ArrayLiteral7"     (testRoundTrip "/*a*/[/*b*/x/*c*/]")
+    , testCase "ArrayLiteral8"     (testRoundTrip "/*a*/[/*b*/x/*c*/,/*d*/]")
+
+    , testCase "ObjectLiteral1"    (testRoundTrip "/*a*/{/*b*/}")
+    , testCase "ObjectLiteral2"    (testRoundTrip "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/}")
+    , testCase "ObjectLiteral3"    (testRoundTrip "x=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/}")
+    , testCase "ObjectLiteral3a"   (testRoundTrip "x=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/,/*j*/z/*k*/:/*l*/3/*m*/}")
+
+    , testCase "ObjectLiteral5"    (testRoundTrip "a=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/}")
+
+    -- Edition 5 extensions
+    , testCase "ObjectLiteral7"    (testRoundTrip "/*a*/x/*b*/=/*c*/{/*d*/get/*e*/ foo/*f*/(/*g*/)/*h*/ {/*i*/return/*j*/ 1/*k*/}/*l*/,/*m*/set/*n*/ foo/*o*/(/*p*/a/*q*/) /*r*/{/*s*/x/*t*/=/*u*/a/*v*/}/*w*/}")
+
+    , testCase "ExpressionParen"   (testRoundTrip "/*a*/(/*b*/56/*c*/)")
+
+    , testCase "Statement1"        (testRoundTrip "/*a*/x")
+
+    , testCase "Statement2"        (testRoundTrip "/*a*/null")
+
+    , testCase "Statement3"        (testRoundTrip "/*a*/true/*b*/?/*c*/1/*d*/:/*e*/2")
+
+    , testCase "Statement4"        (testRoundTrip "/*a*/x/*b*/||/*c*/y")
+
+    , testCase "Statement5"        (testRoundTrip "/*a*/x/*b*/&&/*c*/y")
+
+    , testCase "Statement6a"       (testRoundTrip "/*a*/x/*b*/|/*c*/y")
+
+    , testCase "Statement6b"       (testRoundTrip "/*a*/x/*b*/^/*c*/y")
+
+    , testCase "Statement7"        (testRoundTrip "/*a*/x/*b*/&/*c*/y")
+
+    , testCase "Statement8"        (testRoundTrip "/*a*/x/*b*/==/*c*/y")
+
+    , testCase "Statement9"        (testRoundTrip "/*a*/x/*b*/!=/*c*/y")
+
+    , testCase "Statement10"       (testRoundTrip "/*a*/x/*b*/===/*c*/y")
+
+    , testCase "Statement11"       (testRoundTrip "/*a*/x/*b*/!==/*c*/y")
+
+    , testCase "Statement12a"       (testRoundTrip "/*a*/x/*b*/</*c*/y")
+
+    , testCase "Statement12b"       (testRoundTrip "/*a*/x/*b*/>/*c*/y")
+
+    , testCase "Statement12c"       (testRoundTrip "/*a*/x/*b*/<=/*c*/y")
+
+    , testCase "Statement12d"       (testRoundTrip "/*a*/x/*b*/>=/*c*/y")
+
+    , testCase "Statement12e"       (testRoundTrip "/*a*/x /*b*/instanceof /*c*/y")
+
+
+
+    , testCase "Statement13"       (testRoundTrip "x<<y")
+    , testCase "Statement13"       (testRoundTrip "x>>y")
+    , testCase "Statement13"       (testRoundTrip "x>>>y")
+
+    , testCase "Statement14"       (testRoundTrip "x+y")
+    , testCase "Statement14"       (testRoundTrip "x-y")
+
+    , testCase "Statement15"       (testRoundTrip "x*y")
+    , testCase "Statement16"       (testRoundTrip "x/y")
+    , testCase "Statement17"       (testRoundTrip "x%y")
+
+    , testCase "Statement18"       (testRoundTrip "delete y")
+    , testCase "Statement19"       (testRoundTrip "void y")
+    , testCase "Statement20"       (testRoundTrip "typeof y")
+    , testCase "Statement21"       (testRoundTrip "++y")
+    , testCase "Statement22"       (testRoundTrip "--y")
+    , testCase "Statement23"       (testRoundTrip "+y")
+    , testCase "Statement24"       (testRoundTrip "-y")
+    , testCase "Statement25"       (testRoundTrip "~y")
+    , testCase "Statement26"       (testRoundTrip "!y")
+
+    , testCase "Statement27"       (testRoundTrip "y++")
+    , testCase "Statement28"       (testRoundTrip "y--")
+
+      -- Member Expressions
+    , testCase "MemberExpression1a" (testRoundTrip "function(){}")
+    , testCase "MemberExpression1b" (testRoundTrip "function(a){}")
+    , testCase "MemberExpression1c" (testRoundTrip "function(a,b){}")
+
+    , testCase "MemberExpression1d" (testRoundTrip "x[y]")
+    , testCase "MemberExpression1e" (testRoundTrip "x[y][z]")
+    , testCase "MemberExpression1f" (testRoundTrip "x.y")
+    , testCase "MemberExpression1g" (testRoundTrip "x.y.z")
+
+    , testCase "MemberExpression1h" (testRoundTrip "new x()")
+
+    , testCase "NewExpression1" (testRoundTrip "new x.y")
+
+    , testCase "CallExpression1" (testRoundTrip "x()")
+    , testCase "CallExpression2" (testRoundTrip "x()()")
+    , testCase "CallExpression3" (testRoundTrip "x()[4]")
+    , testCase "CallExpression4" (testRoundTrip "x().x")
+    , testCase "CallExpression5" (testRoundTrip "x(a,b=2).x")
+
+    , testCase "AssignExpression1" (testRoundTrip "x=1")
+    , testCase "AssignExpression1" (testRoundTrip "x*=1")
+    , testCase "AssignExpression1" (testRoundTrip "x/=1")
+    , testCase "AssignExpression1" (testRoundTrip "x%=1")
+    , testCase "AssignExpression1" (testRoundTrip "x+=1")
+    , testCase "AssignExpression1" (testRoundTrip "x-=1")
+    , testCase "AssignExpression1" (testRoundTrip "x<<=1")
+    , testCase "AssignExpression1" (testRoundTrip "x>>=1")
+    , testCase "AssignExpression1" (testRoundTrip "x>>>=1")
+    , testCase "AssignExpression1" (testRoundTrip "x&=1")
+    , testCase "AssignExpression1" (testRoundTrip "x^=1")
+    , testCase "AssignExpression1" (testRoundTrip "x|=1")
+
+
+    , testCase "Block1" (testRoundTrip "{}")
+    , testCase "Block2" (testRoundTrip "{x=1}")
+    , testCase "Block3" (testRoundTrip "{x=1;y=2}")
+    , testCase "Block4" (testRoundTrip "{{}}")
+    , testCase "Block5" (testRoundTrip "{{{}}}")
+
+
+    , testCase "If1" (testRoundTrip "if (1) {}")
+
+    , testCase "IfElse1" (testRoundTrip "if (1) {} else {}")
+    , testCase "IfElse2" (testRoundTrip "if (1) x=1; else {}")
+
+    , testCase "DoWhile1" (testRoundTrip "do {x=1} while (true);")
+    , testCase "While1"   (testRoundTrip "while(true);")
+
+    , testCase "For1"   (testRoundTrip "for(;;);")
+    , testCase "For2"   (testRoundTrip "for(x=1;x<10;x++);")
+
+    , testCase "ForVar1"   (testRoundTrip "for(var x;;);")
+    , testCase "ForVar2"   (testRoundTrip "for(var x=1;;);")
+    , testCase "ForVar2"   (testRoundTrip "for(var x;y;z){}")
+
+    , testCase "ForIn1"   (testRoundTrip "for(x in 5){}")
+
+    , testCase "ForVarIn1" (testRoundTrip "for(var x in 5){}")
+
+    , testCase "Var1" (testRoundTrip "var x=1;")
+    , testCase "Var2" (testRoundTrip "const x=1,y=2;")
+
+
+    , testCase "Continue1" (testRoundTrip "continue;")
+    , testCase "Continue2" (testRoundTrip "continue x;")
+
+    , testCase "Break1" (testRoundTrip "break;")
+    , testCase "Break2" (testRoundTrip "break x;")
+
+    , testCase "Return1" (testRoundTrip "return;")
+    , testCase "Return2" (testRoundTrip "return x;")
+
+    , testCase "With1" (testRoundTrip "with (x) {};")
+
+    , testCase "Labelled1" (testRoundTrip "abc:x=1")
+
+    , testCase "Switch1" (testRoundTrip "switch (x) {}")
+    , testCase "Switch2" (testRoundTrip "switch (x) {case 1:break;}")
+    , testCase "Switch3" (testRoundTrip "switch (x) {case 0:\ncase 1:break;}")
+    , testCase "Switch4" (testRoundTrip "switch (x) {default:break;}")
+    , testCase "Switch5" (testRoundTrip "switch (x) {default:\ncase 1:break;}")
+
+    , testCase "Throw1" (testRoundTrip "throw 1")
+
+    , testCase "Try1" (testRoundTrip "try{}catch(a){}")
+    , testCase "Try2" (testRoundTrip "try{}finally{}")
+    , testCase "Try3" (testRoundTrip "try{}catch(a){}finally{}")
+
+    , testCase "Try4" (testRoundTrip "try{}catch(a){}catch(b){}finally{}")
+    , testCase "Try5" (testRoundTrip "try{}catch(a){}catch(b){}")
+    , testCase "Try6" (testRoundTrip "try{}catch(a if true){}catch(b){}")
+
+    , testCase "Function1" (testRoundTrip "function a(){}")
+    , testCase "Function2" (testRoundTrip "function a(b,c){}")
+
+
+    , testCase "Comment1" (testRoundTrip "//blah\nx=1;//foo\na")
+
+    , testCase "Comment2" (testRoundTrip "/*x=1\ny=2\n*/z=2;//foo\na")
+
+    , testCase "min_100_animals1" (testRoundTrip "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\"")
+
+    , testCase "min_100_animals2" (testRoundTrip "Animal=function(){return this.name};")
+
+    , testCase "min_100_animals3" (testRoundTrip "if(a)x=1;y=2")
+
+    , testCase "min_100_animals4" (testRoundTrip "if(a)x=a()y=2")
+
+    , testCase "05_regex"  (testRoundTrip "newlines=spaces.match(/\\n/g)")
+
+    , testCase "05_regex2" (testRoundTrip "x=/\\n/g")
+
+    , testCase "05_regex3" (testRoundTrip "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")")
+
+    , testCase "05_regex4" (testRoundTrip "x=i(/^$/g,\"\\\\$&\")")
+
+   , testCase "05_regex5" (testRoundTrip "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);")
+
+   , testCase "if_semi" (testRoundTrip "if(x);x=1")
+
+   , testCase "67_bob" (testRoundTrip "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))")
+
+   , testCase "122_jsexec" (testRoundTrip "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));")
+
+   , testCase "bug1a" (testRoundTrip "/* */\nfunction f() {\n/*  */\n}")
+   , testCase "bug1b" (testRoundTrip "/* **/\nfunction f() {\n/*  */\n}")
+
+   , testCase "unicode1-ws" (testRoundTrip "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;")
+
+   , testCase "unicode2-lt" (testRoundTrip "//comment\x000Ax=1;")
+   , testCase "unicode3-lt" (testRoundTrip "//comment\x000Dx=1;")
+   , testCase "unicode4-lt" (testRoundTrip "//comment\x2028x=1;")
+   , testCase "unicode5-lt" (testRoundTrip "//comment\x2029x=1;")
+
+   , testCase "unicode2" (testRoundTrip "àáâãäå = 1;")
+
+   , testCase "unicode3" (testRoundTrip "$aà = 1;_b=2;\0065a=2")
+
+   , testCase "unicode4" (testRoundTrip "x=\"àáâãäå\";y='\3012a\0068'")
+
+   -- , testCase "unicode5" (testFile "./test/Unicode.js")
+
+   , testCase "bug2.a" (testRoundTrip "function() {\nz = function /*z*/(o) {\nreturn r;\n};}")
+
+   , testCase "bug2.b" (testRoundTrip "function() {\nz = function z(o) {\nreturn r;\n};}")
+
+   -- https://github.com/alanz/hjsmin/issues/#issue/3
+   , testCase "bug3" (testRoundTrip "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);")
+
+   -- https://github.com/alanz/hjsmin/issues/#issue/4
+   , testCase "bug4" (testRoundTrip "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x")
+
+   , testCase "02_sm.js"   (testRoundTrip "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}")
+
+   , testCase "02_sm.js.2" (testRoundTrip "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}")
+
+   , testCase "loc1" (testRoundTrip "x = 1\n  y=2;")
+
+   -- https://github.com/alanz/language-javascript/issues/2
+   , testCase "issue2" (testRoundTrip "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n   alert('clicked!');\n});")
+
+
+   -- Working in ECMASCRIPT 5.1 changes
+   , testCase "lineTerminatorInString1" (testRoundTrip "x='abc\\\ndef';")
+   , testCase "lineTerminatorInString2" (testRoundTrip "x=\"abc\\\ndef\";")
+   , testCase "lineTerminatorInString3" (testRoundTrip "x=\"abc\\\rdef\";")
+   , testCase "lineTerminatorInString4" (testRoundTrip "x=\"abc\\\x2028 def\";")
+   , testCase "lineTerminatorInString5" (testRoundTrip "x=\"abc\\\x2029 def\";")
+   , testCase "lineTerminatorInString6" (testRoundTrip "x=\"abc\\\r\ndef\";")
+
+
+     -- https://github.com/alanz/language-javascript/issues/4
+   , testCase "issue4ok"   (testRoundTrip "var k = {\ny: somename\n}")
+   , testCase "issue4bug1" (testRoundTrip "var k = {\ny: code\n}")
+   , testCase "issue4bug2" (testRoundTrip "var k = {\ny: mode\n}")
+
+     -- https://github.com/alanz/language-javascript/issues/5
+   , testCase "issue5bug1" (testRoundTrip "x = { y: 1e8 }")
+   , testCase "issue5ok2" (testRoundTrip "{ y: 1e8 }")
+   , testCase "issue5ok3" (testRoundTrip "{ y: 18 }")
+   , testCase "issue5ok4" (testRoundTrip "x = { y: 18 }")
+
+   -- function body
+   , testCase "functionbody"        (testRoundTrip "function foo(a,b,c)\n{x=1;}")
+   , testCase "functionexpression" (testRoundTrip "function foo(a,b,c)\n{x=1;}")
+
+   , testCase "fn1" (testRoundTrip "function foo() { return 5; }")
+   , testCase "fn2" (testRoundTrip "var foo = function() { return 5; }")
+   , testCase "fn3" (testRoundTrip "var foo = function foo() { return 5; }")
+
+    ]
+
+-- ---------------------------------------------------------------------
 -- Test utilities
 
-testLiteral literal expected = expected @=? (showStrippedMaybe $ parseUsing parseLiteral literal "src")
+testRoundTrip str = str @=? (renderToString $ readJs str)
 
-testPE str expected = expected @=? (showStrippedMaybe $ parseUsing parsePrimaryExpression str "src")
+testLiteral :: String -> String -> Assertion
+testLiteral  literal expected = expected @=? (showStrippedMaybe $ parseUsing parseLiteral literal "src")
+testLiteralC :: String -> String -> Assertion
+testLiteralC literal expected = expected @=? (show              $ parseUsing parseLiteral literal "src")
 
-testStmt str expected = expected @=? (showStrippedMaybe $ parseUsing parseStatement str "src")
 
+testPE :: String -> String -> Assertion
+testPE  str expected = expected @=? (showStrippedMaybe $ parseUsing parsePrimaryExpression str "src")
+testPEC :: String -> String -> Assertion
+testPEC str expected = expected @=? (show              $ parseUsing parsePrimaryExpression str "src")
+
+testStmt :: String -> String -> Assertion
+testStmt  str expected = expected @=? (showStrippedMaybe $ parseUsing parseStatement str "src")
+testStmtC :: String -> String -> Assertion
+testStmtC str expected = expected @=? (show              $ parseUsing parseStatement str "src")
+
 --testProg str expected = expected @=? (show $ parseUsing parseProgram str "src")
-testProg str expected = expected @=? (showStrippedMaybe $ parseUsing parseProgram str "src")
+testProg :: String -> String -> Assertion
+testProg  str expected = expected @=? (showStrippedMaybe $ parseUsing parseProgram str "src")
+testProgC :: String -> String -> Assertion
+testProgC str expected = expected @=? (show              $ parseUsing parseProgram str "src")
 
+testProgUn :: String -> String -> Assertion
 testProgUn str expected = expected @=? (show $ parseUsing parseProgram str "src")
 
 
+testFile :: FilePath -> String -> IO ()
 testFile fileName expected = do
   res <- parseFile fileName
   -- expected @=? (liftM show $ parseFile fileName)
diff --git a/src/Language/JavaScript/Parser.hs b/src/Language/JavaScript/Parser.hs
--- a/src/Language/JavaScript/Parser.hs
+++ b/src/Language/JavaScript/Parser.hs
@@ -6,23 +6,23 @@
        , PA.showStripped
        , PA.showStrippedMaybe
        , JSNode(..)
-       , SrcSpan(..)
-       , AlexSpan(..)
        , Node(..)
-       , ParseError(..)
+       -- , ParseError(..)
        -- Source locations
-       , AlexPosn(..)
-       -- ParserMonad
-       , P
-       , ParseState (..)
+       , TokenPosn(..)
+       , tokenPosnEmpty
+       -- * Pretty Printing
+       , renderJS
+       , renderToString
        ) where
 
 
 import Language.JavaScript.Parser.AST
 import Language.JavaScript.Parser.ParseError
 import qualified Language.JavaScript.Parser.Parser as PA
-import Language.JavaScript.Parser.ParserMonad
+--import Language.JavaScript.Parser.ParserMonad
 import Language.JavaScript.Parser.SrcLocation
+import Language.JavaScript.Pretty.Printer
 
 -- EOF
 
diff --git a/src/Language/JavaScript/Parser/AST.hs b/src/Language/JavaScript/Parser/AST.hs
--- a/src/Language/JavaScript/Parser/AST.hs
+++ b/src/Language/JavaScript/Parser/AST.hs
@@ -3,73 +3,82 @@
        (
            Node (..)
          , JSNode(..)
-         , SrcSpan (..)
-         , AlexPosn(..)
+         -- , TokenPosn (..)
          , showStripped
        ) where
 
 import Data.Data
 import Data.List
-import Language.JavaScript.Parser.SrcLocation (SrcSpan(..), AlexPosn(..))
+import Language.JavaScript.Parser.SrcLocation (TokenPosn(..))
+import Language.JavaScript.Parser.Token
 
 -- ---------------------------------------------------------------------
 
-data JSNode = NS Node SrcSpan
+-- |The JSNode is the building block of the AST.
+-- Each has a syntactic part 'Node'. In addition, the leaf elements
+-- (terminals) have a position 'TokenPosn', as well as an array of comments
+-- and/or whitespace that was collected while parsing.
+
+data JSNode = NN Node -- ^Non Terminal node, does not have any position or comment information
+            | NT Node TokenPosn [CommentAnnotation] -- ^Terminal node, including position and comment/whitespace information
     deriving (Show, Eq, Read, Data, Typeable)
 
-data Node = JSArguments [[JSNode]]
-              | JSArrayLiteral [JSNode]
-              | JSBlock JSNode
-              | JSBreak [JSNode] [JSNode]
-              | JSCallExpression String [JSNode]  -- type : ., (), []; rest
-              | JSCase JSNode JSNode
-              | JSCatch JSNode [JSNode] JSNode
-              | JSContinue [JSNode]
-              | JSDecimal String  -- Was Integer
-              | JSDefault JSNode
-              | JSDoWhile JSNode JSNode JSNode
-              | JSElision [JSNode]
-              | JSEmpty JSNode
-              | JSExpression [JSNode]
-              | JSExpressionBinary String [JSNode] [JSNode]
-              | JSExpressionParen JSNode
-              | JSExpressionPostfix String [JSNode]
-              | JSExpressionTernary [JSNode] [JSNode] [JSNode]
-              | JSFinally JSNode
-              | JSFor [JSNode] [JSNode] [JSNode] JSNode
-              | JSForIn [JSNode] JSNode JSNode
-              | JSForVar [JSNode] [JSNode] [JSNode] JSNode
-              | JSForVarIn JSNode JSNode JSNode
-              | JSFunction JSNode [JSNode] JSNode  -- name, parameter list, body
-              | JSFunctionBody [JSNode]
-              | JSFunctionExpression [JSNode] [JSNode] JSNode  -- name, parameter list, body
-              | JSHexInteger String  -- Was Integer
-              | JSIdentifier String
-              | JSIf JSNode JSNode
-              | JSIfElse JSNode JSNode JSNode
-              | JSLabelled JSNode JSNode
+data Node =
+              -- | Terminals
+                JSIdentifier String
+              | JSDecimal String
               | JSLiteral String
-              | JSMemberDot [JSNode] JSNode
-              | JSMemberSquare [JSNode] JSNode
-              | JSObjectLiteral [JSNode]
-              | JSOperator String
-              | JSPropertyNameandValue JSNode [JSNode]
-              | JSPropertyAccessor String JSNode [JSNode] JSNode
-              | JSRegEx String
-              | JSReturn [JSNode]
-              | JSSourceElements [JSNode]
-              | JSSourceElementsTop [JSNode]
-              | JSStatementBlock JSNode
-              | JSStatementList [JSNode]
+              | JSHexInteger String
               | JSStringLiteral Char [Char]
-              | JSSwitch JSNode [JSNode]
-              | JSThrow JSNode
-              | JSTry JSNode [JSNode]
-              | JSUnary String
-              | JSVarDecl JSNode [JSNode]
-              | JSVariables String [JSNode]
-              | JSWhile JSNode JSNode
-              | JSWith JSNode [JSNode]
+              | JSRegEx String
+
+              -- | Non Terminals
+
+              | JSArguments JSNode [JSNode] JSNode    -- ^lb, args, rb
+              | JSArrayLiteral JSNode [JSNode] JSNode -- ^lb, contents, rb
+              | JSBlock [JSNode] JSNode [JSNode]      -- ^optional lb,block,optional rb
+              | JSBreak JSNode [JSNode] JSNode        -- ^break, optional identifier, autosemi
+              | JSCallExpression String [JSNode] [JSNode] [JSNode]  -- ^type : ., (), []; opening [ or ., contents, closing
+              | JSCase JSNode JSNode JSNode JSNode    -- ^case,expr,colon,stmtlist
+              | JSCatch JSNode JSNode JSNode [JSNode] JSNode JSNode -- ^ catch,lb,ident,[if,expr],rb,block
+              | JSContinue JSNode [JSNode] JSNode     -- ^continue,optional identifier,autosemi
+              | JSDefault JSNode JSNode JSNode -- ^default,colon,stmtlist
+              | JSDoWhile JSNode JSNode JSNode JSNode JSNode JSNode JSNode -- ^do,stmt,while,lb,expr,rb,autosemi
+              | JSElision JSNode               -- ^comma
+              | JSExpression [JSNode]          -- ^expression components
+              | JSExpressionBinary String [JSNode] JSNode [JSNode] -- ^what, lhs, op, rhs
+              | JSExpressionParen JSNode JSNode JSNode -- ^lb,expression,rb
+              | JSExpressionPostfix String [JSNode] JSNode -- ^type, expression, operator
+              | JSExpressionTernary [JSNode] JSNode [JSNode] JSNode [JSNode] -- ^cond, ?, trueval, :, falseval
+              | JSFinally JSNode JSNode -- ^finally,block
+              | JSFor JSNode JSNode [JSNode] JSNode [JSNode] JSNode [JSNode] JSNode JSNode -- ^for,lb,expr,semi,expr,semi,expr,rb.stmt
+              | JSForIn JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^for,lb,expr,in,expr,rb,stmt
+              | JSForVar JSNode JSNode JSNode [JSNode] JSNode [JSNode] JSNode [JSNode] JSNode JSNode -- ^for,lb,var,vardecl,semi,expr,semi,expr,rb,stmt
+              | JSForVarIn JSNode JSNode JSNode JSNode JSNode JSNode JSNode JSNode -- ^for,lb,var,vardecl,in,expr,rb,stmt
+              | JSFunction JSNode JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode  -- ^fn,name, lb,parameter list,rb,lb,body,rb
+              | JSFunctionBody [JSNode] -- ^body
+              | JSFunctionExpression JSNode [JSNode] JSNode [JSNode] JSNode JSNode JSNode JSNode  -- ^fn,[name],lb, parameter list,rb,lb, body,rb
+              | JSIf JSNode JSNode JSNode JSNode JSNode [JSNode] -- ^if,(,expr,),stmt,optional rest
+              | JSLabelled JSNode JSNode JSNode -- ^identifier,colon,stmt
+              | JSMemberDot [JSNode] JSNode JSNode -- ^firstpart, dot, name
+              | JSMemberSquare [JSNode] JSNode JSNode JSNode -- ^firstpart, lb, expr, rb
+              | JSObjectLiteral JSNode [JSNode] JSNode -- ^lbrace contents rbrace
+              | JSOperator JSNode -- ^opnode
+              | JSPropertyAccessor JSNode JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^(get|set), name, lb, params, rb, lb, functionbody, rb
+              | JSPropertyNameandValue JSNode JSNode [JSNode] -- ^name, colon, value
+              | JSReturn JSNode [JSNode] JSNode -- ^return,optional expression,autosemi
+              | JSSourceElements [JSNode] -- ^source elements
+              | JSSourceElementsTop [JSNode] -- ^source elements
+              | JSStatementBlock JSNode JSNode JSNode -- ^lb,block,rb
+              | JSStatementList [JSNode] -- ^statements
+              | JSSwitch JSNode JSNode JSNode JSNode [JSNode] -- ^switch,lb,expr,rb,stmt
+              | JSThrow JSNode JSNode -- ^throw val
+              | JSTry JSNode JSNode [JSNode] -- ^try,block,rest
+              | JSUnary String JSNode -- ^type, operator
+              | JSVarDecl JSNode [JSNode] -- ^identifier, optional initializer
+              | JSVariables JSNode [JSNode] JSNode -- ^var|const, decl, autosemi
+              | JSWhile JSNode JSNode JSNode JSNode JSNode -- ^while,lb,expr,rb,stmt
+              | JSWith JSNode JSNode JSNode JSNode [JSNode] -- ^with,lb,expr,rb,stmt list
     deriving (Show, Eq, Read, Data, Typeable)
 
 -- Strip out the location info, leaving the original JSNode text representation
@@ -78,69 +87,64 @@
 
 -- Alias for internal use
 ss :: JSNode -> String
-ss (NS node _) = showStrippedNode node
+ss (NN node    ) = showStrippedNode node
+ss (NT node _ _) = showStrippedNode node
 
 sss :: [JSNode] -> String
 --sss xs = "[" ++ (concatMap ss xs) ++ "]"
 sss xs = "[" ++ (concat (intersperse "," $ map ss xs)) ++ "]"
 
-ssss :: [[JSNode]] -> String
---ssss xss = "[" ++ (concatMap sss xss) ++ "]"
-ssss xss = "[" ++ (concat (intersperse "," $ map sss xss)) ++ "]"
-
 showStrippedNode :: Node -> String
-showStrippedNode (JSArguments xss) = "JSArguments " ++ ssss xss
-showStrippedNode (JSArrayLiteral xs) = "JSArrayLiteral " ++ sss xs
-showStrippedNode (JSBlock x) = "JSBlock (" ++ ss x ++ ")"
-showStrippedNode (JSBreak x1s x2s) = "JSBreak " ++ sss x1s ++ " " ++ sss x2s
-showStrippedNode (JSCallExpression s xs) = "JSCallExpression " ++ show s ++ " " ++ sss xs
-showStrippedNode (JSCase x1 x2) = "JSCase (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
-showStrippedNode (JSCatch x1 x2s x3) = "JSCatch (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
-showStrippedNode (JSContinue xs) = "JSContinue " ++ sss xs
+showStrippedNode (JSArguments _lb xs _rb) = "JSArguments " ++ sss xs
+showStrippedNode (JSArrayLiteral _lb xs _rb) = "JSArrayLiteral " ++ sss xs
+showStrippedNode (JSBlock _lb x _rb) = "JSBlock (" ++ ss x ++ ")"
+showStrippedNode (JSBreak _b x1s as) = "JSBreak " ++ sss x1s ++ " " ++ ss as
+showStrippedNode (JSCallExpression s _os xs _cs) = "JSCallExpression " ++ show s ++ " " ++ sss xs
+showStrippedNode (JSCase _ca x1 _c x2) = "JSCase (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
+showStrippedNode (JSCatch _c _lb x1 x2s _rb x3) = "JSCatch (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
+showStrippedNode (JSContinue _c xs as) = "JSContinue " ++ sss xs ++ " " ++ ss as
 showStrippedNode (JSDecimal s) = "JSDecimal " ++ show s
-showStrippedNode (JSDefault x) = "JSDefault (" ++ ss x ++ ")"
-showStrippedNode (JSDoWhile x1 x2 x3) = "JSDoWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
-showStrippedNode (JSElision xs) = "JSElision " ++ sss xs
-showStrippedNode (JSEmpty x) = "JSEmpty (" ++ ss x ++ ")"
+showStrippedNode (JSDefault _d _c x) = "JSDefault (" ++ ss x ++ ")"
+showStrippedNode (JSDoWhile _d x1 _w _lb x2 _rb x3) = "JSDoWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
+showStrippedNode (JSElision c) = "JSElision " ++ ss c
 showStrippedNode (JSExpression xs) = "JSExpression " ++ sss xs
-showStrippedNode (JSExpressionBinary s x2s x3s) = "JSExpressionBinary " ++ show s ++ " " ++ sss x2s ++ " " ++ sss x3s
-showStrippedNode (JSExpressionParen x) = "JSExpressionParen (" ++ ss x ++ ")"
-showStrippedNode (JSExpressionPostfix s xs) = "JSExpressionPostfix " ++ show s ++ " " ++ sss xs
-showStrippedNode (JSExpressionTernary x1s x2s x3s) = "JSExpressionTernary " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s
-showStrippedNode (JSFinally x) = "JSFinally (" ++ ss x ++ ")"
-showStrippedNode (JSFor x1s x2s x3s x4) = "JSFor " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"
-showStrippedNode (JSForIn x1s x2 x3) = "JSForIn " ++ sss x1s ++ " (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
-showStrippedNode (JSForVar x1s x2s x3s x4) = "JSForVar " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"
-showStrippedNode (JSForVarIn x1 x2 x3) = "JSForVarIn (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
-showStrippedNode (JSFunction x1 x2s x3) = "JSFunction (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
+showStrippedNode (JSExpressionBinary s x2s _op x3s) = "JSExpressionBinary " ++ show s ++ " " ++ sss x2s ++ " " ++ sss x3s
+showStrippedNode (JSExpressionParen _lp x _rp) = "JSExpressionParen (" ++ ss x ++ ")"
+showStrippedNode (JSExpressionPostfix s xs _op) = "JSExpressionPostfix " ++ show s ++ " " ++ sss xs
+showStrippedNode (JSExpressionTernary x1s _q x2s _c x3s) = "JSExpressionTernary " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s
+showStrippedNode (JSFinally _f x) = "JSFinally (" ++ ss x ++ ")"
+showStrippedNode (JSFor _f _lb x1s _s1 x2s _s2 x3s _rb x4) = "JSFor " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"
+showStrippedNode (JSForIn _f _lb x1s _i x2 _rb x3) = "JSForIn " ++ sss x1s ++ " (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
+showStrippedNode (JSForVar _f _lb _v x1s _s1 x2s _s2 x3s _rb x4) = "JSForVar " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"
+showStrippedNode (JSForVarIn _f _lb _v x1 _i x2 _rb x3) = "JSForVarIn (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
+showStrippedNode (JSFunction _f x1 _lb x2s _rb _lb2 x3 _rb2) = "JSFunction (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
 showStrippedNode (JSFunctionBody xs) = "JSFunctionBody " ++ sss xs
-showStrippedNode (JSFunctionExpression x1s x2s x3) = "JSFunctionExpression " ++ sss x1s ++ " " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
+showStrippedNode (JSFunctionExpression _f x1s _lb x2s _rb _lb2 x3 _rb2) = "JSFunctionExpression " ++ sss x1s ++ " " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
 showStrippedNode (JSHexInteger s) = "JSHexInteger " ++ show s
 showStrippedNode (JSIdentifier s) = "JSIdentifier " ++ show s
-showStrippedNode (JSIf x1 x2) = "JSIf (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
-showStrippedNode (JSIfElse x1 x2 x3) = "JSIfElse (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"
-showStrippedNode (JSLabelled x1 x2) = "JSLabelled (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
+showStrippedNode (JSIf _i _lb x1 _rb x2 x3s) = "JSIf (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ sss x3s ++ ")"
+showStrippedNode (JSLabelled x1 _c x2) = "JSLabelled (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
 showStrippedNode (JSLiteral s) = "JSLiteral " ++ show s
-showStrippedNode (JSMemberDot x1s x2) = "JSMemberDot " ++ sss x1s ++ " (" ++ ss x2 ++ ")"
-showStrippedNode (JSMemberSquare x1s x2) = "JSMemberSquare " ++ sss x1s ++ " (" ++ ss x2 ++ ")"
-showStrippedNode (JSObjectLiteral xs) = "JSObjectLiteral " ++ sss xs
-showStrippedNode (JSOperator s) = "JSOperator " ++ show s
-showStrippedNode (JSPropertyNameandValue x1 x2s) = "JSPropertyNameandValue (" ++ ss x1 ++ ") " ++ sss x2s
-showStrippedNode (JSPropertyAccessor s x1 x2s x3) = "JSPropertyAccessor " ++ show s ++ " (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
+showStrippedNode (JSMemberDot x1s _d x2 ) = "JSMemberDot " ++ sss x1s ++ " (" ++ ss x2 ++ ")"
+showStrippedNode (JSMemberSquare x1s _lb x2 _rb) = "JSMemberSquare " ++ sss x1s ++ " (" ++ ss x2 ++ ")"
+showStrippedNode (JSObjectLiteral _lb xs _rb) = "JSObjectLiteral " ++ sss xs
+showStrippedNode (JSOperator n) = "JSOperator " ++ ss n
+showStrippedNode (JSPropertyNameandValue x1 _colon x2s) = "JSPropertyNameandValue (" ++ ss x1 ++ ") " ++ sss x2s
+showStrippedNode (JSPropertyAccessor s x1 _lb1 x2s _rb1 _lb2 x3 _rb2) = "JSPropertyAccessor " ++ show s ++ " (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"
 showStrippedNode (JSRegEx s) = "JSRegEx " ++ show s
-showStrippedNode (JSReturn xs) = "JSReturn " ++ sss xs
+showStrippedNode (JSReturn _r xs as) = "JSReturn " ++ sss xs ++ " " ++ ss as
 showStrippedNode (JSSourceElements xs) = "JSSourceElements " ++ sss xs
 showStrippedNode (JSSourceElementsTop xs) = "JSSourceElementsTop " ++ sss xs
-showStrippedNode (JSStatementBlock x) = "JSStatementBlock (" ++ ss x ++ ")"
+showStrippedNode (JSStatementBlock _lb x _rb) = "JSStatementBlock (" ++ ss x ++ ")"
 showStrippedNode (JSStatementList xs) = "JSStatementList " ++ sss xs
 showStrippedNode (JSStringLiteral c s) = "JSStringLiteral " ++ show c ++ " " ++ show s
-showStrippedNode (JSSwitch x x2s) = "JSSwitch (" ++ ss x ++ ") " ++ sss x2s
-showStrippedNode (JSThrow x) = "JSThrow (" ++ ss x ++ ")"
-showStrippedNode (JSTry x1 x2s) = "JSTry (" ++ ss x1 ++ ") " ++ sss x2s
-showStrippedNode (JSUnary s) = "JSUnary " ++ show s
+showStrippedNode (JSSwitch _s _lb x _rb x2s) = "JSSwitch (" ++ ss x ++ ") " ++ sss x2s
+showStrippedNode (JSThrow _t x) = "JSThrow (" ++ ss x ++ ")"
+showStrippedNode (JSTry _t x1 x2s) = "JSTry (" ++ ss x1 ++ ") " ++ sss x2s
+showStrippedNode (JSUnary s _x) = "JSUnary " ++ show s
 showStrippedNode (JSVarDecl x1 x2s) = "JSVarDecl (" ++ ss x1 ++ ") " ++ sss x2s
-showStrippedNode (JSVariables s xs) = "JSVariables " ++ show s ++ " " ++ sss xs
-showStrippedNode (JSWhile x1 x2) = "JSWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
-showStrippedNode (JSWith x1 x2s) = "JSWith (" ++ ss x1 ++ ") " ++ sss x2s
+showStrippedNode (JSVariables n xs _as) = "JSVariables " ++ ss n ++ " " ++ sss xs
+showStrippedNode (JSWhile _w _lb x1 _rb x2) = "JSWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"
+showStrippedNode (JSWith _w _lb x1 _rb x2s) = "JSWith (" ++ ss x1 ++ ") " ++ sss x2s
 
 -- EOF
diff --git a/src/Language/JavaScript/Parser/Grammar5.y b/src/Language/JavaScript/Parser/Grammar5.y
--- a/src/Language/JavaScript/Parser/Grammar5.y
+++ b/src/Language/JavaScript/Parser/Grammar5.y
@@ -4,30 +4,34 @@
   , parseLiteral
   , parsePrimaryExpression
   , parseStatement
+  -- debug
+  , fp
   ) where
 
-import Control.Monad.Error.Class (throwError)
+-- import Control.Monad.Error.Class (throwError)
 import Data.Char
 import Language.JavaScript.Parser.Lexer
+import Language.JavaScript.Parser.ParseError
 import Language.JavaScript.Parser.ParserMonad
 import Language.JavaScript.Parser.SrcLocation
+import Language.JavaScript.Parser.Token
 import qualified Language.JavaScript.Parser.AST as AST
 
 }
 
 -- The name of the generated function to be exported from the module
 %name parseProgram           Program
-%name parseLiteral           Literal
-%name parsePrimaryExpression PrimaryExpression
-%name parseStatement         Statement
+%name parseLiteral           LiteralMain
+%name parsePrimaryExpression PrimaryExpressionMain
+%name parseStatement         StatementMain
 
 %tokentype { Token }
 %error { parseError }
-%monad { P } { thenP } { returnP }
+%monad { Alex } { >>= } { return }
 %lexer { lexCont } { EOFToken {} }
 
 
-%token 
+%token
 
      ';'	{ SemiColonToken {} }
      ','	{ CommaToken {} }
@@ -67,7 +71,7 @@
      '('	{ LeftParenToken {} }
      ')'	{ RightParenToken {} }
      '@*/'	{ CondcommentEndToken {} }
-  
+
      'break'      { BreakToken {} }
      'case'       { CaseToken {} }
      'catch'      { CatchToken {} }
@@ -101,8 +105,8 @@
      'void'       { VoidToken {} }
      'while'      { WhileToken {} }
      'with'       { WithToken {} }
-     
-     
+
+
      'ident'      { IdentifierToken {} }
      'decimal'    { DecimalToken {} }
      'hexinteger' { HexIntegerToken {} }
@@ -112,61 +116,214 @@
 
      'future'     { FutureToken {} }
 
+     'tail'       { TailToken {} }
+     'eof'        { EOFToken {} }
 
+
 %%
 
+-- ---------------------------------------------------------------------
+-- Sort out automatically inserted semi-colons
 
--- --------------------------------------------------------------------
--- Start of GOLD Grammar for Javascript, used as a base
--- --------------------------------------------------------------------
+AutoSemi :: { AST.JSNode }
+AutoSemi : ';' { AST.NT (AST.JSLiteral ";") (ss $1) (gc $1)}
+         |     { AST.NT (AST.JSLiteral "") tokenPosnEmpty []}
 
--- "Name"     = 'JavaScript Grammar'
--- "Author"   = 'M.Schnoor-Matriciani'
--- "Version"  = '0.9'
--- "About"    = 'JavaScript Grammar, Subset of ECMA Edition 3'
+-- ---------------------------------------------------------------------
 
--- "Start Symbol" = <Program>
--- "Case Sensitive" = 'True'
- 
--- ! ------------------------------------------------- Sets
+-- Helpers
 
--- {ID Head}      = {Letter} + [_] + [$]
--- {ID Tail}      = {Alphanumeric} + [_] + [$]
--- {String Chars1} = {Printable} + {HT} - ["\] 
--- {String Chars2} = {Printable} + {HT} - [\''] 
--- {Hex Digit}    = {Digit} + [ABCDEF] + [abcdef]
--- {RegExp Chars} = {Letter}+{Digit}+['^']+['$']+['*']+['+']+['?']+['{']+['}']+['|']+['-']+['.']+[',']+['#']+['[']+[']']+['_']+['<']+['>']
--- {Non Terminator} = {String Chars1} - {CR} - {LF}
--- {Non Zero Digits}={Digit}-[0]
+LParen :: { AST.JSNode }
+LParen : '(' { fp (AST.NT (AST.JSLiteral "(") (ss $1) (gc $1))}
 
--- ! ------------------------------------------------- Terminals
+RParen :: { AST.JSNode }
+RParen : ')' { fp (AST.NT (AST.JSLiteral ")") (ss $1) (gc $1))}
 
--- Identifier    = {ID Head}{ID Tail}*
--- StringLiteral = '"' ( {String Chars1} | '\' {Printable} )* '"' | '' ( {String Chars2} | '\' {Printable} )* ''
 
--- HexIntegerLiteral = '0x' {Hex Digit}+
+LBrace :: { AST.JSNode }
+LBrace : '{' { fp (AST.NT (AST.JSLiteral "{") (ss $1) (gc $1))}
 
--- RegExp         = '/' ({RegExp Chars} | '\' {Non Terminator})+ '/' ( 'g' | 'i' | 'm' )*
--- DecimalLiteral= {Non Zero Digits}+ '.' {Digit}* ('e' | 'E' ) {Non Zero Digits}+ {Digit}* |  {Non Zero Digits}+ '.' {Digit}* | '0' '.' {Digit}+ ('e' | 'E' ) {Non Zero Digits}+ {Digit}* | {Non Zero Digits}+ {Digit}* | '0' | '0' '.' {Digit}+
+RBrace :: { AST.JSNode }
+RBrace : '}' { fp (AST.NT (AST.JSLiteral "}") (ss $1) (gc $1))}
 
--- Comment Start = '/*'
--- Comment End   = '*/'
--- Comment Line  = '//'
 
+LSquare :: { AST.JSNode }
+LSquare : '[' { fp (AST.NT (AST.JSLiteral "[") (ss $1) (gc $1))}
 
--- ! ------------------------------------------------- Rules
+RSquare :: { AST.JSNode }
+RSquare : ']' { fp (AST.NT (AST.JSLiteral "]") (ss $1) (gc $1))}
 
+Comma :: { AST.JSNode }
+Comma : ',' { fp (AST.NT (AST.JSLiteral ",") (ss $1) (gc $1))}
 
+Colon :: { AST.JSNode }
+Colon : ':' { fp (AST.NT (AST.JSLiteral ":") (ss $1) (gc $1))}
 
--- ---------------------------------------------------------------------
--- Sort out automatically inserted semi-colons
+Semi :: { AST.JSNode }
+Semi : ';' { fp (AST.NT (AST.JSLiteral ";") (ss $1) (gc $1))}
 
-AutoSemi :: { AST.JSNode }
-AutoSemi : ';' { AST.NS (AST.JSLiteral ";") (ss $1)}
-         |     { AST.NS (AST.JSLiteral "") SpanEmpty }
-           
--- ---------------------------------------------------------------------
+Dot :: { AST.JSNode }
+Dot : '.' { fp (AST.NT (AST.JSLiteral ".") (ss $1) (gc $1))}
 
+Increment :: { AST.JSNode }
+Increment : '++' { fp (AST.NT (AST.JSLiteral "++") (ss $1) (gc $1))}
+
+Decrement :: { AST.JSNode }
+Decrement : '--' { fp (AST.NT (AST.JSLiteral "--") (ss $1) (gc $1))}
+
+Delete :: { AST.JSNode }
+Delete : 'delete' { fp (AST.NT (AST.JSLiteral "delete") (ss $1) (gc $1))}
+
+Void :: { AST.JSNode }
+Void : 'void' { fp (AST.NT (AST.JSLiteral "void") (ss $1) (gc $1))}
+
+Typeof :: { AST.JSNode }
+Typeof : 'typeof' { fp (AST.NT (AST.JSLiteral "typeof") (ss $1) (gc $1))}
+
+Plus :: { AST.JSNode }
+Plus : '+' { fp (AST.NT (AST.JSLiteral "+") (ss $1) (gc $1))}
+
+Minus :: { AST.JSNode }
+Minus : '-' { fp (AST.NT (AST.JSLiteral "-") (ss $1) (gc $1))}
+
+Tilde :: { AST.JSNode }
+Tilde : '~' { fp (AST.NT (AST.JSLiteral "~") (ss $1) (gc $1))}
+
+Not :: { AST.JSNode }
+Not : '!' { fp (AST.NT (AST.JSLiteral "!") (ss $1) (gc $1))}
+
+Mul :: { AST.JSNode }
+Mul : '*' { fp (AST.NT (AST.JSLiteral "*") (ss $1) (gc $1))}
+
+Div :: { AST.JSNode }
+Div : '/' { fp (AST.NT (AST.JSLiteral "/") (ss $1) (gc $1))}
+
+Mod :: { AST.JSNode }
+Mod : '%' { fp (AST.NT (AST.JSLiteral "%") (ss $1) (gc $1))}
+
+Lsh :: { AST.JSNode }
+Lsh : '<<' { fp (AST.NT (AST.JSLiteral "<<") (ss $1) (gc $1))}
+
+Rsh :: { AST.JSNode }
+Rsh : '>>' { fp (AST.NT (AST.JSLiteral ">>") (ss $1) (gc $1))}
+
+Ursh :: { AST.JSNode }
+Ursh : '>>>' { fp (AST.NT (AST.JSLiteral ">>>") (ss $1) (gc $1))}
+
+Le :: { AST.JSNode }
+Le : '<=' { fp (AST.NT (AST.JSLiteral "<=") (ss $1) (gc $1))}
+
+Lt :: { AST.JSNode }
+Lt : '<' { fp (AST.NT (AST.JSLiteral "<") (ss $1) (gc $1))}
+
+Ge :: { AST.JSNode }
+Ge : '>=' { fp (AST.NT (AST.JSLiteral ">=") (ss $1) (gc $1))}
+
+Gt :: { AST.JSNode }
+Gt : '>' { fp (AST.NT (AST.JSLiteral ">") (ss $1) (gc $1))}
+
+In :: { AST.JSNode }
+In : 'in' { fp (AST.NT (AST.JSLiteral "in") (ss $1) (gc $1))}
+
+Instanceof :: { AST.JSNode }
+Instanceof : 'instanceof' { fp (AST.NT (AST.JSLiteral "instanceof") (ss $1) (gc $1))}
+
+StrictEq :: { AST.JSNode }
+StrictEq : '===' { fp (AST.NT (AST.JSLiteral "===") (ss $1) (gc $1))}
+
+Equal :: { AST.JSNode }
+Equal : '==' { fp (AST.NT (AST.JSLiteral "==") (ss $1) (gc $1))}
+
+StrictNe :: { AST.JSNode }
+StrictNe : '!==' { fp (AST.NT (AST.JSLiteral "!==") (ss $1) (gc $1))}
+
+Ne :: { AST.JSNode }
+Ne : '!=' { fp (AST.NT (AST.JSLiteral "!=") (ss $1) (gc $1))}
+
+Or :: { AST.JSNode }
+Or : '||' { fp (AST.NT (AST.JSLiteral "||") (ss $1) (gc $1))}
+
+And :: { AST.JSNode }
+And : '&&' { fp (AST.NT (AST.JSLiteral "&&") (ss $1) (gc $1))}
+
+BitOr :: { AST.JSNode }
+BitOr : '|' { fp (AST.NT (AST.JSLiteral "|") (ss $1) (gc $1))}
+
+BitAnd :: { AST.JSNode }
+BitAnd : '&' { fp (AST.NT (AST.JSLiteral "&") (ss $1) (gc $1))}
+
+BitXor :: { AST.JSNode }
+BitXor : '^' { fp (AST.NT (AST.JSLiteral "^") (ss $1) (gc $1))}
+
+Hook :: { AST.JSNode }
+Hook : '?' { fp (AST.NT (AST.JSLiteral "?") (ss $1) (gc $1))}
+
+SimpleAssign :: { AST.JSNode }
+SimpleAssign : '=' { fp (AST.NT (AST.JSLiteral "=") (ss $1) (gc $1))}
+
+Assign :: { AST.JSNode }
+Assign : 'assign' { fp (AST.NT (AST.JSLiteral (token_literal $1)) (ss $1) (gc $1))}
+
+Var :: { AST.JSNode }
+Var : 'var' { fp (AST.NT (AST.JSLiteral "var") (ss $1) (gc $1))}
+
+Const :: { AST.JSNode }
+Const : 'const' { fp (AST.NT (AST.JSLiteral "const") (ss $1) (gc $1))}
+
+If :: { AST.JSNode }
+If : 'if' { fp (AST.NT (AST.JSLiteral "if") (ss $1) (gc $1))}
+
+Else :: { AST.JSNode }
+Else : 'else' { fp (AST.NT (AST.JSLiteral "else") (ss $1) (gc $1))}
+
+Do :: { AST.JSNode }
+Do : 'do' { fp (AST.NT (AST.JSLiteral "do") (ss $1) (gc $1))}
+
+While :: { AST.JSNode }
+While : 'while' { fp (AST.NT (AST.JSLiteral "while") (ss $1) (gc $1))}
+
+For :: { AST.JSNode }
+For : 'for' { fp (AST.NT (AST.JSLiteral "for") (ss $1) (gc $1))}
+
+Continue :: { AST.JSNode }
+Continue : 'continue' { fp (AST.NT (AST.JSLiteral "continue") (ss $1) (gc $1))}
+
+Break :: { AST.JSNode }
+Break : 'break' { fp (AST.NT (AST.JSLiteral "break") (ss $1) (gc $1))}
+
+Return :: { AST.JSNode }
+Return : 'return' { fp (AST.NT (AST.JSLiteral "return") (ss $1) (gc $1))}
+
+With :: { AST.JSNode }
+With : 'with' { fp (AST.NT (AST.JSLiteral "with") (ss $1) (gc $1))}
+
+Switch :: { AST.JSNode }
+Switch : 'switch' { fp (AST.NT (AST.JSLiteral "switch") (ss $1) (gc $1))}
+
+Case :: { AST.JSNode }
+Case : 'case' { fp (AST.NT (AST.JSLiteral "case") (ss $1) (gc $1))}
+
+Default :: { AST.JSNode }
+Default : 'default' { fp (AST.NT (AST.JSLiteral "default") (ss $1) (gc $1))}
+
+Throw :: { AST.JSNode }
+Throw : 'throw' { fp (AST.NT (AST.JSLiteral "throw") (ss $1) (gc $1))}
+
+Try :: { AST.JSNode }
+Try : 'try' { fp (AST.NT (AST.JSLiteral "try") (ss $1) (gc $1))}
+
+CatchL :: { AST.JSNode }
+CatchL : 'catch' { fp (AST.NT (AST.JSLiteral "catch") (ss $1) (gc $1))}
+
+FinallyL :: { AST.JSNode }
+FinallyL : 'finally' { fp (AST.NT (AST.JSLiteral "finally") (ss $1) (gc $1))}
+
+Function :: { AST.JSNode }
+Function : 'function' { fp (AST.NT (AST.JSLiteral "function") (ss $1) (gc $1))}
+
+Eof :: { AST.JSNode }
+Eof : 'tail' { fp (AST.NT (AST.JSLiteral "") (ss $1) (gc $1))}
+
 -- Literal ::                                                                See 7.8
 --         NullLiteral
 --         BooleanLiteral
@@ -177,27 +334,27 @@
         | BooleanLiteral  {$1}
         | NumericLiteral  {$1}
         | StringLiteral   {$1}
-        | RegularExpressionLiteral {$1}  
+        | RegularExpressionLiteral {$1}
 
 NullLiteral :: { AST.JSNode }
-NullLiteral : 'null' { AST.NS (AST.JSLiteral "null") (ss $1) }
+NullLiteral : 'null' { fp (AST.NT (AST.JSLiteral "null") (ss $1) (gc $1))}
 
 BooleanLiteral :: { AST.JSNode }
-BooleanLiteral : 'true'  { AST.NS (AST.JSLiteral "true")  (ss $1)}
-               | 'false' { AST.NS (AST.JSLiteral "false") (ss $1)}
+BooleanLiteral : 'true'  { fp (AST.NT (AST.JSLiteral "true")  (ss $1) (gc $1)) }
+               | 'false' { fp (AST.NT (AST.JSLiteral "false") (ss $1) (gc $1)) }
 
 -- <Numeric Literal> ::= DecimalLiteral
 --                     | HexIntegerLiteral
 NumericLiteral :: { AST.JSNode }
-NumericLiteral : 'decimal'    { AST.NS (AST.JSDecimal (token_literal $1)) (ss $1)}
-               | 'hexinteger' { AST.NS (AST.JSHexInteger (token_literal $1)) (ss $1)}
+NumericLiteral : 'decimal'    { fp (AST.NT (AST.JSDecimal (token_literal $1)) (ss $1) (gc $1))}
+               | 'hexinteger' { fp (AST.NT (AST.JSHexInteger (token_literal $1)) (ss $1) (gc $1)) }
 
 StringLiteral :: { AST.JSNode }
-StringLiteral : 'string'  { AST.NS (AST.JSStringLiteral (token_delimiter $1) (token_literal $1)) (ss $1)}
+StringLiteral : 'string'  { fp (AST.NT (AST.JSStringLiteral (token_delimiter $1) (token_literal $1)) (ss $1) (gc $1)) }
 
--- <Regular Expression Literal> ::= RegExp 
+-- <Regular Expression Literal> ::= RegExp
 RegularExpressionLiteral :: { AST.JSNode }
-RegularExpressionLiteral : 'regex' { AST.NS (AST.JSRegEx (token_literal $1)) (ss $1)}
+RegularExpressionLiteral : 'regex' { fp (AST.NT (AST.JSRegEx (token_literal $1)) (ss $1) (gc $1)) }
 
 -- PrimaryExpression :                                                   See 11.1
 --        this
@@ -207,60 +364,60 @@
 --        ObjectLiteral
 --        ( Expression )
 PrimaryExpression :: { AST.JSNode }
-PrimaryExpression : 'this'                   { AST.NS (AST.JSLiteral "this") (ss $1) }
+PrimaryExpression : 'this'                   { fp (AST.NT (AST.JSLiteral "this") (ss $1) (gc $1))}
                   | Identifier               { $1 {- PrimaryExpression1 -}}
                   | Literal                  { $1 {- PrimaryExpression2 -}}
                   | ArrayLiteral             { $1 {- PrimaryExpression3 -}}
                   | ObjectLiteral            { $1 {- PrimaryExpression4 -}}
-                  | '(' Expression ')'       { AST.NS (AST.JSExpressionParen $2) (ss $1) }
-                  
+                  | LParen Expression RParen  { fp (AST.NN (AST.JSExpressionParen $1 $2 $3)) }
+
 -- Identifier ::                                                            See 7.6
 --         IdentifierName but not ReservedWord
 -- IdentifierName ::                                                        See 7.6
 --         IdentifierStart
 --         IdentifierName IdentifierPart
 Identifier :: { AST.JSNode }
-Identifier : 'ident' { AST.NS (AST.JSIdentifier (token_literal $1)) (ss $1) }
-           | 'get'   { AST.NS (AST.JSIdentifier "get") (ss $1) }  
-           | 'set'   { AST.NS (AST.JSIdentifier "set") (ss $1) }  
+Identifier : 'ident' {  (AST.NT (AST.JSIdentifier (token_literal $1)) (ss $1) (gc $1))}
+           | 'get'   {  (AST.NT (AST.JSIdentifier "get") (ss $1) (gc $1))}
+           | 'set'   {  (AST.NT (AST.JSIdentifier "set") (ss $1) (gc $1))}
 
 -- TODO: make this include any reserved word too, including future ones
 IdentifierName :: { AST.JSNode }
 IdentifierName : Identifier {$1}
-             | 'break'      { AST.NS (AST.JSIdentifier "break") (ss $1) }  
-             | 'case'       { AST.NS (AST.JSIdentifier "case") (ss $1) }
-             | 'catch'      { AST.NS (AST.JSIdentifier "catch") (ss $1) }
-             | 'const'      { AST.NS (AST.JSIdentifier "const") (ss $1) }
-             | 'continue'   { AST.NS (AST.JSIdentifier "continue") (ss $1) }
-             | 'debugger'   { AST.NS (AST.JSIdentifier "debugger") (ss $1) }
-             | 'default'    { AST.NS (AST.JSIdentifier "default") (ss $1) }
-             | 'delete'     { AST.NS (AST.JSIdentifier "delete") (ss $1) }
-             | 'do'         { AST.NS (AST.JSIdentifier "do") (ss $1) }
-             | 'else'       { AST.NS (AST.JSIdentifier "else") (ss $1) }
-             | 'enum'       { AST.NS (AST.JSIdentifier "enum") (ss $1) }
-             | 'false'      { AST.NS (AST.JSIdentifier "false") (ss $1) }
-             | 'finally'    { AST.NS (AST.JSIdentifier "finally") (ss $1) }
-             | 'for'        { AST.NS (AST.JSIdentifier "for")  (ss $1)}
-             | 'function'   { AST.NS (AST.JSIdentifier "function") (ss $1) }
-             | 'get'        { AST.NS (AST.JSIdentifier "get") (ss $1) }
-             | 'if'         { AST.NS (AST.JSIdentifier "if") (ss $1) }
-             | 'in'         { AST.NS (AST.JSIdentifier "in") (ss $1) }
-             | 'instanceof' { AST.NS (AST.JSIdentifier "instanceof") (ss $1) }
-             | 'new'        { AST.NS (AST.JSIdentifier "new") (ss $1) }
-             | 'null'       { AST.NS (AST.JSIdentifier "null") (ss $1) }
-             | 'return'     { AST.NS (AST.JSIdentifier "return") (ss $1) }
-             | 'set'        { AST.NS (AST.JSIdentifier "set") (ss $1) }
-             | 'switch'     { AST.NS (AST.JSIdentifier "switch") (ss $1) }
-             | 'this'       { AST.NS (AST.JSIdentifier "this") (ss $1) }
-             | 'throw'      { AST.NS (AST.JSIdentifier "throw") (ss $1) }
-             | 'true'       { AST.NS (AST.JSIdentifier "true") (ss $1) }
-             | 'try'        { AST.NS (AST.JSIdentifier "try") (ss $1) }
-             | 'typeof'     { AST.NS (AST.JSIdentifier "typeof") (ss $1) }
-             | 'var'        { AST.NS (AST.JSIdentifier "var") (ss $1) }
-             | 'void'       { AST.NS (AST.JSIdentifier "void") (ss $1) }
-             | 'while'      { AST.NS (AST.JSIdentifier "while") (ss $1) }
-             | 'with'       { AST.NS (AST.JSIdentifier "with") (ss $1) }
-             | 'future'     { AST.NS (AST.JSIdentifier (token_literal $1)) (ss $1) }  
+             | 'break'      { fp (AST.NT (AST.JSIdentifier "break") (ss $1) (gc $1))}
+             | 'case'       { fp (AST.NT (AST.JSIdentifier "case") (ss $1) (gc $1))}
+             | 'catch'      { fp (AST.NT (AST.JSIdentifier "catch") (ss $1) (gc $1))}
+             | 'const'      { fp (AST.NT (AST.JSIdentifier "const") (ss $1) (gc $1))}
+             | 'continue'   { fp (AST.NT (AST.JSIdentifier "continue") (ss $1) (gc $1))}
+             | 'debugger'   { fp (AST.NT (AST.JSIdentifier "debugger") (ss $1) (gc $1))}
+             | 'default'    { fp (AST.NT (AST.JSIdentifier "default") (ss $1) (gc $1))}
+             | 'delete'     { fp (AST.NT (AST.JSIdentifier "delete") (ss $1) (gc $1))}
+             | 'do'         { fp (AST.NT (AST.JSIdentifier "do") (ss $1) (gc $1))}
+             | 'else'       { fp (AST.NT (AST.JSIdentifier "else") (ss $1) (gc $1))}
+             | 'enum'       { fp (AST.NT (AST.JSIdentifier "enum") (ss $1) (gc $1))}
+             | 'false'      { fp (AST.NT (AST.JSIdentifier "false") (ss $1) (gc $1))}
+             | 'finally'    { fp (AST.NT (AST.JSIdentifier "finally") (ss $1) (gc $1))}
+             | 'for'        { fp (AST.NT (AST.JSIdentifier "for")  (ss $1) (gc $1))}
+             | 'function'   { fp (AST.NT (AST.JSIdentifier "function") (ss $1) (gc $1))}
+             | 'get'        { fp (AST.NT (AST.JSIdentifier "get") (ss $1) (gc $1))}
+             | 'if'         { fp (AST.NT (AST.JSIdentifier "if") (ss $1) (gc $1))}
+             | 'in'         { fp (AST.NT (AST.JSIdentifier "in") (ss $1) (gc $1))}
+             | 'instanceof' { fp (AST.NT (AST.JSIdentifier "instanceof") (ss $1) (gc $1))}
+             | 'new'        { fp (AST.NT (AST.JSIdentifier "new") (ss $1) (gc $1))}
+             | 'null'       { fp (AST.NT (AST.JSIdentifier "null") (ss $1) (gc $1))}
+             | 'return'     { fp (AST.NT (AST.JSIdentifier "return") (ss $1) (gc $1))}
+             | 'set'        { fp (AST.NT (AST.JSIdentifier "set") (ss $1) (gc $1))}
+             | 'switch'     { fp (AST.NT (AST.JSIdentifier "switch") (ss $1) (gc $1))}
+             | 'this'       { fp (AST.NT (AST.JSIdentifier "this") (ss $1) (gc $1))}
+             | 'throw'      { fp (AST.NT (AST.JSIdentifier "throw") (ss $1) (gc $1))}
+             | 'true'       { fp (AST.NT (AST.JSIdentifier "true") (ss $1) (gc $1))}
+             | 'try'        { fp (AST.NT (AST.JSIdentifier "try") (ss $1) (gc $1))}
+             | 'typeof'     { fp (AST.NT (AST.JSIdentifier "typeof") (ss $1) (gc $1))}
+             | 'var'        { fp (AST.NT (AST.JSIdentifier "var") (ss $1) (gc $1))}
+             | 'void'       { fp (AST.NT (AST.JSIdentifier "void") (ss $1) (gc $1))}
+             | 'while'      { fp (AST.NT (AST.JSIdentifier "while") (ss $1) (gc $1))}
+             | 'with'       { fp (AST.NT (AST.JSIdentifier "with") (ss $1) (gc $1))}
+             | 'future'     { fp (AST.NT (AST.JSIdentifier (token_literal $1)) (ss $1) (gc $1))}
 
 
 
@@ -269,47 +426,51 @@
 --        [ ElementList ]
 --        [ ElementList , Elisionopt ]
 ArrayLiteral :: { AST.JSNode }
-ArrayLiteral : '[' ']'                         { AST.NS (AST.JSArrayLiteral []) (ss $1) }
-             | '[' Elision ']'                 { AST.NS (AST.JSArrayLiteral $2) (ss $1) }
-             | '[' ElementList ']'             { AST.NS (AST.JSArrayLiteral $2) (ss $1) }
-             | '[' ElementList ',' Elision ']' { AST.NS (AST.JSArrayLiteral ($2++$4)) (ss $1) }
-             | '[' ElementList ',' ']'         { AST.NS (AST.JSArrayLiteral ($2++[AST.NS (AST.JSLiteral ",") (ss $3)])) (ss $1) }
+ArrayLiteral : LSquare RSquare                           { fp (AST.NN (AST.JSArrayLiteral $1 [] $2))}
+             | LSquare Elision RSquare                   { fp (AST.NN (AST.JSArrayLiteral $1 $2 $3))}
+             | LSquare ElementList RSquare               { fp (AST.NN (AST.JSArrayLiteral $1 $2 $3))}
+             | LSquare ElementList Comma Elision RSquare { fp (AST.NN (AST.JSArrayLiteral $1 ($2++[$3]++$4) $5))}
+             | LSquare ElementList Comma RSquare         { fp (AST.NN (AST.JSArrayLiteral $1 ($2++[$3])     $4))}
 
+
+
 -- ElementList :                                                         See 11.1.4
 --        Elisionopt AssignmentExpression
 --        ElementList , Elisionopt AssignmentExpression
 ElementList :: { [AST.JSNode] }
 ElementList : Elision AssignmentExpression                 { (($1)++($2)) {- ElementList -}}
-            | AssignmentExpression                         { $1 {- ElementList -}}
-            | ElementList ',' Elision AssignmentExpression { (($1)++[(AST.NS (AST.JSElision []) (ss $2))]++($3)++($4)) {- ElementList -}}
-            | ElementList ',' AssignmentExpression         { (($1)++[(AST.NS (AST.JSElision []) (ss $2))]++($3)) {- ElementList -}}
+            | AssignmentExpression                         { $1           {- ElementList -}}
+            | ElementList Comma Elision AssignmentExpression { (($1)++[fp (AST.NN (AST.JSElision $2))]++($3)++($4)) {- ElementList -}}
+            | ElementList Comma AssignmentExpression         { (($1)++[fp (AST.NN (AST.JSElision $2))]++($3)) {- ElementList -}}
 
+
 -- Elision :                                                             See 11.1.4
 --        ,
 --        Elision ,
 Elision :: { [AST.JSNode] }
-Elision :  ','        { [AST.NS (AST.JSElision []) SpanEmpty] }
-        | Elision ',' { ($1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)]) }
+Elision : Comma        { [        fp (AST.NN (AST.JSElision $1))] }
+        | Elision Comma { ($1 ++ [fp (AST.NN (AST.JSElision $2))]) }
 
 -- ObjectLiteral :                                                       See 11.1.5
 --        { }
 --        { PropertyNameAndValueList }
 --        { PropertyNameAndValueList , }
 ObjectLiteral :: { AST.JSNode }
-ObjectLiteral : '{' '}'                          { AST.NS (AST.JSObjectLiteral []) (ss $1)}
-              | '{' PropertyNameandValueList '}' { AST.NS (AST.JSObjectLiteral $2) (ss $1)} 
-              | '{' PropertyNameandValueList ',' '}' { AST.NS (AST.JSObjectLiteral ($2++[AST.NS (AST.JSLiteral ",") (ss $3)])) (ss $1)} 
+ObjectLiteral : LBrace RBrace                                { fp (AST.NN (AST.JSObjectLiteral $1 [] $2)         )}
+              | LBrace PropertyNameandValueList RBrace       { fp (AST.NN (AST.JSObjectLiteral $1 $2 $3)         )}
+              | LBrace PropertyNameandValueList Comma RBrace { fp (AST.NN (AST.JSObjectLiteral $1 ($2++[$3]) $4) )}
 
 -- <Property Name and Value List> ::= <Property Name> ':' <Assignment Expression>
 --                                  | <Property Name and Value List> ',' <Property Name> ':' <Assignment Expression>
 
--- Seems we can have function declarations in the value part too                           
+-- Seems we can have function declarations in the value part too
 -- PropertyNameAndValueList :                                            See 11.1.5
 --        PropertyAssignment
 --        PropertyNameAndValueList , PropertyAssignment
 PropertyNameandValueList :: { [ AST.JSNode ] }
 PropertyNameandValueList : PropertyAssignment                              { [$1] {- PropertyNameandValueList1 -} }
-                         | PropertyNameandValueList ',' PropertyAssignment { ($1 ++ [$3]) {- PropertyNameandValueList2 -} }
+                         -- | PropertyNameandValueList ',' PropertyAssignment { ($1 ++ [(AST.NT (AST.JSLiteral ",") (ss $2) (gc $2))] ++ [$3]) {- PropertyNameandValueList2 -} }
+                         | PropertyNameandValueList Comma PropertyAssignment { ($1++[$2]++[$3]) {- PropertyNameandValueList2 -} }
 
 -- PropertyAssignment :                                                  See 11.1.5
 --        PropertyName : AssignmentExpression
@@ -317,12 +478,13 @@
 --        set PropertyName( PropertySetParameterList ) { FunctionBody }
 -- TODO: not clear if get/set are keywords, or just used in a specific context. Puzzling.
 PropertyAssignment :: { AST.JSNode }
-PropertyAssignment : PropertyName ':' AssignmentExpression { (AST.NS (AST.JSPropertyNameandValue $1 $3) (ex $1)) }
+PropertyAssignment : PropertyName Colon AssignmentExpression { fp (AST.NN (AST.JSPropertyNameandValue $1 $2 $3)) }
                    -- Should be "get" in next, but is not a Token
-                   | 'get' PropertyName '(' ')' '{' FunctionBody '}' { (AST.NS (AST.JSPropertyAccessor "get" $2 [] $6) (ss $1)) }
+                   | 'get' PropertyName LParen RParen LBrace FunctionBody RBrace
+                       { fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "get") (ss $1) (gc $1)) $2 $3 [] $4 $5 $6 $7)) }
                    -- Should be "set" in next, but is not a Token
-                   | 'set' PropertyName '(' PropertySetParameterList ')' '{' FunctionBody '}' 
-                       { (AST.NS (AST.JSPropertyAccessor "set" $2 [$4] $7) (ss $1)) }
+                   | 'set' PropertyName LParen PropertySetParameterList RParen LBrace FunctionBody RBrace
+                       { fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "set") (ss $1) (gc $1)) $2 $3 [$4] $5 $6 $7 $8)) }
 
 -- PropertyName :                                                        See 11.1.5
 --        IdentifierName
@@ -345,18 +507,18 @@
 --        MemberExpression . IdentifierName
 --        new MemberExpression Arguments
 MemberExpression :: { [AST.JSNode] }
-MemberExpression : PrimaryExpression   { [$1] {- MemberExpression -}} 
+MemberExpression : PrimaryExpression   { [$1] {- MemberExpression -}}
                  | FunctionExpression  { [$1] {- MemberExpression -}}
-                 | MemberExpression '[' Expression ']' { [AST.NS (AST.JSMemberSquare $1 $3) (mex $1)] }
-                 | MemberExpression '.' IdentifierName { [AST.NS (AST.JSMemberDot $1 $3) (mex $1)] } 
-                 | 'new' MemberExpression Arguments    { (((AST.NS (AST.JSLiteral "new ") (ss $1)):$2)++[$3])}
+                 | MemberExpression LSquare Expression RSquare { [fp (AST.NN (AST.JSMemberSquare $1 $2 $3 $4))] }
+                 | MemberExpression Dot IdentifierName { [fp (AST.NN (AST.JSMemberDot $1 $2 $3))] }
+                 | 'new' MemberExpression Arguments    { (((fp (AST.NT (AST.JSLiteral "new") (ss $1) (gc $1))):$2)++[$3])}
 
 -- NewExpression :                                              See 11.2
 --        MemberExpression
 --        new NewExpression
 NewExpression :: { [AST.JSNode] }
-NewExpression : MemberExpression {$1 {- NewExpression -}} 
-              | 'new' NewExpression { (AST.NS (AST.JSLiteral "new ") (ss $1)):$2 }
+NewExpression : MemberExpression {$1 {- NewExpression -}}
+              | 'new' NewExpression { (fp (AST.NT (AST.JSLiteral "new") (ss $1) (gc $1))):$2 }
 
 -- CallExpression :                                             See 11.2
 --        MemberExpression Arguments
@@ -364,31 +526,31 @@
 --        CallExpression [ Expression ]
 --        CallExpression . IdentifierName
 CallExpression :: { [AST.JSNode] }
-CallExpression : MemberExpression Arguments        { $1++[$2] {- CallExpression -} } 
-               | CallExpression Arguments          { ($1++[(AST.NS (AST.JSCallExpression "()" [$2]) (mex $1))]) }
-               | CallExpression '[' Expression ']' { ($1++[(AST.NS (AST.JSCallExpression "[]" [$3]) (mex $1))]) }
-               | CallExpression '.' IdentifierName { ($1++[(AST.NS (AST.JSCallExpression "."  [$3]) (mex $1))]) }
+CallExpression : MemberExpression Arguments        { $1++[$2] {- CallExpression -} }
+               | CallExpression Arguments          { ($1++[fp (AST.NN (AST.JSCallExpression "()" [] [$2] []))]) }
+               | CallExpression LSquare Expression RSquare { ($1++[fp (AST.NN (AST.JSCallExpression "[]" [$2] [$3] [$4]))]) }
+               | CallExpression Dot IdentifierName { ($1++[fp (AST.NN (AST.JSCallExpression "."  [$2] [$3] []))]) }
 
 -- Arguments :                                                  See 11.2
 --        ()
 --        ( ArgumentList )
 Arguments :: { AST.JSNode }
-Arguments : '(' ')'               { (AST.NS (AST.JSArguments []) (ss $1)) } 
-          | '(' ArgumentList ')'  { (AST.NS (AST.JSArguments $2) (ss $1)) }
+Arguments : LParen RParen               { fp (AST.NN (AST.JSArguments $1 [] $2)) }
+          | LParen ArgumentList RParen  { fp (AST.NN (AST.JSArguments $1 $2 $3)) }
 
 -- ArgumentList :                                               See 11.2
 --        AssignmentExpression
 --        ArgumentList , AssignmentExpression
-ArgumentList :: { [[AST.JSNode]] }
-ArgumentList : AssignmentExpression { [$1] {- ArgumentList -}}
-             | ArgumentList ',' AssignmentExpression { $1++[$3] {- ArgumentList2 -} }
+ArgumentList :: { [AST.JSNode] }
+ArgumentList : AssignmentExpression { $1 {- ArgumentList -}}
+             | ArgumentList Comma AssignmentExpression { $1++[$2]++$3 {- ArgumentList2 -} }
 
 -- LeftHandSideExpression :                                     See 11.2
 --        NewExpression
 --        CallExpression
 LeftHandSideExpression :: { [AST.JSNode] }
 LeftHandSideExpression : NewExpression  { $1 {- LeftHandSideExpression1 -}}
-                       | CallExpression { $1 {- LeftHandSideExpression12 -}} 
+                       | CallExpression { $1 {- LeftHandSideExpression12 -}}
 
 -- PostfixExpression :                                          See 11.3
 --        LeftHandSideExpression
@@ -397,9 +559,9 @@
 --                                  [no LineTerminator here]
 --        LeftHandSideExpression                             --
 PostfixExpression :: { [AST.JSNode] }
-PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} } 
-                  | PostfixExpression '++' {[(AST.NS (AST.JSExpressionPostfix "++" $1) (mex $1))]}
-                  | PostfixExpression '--' {[(AST.NS (AST.JSExpressionPostfix "--" $1) (mex $1))]}
+PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} }
+                  | PostfixExpression Increment {[fp (AST.NN (AST.JSExpressionPostfix "++" $1 $2))]}
+                  | PostfixExpression Decrement {[fp (AST.NN (AST.JSExpressionPostfix "--" $1 $2))]}
 
 -- UnaryExpression :                                            See 11.4
 --        PostfixExpression
@@ -413,16 +575,16 @@
 --        ~ UnaryExpression
 --        ! UnaryExpression
 UnaryExpression :: { [AST.JSNode] }
-UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} } 
-                | 'delete' UnaryExpression { ((AST.NS (AST.JSUnary "delete ") (ss $1)):$2)}
-                | 'void'   UnaryExpression { ((AST.NS (AST.JSUnary "void ") (ss $1)):$2)}
-                | 'typeof' UnaryExpression { ((AST.NS (AST.JSUnary "typeof ") (ss $1)):$2)}
-                | '++'     UnaryExpression { ((AST.NS (AST.JSUnary "++") (ss $1)):$2) } 
-                | '--'     UnaryExpression { ((AST.NS (AST.JSUnary "--") (ss $1)):$2)}
-                | '+'      UnaryExpression { ((AST.NS (AST.JSUnary "+") (ss $1)):$2)}
-                | '-'      UnaryExpression { ((AST.NS (AST.JSUnary "-") (ss $1)):$2)}
-                | '~'      UnaryExpression { ((AST.NS (AST.JSUnary "~") (ss $1)):$2)}
-                | '!'      UnaryExpression { ((AST.NS (AST.JSUnary "!") (ss $1)):$2)}
+UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} }
+                | Delete    UnaryExpression { ((fp (AST.NN (AST.JSUnary "delete " $1))):$2)}
+                | Void      UnaryExpression { ((fp (AST.NN (AST.JSUnary "void "   $1))):$2)}
+                | Typeof    UnaryExpression { ((fp (AST.NN (AST.JSUnary "typeof " $1))):$2)}
+                | Increment UnaryExpression { ((fp (AST.NN (AST.JSUnary "++"      $1))):$2) }
+                | Decrement UnaryExpression { ((fp (AST.NN (AST.JSUnary "--"      $1))):$2)}
+                | Plus      UnaryExpression { ((fp (AST.NN (AST.JSUnary "+"       $1))):$2)}
+                | Minus     UnaryExpression { ((fp (AST.NN (AST.JSUnary "-"       $1))):$2)}
+                | Tilde     UnaryExpression { ((fp (AST.NN (AST.JSUnary "~"       $1))):$2)}
+                | Not       UnaryExpression { ((fp (AST.NN (AST.JSUnary "!"       $1))):$2)}
 
 -- MultiplicativeExpression :                                   See 11.5
 --        UnaryExpression
@@ -430,19 +592,19 @@
 --        MultiplicativeExpression / UnaryExpression
 --        MultiplicativeExpression % UnaryExpression
 MultiplicativeExpression :: { [AST.JSNode] }
-MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}} 
-                         | MultiplicativeExpression '*' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "*" $1 $3) (mex $1))]}
-                         | MultiplicativeExpression '/' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "/" $1 $3) (mex $1))]}
-                         | MultiplicativeExpression '%' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "%" $1 $3) (mex $1))]}
+MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}}
+                         | MultiplicativeExpression Mul UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "*" $1 $2 $3))]}
+                         | MultiplicativeExpression Div UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "/" $1 $2 $3))]}
+                         | MultiplicativeExpression Mod UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "%" $1 $2 $3))]}
 
 -- AdditiveExpression :                                        See 11.6
 --        MultiplicativeExpression
 --        AdditiveExpression + MultiplicativeExpression
 --        AdditiveExpression - MultiplicativeExpression
 AdditiveExpression :: { [AST.JSNode] }
-AdditiveExpression : AdditiveExpression '+' MultiplicativeExpression { [(AST.NS (AST.JSExpressionBinary "+" $1 $3) (mex $1))]}
-                   | AdditiveExpression '-' MultiplicativeExpression { [(AST.NS (AST.JSExpressionBinary "-" $1 $3) (mex $1))]}
-                   | MultiplicativeExpression { $1 {- (goRegExp $1)-} {- AdditiveExpression -} } 
+AdditiveExpression : AdditiveExpression Plus  MultiplicativeExpression { [fp (AST.NN (AST.JSExpressionBinary "+" $1 $2 $3))]}
+                   | AdditiveExpression Minus MultiplicativeExpression { [fp (AST.NN (AST.JSExpressionBinary "-" $1 $2 $3))]}
+                   | MultiplicativeExpression { $1 {- (goRegExp $1)-} {- AdditiveExpression -} }
 
 -- ShiftExpression :                                           See 11.7
 --        AdditiveExpression
@@ -450,10 +612,10 @@
 --        ShiftExpression >> AdditiveExpression
 --        ShiftExpression >>> AdditiveExpression
 ShiftExpression :: { [AST.JSNode] }
-ShiftExpression : ShiftExpression '<<'  AdditiveExpression { [(AST.NS (AST.JSExpressionBinary "<<" $1 $3) (mex $1))]}
-                | ShiftExpression '>>'  AdditiveExpression { [(AST.NS (AST.JSExpressionBinary ">>" $1 $3) (mex $1))]}
-                | ShiftExpression '>>>' AdditiveExpression { [(AST.NS (AST.JSExpressionBinary ">>>" $1 $3) (mex $1))]}
-                | AdditiveExpression { $1 {- ShiftExpression -}} 
+ShiftExpression : ShiftExpression Lsh  AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary "<<"  $1 $2 $3))]}
+                | ShiftExpression Rsh  AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary ">>"  $1 $2 $3))]}
+                | ShiftExpression Ursh AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary ">>>" $1 $2 $3))]}
+                | AdditiveExpression { $1 {- ShiftExpression -}}
 
 -- RelationalExpression :                                      See 11.8
 --        ShiftExpression
@@ -464,13 +626,13 @@
 --        RelationalExpression instanceof ShiftExpression
 --        RelationalExpression in ShiftExpression
 RelationalExpression :: { [AST.JSNode] }
-RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}} 
-                     | RelationalExpression '<'  ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<" $1 $3) (mex $1))]}
-                     | RelationalExpression '>'  ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">" $1 $3) (mex $1))]}
-                     | RelationalExpression '<=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<=" $1 $3) (mex $1))]}
-                     | RelationalExpression '>=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">=" $1 $3) (mex $1))]}
-                     | RelationalExpression 'instanceof' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " instanceof " $1 $3) (mex $1))]}
-                     | RelationalExpression 'in' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " in " $1 $3) (mex $1))]}
+RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}}
+                     | RelationalExpression Lt  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<"  $1 $2 $3))]}
+                     | RelationalExpression Gt  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">"  $1 $2 $3))]}
+                     | RelationalExpression Le  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<=" $1 $2 $3))]}
+                     | RelationalExpression Ge  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">=" $1 $2 $3))]}
+                     | RelationalExpression Instanceof ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " instanceof " $1 $2 $3))]}
+                     | RelationalExpression In         ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " in "         $1 $2 $3))]}
 
 -- RelationalExpressionNoIn :                                  See 11.8
 --        ShiftExpression
@@ -480,12 +642,12 @@
 --        RelationalExpressionNoIn >= ShiftExpression
 --        RelationalExpressionNoIn instanceof ShiftExpression
 RelationalExpressionNoIn :: { [AST.JSNode] }
-RelationalExpressionNoIn : ShiftExpression { $1 {- RelationalExpressionNoIn -}} 
-                     | RelationalExpressionNoIn '<'  ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<" $1 $3) (mex $1))]}
-                     | RelationalExpressionNoIn '>'  ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">" $1 $3) (mex $1))]}
-                     | RelationalExpressionNoIn '<=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<=" $1 $3) (mex $1))]}
-                     | RelationalExpressionNoIn '>=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">=" $1 $3) (mex $1))]}
-                     | RelationalExpressionNoIn 'instanceof' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " instanceof " $1 $3) (mex $1))]}
+RelationalExpressionNoIn : ShiftExpression { $1 {- RelationalExpressionNoIn -}}
+                     | RelationalExpressionNoIn Lt  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<"  $1 $2 $3))]}
+                     | RelationalExpressionNoIn Gt  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">"  $1 $2 $3))]}
+                     | RelationalExpressionNoIn Le  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<=" $1 $2 $3))]}
+                     | RelationalExpressionNoIn Ge  ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">=" $1 $2 $3))]}
+                     | RelationalExpressionNoIn Instanceof ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " instanceof " $1 $2 $3))]}
 
 -- EqualityExpression :                                        See 11.9
 --        RelationalExpression
@@ -494,11 +656,11 @@
 --        EqualityExpression === RelationalExpression
 --        EqualityExpression !== RelationalExpression
 EqualityExpression :: { [AST.JSNode] }
-EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} } 
-                   | EqualityExpression '=='  RelationalExpression { [(AST.NS (AST.JSExpressionBinary "==" $1 $3) (mex $1))]}
-                   | EqualityExpression '!='  RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!=" $1 $3) (mex $1))]}
-                   | EqualityExpression '===' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "===" $1 $3) (mex $1))]}
-                   | EqualityExpression '!==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!==" $1 $3) (mex $1))]}
+EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} }
+                   | EqualityExpression Equal    RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "=="  $1 $2 $3))]}
+                   | EqualityExpression Ne       RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!="  $1 $2 $3))]}
+                   | EqualityExpression StrictEq RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "===" $1 $2 $3))]}
+                   | EqualityExpression StrictNe RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!==" $1 $2 $3))]}
 
 -- EqualityExpressionNoIn :                                    See 11.9
 --        RelationalExpressionNoIn
@@ -507,133 +669,133 @@
 --        EqualityExpressionNoIn === RelationalExpressionNoIn
 --        EqualityExpressionNoIn !== RelationalExpressionNoIn
 EqualityExpressionNoIn :: { [AST.JSNode] }
-EqualityExpressionNoIn : RelationalExpressionNoIn { $1 {- EqualityExpressionNoIn -} } 
-                       | EqualityExpressionNoIn '=='  RelationalExpression { [(AST.NS (AST.JSExpressionBinary "==" $1 $3) (mex $1))]}
-                       | EqualityExpressionNoIn '!='  RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!=" $1 $3) (mex $1))]}
-                       | EqualityExpressionNoIn '===' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "===" $1 $3) (mex $1))]}
-                       | EqualityExpressionNoIn '!==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!==" $1 $3) (mex $1))]}
+EqualityExpressionNoIn : RelationalExpressionNoIn { $1 {- EqualityExpressionNoIn -} }
+                       | EqualityExpressionNoIn Equal    RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "=="  $1 $2 $3))]}
+                       | EqualityExpressionNoIn Ne       RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!="  $1 $2 $3))]}
+                       | EqualityExpressionNoIn StrictEq RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "===" $1 $2 $3))]}
+                       | EqualityExpressionNoIn StrictNe RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!==" $1 $2 $3))]}
 
 -- BitwiseANDExpression :                                      See 11.10
 --        EqualityExpression
 --        BitwiseANDExpression & EqualityExpression
 BitwiseAndExpression :: { [AST.JSNode] }
-BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} } 
-                     | BitwiseAndExpression '&' EqualityExpression { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]}
+BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} }
+                     | BitwiseAndExpression BitAnd EqualityExpression { [fp (AST.NN (AST.JSExpressionBinary "&" $1 $2 $3))]}
 
 -- BitwiseANDExpressionNoIn :                                  See 11.10
 --        EqualityExpressionNoIn
 --        BitwiseANDExpressionNoIn & EqualityExpressionNoIn
 BitwiseAndExpressionNoIn :: { [AST.JSNode] }
-BitwiseAndExpressionNoIn : EqualityExpressionNoIn { $1 {- BitwiseAndExpression -} } 
-                     | BitwiseAndExpressionNoIn '&' EqualityExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]}
+BitwiseAndExpressionNoIn : EqualityExpressionNoIn { $1 {- BitwiseAndExpression -} }
+                     | BitwiseAndExpressionNoIn BitAnd EqualityExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "&" $1 $2 $3))]}
 
 -- BitwiseXORExpression :                                                                See 11.10
 --        BitwiseANDExpression
 --        BitwiseXORExpression ^ BitwiseANDExpression
 BitwiseXOrExpression :: { [AST.JSNode] }
-BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} } 
-                     | BitwiseXOrExpression '^' BitwiseAndExpression { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]}
+BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} }
+                     | BitwiseXOrExpression BitXor BitwiseAndExpression { [fp (AST.NN (AST.JSExpressionBinary "^" $1 $2 $3))]}
 
 -- BitwiseXORExpressionNoIn :                                                            See 11.10
 --        BitwiseANDExpressionNoIn
 --        BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn
 BitwiseXOrExpressionNoIn :: { [AST.JSNode] }
-BitwiseXOrExpressionNoIn : BitwiseAndExpressionNoIn { $1 {- BitwiseXOrExpression -} } 
-                         | BitwiseXOrExpressionNoIn '^' BitwiseAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]}
+BitwiseXOrExpressionNoIn : BitwiseAndExpressionNoIn { $1 {- BitwiseXOrExpression -} }
+                         | BitwiseXOrExpressionNoIn BitXor BitwiseAndExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "^" $1 $2 $3))]}
 
 -- BitwiseORExpression :                                                                 See 11.10
 --        BitwiseXORExpression
 --        BitwiseORExpression | BitwiseXORExpression
 BitwiseOrExpression :: { [AST.JSNode] }
-BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} } 
-                    | BitwiseOrExpression '|' BitwiseXOrExpression { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]}
+BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} }
+                    | BitwiseOrExpression BitOr BitwiseXOrExpression { [fp (AST.NN (AST.JSExpressionBinary "|" $1 $2 $3))]}
 
 -- BitwiseORExpressionNoIn :                                                             See 11.10
 --        BitwiseXORExpressionNoIn
 --        BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn
 BitwiseOrExpressionNoIn :: { [AST.JSNode] }
-BitwiseOrExpressionNoIn : BitwiseXOrExpressionNoIn { $1 {- BitwiseOrExpression -} } 
-                        | BitwiseOrExpressionNoIn '|' BitwiseXOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]}
+BitwiseOrExpressionNoIn : BitwiseXOrExpressionNoIn { $1 {- BitwiseOrExpression -} }
+                        | BitwiseOrExpressionNoIn BitOr BitwiseXOrExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "|" $1 $2 $3))]}
 
 -- LogicalANDExpression :                                                                See 11.11
 --        BitwiseORExpression
 --        LogicalANDExpression && BitwiseORExpression
 LogicalAndExpression :: { [AST.JSNode] }
-LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} } 
-                     | LogicalAndExpression '&&' BitwiseOrExpression { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]}
+LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} }
+                     | LogicalAndExpression And BitwiseOrExpression { [fp (AST.NN (AST.JSExpressionBinary "&&" $1 $2 $3))]}
 
 -- LogicalANDExpressionNoIn :                                                            See 11.11
 --        BitwiseORExpressionNoIn
 --        LogicalANDExpressionNoIn && BitwiseORExpressionNoIn
 LogicalAndExpressionNoIn :: { [AST.JSNode] }
-LogicalAndExpressionNoIn : BitwiseOrExpressionNoIn { $1 {- LogicalAndExpression -} } 
-                         | LogicalAndExpressionNoIn '&&' BitwiseOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]}
+LogicalAndExpressionNoIn : BitwiseOrExpressionNoIn { $1 {- LogicalAndExpression -} }
+                         | LogicalAndExpressionNoIn And BitwiseOrExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "&&" $1 $2 $3))]}
 
 -- LogicalORExpression :                                                                 See 11.11
 --        LogicalANDExpression
 --        LogicalORExpression || LogicalANDExpression
 LogicalOrExpression :: { [AST.JSNode] }
-LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} } 
-                    | LogicalOrExpression '||' LogicalAndExpression { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]}
+LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} }
+                    | LogicalOrExpression Or LogicalAndExpression { [fp (AST.NN (AST.JSExpressionBinary "||" $1 $2 $3))]}
 
 -- LogicalORExpressionNoIn :                                                             See 11.11
 --        LogicalANDExpressionNoIn
 --        LogicalORExpressionNoIn || LogicalANDExpressionNoIn
 LogicalOrExpressionNoIn :: { [AST.JSNode] }
-LogicalOrExpressionNoIn : LogicalAndExpressionNoIn { $1 {- LogicalOrExpression -} } 
-                        | LogicalOrExpressionNoIn '||' LogicalAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]}
+LogicalOrExpressionNoIn : LogicalAndExpressionNoIn { $1 {- LogicalOrExpression -} }
+                        | LogicalOrExpressionNoIn Or LogicalAndExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "||" $1 $2 $3))]}
 
 -- ConditionalExpression :                                                               See 11.12
 --        LogicalORExpression
 --        LogicalORExpression ? AssignmentExpression : AssignmentExpression
 ConditionalExpression :: { [AST.JSNode] }
 ConditionalExpression : LogicalOrExpression { $1 {- ConditionalExpression -} }
-                      | LogicalOrExpression '?' AssignmentExpression ':' AssignmentExpression 
-                        { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } 
-                    
+                      | LogicalOrExpression Hook AssignmentExpression Colon AssignmentExpression
+                        { [fp (AST.NN (AST.JSExpressionTernary $1 $2 $3 $4 $5))] }
+
 -- ConditionalExpressionNoIn :                                                           See 11.12
 --        LogicalORExpressionNoIn
 --        LogicalORExpressionNoIn ? AssignmentExpressionNoIn : AssignmentExpressionNoIn
 ConditionalExpressionNoIn :: { [AST.JSNode] }
 ConditionalExpressionNoIn : LogicalOrExpressionNoIn { $1 {- ConditionalExpression -} }
-                          | LogicalOrExpressionNoIn '?' AssignmentExpressionNoIn ':' AssignmentExpressionNoIn
-                            { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } 
-  
+                          | LogicalOrExpressionNoIn Hook AssignmentExpressionNoIn Colon AssignmentExpressionNoIn
+                            { [fp (AST.NN (AST.JSExpressionTernary $1 $2 $3 $4 $5))] }
+
 -- AssignmentExpression :                                                                See 11.13
 --        ConditionalExpression
 --        LeftHandSideExpression AssignmentOperator AssignmentExpression
 AssignmentExpression :: { [AST.JSNode] }
-AssignmentExpression : ConditionalExpression { $1 {- AssignmentExpression -}} 
-                     | LeftHandSideExpression AssignmentOperator AssignmentExpression 
+AssignmentExpression : ConditionalExpression { $1 {- AssignmentExpression -}}
+                     | LeftHandSideExpression AssignmentOperator AssignmentExpression
                        { ($1++[$2]++$3) }
-                       
+
 -- AssignmentExpressionNoIn :                                                            See 11.13
 --        ConditionalExpressionNoIn
 --        LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn
 AssignmentExpressionNoIn :: { [AST.JSNode] }
-AssignmentExpressionNoIn : ConditionalExpressionNoIn { $1 {- AssignmentExpression -}} 
-                         | LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn 
+AssignmentExpressionNoIn : ConditionalExpressionNoIn { $1 {- AssignmentExpression -}}
+                         | LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn
                            { ($1++[$2]++$3) }
 
 -- AssignmentOperator : one of                                                           See 11.13
 --     '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|='
 AssignmentOperator :: { AST.JSNode }
-AssignmentOperator : 'assign' { AST.NS (AST.JSOperator (token_literal $1)) (ss $1) }
-                   | '='      { AST.NS (AST.JSOperator "=") (ss $1)}
+AssignmentOperator : Assign       { fp (AST.NN (AST.JSOperator $1))}
+                   | SimpleAssign { fp (AST.NN (AST.JSOperator $1))}
 
 -- Expression :                                                   See 11.14
 --         AssignmentExpression
 --         Expression , AssignmentExpression
 Expression :: { AST.JSNode }
-Expression : AssignmentExpression { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } 
-           | Expression ',' AssignmentExpression  { flattenExpression $1 $3 }
+Expression : AssignmentExpression { fp (AST.NN (AST.JSExpression $1)) {- Expression -} }
+           | Expression Comma AssignmentExpression  { fp (AST.NN (AST.JSExpression ($1:[$2]++$3))) {- Expression2 -} }
 
 -- ExpressionNoIn :                                               See 11.14
 --         AssignmentExpressionNoIn
 --         ExpressionNoIn , AssignmentExpressionNoIn
 ExpressionNoIn :: { AST.JSNode }
-ExpressionNoIn : AssignmentExpressionNoIn { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } 
-               | ExpressionNoIn ',' AssignmentExpressionNoIn  { flattenExpression $1 $3 }
+ExpressionNoIn : AssignmentExpressionNoIn { fp (AST.NN (AST.JSExpression $1)) {- ExpressionNoIn -} }
+               | ExpressionNoIn Comma AssignmentExpressionNoIn  { fp (AST.NN (AST.JSExpression ($1:[$2]++$3))) {- ExpressionNoIn2 -} }
 
 -- TODO: still required?
 ExpressionOpt :: { [AST.JSNode] }
@@ -643,8 +805,8 @@
 ExpressionNoInOpt :: { [AST.JSNode] }
 ExpressionNoInOpt : ExpressionNoIn { [$1] {- ExpressionOpt -}}
                   |            { []   {- ExpressionOpt -}}
-                               
 
+
 -- Statement :                                                    See clause 12
 --         Block
 --         VariableStatement
@@ -682,76 +844,70 @@
                  | TryStatement       { $1 {- StatementNoEmpty14 -}}
                  | DebuggerStatement  { $1 {- StatementNoEmpty15 -}}
 
--- FIXME: not producing true reflection of parse, doing minimisation transformationsa  in place
--- StatementBlock :: { AST.JSNode }
--- StatementBlock : '{' '}'               { (AST.NS (AST.JSLiteral ";") (ss $1)) }
---                | '{' StatementList '}' { (if ($2 == AST.JSStatementList [AST.JSLiteral ";"]) 
---                                             then (AST.NS (AST.JSLiteral ";") (ss $1)) 
---                                             else (AST.NS (AST.JSBlock $2   ) (ss $1))) 
---                                        }
+
 StatementBlock :: { AST.JSNode }
-StatementBlock : '{' '}'               { (AST.NS (AST.JSStatementBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }
-               | '{' StatementList '}' { (AST.NS (AST.JSStatementBlock $2) (ss $1)) }
+StatementBlock : LBrace RBrace               { fp (AST.NN (AST.JSStatementBlock $1 (AST.NN (AST.JSStatementList [])) $2)) }
+               | LBrace StatementList RBrace { fp (AST.NN (AST.JSStatementBlock $1 $2                                $3)) }
 
 -- Block :                                                        See 12.1
 --         { StatementListopt }
 Block :: { AST.JSNode }
-Block : '{' '}'               { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }
-      | '{' StatementList '}' { (AST.NS (AST.JSBlock $2) (ss $1)) }
+Block : LBrace RBrace               { fp (AST.NN (AST.JSBlock [$1] (AST.NN (AST.JSStatementList [])) [$2])) }
+      | LBrace StatementList RBrace { fp (AST.NN (AST.JSBlock [$1] $2                                [$3])) }
 
 -- StatementList :                                                See 12.1
 --         Statement
 --         StatementList Statement
 StatementList :: { AST.JSNode }
-StatementList : Statement               { (AST.NS (AST.JSStatementList [$1]) (ex $1)) }
+StatementList : Statement               { fp (AST.NN (AST.JSStatementList [$1])) }
               | StatementList Statement { (combineStatements $1 $2) }
 
 -- VariableStatement :                                            See 12.2
 --         var VariableDeclarationList ;
 VariableStatement :: { AST.JSNode }
-VariableStatement : 'var'   VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "var" $2) (ss $1)}
-                  | 'const' VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "const" $2) (ss $1)}
+VariableStatement : Var   VariableDeclarationList AutoSemi { fp (AST.NN (AST.JSVariables $1 $2 $3))}
+                  | Const VariableDeclarationList AutoSemi { fp (AST.NN (AST.JSVariables $1 $2 $3))}
 
 -- VariableDeclarationList :                                      See 12.2
 --         VariableDeclaration
 --         VariableDeclarationList , VariableDeclaration
 VariableDeclarationList :: { [AST.JSNode] }
 VariableDeclarationList : VariableDeclaration { [$1] {- VariableDeclarationList -}}
-                        | VariableDeclarationList ',' VariableDeclaration { ($1 ++ [$3]) {- VariableDeclarationList -}}
+                        | VariableDeclarationList Comma VariableDeclaration { ($1++[$2]++[$3]) {- VariableDeclarationList -}}
 
 -- VariableDeclarationListNoIn :                                  See 12.2
 --         VariableDeclarationNoIn
 --         VariableDeclarationListNoIn , VariableDeclarationNoIn
 VariableDeclarationListNoIn :: { [AST.JSNode] }
 VariableDeclarationListNoIn : VariableDeclarationNoIn { [$1] {- VariableDeclarationList -}}
-                            | VariableDeclarationListNoIn ',' VariableDeclarationNoIn { ($1 ++ [$3]) {- VariableDeclarationList -}}
+                            | VariableDeclarationListNoIn Comma VariableDeclarationNoIn { ($1++[$2]++[$3]) {- VariableDeclarationListNoIn -}}
 
 -- VariableDeclaration :                                          See 12.2
 --         Identifier Initialiseropt
 VariableDeclaration :: { AST.JSNode }
-VariableDeclaration : Identifier              { (AST.NS (AST.JSVarDecl $1 []) (ex $1) )}
-                    | Identifier Initializer  { (AST.NS (AST.JSVarDecl $1 $2) (ex $1))}
+VariableDeclaration : Identifier              { fp (AST.NN (AST.JSVarDecl $1 []))}
+                    | Identifier Initializer  { fp (AST.NN (AST.JSVarDecl $1 $2))}
 
 -- VariableDeclarationNoIn :                                      See 12.2
 --         Identifier InitialiserNoInopt
 VariableDeclarationNoIn :: { AST.JSNode }
-VariableDeclarationNoIn : Identifier InitializerNoIn { (AST.NS (AST.JSVarDecl $1 $2) (ex $1)) }
-                        | Identifier                 { (AST.NS (AST.JSVarDecl $1 []) (ex $1)) }
+VariableDeclarationNoIn : Identifier InitializerNoIn { fp (AST.NN (AST.JSVarDecl $1 $2)) }
+                        | Identifier                 { fp (AST.NN (AST.JSVarDecl $1 [])) }
 
 -- Initialiser :                                                                            See 12.2
 --         = AssignmentExpression
 Initializer :: { [AST.JSNode] }
-Initializer : '=' AssignmentExpression { $2 {- Initializer -} }
+Initializer : SimpleAssign AssignmentExpression { $1:$2 {- Initializer -} }
 
 -- InitialiserNoIn :                                                                        See 12.2
 --         = AssignmentExpressionNoIn
 InitializerNoIn :: { [AST.JSNode] }
-InitializerNoIn : '=' AssignmentExpressionNoIn { $2 {- InitializerNoIn -}}
+InitializerNoIn : SimpleAssign AssignmentExpressionNoIn { $1:$2 {- InitializerNoIn -}}
 
 -- EmptyStatement :                                                                         See 12.3
 --         ;
 EmptyStatement :: { AST.JSNode }
-EmptyStatement : ';' { (AST.NS (AST.JSLiteral ";") (ss $1)) }
+EmptyStatement : Semi { $1 }
 
 -- ExpressionStatement :                                                                    See 12.4
 --         [lookahead ∉ {{, function}] Expression  ;
@@ -765,35 +921,36 @@
 -- IfStatement :                                                                            See 12.5
 --         if ( Expression ) Statement else Statement
 --         if ( Expression ) Statement
-IfStatement :: { AST.JSNode }
-IfStatement : 'if' '(' Expression ')' StatementSemi  IfElseRest 
-                  { (if ($6 /= []) then  
-                       (if (length $6 == 1) 
-                        then 
-                          (AST.NS (AST.JSIfElse $3 $5 (head $6)) (ss $1)) 
-                        else 
-                          (AST.NS 
-                             (AST.JSIfElse 
-                                $3 
-                                (AST.NS 
-                                   (AST.JSBlock (AST.NS (AST.JSStatementList [$5]) (ss $1)) ) 
-                                   (ss $1) 
-                                   )
-                                (last $6)
-                             ) 
-                             (ss $1)
-                           ) 
-                       )   
-                     else (AST.NS (AST.JSIf $3 $5) (ss $1))) }
-                  
-IfElseRest :: { [AST.JSNode] }                  
-IfElseRest : 'else' Statement     { [$2] }
-           |                      { [] } 
+IfStatement :: { AST.JSNode } -- +++XXXX++
+IfStatement : If LParen Expression RParen StatementSemi  IfElseRest
+                  { (if ($6 /= []) then
+                       (if (length $6 == 1)
+                        then
+                          (fp (AST.NN (AST.JSIf $1 $2 $3 $4 $5 $6) ))
+                        else
+                          (fp (AST.NN
+                             (AST.JSIf
+                                $1 $2
+                                $3
+                                $4
+                                (fp (AST.NN
+                                   (AST.JSBlock [] (AST.NN (AST.JSStatementList [$5])) [] )
+                                   ))
+                                $6
+                             )
 
+                           ))
+                       )
+                     else (fp (AST.NN (AST.JSIf $1 $2 $3 $4 $5 []) )) ) }
+
+IfElseRest :: { [AST.JSNode] }
+IfElseRest : Else Statement     { [$1,$2] }
+           |                    { [] }
+
 StatementSemi :: { AST.JSNode }
-StatementSemi : StatementNoEmpty ';' { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList [$1]) (ex $1))) (ex $1)) } 
-              | StatementNoEmpty     { $1 {- StatementSemi -}}
-              | ';'                  { AST.NS (AST.JSLiteral ";") (ss $1)  }  
+StatementSemi : StatementNoEmpty Semi { fp (AST.NN (AST.JSBlock [] (AST.NN (AST.JSStatementList [$1,$2])) [])) }
+              | StatementNoEmpty      { $1 {- StatementSemi -}}
+              | Semi                  { $1 }
 
 
 -- IterationStatement :                                                                     See 12.6
@@ -804,56 +961,56 @@
 --         for ( LeftHandSideExpression in Expression ) Statement
 --         for ( var VariableDeclarationNoIn in Expression ) Statement
 IterationStatement :: { AST.JSNode }
-IterationStatement : 'do' Statement 'while' '(' Expression ')' AutoSemi 
-                     { (AST.NS (AST.JSDoWhile $2 $5 $7) (ss $1)) } 
-                   | 'while' '(' Expression ')' Statement 
-                     { (AST.NS (AST.JSWhile $3 $5) (ss $1)) }
-                   | 'for' '(' ExpressionNoInOpt ';' ExpressionOpt ';' ExpressionOpt ')' Statement 
-                     { (AST.NS (AST.JSFor $3 $5 $7 $9) (ss $1)) }
-                   | 'for' '(' 'var' VariableDeclarationListNoIn ';' ExpressionOpt ';' ExpressionOpt ')' Statement 
-                     { (AST.NS (AST.JSForVar $4 $6 $8 $10) (ss $1)) }
-                   | 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement 
-                     { (AST.NS (AST.JSForIn $3 $5 $7) (ss $1)) }
-                   | 'for' '(' 'var' VariableDeclarationNoIn 'in' Expression ')' Statement
-                     { (AST.NS (AST.JSForVarIn $4 $6 $8) (ss $1)) }
+IterationStatement : Do Statement While LParen Expression RParen AutoSemi
+                     { fp (AST.NN (AST.JSDoWhile $1 $2 $3 $4 $5 $6 $7)) }
+                   | While LParen Expression RParen Statement
+                     { fp (AST.NN (AST.JSWhile $1 $2 $3 $4 $5)) }
+                   | For LParen ExpressionNoInOpt Semi ExpressionOpt Semi ExpressionOpt RParen Statement
+                     { fp (AST.NN (AST.JSFor $1 $2 $3 $4 $5 $6 $7 $8 $9)) }
+                   | For LParen Var VariableDeclarationListNoIn Semi ExpressionOpt Semi ExpressionOpt RParen Statement
+                     { fp (AST.NN (AST.JSForVar $1 $2 $3 $4 $5 $6 $7 $8 $9 $10)) }
+                   | For LParen LeftHandSideExpression In Expression RParen Statement
+                     { fp (AST.NN (AST.JSForIn $1 $2 $3 $4 $5 $6 $7)) }
+                   | For LParen Var VariableDeclarationNoIn In Expression RParen Statement
+                     { fp (AST.NN (AST.JSForVarIn $1 $2 $3 $4 $5 $6 $7 $8)) }
 
 -- ContinueStatement :                                                                      See 12.7
 --         continue [no LineTerminator here] Identifieropt ;
 -- TODO: deal with [no LineTerminator here]
 ContinueStatement :: { AST.JSNode }
-ContinueStatement : 'continue' AutoSemi             { (AST.NS (AST.JSContinue [$2]) (ss $1)) } 
-                  | 'continue' Identifier AutoSemi  { (AST.NS (AST.JSContinue [$2,$3]) (ss $1)) } 
+ContinueStatement : Continue AutoSemi             { fp (AST.NN (AST.JSContinue $1 []   $2)) }
+                  | Continue Identifier AutoSemi  { fp (AST.NN (AST.JSContinue $1 [$2] $3)) }
 
 -- BreakStatement :                                                                         See 12.8
 --         break [no LineTerminator here] Identifieropt ;
 -- TODO: deal with [no LineTerminator here]
 BreakStatement :: { AST.JSNode }
-BreakStatement : 'break' AutoSemi             { (AST.NS (AST.JSBreak []   [$2]) (ss $1)) } 
-               | 'break' Identifier AutoSemi  { (AST.NS (AST.JSBreak [$2] [$3]) (ss $1)) } 
+BreakStatement : Break AutoSemi             { fp (AST.NN (AST.JSBreak $1 []   $2)) }
+               | Break Identifier AutoSemi  { fp (AST.NN (AST.JSBreak $1 [$2] $3)) }
 
 -- ReturnStatement :                                                                        See 12.9
 --         return [no LineTerminator here] Expressionopt ;
 -- TODO: deal with [no LineTerminator here]
 ReturnStatement :: { AST.JSNode }
-ReturnStatement : 'return' AutoSemi             { (AST.NS (AST.JSReturn [$2])    (ss $1)) } 
-                | 'return' Expression AutoSemi  { (AST.NS (AST.JSReturn [$2,$3]) (ss $1)) } 
+ReturnStatement : Return AutoSemi             { fp (AST.NN (AST.JSReturn $1 []   $2)) }
+                | Return Expression AutoSemi  { fp (AST.NN (AST.JSReturn $1 [$2] $3)) }
 
 -- WithStatement :                                                                          See 12.10
 --         with ( Expression ) Statement
 WithStatement :: { AST.JSNode }
-WithStatement : 'with' '(' Expression ')' Statement AutoSemi  { (AST.NS (AST.JSWith $3 [$5,$6]) (ss $1)) }
+WithStatement : With LParen Expression RParen Statement AutoSemi  { fp (AST.NN (AST.JSWith $1 $2 $3 $4 [$5,$6])) }
 
 -- SwitchStatement :                                                                        See 12.11
 --         switch ( Expression ) CaseBlock
 SwitchStatement :: { AST.JSNode }
-SwitchStatement : 'switch' '(' Expression ')' CaseBlock { (AST.NS (AST.JSSwitch $3 $5) (ss $1)) } 
+SwitchStatement : Switch LParen Expression RParen CaseBlock { (AST.NN (AST.JSSwitch $1 $2 $3 $4 $5)) }
 
 -- CaseBlock :                                                                              See 12.11
 --         { CaseClausesopt }
 --         { CaseClausesopt DefaultClause CaseClausesopt }
 CaseBlock :: { [AST.JSNode] }
-CaseBlock : '{' CaseClausesOpt '}'                              { $2            {- CaseBlock1 -}}
-          | '{' CaseClausesOpt DefaultClause CaseClausesOpt '}' { ($2++($3:$4)) {- CaseBlock2 -}}
+CaseBlock : LBrace CaseClausesOpt RBrace                              { ($1:$2)++[$3]           {- CaseBlock1 -}}
+          | LBrace CaseClausesOpt DefaultClause CaseClausesOpt RBrace { ($1:$2)++[$3]++$4++[$5] {- CaseBlock2 -}}
 
 -- CaseClauses :                                                                            See 12.11
 --         CaseClause
@@ -861,31 +1018,31 @@
 CaseClausesOpt :: { [AST.JSNode] }
 CaseClausesOpt : CaseClause                { [$1] {- CaseClauses1 -}}
                | CaseClausesOpt CaseClause { ($1++[$2]) {- CaseClauses2 -}}
-               |                           { [] }  
+               |                           { [fp (AST.NT (AST.JSLiteral "") tokenPosnEmpty []) ] } -- { [] }
 
 -- CaseClause :                                                               See 12.11
 --        case Expression : StatementListopt
 CaseClause :: { AST.JSNode }
-CaseClause : 'case' Expression ':' StatementList  { (AST.NS (AST.JSCase $2 $4) (ss $1)) }
-           | 'case' Expression ':'                { (AST.NS (AST.JSCase $2 (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }
+CaseClause : Case Expression Colon StatementList  { fp (AST.NN (AST.JSCase $1 $2 $3 $4)) }
+           | Case Expression Colon                { fp (AST.NN (AST.JSCase $1 $2 $3 (AST.NN (AST.JSStatementList [])))) }
 
 -- DefaultClause :                                                            See 12.11
 --        default : StatementListopt
 DefaultClause :: { AST.JSNode }
-DefaultClause : 'default' ':'                { (AST.NS (AST.JSDefault (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }
-              | 'default' ':' StatementList  { (AST.NS (AST.JSDefault $3) (ss $1)) }
+DefaultClause : Default Colon                { fp (AST.NN (AST.JSDefault $1 $2 (AST.NN (AST.JSStatementList [])))) }
+              | Default Colon StatementList  { fp (AST.NN (AST.JSDefault $1 $2 $3)) }
 
 -- LabelledStatement :                                                        See 12.12
 --        Identifier : Statement
 LabelledStatement :: { AST.JSNode }
-LabelledStatement : Identifier ':' Statement { (AST.NS (AST.JSLabelled $1 $3) (ex $1)) }
+LabelledStatement : Identifier Colon Statement { fp (AST.NN (AST.JSLabelled $1 $2 $3)) }
 
 -- ThrowStatement :                                                           See 12.13
 --        throw [no LineTerminator here] Expression ;
 -- TODO : sort out no LineTerminator here
 --        Does it need a semi at the end?
 ThrowStatement :: { AST.JSNode }
-ThrowStatement : 'throw' Expression { (AST.NS (AST.JSThrow $2) (ss $1)) }
+ThrowStatement : Throw Expression { fp (AST.NN (AST.JSThrow $1 $2)) }
 
 -- Note: worked in updated syntax as per https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch
 --   i.e., 0 or more catches, then an optional finally
@@ -894,9 +1051,9 @@
 --        try Block Finally
 --        try Block Catch Finally
 TryStatement :: { AST.JSNode }
-TryStatement : 'try' Block Catches         { (AST.NS (AST.JSTry $2 $3) (ss $1))         {- TryStatement1 -} }
-             | 'try' Block Finally         { (AST.NS (AST.JSTry $2 [$3]) (ss $1))       {- TryStatement2 -} }
-             | 'try' Block Catches Finally { (AST.NS (AST.JSTry $2 ($3++[$4])) (ss $1)) {- TryStatement3 -} }
+TryStatement : Try Block Catches         { fp (AST.NN (AST.JSTry $1 $2 $3)         ) {- TryStatement1 -} }
+             | Try Block Finally         { fp (AST.NN (AST.JSTry $1 $2 [$3])       ) {- TryStatement2 -} }
+             | Try Block Catches Finally { fp (AST.NN (AST.JSTry $1 $2 ($3++[$4])) ) {- TryStatement3 -} }
 
 Catches :: { [AST.JSNode] }
 Catches : Catch         { [$1]       {- Catches 1 -} }
@@ -908,34 +1065,34 @@
 -- <Catch> ::= 'catch' '(' Identifier ')' <Block>
 --           | 'catch' '(' Identifier 'if' ConditionalExpression ')' <Block>
 Catch :: { AST.JSNode }
-Catch : 'catch' '(' Identifier ')' Block                 { (AST.NS (AST.JSCatch $3 [] $5) (ss $1)) }
-      | 'catch' '(' Identifier 'if' ConditionalExpression ')' Block  { (AST.NS (AST.JSCatch $3 $5 $7) (ss $1)) }
+Catch : CatchL LParen Identifier RParen Block                 { fp (AST.NN (AST.JSCatch $1 $2 $3 [] $4 $5) ) }
+      | CatchL LParen Identifier If ConditionalExpression RParen Block { fp (AST.NN (AST.JSCatch $1 $2 $3 ($4:$5) $6 $7)) }
 
 -- Finally :                                                                  See 12.14
 --        finally Block
 Finally :: { AST.JSNode }
-Finally : 'finally' Block { (AST.NS (AST.JSFinally $2) (ss $1)) }
+Finally : FinallyL Block { fp (AST.NN (AST.JSFinally $1 $2)) }
 
 -- DebuggerStatement :                                                        See 12.15
 --        debugger ;
 DebuggerStatement :: { AST.JSNode }
-DebuggerStatement : 'debugger' AutoSemi { (AST.NS (AST.JSLiteral "debugger") (ss $1)) }
+DebuggerStatement : 'debugger' AutoSemi { fp (AST.NT (AST.JSLiteral "debugger") (ss $1) (gc $1)) }
 
 -- FunctionDeclaration :                                                      See clause 13
 --        function Identifier ( FormalParameterListopt ) { FunctionBody }
 FunctionDeclaration :: { AST.JSNode }
-FunctionDeclaration : 'function' Identifier '(' FormalParameterList ')' '{' FunctionBody '}'
-                      { (AST.NS (AST.JSFunction $2 $4 $7) (ss $1)) }
-                    | 'function' Identifier '(' ')' '{' FunctionBody '}'
-                      { (AST.NS (AST.JSFunction $2 [] $6) (ss $1)) }
+FunctionDeclaration : Function Identifier LParen FormalParameterList RParen LBrace FunctionBody RBrace
+                      { fp (AST.NN (AST.JSFunction $1 $2 $3 $4 $5 $6 $7 $8) ) }
+                    | Function Identifier LParen RParen LBrace FunctionBody RBrace
+                      { fp (AST.NN (AST.JSFunction $1 $2 $3 [] $4 $5 $6 $7) ) }
 
 -- FunctionExpression :                                                       See clause 13
 --        function Identifieropt ( FormalParameterListopt ) { FunctionBody }
 FunctionExpression :: { AST.JSNode }
-FunctionExpression : 'function' IdentifierOpt '(' ')' '{' FunctionBody '}'                      
-                     { (AST.NS (AST.JSFunctionExpression $2 [] $6) (ss $1)) }
-                   | 'function' IdentifierOpt '(' FormalParameterList ')' '{' FunctionBody '}'  
-                     { (AST.NS (AST.JSFunctionExpression $2 $4 $7) (ss $1)) }
+FunctionExpression : Function IdentifierOpt LParen RParen LBrace FunctionBody RBrace
+                     { fp (AST.NN (AST.JSFunctionExpression $1 $2 $3 [] $4 $5 $6 $7) ) }
+                   | Function IdentifierOpt LParen FormalParameterList RParen LBrace FunctionBody RBrace
+                     { fp (AST.NN (AST.JSFunctionExpression $1 $2 $3 $4 $5 $6 $7 $8) ) }
 
 IdentifierOpt :: { [AST.JSNode] }
 IdentifierOpt : Identifier { [$1] {- IdentifierOpt -}}
@@ -946,29 +1103,40 @@
 --        FormalParameterList , Identifier
 FormalParameterList :: { [AST.JSNode] }
 FormalParameterList : Identifier                          { [$1] {- FormalParameterList -}}
-                    | FormalParameterList ',' Identifier  { ($1++[$3]) }
+                    | FormalParameterList Comma Identifier  { ($1++[$2]++[$3]) }
 
 -- FunctionBody :                                                             See clause 13
 --        SourceElementsopt
 FunctionBody :: { AST.JSNode }
-FunctionBody : SourceElements { (AST.NS (AST.JSFunctionBody [$1]) (ex $1)) }
-             |                { (AST.NS (AST.JSFunctionBody [])   SpanEmpty) } 
+FunctionBody : SourceElements { (AST.NN (AST.JSFunctionBody [$1]) ) }
+             |                { (AST.NN (AST.JSFunctionBody []  ) ) }
 
 -- Program :                                                                  See clause 14
 --        SourceElementsopt
 
 Program :: { AST.JSNode }
-Program : SourceElementsTop { $1 {- Program -}}
+Program : SourceElementsTop Eof { (combineTop $1 $2) {- Program -}}
 
+-- For debugging/other entry points
+LiteralMain :: { AST.JSNode }
+LiteralMain : Literal Eof { $1 }
+
+PrimaryExpressionMain :: { AST.JSNode }
+PrimaryExpressionMain : PrimaryExpression Eof { $1 }
+
+StatementMain :: { AST.JSNode }
+StatementMain : Statement Eof { $1 }
+
+
 -- SourceElements :                                                           See clause 14
 --        SourceElement
 --        SourceElements SourceElement
 SourceElements :: { AST.JSNode }
-SourceElements : SourceElement                { (AST.NS (AST.JSSourceElements [$1]) (ex $1)) }
+SourceElements : SourceElement                { fp (AST.NN (AST.JSSourceElements [$1]) ) }
                | SourceElements SourceElement { (combineSourceElements $1 $2) }
 
 SourceElementsTop :: { AST.JSNode }
-SourceElementsTop : SourceElement                   { (AST.NS (AST.JSSourceElementsTop [$1]) (ex $1)) }
+SourceElementsTop : SourceElement                   { fp (AST.NN (AST.JSSourceElementsTop [$1]) ) }
                   | SourceElementsTop SourceElement { (combineSourceElementsTop $1 $2) }
 
 -- SourceElement :
@@ -976,67 +1144,80 @@
 --       FunctionDeclaration
 SourceElement :: { AST.JSNode }
 SourceElement : Statement            { $1 {- SourceElement1 -} }
-              | FunctionDeclaration  { $1 {- SourceElement2 -} } 
+              | FunctionDeclaration  { $1 {- SourceElement2 -} }
 
 {
 
--- combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x] (ss $1)) )
 combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineSourceElements (AST.NS (AST.JSSourceElements xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElements (xs++[x1])) s1) 
+combineSourceElements (AST.NN (AST.JSSourceElements xs)) x1 = fp (AST.NN (AST.JSSourceElements (xs++[x1])))
 
--- combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x] (ss $1)) )
 combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineSourceElementsTop (AST.NS (AST.JSSourceElementsTop xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElementsTop (xs++[x1])) s1)
+combineSourceElementsTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))
 
--- combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode
--- combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )
--- combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )
+combineTop :: AST.JSNode -> AST.JSNode -> AST.JSNode
+combineTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))
+
 combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode
-combineStatements (AST.NS (AST.JSStatementList xs) s1) (AST.NS (AST.JSStatementList ys) s2) = (AST.NS (AST.JSStatementList (xs++ys) ) s1)
-combineStatements (AST.NS (AST.JSStatementList xs) s1) y = (AST.NS (AST.JSStatementList (xs++[y])) s1)
+combineStatements (AST.NN (AST.JSStatementList xs)) (AST.NN (AST.JSStatementList ys)) = fp (AST.NN (AST.JSStatementList (xs++ys) ))
+combineStatements (AST.NN (AST.JSStatementList xs)) y = fp (AST.NN (AST.JSStatementList (xs++[y])))
 
-parseError :: Token -> P a 
-parseError = throwError . UnexpectedToken 
+parseError :: Token -> Alex a
+-- parseError = throwError . UnexpectedToken
+parseError tok = alexError (show tok)
 
--- flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode
--- flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)
---                         where
---                           litComma :: [AST.JSNode]
---                           litComma = [(AST.JSLiteral ",")]
-flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode
-flattenExpression (AST.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1)
-                        where
-                          litComma :: [AST.JSNode]
-                          litComma = [AST.NS (AST.JSLiteral ",") SpanEmpty]
+-- --------------------------------
 
-mex :: [AST.JSNode] -> SrcSpan
-mex [] = SpanEmpty
+{-
+mex :: [AST.JSNode] -> TokenPosn
+mex [] = tokenPosnEmpty
 mex xs = ex (head xs)
 
-ex :: AST.JSNode -> SrcSpan
-ex (AST.NS _node span) = span
+ex :: AST.JSNode -> TokenPosn
+ex (AST.NN _node span _c) = span
+-}
 
-ss token = toSrcSpan (token_span token) 
+--ss token = toSrcSpan (token_span token)
+ss :: Token -> TokenPosn
+ss token = token_span token
 
+-- ------------------------------
+
+gc :: Token -> [CommentAnnotation]
+gc token = token_comment token
+mgc :: [Token] -> [CommentAnnotation]
+mgc xs = concatMap gc xs
+
 {-
-ex :: AST.JSNode -> AST.JSNode
-ex (AST.NS node span) = node
+-- Get node comment
+gnc   (AST.NN _ _ ca)  = ca
+mgnc [(AST.NN _ _ ca)] = ca
 
-mex :: [AST.JSNode] -> [AST.JSNode]
-mex xs = map ex xs
+-- Prepend a comment
+pc :: AST.JSNode -> [CommentAnnotation] -> AST.JSNode
+pc (AST.NN node span cs2) cs1 = (AST.NN node span (cs1++cs2))
 
-combine :: [AST.JSNode] -> AST.JSNode
-combine [] = AST.NSS [] SpanEmpty
-combine xs = AST.NSS (mex xs) span
+mpc :: [AST.JSNode] -> [CommentAnnotation] -> [AST.JSNode]
+-- mpc [(AST.NN node span cs2)]    cs1 = [(AST.NN node span (cs1++cs2))]
+mpc ((AST.NN node span cs2):xs) cs1 =  (AST.NN node span (cs1++cs2)):xs
+-}
+
+-- ---------------------------------------------------------------------
+
+fp :: AST.JSNode -> AST.JSNode
+fp (AST.NN x)      = (AST.NN x)
+fp (AST.NT x p cs) = (AST.NT x p cs)
+{-
+fp (AST.NN x p cs) = (AST.NN x p' cs)
   where
-    (AST.NS _ span) = head xs
+    p' = case (filter (/= NoComment) cs) of
+      [] -> p
+      [(CommentA posn _)]    -> posn
+      ((CommentA posn _):_)  -> posn
 -}
-    
+
 }
 
 -- Set emacs mode
--- Local Variables: 
+-- Local Variables:
 -- mode:haskell
--- End:             
+-- End:
diff --git a/src/Language/JavaScript/Parser/Lexer.hs b/src/Language/JavaScript/Parser/Lexer.hs
--- a/src/Language/JavaScript/Parser/Lexer.hs
+++ b/src/Language/JavaScript/Parser/Lexer.hs
@@ -4,7 +4,11 @@
 
 module Language.JavaScript.Parser.Lexer (
     Token(..)
+    , AlexPosn(..)
+    , Alex
     , lexCont
+    , alexError
+    , runAlex
     ) where
 
 --import Control.Monad
@@ -36,6 +40,228 @@
 #else
 import GlaExts
 #endif
+{-# LINE 1 "templates/wrappers.hs" #-}
+{-# LINE 1 "templates/wrappers.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 1 "templates/wrappers.hs" #-}
+-- -----------------------------------------------------------------------------
+-- Alex wrapper code.
+--
+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
+-- it for any purpose whatsoever.
+
+import Data.Word (Word8)
+{-# LINE 22 "templates/wrappers.hs" #-}
+
+import qualified Data.Bits
+
+-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
+utf8Encode :: Char -> [Word8]
+utf8Encode = map fromIntegral . go . ord
+ where
+  go oc
+   | oc <= 0x7f       = [oc]
+
+   | oc <= 0x7ff      = [ 0xc0 + (oc `Data.Bits.shiftR` 6)
+                        , 0x80 + oc Data.Bits..&. 0x3f
+                        ]
+
+   | oc <= 0xffff     = [ 0xe0 + (oc `Data.Bits.shiftR` 12)
+                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
+                        , 0x80 + oc Data.Bits..&. 0x3f
+                        ]
+   | otherwise        = [ 0xf0 + (oc `Data.Bits.shiftR` 18)
+                        , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)
+                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
+                        , 0x80 + oc Data.Bits..&. 0x3f
+                        ]
+
+
+
+type Byte = Word8
+
+-- -----------------------------------------------------------------------------
+-- The input type
+
+
+type AlexInput = (AlexPosn,     -- current position,
+                  Char,         -- previous char
+                  [Byte],       -- pending bytes on current char
+                  String)       -- current input string
+
+ignorePendingBytes (p,c,ps,s) = (p,c,s)
+
+alexInputPrevChar :: AlexInput -> Char
+alexInputPrevChar (p,c,bs,s) = c
+
+alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))
+alexGetByte (p,c,[],[]) = Nothing
+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c 
+                                  (b:bs) = utf8Encode c
+                              in p' `seq`  Just (b, (p', c, bs, s))
+
+
+{-# LINE 88 "templates/wrappers.hs" #-}
+
+{-# LINE 102 "templates/wrappers.hs" #-}
+
+{-# LINE 117 "templates/wrappers.hs" #-}
+
+-- -----------------------------------------------------------------------------
+-- Token positions
+
+-- `Posn' records the location of a token in the input text.  It has three
+-- fields: the address (number of chacaters preceding the token), line number
+-- and column of a token within the file. `start_pos' gives the position of the
+-- start of the file and `eof_pos' a standard encoding for the end of file.
+-- `move_pos' calculates the new position after traversing a given character,
+-- assuming the usual eight character tab stops.
+
+
+data AlexPosn = AlexPn !Int !Int !Int
+        deriving (Eq,Show)
+
+alexStartPos :: AlexPosn
+alexStartPos = AlexPn 0 1 1
+
+alexMove :: AlexPosn -> Char -> AlexPosn
+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)
+alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1
+alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)
+
+
+-- -----------------------------------------------------------------------------
+-- Default monad
+
+
+data AlexState = AlexState {
+        alex_pos :: !AlexPosn,  -- position at current input location
+        alex_inp :: String,     -- the current input
+        alex_chr :: !Char,      -- the character before the input
+        alex_bytes :: [Byte],
+        alex_scd :: !Int        -- the current startcode
+
+      , alex_ust :: AlexUserState -- AlexUserState will be defined in the user program
+
+    }
+
+-- Compile with -funbox-strict-fields for best results!
+
+runAlex :: String -> Alex a -> Either String a
+runAlex input (Alex f) 
+   = case f (AlexState {alex_pos = alexStartPos,
+                        alex_inp = input,       
+                        alex_chr = '\n',
+                        alex_bytes = [],
+
+                        alex_ust = alexInitUserState,
+
+                        alex_scd = 0}) of Left msg -> Left msg
+                                          Right ( _, a ) -> Right a
+
+newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }
+
+instance Monad Alex where
+  m >>= k  = Alex $ \s -> case unAlex m s of 
+                                Left msg -> Left msg
+                                Right (s',a) -> unAlex (k a) s'
+  return a = Alex $ \s -> Right (s,a)
+
+alexGetInput :: Alex AlexInput
+alexGetInput
+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} -> 
+        Right (s, (pos,c,bs,inp))
+
+alexSetInput :: AlexInput -> Alex ()
+alexSetInput (pos,c,bs,inp)
+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} of
+                  s@(AlexState{}) -> Right (s, ())
+
+alexError :: String -> Alex a
+alexError message = Alex $ \s -> Left message
+
+alexGetStartCode :: Alex Int
+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)
+
+alexSetStartCode :: Int -> Alex ()
+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())
+
+alexMonadScan = do
+  inp <- alexGetInput
+  sc <- alexGetStartCode
+  case alexScan inp sc of
+    AlexEOF -> alexEOF
+    AlexError inp' -> alexError "lexical error"
+    AlexSkip  inp' len -> do
+        alexSetInput inp'
+        alexMonadScan
+    AlexToken inp' len action -> do
+        alexSetInput inp'
+        action (ignorePendingBytes inp) len
+
+-- -----------------------------------------------------------------------------
+-- Useful token actions
+
+type AlexAction result = AlexInput -> Int -> Alex result
+
+-- just ignore this token and scan another one
+-- skip :: AlexAction result
+skip input len = alexMonadScan
+
+-- ignore this token, but set the start code to a new value
+-- begin :: Int -> AlexAction result
+begin code input len = do alexSetStartCode code; alexMonadScan
+
+-- perform an action for this token, and set the start code to a new value
+andBegin :: AlexAction result -> Int -> AlexAction result
+(action `andBegin` code) input len = do alexSetStartCode code; action input len
+
+token :: (AlexInput -> Int -> token) -> AlexAction token
+token t input len = return (t input len)
+
+
+
+-- -----------------------------------------------------------------------------
+-- Monad (with ByteString input)
+
+{-# LINE 319 "templates/wrappers.hs" #-}
+
+
+-- -----------------------------------------------------------------------------
+-- Basic wrapper
+
+{-# LINE 345 "templates/wrappers.hs" #-}
+
+
+-- -----------------------------------------------------------------------------
+-- Basic wrapper, ByteString version
+
+{-# LINE 363 "templates/wrappers.hs" #-}
+
+{-# LINE 376 "templates/wrappers.hs" #-}
+
+
+-- -----------------------------------------------------------------------------
+-- Posn wrapper
+
+-- Adds text positions to the basic model.
+
+{-# LINE 393 "templates/wrappers.hs" #-}
+
+
+-- -----------------------------------------------------------------------------
+-- Posn wrapper, ByteString version
+
+{-# LINE 408 "templates/wrappers.hs" #-}
+
+
+-- -----------------------------------------------------------------------------
+-- GScan wrapper
+
+-- For compatibility with previous versions of Alex, and because we can.
+
 alex_base :: AlexAddr
 alex_base = AlexA# "\x00\x00\x00\x00\xf7\xff\xff\xff\xfc\xff\xff\xff\xe4\x00\x00\x00\xdc\xff\xff\xff\x63\xff\xff\xff\x44\xff\xff\xff\xa6\x00\x00\x00\xb5\x01\x00\x00\x2a\x02\x00\x00\xa9\x02\x00\x00\x28\x03\x00\x00\xa7\x03\x00\x00\x26\x04\x00\x00\xa5\x04\x00\x00\x89\xff\xff\xff\x24\x05\x00\x00\xa3\x05\x00\x00\xdd\x05\x00\x00\x10\x06\x00\x00\x8f\x06\x00\x00\xfd\xff\xff\xff\x0e\x07\x00\x00\x40\x07\x00\x00\x7d\x07\x00\x00\xb2\x01\x00\x00\xb8\x07\x00\x00\xe5\x07\x00\x00\x1a\x08\x00\x00\x36\x08\x00\x00\x6e\x08\x00\x00\x8c\xff\xff\xff\xe9\x08\x00\x00\x22\x09\x00\x00\x9d\x09\x00\x00\xcc\x09\x00\x00\x05\x0a\x00\x00\x3e\x0a\x00\x00\x77\x0a\x00\x00\xb0\x0a\x00\x00\xe9\x0a\x00\x00\x8d\xff\xff\xff\x18\x0b\x00\x00\x8b\x0b\x00\x00\xbc\x0b\x00\x00\x8a\xff\xff\xff\x29\x0c\x00\x00\x83\xff\xff\xff\x92\x0c\x00\x00\xfb\xff\xff\xff\x7e\xff\xff\xff\xf1\x0c\x00\x00\x09\x0d\x00\x00\x64\x0d\x00\x00\xb5\xff\xff\xff\x07\x00\x00\x00\xcd\xff\xff\xff\xdb\xff\xff\xff\xc8\xff\xff\xff\xc7\xff\xff\xff\x5b\x0e\x00\x00\x47\x0f\x00\x00\x1c\x10\x00\x00\xc7\x00\x00\x00\x3b\x02\x00\x00\x56\x00\x00\x00\x37\x0e\x00\x00\xdd\xff\xff\xff\x91\x10\x00\x00\x7d\x08\x00\x00\x48\x0f\x00\x00\x1d\x10\x00\x00\xe5\x0d\x00\x00\x3e\x08\x00\x00\x11\x11\x00\x00\x35\x00\x00\x00\x51\x11\x00\x00\x83\x11\x00\x00\x0b\x06\x00\x00\x91\x07\x00\x00\x53\x0e\x00\x00\x91\x11\x00\x00\x43\x00\x00\x00\x75\x00\x00\x00\xb1\x11\x00\x00\x47\x00\x00\x00\xe5\xff\xff\xff\xf0\x11\x00\x00\x60\x12\x00\x00\x71\x12\x00\x00\xa1\x12\x00\x00\x21\x13\x00\x00\xa1\x13\x00\x00\x21\x14\x00\x00\xa1\x14\x00\x00\x21\x15\x00\x00\xa1\x15\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x12\x16\x00\x00\x00\x00\x00\x00\x83\x16\x00\x00\x00\x00\x00\x00\xf4\x16\x00\x00\xc4\x17\x00\x00\x00\x00\x00\x00\x6c\x17\x00\x00\x00\x00\x00\x00\xad\x17\x00\x00\x00\x00\x00\x00\xee\x17\x00\x00\x00\x00\x00\x00\x2f\x18\x00\x00\xff\x18\x00\x00\x0c\x00\x00\x00\x66\x19\x00\x00\x26\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x19\x00\x00\x8a\x00\x00\x00\x97\x1a\x00\x00\xf7\x1a\x00\x00\xb7\x1a\x00\x00\x00\x00\x00\x00\xec\x1b\x00\x00\x62\x1c\x00\x00\x22\x1c\x00\x00\x00\x00\x00\x00\x57\x1d\x00\x00\xcd\x1d\x00\x00\x8d\x1d\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x4b\x00\x00\x00\x2e\x01\x00\x00\x3d\x00\x00\x00\x48\x00\x00\x00\x92\x1e\x00\x00\x66\x11\x00\x00\x7b\x17\x00\x00\xc2\x0e\x00\x00\xa2\x1e\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\xe3\x1e\x00\x00\x32\x01\x00\x00\x82\x00\x00\x00\xc6\x18\x00\x00\x63\x1f\x00\x00\x59\x1e\x00\x00\x4f\x01\x00\x00\xfd\x00\x00\x00\xb8\x1e\x00\x00\x05\x20\x00\x00\xf1\x20\x00\x00\x2c\x21\x00\x00\x90\x00\x00\x00\x69\x0b\x00\x00\x49\x0f\x00\x00\x1e\x10\x00\x00\x7c\x21\x00\x00\x93\x01\x00\x00\xdc\x21\x00\x00\xe5\x1f\x00\x00\x57\x12\x00\x00\x2f\x07\x00\x00\x32\x08\x00\x00\x1a\x01\x00\x00\x4c\x22\x00\x00\x12\x20\x00\x00\xe1\x20\x00\x00\xbc\x22\x00\x00\x2c\x23\x00\x00\x4f\x23\x00\x00\xe0\x1b\x00\x00\x70\x23\x00\x00\xe0\x23\x00\x00\x3b\x01\x00\x00\x48\x07\x00\x00\x03\x24\x00\x00\x33\x24\x00\x00\x55\x24\x00\x00\x64\x1e\x00\x00\xbd\x01\x00\x00\x8b\x24\x00\x00\x01\x25\x00\x00\xa2\x06\x00\x00\x36\x25\x00\x00\xb0\x01\x00\x00\x65\x25\x00\x00\xe1\x25\x00\x00\x1b\x26\x00\x00\x4c\x26\x00\x00\x88\x26\x00\x00\x06\x27\x00\x00\x84\x27\x00\x00\x65\x24\x00\x00\x02\x28\x00\x00\xdb\x01\x00\x00\x34\x28\x00\x00\x6f\x28\x00\x00\xaf\x28\x00\x00\xbe\x01\x00\x00\x2f\x29\x00\x00\x6f\x29\x00\x00\xef\x29\x00\x00\x6f\x2a\x00\x00\x9c\x2a\x00\x00\xda\x2a\x00\x00\xf4\x2a\x00\x00\x74\x2b\x00\x00\xf4\x2b\x00\x00\x5b\x1d\x00\x00\x30\x2c\x00\x00\xb0\x2c\x00\x00\xe1\x2c\x00\x00\x15\x2d\x00\x00\x4f\x2d\x00\x00\x82\x2d\x00\x00\xab\x2d\x00\x00\xc7\x2d\x00\x00\x47\x2e\x00\x00\xc7\x2e\x00\x00\xeb\x2e\x00\x00\x11\x2f\x00\x00\x91\x2f\x00\x00\xbd\x2f\x00\x00\x3d\x30\x00\x00\x6b\x30\x00\x00\xeb\x30\x00\x00\x29\x31\x00\x00\xa9\x31\x00\x00\xdd\x31\x00\x00\x5d\x32\x00\x00\x93\x32\x00\x00\xce\x32\x00\x00\x06\x33\x00\x00\xc6\x33\x00\x00\xc7\x33\x00\x00\x02\x34\x00\x00\x39\x34\x00\x00\x6e\x34\x00\x00\xad\x34\x00\x00\x2d\x35\x00\x00\xad\x35\x00\x00\xed\x35\x00\x00\x6d\x36\x00\x00\xa7\x36\x00\x00\xe1\x36\x00\x00\x0a\x37\x00\x00\x8a\x37\x00\x00\xca\x37\x00\x00\xed\x37\x00\x00\x6d\x38\x00\x00\x8a\x38\x00\x00\xc6\x38\x00\x00\x46\x39\x00\x00\x5f\x39\x00\x00\xdf\x39\x00\x00\x1e\x3a\x00\x00\x9e\x3a\x00\x00\xb8\x3a\x00\x00\xea\x3a\x00\x00\x1f\x3b\x00\x00\x5e\x3b\x00\x00\x16\x07\x00\x00\x9d\x3b\x00\x00\xd1\x3b\x00\x00\xf0\x3b\x00\x00\x14\x24\x00\x00\x30\x3c\x00\x00\xb0\x3c\x00\x00\xbc\x18\x00\x00\xce\x3c\x00\x00\xc3\x01\x00\x00\xed\x3c\x00\x00\x1d\x3d\x00\x00\x51\x3d\x00\x00\x7a\x12\x00\x00\x21\x3e\x00\x00\xe6\x3d\x00\x00\xdb\x02\x00\x00\x64\x3e\x00\x00\x2b\x0d\x00\x00\x82\x3e\x00\x00\xcb\x01\x00\x00\xfe\x3e\x00\x00\x78\x3f\x00\x00\xf2\x3f\x00\x00\x6c\x40\x00\x00\xe6\x40\x00\x00\x5e\x41\x00\x00\xd6\x41\x00\x00\x4e\x42\x00\x00\xc4\x42\x00\x00\x38\x43\x00\x00\xaa\x43\x00\x00\xc2\x01\x00\x00\x16\x44\x00\x00\x82\x44\x00\x00\xee\x44\x00\x00\x5a\x45\x00\x00\xc4\x45\x00\x00\x5b\x0a\x00\x00\x7f\x0d\x00\x00\x2a\x46\x00\x00\x8c\x46\x00\x00\xee\x46\x00\x00\xb9\x01\x00\x00\x4a\x47\x00\x00\xa4\x47\x00\x00\xfe\x47\x00\x00\x58\x48\x00\x00\xcf\x01\x00\x00\x6b\x0e\x00\x00\xb0\x48\x00\x00\x86\x04\x00\x00\x07\x03\x00\x00\x00\x49\x00\x00\x4e\x49\x00\x00\x77\x02\x00\x00\x98\x49\x00\x00\xe0\x49\x00\x00\x22\x4a\x00\x00\x62\x4a\x00\x00\x00\x00\x00\x00\xa3\x4a\x00\x00\xe6\x4a\x00\x00\x2b\x4b\x00\x00\x70\x4b\x00\x00\xb7\x4b\x00\x00\x02\x4c\x00\x00\x4d\x4c\x00\x00\x9e\x4c\x00\x00\xf1\x4c\x00\x00\x46\x4d\x00\x00\xa1\x4d\x00\x00\xfc\x4d\x00\x00\x59\x4e\x00\x00\x98\x02\x00\x00\xba\x4e\x00\x00\xe5\x3f\x00\x00\x1f\x4f\x00\x00\x84\x4f\x00\x00\x84\x17\x00\x00\x35\x08\x00\x00\x65\x20\x00\x00\xef\x4f\x00\x00\xa6\x02\x00\x00\x24\x03\x00\x00\x5e\x50\x00\x00\xcb\x03\x00\x00\xcf\x50\x00\x00\xa9\x03\x00\x00\x42\x51\x00\x00\xb5\x51\x00\x00\x28\x52\x00\x00\x57\x03\x00\x00\x9d\x52\x00\x00\x71\x40\x00\x00\x14\x53\x00\x00\x8b\x53\x00\x00\x02\x54\x00\x00\xe0\x3d\x00\x00\xad\x04\x00\x00\x7b\x54\x00\x00\xf4\x54\x00\x00\x6d\x55\x00\x00\xe8\x55\x00\x00\x63\x56\x00\x00\xde\x56\x00\x00\x59\x57\x00\x00\xd4\x57\x00\x00\x4f\x58\x00\x00\xca\x58\x00\x00\x47\x59\x00\x00\xc4\x59\x00\x00\x41\x5a\x00\x00\xbe\x5a\x00\x00\x3b\x5b\x00\x00\xba\x5b\x00\x00\x51\x07\x00\x00\xba\x5c\x00\x00\x8c\x03\x00\x00\x7a\x5c\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x16\x0a\x00\x00\xcc\x02\x00\x00\xec\x5c\x00\x00\xff\x3a\x00\x00\x6c\x5d\x00\x00\xec\x5d\x00\x00\x2c\x03\x00\x00\x6b\x5e\x00\x00\xdb\x5e\x00\x00\x00\x00\x00\x00\xb7\x5f\x00\x00\x00\x00\x00\x00\x79\x5e\x00\x00\x5c\x07\x00\x00\xaf\x57\x00\x00\xd6\x20\x00\x00\x5e\x5e\x00\x00\x94\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x07\x00\x00\x7d\x03\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x1e\x04\x00\x00\x22\x05\x00\x00\x00\x00\x00\x00\x77\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x99\x08\x00\x00\x6d\x04\x00\x00\x76\x04\x00\x00\x7a\x04\x00\x00\x00\x00\x00\x00\x6f\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
 
@@ -48,8 +274,8 @@
 alex_deflt :: AlexAddr
 alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\x8e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x6b\x00\x6d\x00\x6d\x00\x6f\x00\x6f\x00\xff\xff\x75\x00\x75\x00\x7c\x00\x7c\x00\x80\x00\x80\x00\x84\x00\x84\x00\xff\xff\xff\xff\x8e\x00\x8e\x00\x8e\x00\x90\x00\x90\x00\xff\xff\x3e\x00\xff\xff\x3e\x00\x3e\x00\x3c\x00\xff\xff\x3c\x00\x3c\x00\x9a\x00\xff\xff\x9a\x00\x9a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
-alex_accept = listArray (0::Int,446) [[(AlexAccSkip)],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAccSkip)],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))]]
-{-# LINE 308 "src-dev/Language/JavaScript/Parser/Lexer.x" #-}
+alex_accept = listArray (0::Int,446) [[(AlexAccSkip)],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAccSkip)],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))]]
+{-# LINE 313 "src-dev/Language/JavaScript/Parser/Lexer.x" #-}
 
 
 {-
@@ -60,8 +286,8 @@
 
 -}
 classifyToken :: Token -> Int
-classifyToken token =
-   case token of
+classifyToken aToken =
+   case aToken of
       IdentifierToken {} -> divide
       NullToken {} -> divide
       TrueToken {} -> divide
@@ -76,90 +302,142 @@
       _other      -> reg
 
 
--- Each right-hand side has type :: String -> Token
-
-lexToken :: P Token
+{-
+--lexToken :: Alex Token
 lexToken = do
-  -- location <- getLocation
-  -- input <- getInput
-  input@(_,_,_,inp) <- alexGetInput
-  -- startCode <- getStartCode
-  lt <- getLastToken
-  -- case alexScan (location, input) (classifyToken lt) of
-  case alexScan input (classifyToken lt) of
-    AlexEOF -> return endOfFileToken
-    AlexError _ -> lexicalError
-    AlexSkip rest _len -> do
-       -- setLocation nextLocation
-       -- setInput rest
-       alexSetInput rest
+  inp <- alexGetInput
+  lt  <- getLastToken
+  case alexScan inp (classifyToken lt) of
+    AlexEOF        -> alexEOF
+    AlexError inp'@(pos,_,_,_) -> alexError ("lexical error @ line " ++ show (getLineNum(pos)) ++
+                                             " and column " ++ show (getColumnNum(pos)))
+    AlexSkip inp' _len -> do
+       alexSetInput inp'
        lexToken
-    AlexToken rest len action -> do
-       --setLocation nextLocation
-       --setInput rest
-       alexSetInput rest
-       --token <- action (mkSrcSpan location $ decColumn 1 nextLocation) len input
-       token <- action (ignorePendingBytes input) len inp
+    AlexToken inp' len action -> do
+       alexSetInput inp'
+       token <- action (ignorePendingBytes inp) len
        setLastToken token
        return token
+-}
 
+--lexToken :: Alex Token
+lexToken = do
+  inp <- alexGetInput
+  lt  <- getLastToken
+  case lt of
+    TailToken {} -> alexEOF
+    _other ->
+      case alexScan inp (classifyToken lt) of
+        AlexEOF        -> do
+          token <- tailToken
+          setLastToken token
+          return token
+        AlexError inp'@(pos,_,_,_) -> alexError ("lexical error @ line " ++ show (getLineNum(pos)) ++
+                                                 " and column " ++ show (getColumnNum(pos)))
+        AlexSkip inp' _len -> do
+          alexSetInput inp'
+          lexToken
+        AlexToken inp' len action -> do
+          alexSetInput inp'
+          token <- action (ignorePendingBytes inp) len
+          setLastToken token
+          return token
+
+
 -- This is called by the Happy parser.
-lexCont :: (Token -> P a) -> P a
+--lexCont :: (Token -> P a) -> P a
+--lexCont :: (Token -> Alex Token) -> Alex Token
 lexCont cont = do
    lexLoop
    where
    -- lexLoop :: P a
    lexLoop = do
       tok <- lexToken
-      --tok <- alexMonadScan
       case tok of
-         {-
          CommentToken {} -> do
             addComment tok
             lexLoop
-         LineJoinToken {} -> lexLoop
-         -}
-         _other -> cont tok
+         WsToken {} -> do
+            addComment tok
+            lexLoop
+         _other -> do
+            cs <- getComment
+            let tok' = tok{ token_comment=(toCommentAnnotation cs) }
+            setComment []
+            cont tok'
 
+toCommentAnnotation []    = [NoComment]
+--toCommentAnnotation xs =  reverse $ map (\tok -> (CommentA (token_span tok) (token_literal tok))) xs
 
-utf8Encode :: Char -> [Byte]
-utf8Encode c = head (UTF8.encodeUTF8' [UTF8.c2w c])
+toCommentAnnotation xs =  reverse $ map go xs
+  where
+    go tok@(CommentToken {}) = (CommentA (token_span tok) (token_literal tok))
+    go tok@(WsToken      {}) = (WhiteSpace (token_span tok) (token_literal tok))
 
---alexEOF = EOFToken alexSpanEmpty
+-- ---------------------------------------------------------------------
 
--- ignorePendingBytes :: forall t t1 t2 t3. (t, t1, t2, t3) -> (t, t1, t3)
-ignorePendingBytes (p,c,_ps,s) = (p,c,s)
+getLineNum :: AlexPosn -> Int
+getLineNum (AlexPn _offset lineNum _colNum) = lineNum
 
+getColumnNum :: AlexPosn -> Int
+getColumnNum (AlexPn _offset _lineNum colNum) = colNum
 
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar (p,c,bs,s) = c
+-- ---------------------------------------------------------------------
 
-alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
-alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))
-alexGetByte (_p,_c,[],[]) = Nothing
-alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c
-                                  (b:bs) = utf8Encode c
-                              in p' `seq`  Just (b, (p', c, bs, s))
+getLastToken :: Alex Token
+getLastToken = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, previousToken ust)
 
-alexMove :: AlexPosn -> Char -> AlexPosn
-alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)
-alexMove (AlexPn a l _c) '\n' = AlexPn (a+1) (l+1)   1
-alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)
+setLastToken :: Token -> Alex ()
+setLastToken tok = Alex $ \s -> Right (s{alex_ust=(alex_ust s){previousToken=tok}}, ())
 
+getComment :: Alex [Token]
+--getComments = reverse <$> Alex $ \s@AlexState{alex_ust=ust} -> Right (s, comments ust)
+getComment = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, comment ust)
+
+
+addComment :: Token -> Alex ()
+addComment c = Alex $ \s ->  Right (s{alex_ust=(alex_ust s){comment=c:(  comment (alex_ust s)  )}}, ())
+
+
+setComment :: [Token] -> Alex ()
+setComment cs = Alex $ \s -> Right (s{alex_ust=(alex_ust s){comment=cs }}, ())
+
+alexEOF :: Alex Token
+alexEOF = do return (EOFToken tokenPosnEmpty [])
+
+tailToken :: Alex Token
+tailToken = do return (TailToken tokenPosnEmpty [])
+
+adapt :: (TokenPosn -> Int -> String -> Alex Token) -> (AlexPosn,Char,String) -> Int -> Alex Token
+adapt f loc@(p@(AlexPn offset line col),_,inp) len =
+  (f (TokenPn offset line col) len inp)
+
+{-
+mkComment :: (AlexPosn,Char,String) -> Int -> Alex Token
+mkComment loc@(p@(AlexPn offset line col),_,inp) len = do
+  return (CommentToken (TokenPn offset line col) (take len inp))
+-}
+
+toTokenPosn :: AlexPosn -> TokenPosn
+toTokenPosn (AlexPn offset line col) = (TokenPn offset line col)
+
 -- ---------------------------------------------------------------------
 
 -- a keyword or an identifier (the syntax overlaps)
-keywordOrIdent :: String -> AlexSpan -> P Token
+keywordOrIdent :: String -> TokenPosn -> Alex Token
 keywordOrIdent str location
    = return $ case Map.lookup str keywords of
-         Just symbol -> symbol location str
-         Nothing -> IdentifierToken location str
+         Just symbol -> symbol location str []
+         Nothing -> IdentifierToken location str []
 
 -- mapping from strings to keywords
-keywords :: Map.Map String (AlexSpan -> String -> Token)
+--keywords :: Map.Map String (TokenPosn -> String -> Token)
+keywords :: Map.Map String (TokenPosn -> String -> [CommentAnnotation] -> Token)
 keywords = Map.fromList keywordNames
 
-keywordNames :: [(String, AlexSpan -> String -> Token)]
+--keywordNames :: [(String, TokenPosn -> String -> Token)]
+keywordNames :: [(String, TokenPosn -> String -> [CommentAnnotation] -> Token)]
 keywordNames =
    [
     ("break",BreakToken),
@@ -250,51 +528,54 @@
 bof = 1
 divide = 2
 reg = 3
-alex_action_4 =  \loc len str -> keywordOrIdent (take len str) loc 
-alex_action_5 =  mkString stringToken 
-alex_action_6 =  mkString hexIntegerToken 
-alex_action_7 =  mkString regExToken 
-alex_action_8 =  mkString decimalToken 
-alex_action_10 =  mkString assignToken
-alex_action_11 =  symbolToken  DivToken
-alex_action_12 =  symbolToken  SemiColonToken
-alex_action_13 =  symbolToken  CommaToken
-alex_action_14 =  symbolToken  HookToken
-alex_action_15 =  symbolToken  ColonToken
-alex_action_16 =  symbolToken  OrToken
-alex_action_17 =  symbolToken  AndToken
-alex_action_18 =  symbolToken  BitwiseOrToken
-alex_action_19 =  symbolToken  BitwiseXorToken
-alex_action_20 =  symbolToken  BitwiseAndToken
-alex_action_21 =  symbolToken  StrictEqToken
-alex_action_22 =  symbolToken  EqToken
-alex_action_23 =  mkString assignToken
-alex_action_24 =  symbolToken  SimpleAssignToken
-alex_action_25 =  symbolToken  StrictNeToken
-alex_action_26 =  symbolToken  NeToken
-alex_action_27 =  symbolToken  LshToken
-alex_action_28 =  symbolToken  LeToken
-alex_action_29 =  symbolToken  LtToken
-alex_action_30 =  symbolToken  UrshToken
-alex_action_31 =  symbolToken  RshToken
-alex_action_32 =  symbolToken  GeToken
-alex_action_33 =  symbolToken  GtToken
-alex_action_34 =  symbolToken  IncrementToken
-alex_action_35 =  symbolToken  DecrementToken
-alex_action_36 =  symbolToken  PlusToken
-alex_action_37 =  symbolToken  MinusToken
-alex_action_38 =  symbolToken  MulToken
-alex_action_39 =  symbolToken  ModToken
-alex_action_40 =  symbolToken  NotToken
-alex_action_41 =  symbolToken  BitwiseNotToken
-alex_action_42 =  symbolToken  DotToken
-alex_action_43 =  symbolToken  LeftBracketToken
-alex_action_44 =  symbolToken  RightBracketToken
-alex_action_45 =  symbolToken  LeftCurlyToken
-alex_action_46 =  symbolToken  RightCurlyToken
-alex_action_47 =  symbolToken  LeftParenToken
-alex_action_48 =  symbolToken  RightParenToken
-alex_action_49 =  symbolToken  CondcommentEndToken
+alex_action_1 =  adapt (mkString wsToken) 
+alex_action_2 =  adapt (mkString commentToken) 
+alex_action_3 =  adapt (mkString commentToken) 
+alex_action_4 =  \ap@(loc,_,str) len -> keywordOrIdent (take len str) (toTokenPosn loc) 
+alex_action_5 =  adapt (mkString stringToken) 
+alex_action_6 =  adapt (mkString hexIntegerToken) 
+alex_action_7 =  adapt (mkString regExToken) 
+alex_action_8 =  adapt (mkString decimalToken) 
+alex_action_10 =  adapt (mkString assignToken)
+alex_action_11 =  adapt (symbolToken DivToken)
+alex_action_12 =  adapt (symbolToken  SemiColonToken)
+alex_action_13 =  adapt (symbolToken  CommaToken)
+alex_action_14 =  adapt (symbolToken  HookToken)
+alex_action_15 =  adapt (symbolToken  ColonToken)
+alex_action_16 =  adapt (symbolToken  OrToken)
+alex_action_17 =  adapt (symbolToken  AndToken)
+alex_action_18 =  adapt (symbolToken  BitwiseOrToken)
+alex_action_19 =  adapt (symbolToken  BitwiseXorToken)
+alex_action_20 =  adapt (symbolToken  BitwiseAndToken)
+alex_action_21 =  adapt (symbolToken  StrictEqToken)
+alex_action_22 =  adapt (symbolToken  EqToken)
+alex_action_23 =  adapt (mkString assignToken)
+alex_action_24 =  adapt (symbolToken  SimpleAssignToken)
+alex_action_25 =  adapt (symbolToken  StrictNeToken)
+alex_action_26 =  adapt (symbolToken  NeToken)
+alex_action_27 =  adapt (symbolToken  LshToken)
+alex_action_28 =  adapt (symbolToken  LeToken)
+alex_action_29 =  adapt (symbolToken  LtToken)
+alex_action_30 =  adapt (symbolToken  UrshToken)
+alex_action_31 =  adapt (symbolToken  RshToken)
+alex_action_32 =  adapt (symbolToken  GeToken)
+alex_action_33 =  adapt (symbolToken  GtToken)
+alex_action_34 =  adapt (symbolToken  IncrementToken)
+alex_action_35 =  adapt (symbolToken  DecrementToken)
+alex_action_36 =  adapt (symbolToken  PlusToken)
+alex_action_37 =  adapt (symbolToken  MinusToken)
+alex_action_38 =  adapt (symbolToken  MulToken)
+alex_action_39 =  adapt (symbolToken  ModToken)
+alex_action_40 =  adapt (symbolToken  NotToken)
+alex_action_41 =  adapt (symbolToken  BitwiseNotToken)
+alex_action_42 =  adapt (symbolToken  DotToken)
+alex_action_43 =  adapt (symbolToken  LeftBracketToken)
+alex_action_44 =  adapt (symbolToken  RightBracketToken)
+alex_action_45 =  adapt (symbolToken  LeftCurlyToken)
+alex_action_46 =  adapt (symbolToken  RightCurlyToken)
+alex_action_47 =  adapt (symbolToken  LeftParenToken)
+alex_action_48 =  adapt (symbolToken  RightParenToken)
+alex_action_49 =  adapt (symbolToken  CondcommentEndToken)
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
diff --git a/src/Language/JavaScript/Parser/LexerUtils.hs b/src/Language/JavaScript/Parser/LexerUtils.hs
--- a/src/Language/JavaScript/Parser/LexerUtils.hs
+++ b/src/Language/JavaScript/Parser/LexerUtils.hs
@@ -12,12 +12,13 @@
 
 module Language.JavaScript.Parser.LexerUtils (
   StartCode
-  , Action
   -- , AlexInput
   -- , alexGetChar
   -- , alexInputPrevChar
   , symbolToken
   , mkString
+  , commentToken
+  , wsToken
   , regExToken
   , decimalToken
   -- , endOfLine
@@ -25,79 +26,62 @@
   , assignToken
   , hexIntegerToken
   , stringToken
-  , lexicalError
+  --, lexicalError
   ) where
 
-import Control.Monad (liftM)
-import Control.Monad.Error.Class (throwError)
+--import Control.Monad.Error.Class (throwError)
 import Language.JavaScript.Parser.Token as Token
-import Language.JavaScript.Parser.ParserMonad
 import Language.JavaScript.Parser.SrcLocation
 import Prelude hiding (span)
 
 -- Functions for building tokens
 
 type StartCode = Int
---type Action = AlexSpan -> Int -> String -> P Token
-type Action result = AlexInput -> Int -> result
---type Action = AlexInput -> Int
 
-{-
-endOfLine :: P Token -> Action
-endOfLine lexToken span _len _str = do
-   setLastEOL $ spanStartPoint span
-   lexToken
--}
-
---symbolToken :: (AlexSpan -> Token) -> Action
-symbolToken :: (Monad m) => (t -> a) -> t -> t1 -> t2 -> m a
---symbolToken :: (Monad m) => (AlexSpan -> Token) -> t -> t1 -> t2 -> m Token
-symbolToken mkToken location _ _ = return (mkToken location)
---symbolToken mkToken location = return (mkToken location)
+symbolToken :: Monad m => (TokenPosn -> [CommentAnnotation] -> Token) -> TokenPosn -> Int -> String -> m Token
+symbolToken mkToken location _ _ = return (mkToken location [])
 
 -- special tokens for the end of file and end of line
 endOfFileToken :: Token
-endOfFileToken = EOFToken alexSpanEmpty
--- dedentToken = DedentToken SpanEmpty
-
+endOfFileToken = EOFToken tokenPosnEmpty []
 
---mkString :: (AlexSpan -> String -> Token) -> Action
 mkString
-  :: (Monad m) => (t -> [a1] -> a) -> t -> Int -> [a1] -> m a
-mkString toToken loc len str = do
-   return $ toToken loc (take len str)
-
-mkStringRemoveContinuation
-  :: (Monad m) => (t -> [a1] -> a) -> t -> Int -> [a1] -> m a
-mkStringRemoveContinuation toToken loc len str = do
-   -- token <- toToken loc (take len str)
-   return $ toToken loc (take len str)
+  :: (Monad m) => (TokenPosn -> String -> Token) -> TokenPosn -> Int -> String -> m Token
+mkString toToken loc len str = do return (toToken loc (take len str))
 
-decimalToken :: AlexSpan -> String -> Token
-decimalToken loc str = DecimalToken loc str
+decimalToken :: TokenPosn -> String -> Token
+decimalToken loc str = DecimalToken loc str []
 
-hexIntegerToken :: AlexSpan -> String -> Token
-hexIntegerToken loc str = HexIntegerToken loc str
+hexIntegerToken :: TokenPosn -> String -> Token
+hexIntegerToken loc str = HexIntegerToken loc str []
 
-assignToken :: AlexSpan -> String -> Token
-assignToken loc str = AssignToken loc str
+assignToken :: TokenPosn -> String -> Token
+assignToken loc str = AssignToken loc str []
 
-regExToken :: AlexSpan -> String -> Token
-regExToken loc str = RegExToken loc str
+regExToken :: TokenPosn -> String -> Token
+regExToken loc str = RegExToken loc str []
 
-stringToken :: AlexSpan -> String -> Token
-stringToken loc str = StringToken loc str1 delimiter
+stringToken :: TokenPosn -> String -> Token
+stringToken loc str = StringToken loc str1 delimiter []
   where
-    -- str1 = init $ tail str
-    str1 = stripLineContinuations $ init $ tail str
+    str1 = init $ tail str
+    -- str1 = stripLineContinuations $ init $ tail str
     delimiter = head str
 
+commentToken :: TokenPosn -> String -> Token
+commentToken loc str = CommentToken loc str []
+
+wsToken :: TokenPosn -> String -> Token
+wsToken loc str = WsToken loc str []
+
 -- ---------------------------------------------------------------------
 -- Strip out any embedded line continuations
 -- Recognise by \ followed by $lf | $cr | $ls | $ps | $cr $lf
 -- $ls = \x2028, $ps = \x2029
+stripLineContinuations :: String -> String
 stripLineContinuations xs = doStripLineContinuations [] [] xs
 
+doStripLineContinuations :: String -> String -> String -> String
 doStripLineContinuations acc matched xs
   | xs == []      = acc -- Assume we are passed well-formed strings, should not be a dangling match
   | matched == [] = if (head xs == '\\')
@@ -111,38 +95,12 @@
 
 -- -----------------------------------------------------------------------------
 -- Functionality required by Alex
-
--- type AlexInput = (SrcLocation, String)
 {-
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar _ = error "alexInputPrevChar not used"
-
-alexGetChar :: AlexInput -> Maybe (Char, AlexInput)
-alexGetChar (loc, input)
-   | null input  = Nothing
-   | otherwise = Just (nextChar, (nextLoc, rest))
-   where
-   nextChar = head input
-   rest = tail input
-   nextLoc = moveChar nextChar loc
-
-moveChar :: Char -> SrcLocation -> SrcLocation
-moveChar '\n' = incLine 1
-moveChar '\t' = incTab
-moveChar '\r' = id
-moveChar _    = incColumn 1
--}
-
 lexicalError :: P a
 lexicalError = do
   location <- getLocation
   c <- liftM head getInput
   -- (_,c,_,_) <- getInput
   throwError $ UnexpectedChar c location
-
-{-
-readOctNoO :: String -> Integer
-readOctNoO (zero:rest) = read (zero:'O':rest)
 -}
-
 -- EOF
diff --git a/src/Language/JavaScript/Parser/ParseError.hs b/src/Language/JavaScript/Parser/ParseError.hs
--- a/src/Language/JavaScript/Parser/ParseError.hs
+++ b/src/Language/JavaScript/Parser/ParseError.hs
@@ -2,32 +2,33 @@
 -- |
 -- Module      : Language.JavaScript.ParseError
 -- Based on language-python version by Bernie Pope
--- Copyright   : (c) 2009 Bernie Pope 
+-- Copyright   : (c) 2009 Bernie Pope
 -- License     : BSD-style
 -- Stability   : experimental
 -- Portability : ghc
 --
--- Error values for the lexer and parser. 
+-- Error values for the lexer and parser.
 -----------------------------------------------------------------------------
 
 module Language.JavaScript.Parser.ParseError ( ParseError (..) ) where
 
 --import Language.JavaScript.Parser.Pretty
-import Language.JavaScript.Parser.SrcLocation (AlexPosn)
-import Language.JavaScript.Parser.Token (Token)
 import Control.Monad.Error.Class
+import Language.JavaScript.Parser.Lexer
+import Language.JavaScript.Parser.SrcLocation (TokenPosn)
+-- import Language.JavaScript.Parser.Token (Token)
 
-data ParseError  
-   = UnexpectedToken Token           
-     -- ^ An error from the parser. Token found where it should not be. 
+data ParseError
+   = UnexpectedToken Token
+     -- ^ An error from the parser. Token found where it should not be.
      --   Note: tokens contain their own source span.
-   | UnexpectedChar Char AlexPosn 
+   | UnexpectedChar Char TokenPosn
      -- ^ An error from the lexer. Character found where it should not be.
-   | StrError String                 
+   | StrError String
      -- ^ A generic error containing a string message. No source location.
    deriving (Eq, {- Ord,-} Show)
 
 instance Error ParseError where
    noMsg = StrError ""
-   strMsg = StrError 
+   strMsg = StrError
 
diff --git a/src/Language/JavaScript/Parser/Parser.hs b/src/Language/JavaScript/Parser/Parser.hs
--- a/src/Language/JavaScript/Parser/Parser.hs
+++ b/src/Language/JavaScript/Parser/Parser.hs
@@ -1,77 +1,64 @@
 module Language.JavaScript.Parser.Parser (
-   -- * Parsing 
+   -- * Parsing
      parse
    , readJs
-   , parseFile  
+   -- , readJsKeepComments
+   , parseFile
    -- * Parsing expressions
    -- parseExpr
    , parseUsing
-   , showStripped  
-   , showStrippedMaybe  
+   , showStripped
+   , showStrippedMaybe
    ) where
 
 import Language.JavaScript.Parser.ParseError
---import Language.JavaScript.Parser.Grammar
 import Language.JavaScript.Parser.Grammar5
 import Language.JavaScript.Parser.Lexer
-import Language.JavaScript.Parser.ParserMonad
 import qualified Language.JavaScript.Parser.AST as AST
 
--- | Parse one compound statement, or a sequence of simple statements. 
--- Generally used for interactive input, such as from the command line of an interpreter. 
--- Return comments in addition to the parsed statements.
-parseStmtKeepComments :: String -- ^ The input stream (Javascript source code). 
-      -> String -- ^ The name of the Javascript source (filename or input device). 
-      -> Either ParseError (AST.JSNode, [Token]) 
-         -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.
-parseStmtKeepComments input _srcName = 
-   execParserKeepComments parseProgram state 
-   where
-     state = initialState input 
 
-
--- | Parse one compound statement, or a sequence of simple statements. 
--- Generally used for interactive input, such as from the command line of an interpreter. 
+-- | Parse one compound statement, or a sequence of simple statements.
+-- Generally used for interactive input, such as from the command line of an interpreter.
 -- Return comments in addition to the parsed statements.
-parse :: String -- ^ The input stream (Javascript source code). 
-      -> String -- ^ The name of the Javascript source (filename or input device). 
-      -> Either ParseError AST.JSNode 
-         -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.
-parse input _srcName = 
-   execParser parseProgram state 
-   where
-     state = initialState input 
+parse :: String -- ^ The input stream (Javascript source code).
+      -> String -- ^ The name of the Javascript source (filename or input device).
+      -> Either String  AST.JSNode
+         -- ^ An error or maybe the abstract syntax tree (AST) of zero
+         -- or more Javascript statements, plus comments.
+parse input _srcName = runAlex input parseProgram
 
+
 readJs :: String -> AST.JSNode
 readJs input = do
   case (parse input "src") of
     Left msg -> error (show msg)
-    Right p -> p  
+    Right p -> p
 
 parseFile :: FilePath -> IO AST.JSNode
 parseFile filename =
-  do 
+  do
      x <- readFile (filename)
      return $ readJs x
 
-showStripped ast = AST.showStripped ast 
+showStripped :: AST.JSNode -> String
+showStripped ast = AST.showStripped ast
 
+showStrippedMaybe :: Show a => Either a AST.JSNode -> String
 showStrippedMaybe maybeAst = do
   case maybeAst of
     Left msg -> "Left (" ++ show msg ++ ")"
     Right p -> "Right (" ++ AST.showStripped p ++ ")"
 
--- | Parse one compound statement, or a sequence of simple statements. 
--- Generally used for interactive input, such as from the command line of an interpreter. 
+-- | Parse one compound statement, or a sequence of simple statements.
+-- Generally used for interactive input, such as from the command line of an interpreter.
 -- Return comments in addition to the parsed statements.
-parseUsing :: 
-      P AST.JSNode
-      -> String -- ^ The input stream (Javascript source code). 
-      -> String -- ^ The name of the Javascript source (filename or input device). 
-      -> Either ParseError AST.JSNode 
-         -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.
-parseUsing p input _srcName = 
-   execParser p state 
-   where
-     state = initialState input
+parseUsing ::
+      Alex AST.JSNode -- ^ The parser to be used
+      -> String -- ^ The input stream (Javascript source code).
+      -> String -- ^ The name of the Javascript source (filename or input device).
+      -> Either String AST.JSNode
+         -- ^ An error or maybe the abstract syntax tree (AST) of zero
+         -- or more Javascript statements, plus comments.
+
+parseUsing p input _srcName = runAlex input p
 
diff --git a/src/Language/JavaScript/Parser/ParserMonad.hs b/src/Language/JavaScript/Parser/ParserMonad.hs
--- a/src/Language/JavaScript/Parser/ParserMonad.hs
+++ b/src/Language/JavaScript/Parser/ParserMonad.hs
@@ -1,181 +1,37 @@
 {-# OPTIONS  #-}
 -----------------------------------------------------------------------------
 -- |
--- Module      : Language.JavaScript.ParserMonad 
--- Based on language-python version by Bernie Pope
--- Copyright   : (c) 2009 Bernie Pope 
+-- Module      : Language.JavaScript.ParserMonad
+-- Copyright   : (c) 2012 Alan Zimmerman
 -- License     : BSD-style
 -- Stability   : experimental
 -- Portability : ghc
 --
--- Monad support for JavaScript parser and lexer. 
+-- Monad support for JavaScript parser and lexer.
 -----------------------------------------------------------------------------
 
-module Language.JavaScript.Parser.ParserMonad 
-   ( P
-   , execParser
-   , execParserKeepComments
-   , runParser
-   , thenP
-   , returnP
-   , alexSetInput  
-   , alexGetInput  
-   , setLocation
-   , getLocation
-   , getInput
-   , setInput
-   , getLastToken
-   , setLastToken
-   -- , setLastEOL
-   -- , getLastEOL
-   , ParseError (..)
-   , ParseState (..)
-   , initialState
-   , addComment
-   , getComments
-   , spanError
-   , AlexInput 
-   , Byte  
-   ) where
-
-import Control.Applicative ((<$>))
-import Control.Monad.Error as Error
-import Control.Monad.State.Class
-import Control.Monad.State.Strict as State
-import Language.JavaScript.Parser.ParseError (ParseError (..))
-import Language.JavaScript.Parser.SrcLocation (AlexPosn (..), alexStartPos, alexSpanEmpty, Span (..))
-import Language.JavaScript.Parser.Token (Token (..))
-import Prelude hiding (span)
-import Data.Word (Word8)
-
-internalError :: String -> P a 
-internalError = throwError . StrError 
-
-spanError :: Span a => a -> String -> P b 
---spanError x str = throwError $ StrError $ unwords [prettyText $ getSpan x, str]
-spanError x str = throwError $ StrError $ show ([show (getSpan x), str])
-
-type Byte = Word8
-
-type AlexInput = (AlexPosn,     -- current position,
-                  Char,         -- previous char
-                  [Byte],       -- pending bytes on current char
-                  String)       -- current input string
+module Language.JavaScript.Parser.ParserMonad
+       (
+         AlexUserState(..)
+       , alexInitUserState
+       ) where
 
+import Language.JavaScript.Parser.Token
+import Language.JavaScript.Parser.SrcLocation
 
-data ParseState = ParseState {
-        alex_pos :: !AlexPosn,  -- position at current input location
-        alex_inp :: String,     -- the current input
-        alex_chr :: !Char,      -- the character before the input
-        alex_bytes :: [Byte],
-        alex_scd :: !Int        -- the current startcode
-        
-    , previousToken :: !Token  -- the previous token
-    , comments :: [Token]      -- accumulated comments 
-    }
+data AlexUserState = AlexUserState
+  {
+    previousToken :: !Token  -- ^the previous token
+  , comment :: [Token]       -- ^the previous comment, if any
+  }
 
-initialState :: String -> ParseState
-initialState inp 
-   = ParseState 
-   { alex_pos = alexStartPos
-   , alex_inp = inp
-   , alex_chr = '\n'          
-   , alex_bytes = []             
-   , alex_scd = 0               
-   , previousToken = initToken
-   , comments = []
-   }
-{-
-data ParseState = 
-   ParseState 
-   { location :: !SrcLocation -- position at current input location
-   -- , input :: !String         -- the current input
-   , input :: !AlexInput      -- the current input     
-   , previousToken :: !Token  -- the previous token
-   -- , lastEOL :: !SrcSpan      -- location of the most recent end-of-line encountered
-   , comments :: [Token]      -- accumulated comments 
+alexInitUserState :: AlexUserState
+alexInitUserState = AlexUserState
+   {
+     previousToken = initToken
+   , comment = []
    }
-   deriving Show
--}
 
 initToken :: Token
---initToken = NewlineToken SpanEmpty 
-initToken = CommentToken alexSpanEmpty ""
-
-
-
-type P a = StateT ParseState (Either ParseError) a
-
-execParser :: P a -> ParseState -> Either ParseError a
-execParser = evalStateT 
-
-execParserKeepComments :: P a -> ParseState -> Either ParseError (a, [Token])
-execParserKeepComments parser astate = 
-   evalStateT (parser >>= \x -> getComments >>= \c -> return (x, c)) astate
-
-runParser :: P a -> ParseState -> Either ParseError (a, ParseState)
-runParser = runStateT 
-
-{-# INLINE returnP #-}
-returnP :: a -> P a
-returnP = return 
-
-{-# INLINE thenP #-}
-thenP :: P a -> (a -> P b) -> P b
-thenP = (>>=)
-
-{-
-failP :: SrcSpan -> [String] -> P a
-failP span strs = throwError (prettyText span ++ ": " ++ unwords strs) 
--}
-{-
-setLastEOL :: SrcSpan -> P ()
-setLastEOL span = modify $ \s -> s { lastEOL = span }
-
-getLastEOL :: P SrcSpan
-getLastEOL = gets lastEOL
--}
-
-alexGetInput :: P AlexInput
-alexGetInput
- -- = P $ \s@ParseState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} -> 
- --        Right (s, (pos,c,bs,inp))
- = do
-   pos <- gets alex_pos
-   c   <- gets alex_chr
-   bs  <- gets alex_bytes
-   inp <- gets alex_inp
-   return (pos,c,bs,inp)
-
-alexSetInput :: AlexInput -> P ()
-alexSetInput (pos,c,bs,inp)
- -- = P $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} of
- --                  s@(ParseState{}) -> Right (s, ())
- = modify $ \s -> s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp}
-
-
-setLocation :: AlexPosn -> P ()
-setLocation loc = modify $ \s -> s { alex_pos = loc } 
-
-getLocation :: P AlexPosn
-getLocation = gets alex_pos 
-
-getInput :: P String 
-getInput = gets alex_inp 
-
-setInput :: String -> P ()
-setInput inp = modify $ \s -> s { alex_inp = inp }
-
-getLastToken :: P Token
-getLastToken = gets previousToken 
-
-setLastToken :: Token -> P ()
-setLastToken tok = modify $ \s -> s { previousToken = tok } 
-
-addComment :: Token -> P ()
-addComment c = do
-   oldComments <- gets comments
-   modify $ \s -> s { comments = c : oldComments }
+initToken = CommentToken tokenPosnEmpty "" []
 
-getComments :: P [Token]
-getComments = reverse <$> gets comments
diff --git a/src/Language/JavaScript/Parser/SrcLocation.hs b/src/Language/JavaScript/Parser/SrcLocation.hs
--- a/src/Language/JavaScript/Parser/SrcLocation.hs
+++ b/src/Language/JavaScript/Parser/SrcLocation.hs
@@ -1,297 +1,21 @@
-{-# LANGUAGE CPP, DeriveDataTypeable #-}
------------------------------------------------------------------------------
--- |
--- Module      : Language.Python.Common.SrcLocation
--- Copyright   : (c) 2009 Bernie Pope
--- License     : BSD-style
--- Maintainer  : bjpop@csse.unimelb.edu.au
--- Stability   : experimental
--- Portability : ghc
---
--- Source location information for the Python lexer and parser. This module
--- provides single-point locations and spans, and conversions between them.
------------------------------------------------------------------------------
-
+{-# LANGUAGE DeriveDataTypeable #-}
 module Language.JavaScript.Parser.SrcLocation (
-  -- * Construction
-  AlexPosn (..),
-  AlexSpan (..),
-  alexStartPos,
-  alexSpanEmpty,
-  SrcLocation (..),
-  SrcSpan (..),
-  Span (..),
-  toSrcSpan,
-  spanning,
-  mkSrcSpan,
-  combineSrcSpans,
-  initialSrcLocation,
-  spanStartPoint,
-  -- * Modification
-  incColumn,
-  decColumn,
-  incLine,
-  incTab,
-  -- endCol,
-  -- * Projection of components of a span
-  -- endRow,
-  -- startCol,
-  -- startRow
-) where
+  TokenPosn(..)
+  , tokenPosnEmpty
+  ) where
 
 import Data.Data
-import Prelude hiding (span)
 
--- | `Posn' records the location of a token in the input text.  It has three
+-- | `TokenPosn' records the location of a token in the input text.  It has three
 -- fields: the address (number of characters preceding the token), line number
--- and column of a token within the file. `start_pos' gives the position of the
--- start of the file and `eof_pos' a standard encoding for the end of file.
--- `move_pos' calculates the new position after traversing a given character,
--- assuming the usual eight character tab stops.
-
-data AlexPosn = AlexPn !Int -- address (number of characters preceding the token)
-                       !Int -- line number
-                       !Int -- column
-        deriving (Eq,Show)
-
-alexStartPos :: AlexPosn
-alexStartPos = AlexPn 0 1 1
-
--- AZ bringing this in as SrcSpan replacement.
-type AlexSpan = (AlexPosn, Char, String)
-alexSpanEmpty :: AlexSpan
-alexSpanEmpty = (alexStartPos, '\n', "")
-
--- | A location for a syntactic entity from the source code.
--- The location is specified by its filename, and starting row
--- and column.
-data SrcLocation =
-   Sloc { sloc_filename :: !String
-        , sloc_address :: {-# UNPACK #-} !Int  -- address (number of characters preceding the token)
-        , sloc_row :: {-# UNPACK #-} !Int
-        , sloc_column :: {-# UNPACK #-} !Int
-        }
-   | NoLocation
-   deriving (Eq,Ord,Show,Typeable,Data)
-{-
-instance Pretty SrcLocation where
-   pretty = pretty . getSpan
--}
-
--- | Types which have a span.
-class Span a where
-   getSpan :: a -> SrcSpan
-   getSpan _x = SpanEmpty
-
--- | Create a new span which encloses two spanned things.
-spanning :: (Span a, Span b) => a -> b -> SrcSpan
-spanning x y = combineSrcSpans (getSpan x) (getSpan y)
-
-instance Span a => Span [a] where
-   getSpan [] = SpanEmpty
-   getSpan [x] = getSpan x
-   getSpan list@(x:_xs) = combineSrcSpans (getSpan x) (getSpan (last list))
-
-instance Span a => Span (Maybe a) where
-   getSpan Nothing = SpanEmpty
-   getSpan (Just x) = getSpan x
-
-instance (Span a, Span b) => Span (Either a b) where
-   getSpan (Left x) = getSpan x
-   getSpan (Right x) = getSpan x
-
-instance (Span a, Span b) => Span (a, b) where
-   getSpan (x,y) = spanning x y
-
-instance Span SrcSpan where
-   getSpan = id
-
--- ++AZ++ adding this
-instance Span AlexPosn where
-  getSpan ap = toSrcSpan (ap,'\n',"")
-
-toSrcSpan :: AlexSpan -> SrcSpan
-toSrcSpan ((AlexPn _addr line col),_,_) = SpanPoint { span_filename = "", span_row = line, span_column = col}
--- ++AZ++ end
-
--- | Construct the initial source location for a file.
-initialSrcLocation :: String -> SrcLocation
-initialSrcLocation filename
-    = Sloc
-      { sloc_filename = filename
-      , sloc_address = 1
-      , sloc_row = 1
-      , sloc_column = 1
-      }
-
--- | Decrement the column of a location, only if they are on the same row.
-decColumn :: Int -> SrcLocation -> SrcLocation
-decColumn n loc
-   | n < col = loc { sloc_column = col - n }
-   | otherwise = loc
-   where
-   col = sloc_column loc
-
--- | Increment the column of a location.
-incColumn :: Int -> SrcLocation -> SrcLocation
-incColumn n loc@(Sloc { sloc_column = col })
-   = loc { sloc_column = col + n }
-incColumn _ NoLocation = NoLocation
-
--- | Increment the column of a location by one tab stop.
-incTab :: SrcLocation -> SrcLocation
-incTab loc@(Sloc { sloc_column = col })
-   = loc { sloc_column = newCol }
-   where
-   newCol = col + 8 - (col - 1) `mod` 8
-incTab NoLocation = NoLocation
-
--- | Increment the line number (row) of a location by one.
-incLine :: Int -> SrcLocation -> SrcLocation
-incLine n loc@(Sloc { sloc_row = row })
-   = loc { sloc_column = 1, sloc_row = row + n }
-incLine _ NoLocation = NoLocation
-{-
-Inspired heavily by compiler/basicTypes/SrcLoc.lhs
-A SrcSpan delimits a portion of a text file.
--}
-
--- | Source location spanning a contiguous section of a file.
-data SrcSpan
-    -- | A span which starts and ends on the same line.
-  = SpanCoLinear
-    { span_filename     :: !String
-    , span_row          :: {-# UNPACK #-} !Int
-    , span_start_column :: {-# UNPACK #-} !Int
-    , span_end_column   :: {-# UNPACK #-} !Int
-    }
-    -- | A span which starts and ends on different lines.
-  | SpanMultiLine
-    { span_filename     :: !String
-    , span_start_row    :: {-# UNPACK #-} !Int
-    , span_start_column :: {-# UNPACK #-} !Int
-    , span_end_row      :: {-# UNPACK #-} !Int
-    , span_end_column   :: {-# UNPACK #-} !Int
-    }
-    -- | A span which is actually just one point in the file.
-  | SpanPoint
-    { span_filename :: !String
-    , span_row      :: {-# UNPACK #-} !Int
-    , span_column   :: {-# UNPACK #-} !Int
-    }
-    -- | No span information.
-  | SpanEmpty
-   deriving (Eq,Ord,Show,Read,Typeable,Data)
-
-{-
-instance Show SrcSpan where
-  show (s@(SpanCoLinear filename row start end)) =
-    -- showChar '('.showString filename.shows row.shows start.shows end.showChar ')'      -- ("foo.txt" 12 4 5)
-    showChar '(' . showChar ')'       -- ("foo.txt" 12 4 5)
-
-  show (s@(SpanMultiLine filename sr sc er ec)) =
-    showChar '('.showString filename.shows sr.shows sc.shows er.shows ec.showChar ')'  -- ("foo.txt" 12 4 13 5)
-  show (s@(SpanPoint filename r c)) =
-    showChar '('.showString filename.shows r.shows c.showChar ')'                      -- ("foo.txt" 12 4)
-  show (SpanEmpty) = showString "()"                                                   -- ()
- -}
-
---instance Read SrcSpan where
---  readsPrec _ str = [
-
-{-
-instance Read a => Read Tree a where
-  readsPrec _ str = [(Leave x, t’) | ("Leave", t) <- reads str,
-                                     (x, t’)      <- reads t] ++
-                    [((Node i r d), t’’’) |
-                               ("Node", t) <- reads str,
-                               (i, t’)       <- reads t,
-                               (r, t’’)      <- reads t’,
-                               (d, t’’’)     <- reads t’’]
--}
-
-instance Span SrcLocation where
-   getSpan loc@(Sloc {})
-      = SpanPoint
-        { span_filename = sloc_filename loc
-        , span_row = sloc_row loc
-        , span_column = sloc_column loc
-        }
-   getSpan NoLocation = SpanEmpty
-
--- | Make a point span from the start of a span
-spanStartPoint :: SrcSpan -> SrcSpan
-spanStartPoint SpanEmpty = SpanEmpty
-spanStartPoint span =
-   SpanPoint
-   { span_filename = span_filename span
-   , span_row = startRow span
-   , span_column = startCol span
-   }
-
--- | Make a span from two locations. Assumption: either the
--- arguments are the same, or the left one preceeds the right one.
-mkSrcSpan :: SrcLocation -> SrcLocation -> SrcSpan
-mkSrcSpan NoLocation _ = SpanEmpty
-mkSrcSpan _ NoLocation = SpanEmpty
-mkSrcSpan loc1 loc2
-  | line1 == line2 =
-       if col2 <= col1
-          then SpanPoint file line1 col1
-          else SpanCoLinear file line1 col1 col2
-  | otherwise =
-       SpanMultiLine file line1 col1 line2 col2
-  where
-  line1 = sloc_row loc1
-  line2 = sloc_row loc2
-  col1 = sloc_column loc1
-  col2 = sloc_column loc2
-  file = sloc_filename loc1
-
--- | Combines two 'SrcSpan' into one that spans at least all the characters
--- within both spans. Assumes the "file" part is the same in both inputs
-combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan
-combineSrcSpans SpanEmpty r = r -- this seems more useful
-combineSrcSpans l SpanEmpty = l
-combineSrcSpans start end
- = case row1 `compare` row2 of
-     EQ -> case col1 `compare` col2 of
-                EQ -> SpanPoint file row1 col1
-                LT -> SpanCoLinear file row1 col1 col2
-                GT -> SpanCoLinear file row1 col2 col1
-     LT -> SpanMultiLine file row1 col1 row2 col2
-     GT -> SpanMultiLine file row2 col2 row1 col1
-  where
-  row1 = startRow start
-  col1 = startCol start
-  row2 = endRow end
-  col2 = endCol end
-  file = span_filename start
-
--- | Get the row of the start of a span.
-startRow :: SrcSpan -> Int
-startRow (SpanCoLinear { span_row = row }) = row
-startRow (SpanMultiLine { span_start_row = row }) = row
-startRow (SpanPoint { span_row = row }) = row
-startRow SpanEmpty = error "startRow called on empty span"
+-- and column of a token within the file.
+-- Note: The lexer assumes the usual eight character tab stops.
 
--- | Get the row of the end of a span.
-endRow :: SrcSpan -> Int
-endRow (SpanCoLinear { span_row = row }) = row
-endRow (SpanMultiLine { span_end_row = row }) = row
-endRow (SpanPoint { span_row = row }) = row
-endRow SpanEmpty = error "endRow called on empty span"
+data TokenPosn = TokenPn !Int -- address (number of characters preceding the token)
+                         !Int -- line number
+                         !Int -- column
+        deriving (Eq,Show, Read, Data, Typeable)
 
--- | Get the column of the start of a span.
-startCol :: SrcSpan -> Int
-startCol (SpanCoLinear { span_start_column = col }) = col
-startCol (SpanMultiLine { span_start_column = col }) = col
-startCol (SpanPoint { span_column = col }) = col
-startCol SpanEmpty = error "startCol called on empty span"
+tokenPosnEmpty :: TokenPosn
+tokenPosnEmpty = TokenPn 0 0 0
 
--- | Get the column of the end of a span.
-endCol :: SrcSpan -> Int
-endCol (SpanCoLinear { span_end_column = col }) = col
-endCol (SpanMultiLine { span_end_column = col }) = col
-endCol (SpanPoint { span_column = col }) = col
-endCol SpanEmpty = error "endCol called on empty span"
diff --git a/src/Language/JavaScript/Parser/Token.hs b/src/Language/JavaScript/Parser/Token.hs
--- a/src/Language/JavaScript/Parser/Token.hs
+++ b/src/Language/JavaScript/Parser/Token.hs
@@ -1,8 +1,8 @@
 {-# LANGUAGE CPP, DeriveDataTypeable #-}
 -----------------------------------------------------------------------------
 -- |
--- Module      : Language.Python.Common.Token 
--- Copyright   : (c) 2009 Bernie Pope 
+-- Module      : Language.Python.Common.Token
+-- Copyright   : (c) 2009 Bernie Pope
 -- License     : BSD-style
 -- Maintainer  : bjpop@csse.unimelb.edu.au
 -- Stability   : experimental
@@ -12,151 +12,139 @@
 -- version 2 and version 3 of Python (they are mostly the same).
 -----------------------------------------------------------------------------
 
-module Language.JavaScript.Parser.Token ( 
-   -- * The tokens 
-   Token (..),
+module Language.JavaScript.Parser.Token (
+   -- * The tokens
+   Token (..)
+   , CommentAnnotation(..)
    -- * String conversion
-   debugTokenString,
-   -- tokenString,
+   , debugTokenString
    -- * Classification
    -- TokenClass (..),
    ) where
 
---import Language.JavaScript.Parser.Pretty
-import Language.JavaScript.Parser.SrcLocation (AlexSpan)
 import Data.Data
+import Language.JavaScript.Parser.SrcLocation
 
+data CommentAnnotation = CommentA TokenPosn String
+                       | WhiteSpace TokenPosn String
+                       | NoComment
+   deriving (Eq,{-Ord,-}Show,Typeable,Data,Read)
+
 -- | Lexical tokens.
-data Token 
+-- Each may be annotated with any comment occuring between the prior token and this one
+data Token
    -- Comment
-   = CommentToken { token_span :: !AlexSpan, token_literal :: !String } -- ^ Single line comment.
+   = CommentToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ Single line comment.
+   | WsToken      { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ White space, for preservation.
 
-   -- Identifiers 
-   | IdentifierToken { token_span :: !AlexSpan, token_literal :: !String }            -- ^ Identifier.
+   -- Identifiers
+   | IdentifierToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }            -- ^ Identifier.
 
-   -- Javascript Literals  
-     
-   | DecimalToken { token_span :: !AlexSpan, token_literal :: !String  }
-     -- ^ Literal: Decimal 
-   | HexIntegerToken { token_span :: !AlexSpan, token_literal :: !String  }
+   -- Javascript Literals
+
+   | DecimalToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]   }
+     -- ^ Literal: Decimal
+   | HexIntegerToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]   }
      -- ^ Literal: Hexadecimal Integer
-   | StringToken { token_span :: !AlexSpan, token_literal :: !String, token_delimiter :: !Char }                   
+   | StringToken { token_span :: !TokenPosn, token_literal :: !String, token_delimiter :: !Char, token_comment :: ![CommentAnnotation]  }
      -- ^ Literal: string, delimited by either single or double quotes
-   | RegExToken { token_span :: !AlexSpan, token_literal :: !String  }
+   | RegExToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]   }
      -- ^ Literal: Regular Expression
 
    -- Keywords
-   | BreakToken { token_span :: !AlexSpan, token_literal :: !String }
-   | CaseToken { token_span :: !AlexSpan, token_literal :: !String }
-   | CatchToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ConstToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ContinueToken { token_span :: !AlexSpan, token_literal :: !String }
-   | DebuggerToken { token_span :: !AlexSpan, token_literal :: !String }
-   | DefaultToken { token_span :: !AlexSpan, token_literal :: !String }
-   | DeleteToken { token_span :: !AlexSpan, token_literal :: !String }
-   | DoToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ElseToken { token_span :: !AlexSpan, token_literal :: !String }
-   | EnumToken { token_span :: !AlexSpan, token_literal :: !String }
-   | FalseToken { token_span :: !AlexSpan, token_literal :: !String }
-   | FinallyToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ForToken { token_span :: !AlexSpan, token_literal :: !String }
-   | FunctionToken { token_span :: !AlexSpan, token_literal :: !String }
-   | IfToken { token_span :: !AlexSpan, token_literal :: !String }
-   | InToken { token_span :: !AlexSpan, token_literal :: !String }
-   | InstanceofToken { token_span :: !AlexSpan, token_literal :: !String }
-   | NewToken { token_span :: !AlexSpan, token_literal :: !String }
-   | NullToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ReturnToken { token_span :: !AlexSpan, token_literal :: !String }
-   | SwitchToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ThisToken { token_span :: !AlexSpan, token_literal :: !String }
-   | ThrowToken { token_span :: !AlexSpan, token_literal :: !String }
-   | TrueToken { token_span :: !AlexSpan, token_literal :: !String }
-   | TryToken { token_span :: !AlexSpan, token_literal :: !String }
-   | TypeofToken { token_span :: !AlexSpan, token_literal :: !String }
-   | VarToken { token_span :: !AlexSpan, token_literal :: !String }
-   | VoidToken { token_span :: !AlexSpan, token_literal :: !String }
-   | WhileToken { token_span :: !AlexSpan, token_literal :: !String }
-   | WithToken { token_span :: !AlexSpan, token_literal :: !String }
-   -- Future reserved words  
-   | FutureToken { token_span :: !AlexSpan, token_literal :: !String }
-   -- Needed, not sure what they are though.  
-   | GetToken { token_span :: !AlexSpan, token_literal :: !String }
-   | SetToken { token_span :: !AlexSpan, token_literal :: !String }
-   
+   | BreakToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | CaseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | CatchToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ConstToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ContinueToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | DebuggerToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | DefaultToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | DeleteToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | DoToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ElseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | EnumToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | FalseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | FinallyToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ForToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | FunctionToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | IfToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | InToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | InstanceofToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | NewToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | NullToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ReturnToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | SwitchToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ThisToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | ThrowToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | TrueToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | TryToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | TypeofToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | VarToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | VoidToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | WhileToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | WithToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   -- Future reserved words
+   | FutureToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   -- Needed, not sure what they are though.
+   | GetToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | SetToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+
    -- Delimiters
    -- Operators
-   | SemiColonToken { token_span :: !AlexSpan }
-   | CommaToken { token_span :: !AlexSpan }
-   | HookToken { token_span :: !AlexSpan }
-   | ColonToken { token_span :: !AlexSpan }
-   | OrToken { token_span :: !AlexSpan }
-   | AndToken { token_span :: !AlexSpan }
-   | BitwiseOrToken { token_span :: !AlexSpan }
-   | BitwiseXorToken { token_span :: !AlexSpan }
-   | BitwiseAndToken { token_span :: !AlexSpan }
-   | StrictEqToken { token_span :: !AlexSpan }
-   | EqToken { token_span :: !AlexSpan }
-   | AssignToken { token_span :: !AlexSpan, token_literal :: !String }
-   | SimpleAssignToken { token_span :: !AlexSpan }
-   | StrictNeToken { token_span :: !AlexSpan }
-   | NeToken { token_span :: !AlexSpan }
-   | LshToken { token_span :: !AlexSpan }
-   | LeToken { token_span :: !AlexSpan }
-   | LtToken { token_span :: !AlexSpan }
-   | UrshToken { token_span :: !AlexSpan }
-   | RshToken { token_span :: !AlexSpan }
-   | GeToken { token_span :: !AlexSpan }
-   | GtToken { token_span :: !AlexSpan }
-   | IncrementToken { token_span :: !AlexSpan }
-   | DecrementToken { token_span :: !AlexSpan }
-   | PlusToken { token_span :: !AlexSpan }
-   | MinusToken { token_span :: !AlexSpan }
-   | MulToken { token_span :: !AlexSpan }
-   | DivToken { token_span :: !AlexSpan }
-   | ModToken { token_span :: !AlexSpan }
-   | NotToken { token_span :: !AlexSpan }
-   | BitwiseNotToken { token_span :: !AlexSpan }
-   | DotToken { token_span :: !AlexSpan }
-   | LeftBracketToken { token_span :: !AlexSpan }
-   | RightBracketToken { token_span :: !AlexSpan }
-   | LeftCurlyToken { token_span :: !AlexSpan }
-   | RightCurlyToken { token_span :: !AlexSpan }
-   | LeftParenToken { token_span :: !AlexSpan }
-   | RightParenToken { token_span :: !AlexSpan }
-   | CondcommentEndToken { token_span :: !AlexSpan }
+   | SemiColonToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | CommaToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | HookToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | ColonToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | OrToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | AndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | BitwiseOrToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | BitwiseXorToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | BitwiseAndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | StrictEqToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | EqToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | AssignToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation]  }
+   | SimpleAssignToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | StrictNeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | NeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LtToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | UrshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | RshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | GeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | GtToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | IncrementToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | DecrementToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | PlusToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | MinusToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | MulToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | DivToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | ModToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | NotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | BitwiseNotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | DotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LeftBracketToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | RightBracketToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LeftCurlyToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | RightCurlyToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | LeftParenToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | RightParenToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
+   | CondcommentEndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }
 
    -- Special cases
-   | EOFToken { token_span :: !AlexSpan }                          -- ^ End of file 
+   | TailToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  } -- ^ Stuff between last JS and EOF
+   | EOFToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation]  }  -- ^ End of file
    deriving (Eq,{-Ord,-}Show,Typeable{-,Data-})
 
-{-
-instance Span Token where
-  getSpan = token_span 
--}   
 
--- | Produce a string from a token containing detailed information. Mainly intended for debugging. 
+-- | Produce a string from a token containing detailed information. Mainly intended for debugging.
 debugTokenString :: Token -> String
-debugTokenString token = 
+debugTokenString _token =
   "blah"
   {-
    render (text (show $ toConstr token) <+> pretty (token_span token) <+>
           if hasLiteral token then text (token_literal token) else empty)
    -}
 
-{-
--- | Classification of tokens
-data TokenClass
-   = Comment
-   | Number
-   | Identifier
-   | Punctuation
-   | Bracket
-   | Layout 
-   | Keyword
-   | String
-   | Operator
-   | Assignment
-   deriving (Show, Eq, Ord)
--}
 
 -- EOF
diff --git a/src/Language/JavaScript/Pretty/Printer.hs b/src/Language/JavaScript/Pretty/Printer.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/JavaScript/Pretty/Printer.hs
@@ -0,0 +1,221 @@
+module Language.JavaScript.Pretty.Printer (
+  -- * Printing
+  renderJS
+  , renderToString
+  ) where
+
+import Data.Char
+import Data.List
+import Data.Monoid (Monoid, mappend, mempty, mconcat)
+import Language.JavaScript.Parser.AST
+import Language.JavaScript.Parser.Parser
+import Language.JavaScript.Parser.SrcLocation
+import Language.JavaScript.Parser.Token
+import qualified Blaze.ByteString.Builder as BB
+import qualified Blaze.ByteString.Builder.Char.Utf8 as BS
+import qualified Data.ByteString.Lazy as LB
+import qualified Codec.Binary.UTF8.String as US
+
+import Debug.Trace
+
+-- ---------------------------------------------------------------------
+
+data Foo = Foo (Int,Int) BB.Builder
+
+-- ---------------------------------------------------------------------
+-- Pretty printer stuff via blaze-builder
+
+(<>) :: BB.Builder -> BB.Builder -> BB.Builder
+(<>) a b = mappend a b
+
+(<+>) :: BB.Builder -> BB.Builder -> BB.Builder
+(<+>) a b = mconcat [a, (text " "), b]
+
+--() ((Int, Int), BB.Builder) -> ((Int, Int), BB.Builder) -> ((Int, Int), BB.Builder)
+--() a b =
+
+hcat :: (Monoid a) => [a] -> a
+hcat xs = mconcat xs
+
+empty :: BB.Builder
+empty = mempty
+
+text :: String -> BB.Builder
+text s = BS.fromString s
+
+char :: Char -> BB.Builder
+char c = BS.fromChar c
+
+comma :: BB.Builder
+comma = BS.fromChar ','
+
+punctuate :: a -> [a] -> [a]
+punctuate p xs = intersperse p xs
+
+-- ---------------------------------------------------------------------
+
+(<!>) :: Foo -> Foo -> Foo
+(<!>) (Foo _ bb1) (Foo (r,c) bb2) = Foo (r,c) (mappend bb1 bb2)
+--(<!>) a b = mappend a b
+
+-- ---------------------------------------------------------------------
+
+renderJS :: JSNode -> BB.Builder
+renderJS node = bb
+  where
+    Foo _ bb = rn node (Foo (1,1) empty)
+
+-- Take in the current
+-- rn :: (Int, Int) -> JSNode -> ((Int, Int), BB.Builder)
+rn :: JSNode -> Foo -> Foo
+
+-- Terminals
+rn (NT (JSIdentifier s     ) p cs) foo = rcs cs p s  foo
+rn (NT (JSDecimal i        ) p cs) foo = rcs cs p i foo
+rn (NT (JSLiteral l        ) p cs) foo = rcs cs p l foo
+rn (NT (JSHexInteger i     ) p cs) foo = rcs cs p i foo
+rn (NT (JSStringLiteral s l) p cs) foo = rcs cs p ((s:l)++[s]) foo
+rn (NT (JSRegEx s          ) p cs) foo = rcs cs p s foo
+
+-- Non-Terminals
+rn (NN (JSArguments lb xs rb))                    foo = rJS ([lb] ++ xs ++ [rb]) foo
+rn (NN (JSArrayLiteral lb xs rb))                 foo = rJS ([lb] ++ xs ++ [rb]) foo
+rn (NN (JSBlock lb x rb))                         foo = rJS (lb ++ [x] ++ rb) foo
+rn (NN (JSBreak b x1s as))                        foo = rJS ([b]++x1s++[as]) foo
+rn (NN (JSCallExpression s os xs cs))             foo = rJS (os ++ xs ++ cs) foo
+rn (NN (JSCase ca x1 c x2))                       foo = rJS [ca,x1,c,x2] foo
+rn (NN (JSCatch c lb x1 x2s rb x3))               foo = rJS ([c,lb,x1]++x2s++[rb,x3]) foo
+rn (NN (JSContinue c xs as))                      foo = rJS ([c]++xs++[as]) foo
+rn (NN (JSDefault d c x))                         foo = rJS [d,c,x] foo
+rn (NN (JSDoWhile d x1 w lb x2 rb x3))            foo = rJS ([d,x1,w,lb,x2,rb,x3]) foo
+rn (NN (JSElision c))                             foo = rJS [c] foo
+rn (NN (JSExpression xs))                         foo = rJS xs foo
+rn (NN (JSExpressionBinary s lhs op rhs))         foo = rJS (lhs ++ [op] ++ rhs) foo
+rn (NN (JSExpressionParen lb e rb))               foo = rJS ([lb,e,rb]) foo
+rn (NN (JSExpressionPostfix s xs op))             foo = rJS (xs ++ [op]) foo
+rn (NN (JSExpressionTernary cond h v1 c v2))      foo = rJS (cond ++[h] ++ v1 ++ [c] ++ v2) foo
+rn (NN (JSFinally f x))                           foo = rJS [f,x] foo
+rn (NN (JSFor f lb x1s s1 x2s s2 x3s rb x4))      foo = rJS ([f,lb]++x1s++[s1]++x2s++[s2]++x3s++[rb,x4]) foo
+rn (NN (JSForIn f lb x1s i x2 rb x3))             foo = rJS ([f,lb]++x1s++[i,x2,rb,x3]) foo
+rn (NN (JSForVar f lb v x1s s1 x2s s2 x3s rb x4)) foo = rJS ([f,lb,v]++x1s++[s1]++x2s++[s2]++x3s++[rb,x4]) foo
+rn (NN (JSForVarIn f lb v x1 i x2 rb x3))         foo = rJS [f,lb,v,x1,i,x2,rb,x3] foo
+rn (NN (JSFunction f x1 lb x2s rb lb2 x3 rb2))    foo = rJS ([f,x1,lb]++x2s++[rb,lb2,x3,rb2]) foo
+rn (NN (JSFunctionBody xs))                       foo = rJS xs foo
+rn (NN (JSFunctionExpression f x1s lb x2s rb lb2 x3 rb2)) foo = rJS ([f] ++ x1s ++ [lb] ++ x2s ++ [rb,lb2,x3,rb2]) foo
+rn (NN (JSIf i lb x1 rb x2 x3s))                  foo = rJS ([i,lb,x1,rb,x2]++x3s) foo
+rn (NN (JSLabelled l c v))                        foo = rJS [l,c,v] foo
+rn (NN (JSMemberDot xs dot n))                    foo = rJS (xs ++ [dot,n]) foo
+rn (NN (JSMemberSquare xs lb e rb))               foo = rJS (xs ++ [lb,e,rb]) foo
+rn (NN (JSObjectLiteral lb xs rb))                foo = rJS ([lb] ++ xs ++ [rb]) foo
+rn (NN (JSOperator n))                            foo = rJS [n] foo
+rn (NN (JSPropertyAccessor s n lb1 ps rb1 lb2 b rb2)) foo = rJS ([s,n,lb1] ++ ps ++ [rb1,lb2,b,rb2]) foo
+rn (NN (JSPropertyNameandValue n colon vs))       foo = rJS ([n,colon] ++ vs) foo
+rn (NN (JSReturn r xs as))                        foo = rJS ([r] ++ xs ++ [as]) foo
+rn (NN (JSSourceElements    xs))                  foo = rJS xs foo
+rn (NN (JSSourceElementsTop xs))                  foo = rJS xs foo
+rn (NN (JSStatementBlock lb x rb))                foo = rJS [lb,x,rb] foo
+rn (NN (JSStatementList xs))                      foo = rJS xs foo
+rn (NN (JSSwitch s lb x rb x2s))                  foo = rJS ([s,lb,x,rb]++x2s) foo
+rn (NN (JSThrow t x))                             foo = rJS [t,x] foo
+rn (NN (JSTry t x1 x2s))                          foo = rJS ([t,x1]++x2s) foo
+rn (NN (JSUnary l n))                             foo = rJS [n] foo
+rn (NN (JSVarDecl x1 x2s))                        foo = rJS ([x1]++x2s) foo
+rn (NN (JSVariables n xs as))                     foo = rJS ([n]++xs++[as]) foo
+rn (NN (JSWhile w lb x1 rb x2))                   foo = rJS [w,lb,x1,rb,x2] foo
+rn (NN (JSWith w lb x1 rb x2s))                   foo = rJS ([w,lb,x1,rb]++x2s) foo
+
+-- Debug helper
+rn what foo = rs (show what) foo
+
+--rn _ _ = undefined
+
+-- ---------------------------------------------------------------------
+-- Helper functions
+
+-- ---------------------------------------------------------------------
+-- Need a function that
+-- a) renders all comments, according to their positions
+-- b) advances to the position of the required string
+-- c) renders the string, advancing the position
+rcs :: [CommentAnnotation] -> TokenPosn -> String -> Foo -> Foo
+rcs cs p s foo = rps p s (rc cs foo)
+
+rc :: [CommentAnnotation] -> Foo -> Foo
+rc cs foo = foldl' go foo cs
+  where
+    go :: Foo -> CommentAnnotation -> Foo
+    go foo NoComment = foo
+    go foo (CommentA   p s) = rps p s foo
+    go foo (WhiteSpace p s) = rps p s foo
+
+-- Render a string at the given position
+rps :: TokenPosn -> String -> Foo -> Foo
+rps p s foo = (rs s foo')
+  where
+    foo' = (goto p foo)
+
+-- Render a string
+rs :: String -> Foo -> Foo
+rs s (Foo (r,c) bb) = (Foo (r',c') (bb <> (text s)))
+  where
+    (r',c') = foldl' (\(row,col) char -> go (row,col) char) (r,c) s
+
+    go (r,c) '\n' = (r+1,1)
+    go (r,c) _    = (r,c+1)
+
+
+goto :: TokenPosn -> Foo -> Foo
+goto (TokenPn _ ltgt ctgt) (Foo (lcur,ccur) bb) = (Foo (lnew,cnew) (bb <> bb'))
+-- goto (TokenPn _ ltgt ctgt) (Foo (lcur,ccur) bb) = trace ("goto " ++ (show $ (ltgt,ctgt)) ++ "," ++ (show $ (lcur,ccur)) ++ "," ++ (show $ (lnew,cnew)) ) $  (Foo (lnew,cnew) (bb <> bb'))
+  where
+    (bbline,ccur') = if (lcur < ltgt) then (text $ (take (ltgt - lcur) $ repeat '\n'),1) else (mempty,ccur)
+    bbcol  = if (ccur' < ctgt) then (text $ take (ctgt - ccur') $ repeat ' ' ) else mempty
+    bb' = bbline <> bbcol
+    lnew = if (lcur < ltgt) then ltgt else lcur
+    cnew = if (ccur' < ctgt) then ctgt else ccur'
+
+
+rJS :: [JSNode] -> Foo -> Foo
+rJS xs foo = foldl' (flip rn) foo xs
+
+renderToString :: JSNode -> String
+-- need to be careful to not lose the unicode encoding on output
+renderToString js = US.decode $ LB.unpack $ BB.toLazyByteString $ renderJS js
+
+
+-- ---------------------------------------------------------------------
+-- Test stuff
+
+_r :: JSNode -> String
+_r js = map (\x -> chr (fromIntegral x)) $ LB.unpack $ BB.toLazyByteString $ renderJS js
+
+_t :: String -> String
+_t str = _r $ readJs str
+
+
+-- readJs "/*a*/x"
+_ax = (NN
+     (JSExpression
+       [NT
+        (JSIdentifier "x")
+        (TokenPn 5 1 6)
+        [CommentA (TokenPn 0 1 1) "/*a*/"]])
+      )
+
+
+-- readJs "//j\nthis_"
+-- NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier "this_") (TokenPn 4 2 1) [CommentA (TokenPn 0 1 1) "//j"]]) (TokenPn 4 2 1) []]) (TokenPn 4 2 1) []
+
+_r1 = NN
+      (
+        JSExpression
+          [
+            NT
+              (JSIdentifier "this_")
+              (TokenPn 4 2 1)
+              [CommentA (TokenPn 0 1 1) "//j"]
+          ])
+
+
+-- EOF
+
