summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-06-20 13:50:34 +0000
committeraarne <aarne@chalmers.se>2009-06-20 13:50:34 +0000
commitbeb8cad7d868b5ef1eb74d8f0d50cb689db613ab (patch)
tree8c0f93c7f2d26e37d22aa3bac37732336d0614c6 /src/GF
parent48c755597598fc4656603a90997ebe484488a8f9 (diff)
the construct lin C t now replaces lock fields (in source code; still tempor used internally); lock fields removed from english resource as an example
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/Compile/CheckGrammar.hs24
-rw-r--r--src/GF/Compile/Compute.hs6
-rw-r--r--src/GF/Grammar/Binary.hs3
-rw-r--r--src/GF/Grammar/Grammar.hs3
-rw-r--r--src/GF/Grammar/Lockfield.hs6
-rw-r--r--src/GF/Grammar/Macros.hs8
-rw-r--r--src/GF/Grammar/Parser.hs452
-rw-r--r--src/GF/Grammar/Parser.y2
8 files changed, 254 insertions, 250 deletions
diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs
index 8fa5d25b6..43abffa02 100644
--- a/src/GF/Compile/CheckGrammar.hs
+++ b/src/GF/Compile/CheckGrammar.hs
@@ -38,7 +38,7 @@ import GF.Grammar.Predef
import GF.Grammar.Macros
import GF.Grammar.PatternMatch
import GF.Grammar.AppPredefined
-import GF.Grammar.Lockfield (isLockLabel)
+import GF.Grammar.Lockfield (isLockLabel, lockRecType, unlockRecord)
import GF.Data.Operations
import GF.Infra.CheckM
@@ -396,6 +396,10 @@ computeLType gr t = do
let fs' = sortRec fs
liftM RecType $ mapPairsM comp fs'
+ ELincat c t -> do
+ t' <- comp t
+ checkErr $ lockRecType c t' ---- locking to be removed AR 20/6/2009
+
_ | ty == typeTok -> return typeStr
_ | isPredefConstant ty -> return ty
@@ -599,6 +603,11 @@ inferLType gr trm = case trm of
ty <- inferPatt p
return (trm, EPattType ty)
+ ELin c trm -> do
+ (trm',ty) <- infer trm
+ ty' <- checkErr $ lockRecType c ty ---- lookup c; remove lock AR 20/6/2009
+ return $ (ELin c trm', ty')
+
_ -> prtFail "cannot infer lintype of" trm
where
@@ -861,6 +870,10 @@ checkLType env trm typ0 = do
(def',ty) <- infer def -- tries to infer type of local constant
check (Let (x,(Just ty,def')) body) typ
+ ELin c tr -> do
+ tr1 <- checkErr $ unlockRecord c tr
+ check tr1 typ
+
_ -> do
(trm',ty') <- infer trm
termWith trm' $ checkEq typ ty' trm'
@@ -886,7 +899,14 @@ checkLType env trm typ0 = do
Just (_,t) -> do
(t',ty') <- check t ty
return (l,(Just ty',t'))
- _ -> raise $ "cannot find value for label" +++ prt l +++ "in" +++ prt_ (R rms)
+ _ -> raise $
+ if isLockLabel l
+ then
+ let cat = drop 5 (prt l) in
+ prt_ (R rms) +++ "is not in the lincat of" +++ cat ++
+ "; try wrapping it with lin " ++ cat
+ else
+ "cannot find value for label" +++ prt l +++ "in" +++ prt_ (R rms)
checkCase arg val (p,t) = do
cont <- pattContext env arg p
diff --git a/src/GF/Compile/Compute.hs b/src/GF/Compile/Compute.hs
index cf0803d98..062b6251c 100644
--- a/src/GF/Compile/Compute.hs
+++ b/src/GF/Compile/Compute.hs
@@ -26,7 +26,7 @@ import GF.Grammar.Macros
import GF.Grammar.Lookup
import GF.Compile.Refresh
import GF.Grammar.PatternMatch
-import GF.Grammar.Lockfield (isLockLabel) ----
+import GF.Grammar.Lockfield (isLockLabel,unlockRecord) ----
import GF.Grammar.AppPredefined
@@ -219,6 +219,10 @@ computeTermOpt rec gr = comput True where
(RecType rs, RecType ss) -> plusRecType r' s'
_ -> return $ ExtR r' s'
+ ELin c r -> do
+ r' <- comp g r
+ unlockRecord c r'
+
T _ _ -> compTable g t
V _ _ -> compTable g t
diff --git a/src/GF/Grammar/Binary.hs b/src/GF/Grammar/Binary.hs
index 18594d4eb..d3df904ba 100644
--- a/src/GF/Grammar/Binary.hs
+++ b/src/GF/Grammar/Binary.hs
@@ -148,6 +148,8 @@ instance Binary Term where
put (FV x) = putWord8 35 >> put x
put (Alts x) = putWord8 36 >> put x
put (Strs x) = putWord8 37 >> put x
+ put (ELin x y) = putWord8 38 >> put (x,y)
+
get = do tag <- getWord8
case tag of
0 -> get >>= \x -> return (Vr x)
@@ -186,6 +188,7 @@ instance Binary Term where
35 -> get >>= \x -> return (FV x)
36 -> get >>= \x -> return (Alts x)
37 -> get >>= \x -> return (Strs x)
+ 38 -> get >>= \(x,y) -> return (ELin x y)
_ -> decodingError
instance Binary Patt where
diff --git a/src/GF/Grammar/Grammar.hs b/src/GF/Grammar/Grammar.hs
index 13ddbdb8c..bfe676b57 100644
--- a/src/GF/Grammar/Grammar.hs
+++ b/src/GF/Grammar/Grammar.hs
@@ -147,6 +147,9 @@ data Term =
| EPatt Patt -- ^ pattern (in macro definition): # p
| EPattType Term -- ^ pattern type: pattern T
+ | ELincat Ident Term -- ^ boxed linearization type of Ident
+ | ELin Ident Term -- ^ boxed linearization of type Ident
+
| FV [Term] -- ^ alternatives in free variation: @variants { s ; ... }@
| Alts (Term, [(Term, Term)]) -- ^ alternatives by prefix: @pre {t ; s\/c ; ...}@
diff --git a/src/GF/Grammar/Lockfield.hs b/src/GF/Grammar/Lockfield.hs
index 12b78ab9b..66a978770 100644
--- a/src/GF/Grammar/Lockfield.hs
+++ b/src/GF/Grammar/Lockfield.hs
@@ -36,8 +36,10 @@ lockRecType c t = plusRecType t $ RecType [(lockLabel c, RecType [])]
unlockRecord :: Ident -> Term -> Err Term
unlockRecord c ft = do
let (xs,t) = termFormCnc ft
- t' <- plusRecord t $ R [(lockLabel c, (Just (RecType []),R []))]
- return $ mkAbs xs t'
+ let lock = R [(lockLabel c, (Just (RecType []),R []))]
+ case plusRecord t lock of
+ Ok t' -> return $ mkAbs xs t'
+ _ -> return $ mkAbs xs (ExtR t lock)
lockLabel :: Ident -> Label
lockLabel c = LIdent $! BS.append lockPrefix (ident2bs c)
diff --git a/src/GF/Grammar/Macros.hs b/src/GF/Grammar/Macros.hs
index 2c0761f00..c7a9cfa73 100644
--- a/src/GF/Grammar/Macros.hs
+++ b/src/GF/Grammar/Macros.hs
@@ -634,6 +634,14 @@ composOp co trm =
do ty' <- co ty
return (EPattType ty')
+ ELincat c ty ->
+ do ty' <- co ty
+ return (ELincat c ty')
+
+ ELin c ty ->
+ do ty' <- co ty
+ return (ELin c ty')
+
_ -> return trm -- covers K, Vr, Cn, Sort, EPatt
getTableType :: TInfo -> Err Type
diff --git a/src/GF/Grammar/Parser.hs b/src/GF/Grammar/Parser.hs
index 2975ce261..699870f18 100644
--- a/src/GF/Grammar/Parser.hs
+++ b/src/GF/Grammar/Parser.hs
@@ -451,48 +451,36 @@ happyIn73 x = unsafeCoerce# x
happyOut73 :: (HappyAbsSyn ) -> ([Case])
happyOut73 x = unsafeCoerce# x
{-# INLINE happyOut73 #-}
-happyIn74 :: (Equation) -> (HappyAbsSyn )
+happyIn74 :: ((Term,Term)) -> (HappyAbsSyn )
happyIn74 x = unsafeCoerce# x
{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn ) -> (Equation)
+happyOut74 :: (HappyAbsSyn ) -> ((Term,Term))
happyOut74 x = unsafeCoerce# x
{-# INLINE happyOut74 #-}
-happyIn75 :: ([Equation]) -> (HappyAbsSyn )
+happyIn75 :: ([(Term,Term)]) -> (HappyAbsSyn )
happyIn75 x = unsafeCoerce# x
{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn ) -> ([Equation])
+happyOut75 :: (HappyAbsSyn ) -> ([(Term,Term)])
happyOut75 x = unsafeCoerce# x
{-# INLINE happyOut75 #-}
-happyIn76 :: ((Term,Term)) -> (HappyAbsSyn )
+happyIn76 :: ([Decl]) -> (HappyAbsSyn )
happyIn76 x = unsafeCoerce# x
{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn ) -> ((Term,Term))
+happyOut76 :: (HappyAbsSyn ) -> ([Decl])
happyOut76 x = unsafeCoerce# x
{-# INLINE happyOut76 #-}
-happyIn77 :: ([(Term,Term)]) -> (HappyAbsSyn )
+happyIn77 :: ([Decl]) -> (HappyAbsSyn )
happyIn77 x = unsafeCoerce# x
{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn ) -> ([(Term,Term)])
+happyOut77 :: (HappyAbsSyn ) -> ([Decl])
happyOut77 x = unsafeCoerce# x
{-# INLINE happyOut77 #-}
-happyIn78 :: ([Decl]) -> (HappyAbsSyn )
+happyIn78 :: (Posn) -> (HappyAbsSyn )
happyIn78 x = unsafeCoerce# x
{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn ) -> ([Decl])
+happyOut78 :: (HappyAbsSyn ) -> (Posn)
happyOut78 x = unsafeCoerce# x
{-# INLINE happyOut78 #-}
-happyIn79 :: ([Decl]) -> (HappyAbsSyn )
-happyIn79 x = unsafeCoerce# x
-{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn ) -> ([Decl])
-happyOut79 x = unsafeCoerce# x
-{-# INLINE happyOut79 #-}
-happyIn80 :: (Posn) -> (HappyAbsSyn )
-happyIn80 x = unsafeCoerce# x
-{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn ) -> (Posn)
-happyOut80 x = unsafeCoerce# x
-{-# INLINE happyOut80 #-}
happyInTok :: Token -> (HappyAbsSyn )
happyInTok x = unsafeCoerce# x
{-# INLINE happyInTok #-}
@@ -501,21 +489,21 @@ happyOutTok x = unsafeCoerce# x
{-# INLINE happyOutTok #-}
happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x4e\x04\x4e\x04\x3c\x00\x4e\x04\x03\x01\x00\x00\x36\x04\x5f\x04\x6f\x04\x06\x00\xa4\x01\x6e\x04\x00\x00\x00\x00\x6b\x04\x6f\x01\xff\xff\x3c\x00\x00\x00\x8c\x00\x2f\x04\xc7\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x5c\x04\x1e\x02\xd5\x00\x1e\x02\x5b\x04\x59\x04\xf5\x01\x46\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x04\x03\x01\x16\x04\x49\x04\x1b\x04\x1a\x04\x19\x04\x12\x04\x11\x04\x10\x04\x3c\x00\x90\x01\x3c\x00\x5d\x01\x3c\x00\x52\x01\x48\x04\x53\x01\x35\x04\x17\x04\xfc\x03\x37\x04\x25\x00\x6f\x01\x0d\x04\x34\x04\x2a\x04\x00\x00\x00\x00\x30\x04\x21\x04\x00\x00\x20\x04\xe1\x01\xd5\x01\x26\x04\x23\x04\x18\x04\xd2\x01\x00\x00\xdf\x03\x3a\x01\x3a\x01\x00\x00\xe0\x03\xdd\x03\x00\x00\x00\x00\x00\x00\x00\x00\x14\x04\x3c\x00\x01\x00\x13\x04\xb6\x00\xb6\x00\xb6\x00\x79\x00\x3c\x00\x06\x04\x79\x00\x3c\x00\x0c\x04\xd1\x00\x00\x00\x00\x00\xda\x02\xe1\x01\xd6\x03\x00\x00\x00\x00\xe1\x01\xe1\x01\xe1\x01\x00\x00\xd8\x03\x00\x00\x00\x00\xc4\x03\xf8\x03\xf9\x03\xed\x03\xe7\x00\xf0\x03\x68\x00\x00\x00\xfe\x03\xef\x03\x6f\x01\x09\x01\x87\x00\xf5\x03\x3c\x00\x00\x00\x00\x00\x3c\x00\x3c\x00\xe1\x01\xe9\x03\x00\x00\x00\x00\x3c\x00\x3c\x00\xc7\x00\xe7\x03\x6f\x01\xf2\x03\xde\x03\xd3\x03\x00\x00\xa5\x03\xd1\x03\x3c\x00\xa3\x03\x3c\x00\x3c\x00\x42\x01\xd7\x03\xcc\x03\xd5\x03\xf3\x00\xd4\x03\xc9\x03\xb6\x03\xd0\x00\x3c\x00\x3a\x01\xb5\x03\xbe\x03\x00\x00\x00\x00\xac\x03\x9c\x03\x00\x00\x5f\x00\x00\x00\x00\x00\xc7\x03\x24\x00\x02\x00\x80\x00\x84\x03\x82\x03\x02\x00\x00\x00\xad\x03\x9b\x03\x00\x00\x81\x03\x6f\x01\x00\x00\x00\x00\x3c\x00\x3c\x00\x3c\x00\x00\x00\x3a\x01\x3a\x01\x3c\x00\x3a\x01\x00\x00\xb4\x03\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x6f\x01\x3c\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x03\xa7\x03\x00\x00\xab\x03\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x65\x03\x3a\x01\x00\x00\x00\x00\x91\x03\x9a\x03\x00\x00\xa1\x03\xf8\xff\x37\x03\x02\x00\x80\x03\x9d\x03\x62\x03\x00\x00\x83\x03\x37\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x01\x55\x03\x97\x03\xd1\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x86\x03\x7d\x03\x7b\x03\x00\x00\x00\x00\x6f\x01\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x7c\x03\x4b\x03\x00\x00\x8d\x03\x5f\x00\x00\x00\x44\x03\x7e\x03\x79\x03\x40\x03\x6c\x03\x39\x03\x02\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x03\x78\x03\x00\x00\x74\x03\x00\x00\x00\x00\x6d\x03\x00\x00\x35\x03\x6b\x03\x00\x00\xab\x00\x61\x03\x00\x00\xab\x00\x00\x00\x60\x03\x00\x00\xab\x00\x5d\x03\x00\x00\x25\x03\x58\x03\x00\x00\x20\x03\x56\x03\x00\x00\xab\x00\x54\x03\x00\x00\x1e\x03\x47\x03\x00\x00\x6e\x00\x00\x00\x00\x00\x50\x03\x02\x00\x45\x03\x37\x03\x00\x00\x12\x03\x11\x03\xb8\x01\x8b\x02\x43\x03\x05\x00\x0a\x03\x17\x01\x3e\x03\xf6\x02\x00\x00\x77\x02\x3c\x03\xf5\x02\x2c\x03\xf3\x02\x08\x00\x27\x03\x63\x02\x2b\x03\x22\x03\x4f\x02\x08\x00\xf0\x00\x34\x02\x21\x03\xea\x02\x00\x00\x00\x00\x53\x00\x24\x03\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x0c\x03\x19\x03\xe6\x02\x17\x03\x13\x03\x00\x00\x00\x00\xd2\x02\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x3c\x00\x3c\x00\x56\x00\x03\x03\xee\xff\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3c\x00\x02\x03\x00\x00\x3c\x00\x00\x00\xcc\x02\x00\x00\xf9\x02\x3c\x00\xfe\x02\x00\x00\xc8\x02\x3c\x00\x00\x00\x00\x00\xb8\x01\x00\x00\xff\xff\xb8\x01\x09\x03\xdf\x02\x00\x00\x00\x00\xdb\x02\xc6\x02\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x02\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\xb2\x02\x98\x02\x00\x00\xb8\x01\x53\x00\xab\x02\x5c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x02\x00\x00\x00\x00\x3c\x00\x75\x02\x00\x00\x59\x02\x83\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x02\x00\x00\x00\x00\x00\x00"#
+happyActOffsets = HappyA# "\xcc\x04\xcc\x04\x3b\x00\xcc\x04\x92\x01\x00\x00\xb1\x04\xd7\x04\xd6\x04\x06\x00\x90\x01\xd1\x04\x00\x00\x00\x00\xcf\x04\x82\x01\xff\xff\x3b\x00\x00\x00\x95\x00\x97\x04\xa2\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x15\x02\x0d\x00\x96\x04\x91\x04\x15\x02\xbf\x04\xbd\x04\xdf\x01\xbc\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x04\x92\x01\x8b\x04\xad\x04\x7c\x04\x7b\x04\x7a\x04\x78\x04\x75\x04\x74\x04\x3b\x00\x6e\x01\x3b\x00\x78\x01\x3b\x00\x60\x01\xac\x04\xcb\x01\xcb\x01\x19\x02\xa5\x04\x8c\x04\x71\x04\x9b\x04\xf5\xff\x70\x04\x99\x04\x8f\x04\x00\x00\x00\x00\x92\x04\x87\x04\x00\x00\x85\x04\xcb\x01\xcf\x01\x88\x04\x95\x04\x89\x04\xd4\x00\x00\x00\x55\x04\x48\x01\x48\x01\x00\x00\x44\x04\x41\x04\x00\x00\x00\x00\x00\x00\x00\x00\x79\x04\x3b\x00\x01\x00\x77\x04\xb3\x00\xb3\x00\xb3\x00\x77\x00\x3b\x00\x6c\x04\x77\x00\x3b\x00\x6f\x04\xb8\x00\x00\x00\x00\x00\x7a\x01\xcb\x01\x3a\x04\x00\x00\x00\x00\xcb\x01\xcb\x01\xcb\x01\x00\x00\x3d\x04\x00\x00\x00\x00\x38\x04\x6b\x04\x5b\x04\x61\x04\xc5\x00\x52\x04\xbf\x00\x00\x00\x63\x04\x54\x04\x82\x01\x2c\x01\x69\x00\x56\x04\x3b\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\xcb\x01\x4f\x04\x00\x00\x00\x00\x3b\x00\x3b\x00\xa2\x00\x4b\x04\x00\x00\x1c\x04\x47\x04\x3b\x00\x1a\x04\x3b\x00\x3b\x00\x51\x04\x51\x04\xf9\x00\x3e\x04\x33\x04\x3c\x04\x0e\x01\x37\x04\x31\x04\x30\x04\xf8\x00\x3b\x00\x48\x01\x2c\x04\x35\x04\x00\x00\x00\x00\x11\x04\x0f\x04\x00\x00\xe8\xff\x00\x00\x00\x00\x28\x04\x20\x00\x02\x00\x97\x00\xfb\x03\xeb\x03\x02\x00\x00\x00\x16\x04\x15\x04\x82\x01\x00\x00\xe8\x03\x82\x01\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x48\x01\x48\x01\x3b\x00\x48\x01\x00\x00\x18\x04\x00\x00\x00\x00\xfd\x03\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x04\x1d\x04\x00\x00\x21\x04\xde\x03\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\xcd\x03\x48\x01\x00\x00\x00\x00\xfa\x03\x02\x04\x00\x00\x0a\x04\x09\x00\xc9\x04\x02\x00\xe4\x03\x03\x04\xc6\x03\x00\x00\xf1\x03\xc9\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\xc4\x03\x05\x04\xb8\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\xe6\x03\xdb\x03\xda\x03\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\xd9\x03\xa9\x03\x00\x00\xe9\x03\xe8\xff\x00\x00\xad\x03\xe5\x03\xe0\x03\x94\x03\xbe\x03\x92\x03\x02\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\xd0\x03\x00\x00\xc9\x03\x00\x00\x00\x00\xc1\x03\x00\x00\x8c\x03\xc0\x03\x00\x00\x5b\x00\xbf\x03\x00\x00\x5b\x00\x00\x00\xbd\x03\x00\x00\x5b\x00\xac\x03\x00\x00\x77\x03\xab\x03\x00\x00\x74\x03\xa6\x03\x00\x00\x5b\x00\xa5\x03\x00\x00\x73\x03\xa4\x03\x00\x00\x59\x00\x00\x00\x00\x00\xa1\x03\x02\x00\x97\x03\xc9\x04\x00\x00\x6c\x03\x5a\x03\xc6\x01\x6f\x02\x90\x03\x16\x01\x58\x03\x18\x01\x8b\x03\x56\x03\x00\x00\x5c\x02\x86\x03\x53\x03\x88\x03\x50\x03\x08\x00\x83\x03\x49\x02\x89\x03\x71\x03\x36\x02\x08\x00\x51\x01\x13\x02\x70\x03\x3b\x03\x00\x00\x00\x00\x51\x00\x7c\x03\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x6a\x03\x76\x03\x46\x03\x75\x03\x6f\x03\x00\x00\x00\x00\x32\x03\x00\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x3b\x00\x3b\x00\x4c\x00\x52\x03\xee\xff\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x3b\x00\x51\x03\x00\x00\x3b\x00\x00\x00\x1c\x03\x00\x00\x48\x03\x3b\x00\x4c\x03\x00\x00\x17\x03\x3b\x00\x00\x00\x00\x00\xc6\x01\x00\x00\xff\xff\xc6\x01\x57\x03\x41\x03\x00\x00\x00\x00\x42\x03\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x34\x03\x1e\x03\x00\x00\xc6\x01\x51\x00\x11\x03\xf1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x3b\x00\xe4\x02\x00\x00\xb7\x02\xe1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x39\x01\x0b\x03\x3f\x05\x74\x02\x7d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x02\x1d\x03\xff\x02\x00\x00\x00\x00\x6b\x02\xcd\x02\xc2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x05\x00\x00\x00\x00\x5b\x01\x45\x02\xf4\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x22\x05\x68\x01\x75\x03\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x09\x02\x00\x00\x00\x00\x7c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x79\x01\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x05\x27\x02\x00\x00\x43\x02\x1c\x02\xfd\x01\x8c\x02\x05\x05\x00\x00\xa4\x02\xef\x04\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xd6\x00\xcb\x01\x00\x00\x00\x00\xd6\x00\xd6\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x02\xb1\x01\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\xf7\x02\xd2\x04\xd8\xff\x00\x00\x00\x00\x00\x00\xcb\x04\xb5\x04\xc0\x02\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x28\x02\x00\x00\xae\x04\x86\x00\x98\x04\x91\x04\x00\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x99\x01\x5f\x03\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00\x3b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x49\x03\xd9\x02\xbb\x02\x00\x00\xe7\x01\xc3\x02\x7b\x04\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x74\x04\x00\x00\xdc\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\x44\x01\x00\x00\x00\x00\x00\x00\x0a\x01\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\xe8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x01\x18\x00\x5e\x00\x1b\x00\xc8\x00\x0c\x00\x59\x00\xae\x00\xaa\x00\x3d\x00\x7f\x00\x00\x00\xe2\x02\xce\x02\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x04\x57\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\xb5\x02\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x19\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x41\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x72\x02\x00\x00\x00\x00\x00\x00\x5e\x02\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x02\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x16\x00\x00\x00\x00\x00\x58\x00\x93\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x7c\x00\x00\x00\x04\x00\x8c\x01\x00\x00\x3e\x00\x00\x00\x00\x00\x4c\x00\x14\x00\x00\x00\x1e\x00\xbb\x01\x63\x00\x00\x00\x00\x00\xea\x01\x15\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\xf2\x01\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\x3a\x04\x24\x04\xf3\xff\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x07\x04\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\xf8\x00\xe3\x03\x00\x00\x00\x00\x9a\x01\x93\x01\x16\x03\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x01\x81\x01\x00\x00\xcd\x03\x6e\x01\x00\x00\x55\x01\x3d\x01\xc6\x03\x32\x01\x08\x01\x00\x00\xb0\x03\x00\x00\xfe\x00\xdf\x00\x00\x00\xdb\x00\x10\x01\xe5\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\xa9\x03\x00\x00\xb4\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x62\x00\xcf\x00\x00\x00\x00\x00\x93\x03\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00"#
+happyGotoOffsets = HappyA# "\x64\x00\x30\x03\xbe\x04\x92\x02\xda\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x02\xc8\x02\xaa\x02\x00\x00\x00\x00\x76\x02\x07\x03\x04\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x04\x93\x01\x63\x02\x00\x00\x00\x00\x7e\x01\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x03\x00\x00\xa1\x04\xd2\x01\x0a\x03\xfb\x02\x00\x00\x4f\x01\x3d\x01\x00\x00\x00\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x77\x01\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x04\x8b\x02\x00\x00\x24\x02\xc3\x01\x1f\x01\x8e\x02\x84\x04\x00\x00\xd9\x04\x7d\x04\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x3a\x01\x3d\x02\x00\x00\x00\x00\x3a\x01\x3a\x01\x3a\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\x4c\x02\x1a\x02\x00\x00\x00\x00\x67\x04\x00\x00\x00\x00\xf0\x01\x60\x04\xd8\xff\x00\x00\x00\x00\x00\x00\x4a\x04\x43\x04\x02\x03\x00\x00\x00\x00\x65\x02\x00\x00\x2d\x04\xee\x01\x26\x04\x10\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x1a\x02\xf4\x02\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\x00\x6d\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x39\x02\x00\x00\x00\x00\xde\x02\xa3\x02\x87\x02\x00\x00\xcf\x02\xf5\x02\x09\x04\xe7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\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\x33\x01\x00\x00\x00\x00\x00\x00\xc9\x00\x95\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x01\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x01\x17\x00\x55\x00\x53\x00\x6a\x00\x1b\x00\x88\x00\xac\x00\xab\x00\x76\x00\x70\x00\x00\x00\xee\x02\xd9\x02\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x03\xec\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x02\x00\x00\x91\x02\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x02\x44\x02\x00\x00\x00\x00\x00\x00\x80\x02\xd6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\x0f\x01\x05\x00\x00\x00\x00\x00\x42\x00\xba\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x10\x00\x00\x00\xf8\xff\x95\x01\x00\x00\x79\x00\x00\x00\x00\x00\x7e\x00\x64\x01\x00\x00\x34\x00\xf7\x01\x62\x00\x00\x00\x00\x00\xa1\x01\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x8b\x01\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\xcf\x03\xb9\x03\x5c\x01\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x9c\x03\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x3e\x01\x78\x03\x00\x00\x00\x00\xf1\x00\xf2\x01\xc1\x02\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\xb1\x01\x00\x00\x62\x03\x81\x01\x00\x00\x75\x01\x56\x01\x5b\x03\x30\x01\xfe\x00\x00\x00\x45\x03\x00\x00\xea\x00\xd0\x00\x00\x00\xc3\x00\xcd\x00\x01\x01\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x3e\x03\x00\x00\xb7\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x41\x00\x8e\x00\x00\x00\x00\x00\x28\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00"#
happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x86\xff\x84\xff\x82\xff\x7b\xff\x71\xff\x6f\xff\x6d\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x69\xff\x00\x00\x93\xff\x00\x00\x00\x00\x3d\xff\x3b\xff\x3a\xff\x3c\xff\x3e\xff\x00\x00\x67\xff\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\x6a\xff\x6c\xff\x61\xff\x6e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x00\x00\x93\xff\x5f\xff\x00\x00\x72\xff\x00\x00\x92\xff\x00\x00\x93\xff\x9c\xff\x00\x00\x00\x00\x00\x00\x30\xff\x00\x00\x31\xff\x32\xff\x00\x00\x00\x00\x68\xff\x00\x00\x5c\xff\x2b\xff\x00\x00\x00\x00\x00\x00\x6e\xff\x73\xff\x00\x00\x00\x00\x29\xff\x51\xff\x00\x00\x39\xff\x4d\xff\x49\xff\x48\xff\x47\xff\x4c\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x85\xff\x82\xff\x7b\xff\x93\xff\x8c\xff\x83\xff\x7c\xff\x7d\xff\x81\xff\x70\xff\x00\x00\x40\xff\x8d\xff\x00\x00\x00\x00\x38\xff\x00\x00\x9c\xff\x00\x00\x28\xff\x58\xff\x52\xff\x00\x00\x00\x00\x4c\xff\x00\x00\x4f\xff\x00\x00\x60\xff\x63\xff\x2c\xff\x00\x00\x5c\xff\x00\x00\x65\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x36\xff\x00\x00\x22\xff\x00\x00\x87\xff\x00\x00\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x25\xff\x00\x00\x47\xff\x4c\xff\x5e\xff\x00\x00\x00\x00\x4c\xff\x5f\xff\x00\x00\x00\x00\x00\x00\xf7\xff\xf6\xff\x00\x00\x00\x00\xf8\xff\xeb\xff\xfb\xff\xec\xff\xef\xff\xd6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x57\xff\x00\x00\x00\x00\x80\xff\x74\xff\x5f\xff\x00\x00\x00\x00\x77\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\x96\xff\x91\xff\x8a\xff\x00\x00\x9b\xff\x88\xff\x00\x00\x00\x00\x35\xff\x00\x00\x2f\xff\x8e\xff\x8f\xff\x66\xff\x5b\xff\x00\x00\x2b\xff\x2a\xff\x00\x00\x00\x00\x44\xff\x53\xff\x45\xff\x55\xff\x29\xff\x50\xff\x4b\xff\x46\xff\x39\xff\x00\x00\x4a\xff\x3f\xff\x00\x00\xfc\xff\xe3\xff\xe6\xff\xd6\xff\xdf\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xdb\xff\x00\x00\xdf\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x89\xff\x41\xff\x37\xff\x27\xff\x4e\xff\x2e\xff\x62\xff\x00\x00\x23\xff\x21\xff\x00\x00\x00\x00\x5a\xff\x26\xff\x59\xff\x24\xff\x00\x00\x1f\xff\x00\x00\x00\x00\x5d\xff\x54\xff\x4a\xff\x7e\xff\x7f\xff\x00\x00\xf4\xff\xf5\xff\x00\x00\x00\x00\xea\xff\x00\x00\xeb\xff\xf0\xff\x00\x00\xed\xff\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\x75\xff\x76\xff\x00\x00\x00\x00\x94\xff\x8b\xff\x79\xff\xe7\xff\x00\x00\xe4\xff\xd5\xff\xd6\xff\x19\xff\x19\xff\x00\x00\xcd\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\xc9\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc6\xff\x00\x00\x00\x00\xcf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xde\xff\xe1\xff\x00\x00\x00\x00\x00\x00\xdf\xff\xdc\xff\x00\x00\x00\x00\x1b\xff\x19\xff\x00\x00\x9c\xff\xa6\xff\x98\xff\x00\x00\x00\x00\x9a\xff\x19\xff\x00\x00\xa0\xff\x00\x00\xa8\xff\x98\xff\x00\x00\x19\xff\x98\xff\x00\x00\x19\xff\x98\xff\x00\x00\x19\xff\x19\xff\xa4\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x20\xff\x1e\xff\xf3\xff\x00\x00\xd3\xff\x00\x00\x00\x00\xeb\xff\x00\x00\xf1\xff\xee\xff\xd8\xff\x00\x00\xd2\xff\xe8\xff\xe5\xff\xa3\xff\xbc\xff\x00\x00\xab\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x43\xff\x42\xff\xa1\xff\x00\x00\xaf\xff\x00\x00\x00\x00\xa7\xff\x00\x00\x9f\xff\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xa5\xff\x00\x00\x00\x00\xa9\xff\x1c\xff\x1b\xff\x19\xff\x00\x00\x1b\xff\x00\x00\x00\x00\xe0\xff\xda\xff\x00\x00\x00\x00\xc5\xff\x1a\xff\x19\xff\x19\xff\xb3\xff\x00\x00\x19\xff\x99\xff\x19\xff\x19\xff\x00\x00\x19\xff\x19\xff\x97\xff\x00\x00\x33\xff\x19\xff\x19\xff\x9e\xff\x19\xff\x1b\xff\x00\x00\x00\x00\xeb\xff\xf2\xff\xd7\xff\xe9\xff\xb1\xff\xbd\xff\x00\x00\xbb\xff\x00\x00\xba\xff\x19\xff\xb5\xff\xb7\xff\x19\xff\xc2\xff\xb4\xff\xc1\xff\x19\xff\x00\x00\xbf\xff\xbe\xff\x00\x00\x19\xff\xc4\xff\x00\x00\x00\x00\xb2\xff\xc0\xff\xb6\xff\xb9\xff\x19\xff\x9d\xff\xb8\xff\x1d\xff\x00\x00\x19\xff\xc3\xff"#
+happyDefActions = HappyA# "\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x87\xff\x85\xff\x83\xff\x7c\xff\x70\xff\x6e\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x68\xff\x00\x00\x93\xff\x00\x00\x00\x00\x3d\xff\x3b\xff\x3a\xff\x3c\xff\x3e\xff\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x69\xff\x6b\xff\x61\xff\x6d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x00\x00\x93\xff\x5f\xff\x00\x00\x73\xff\x00\x00\x00\x00\x00\x00\x92\xff\x00\x00\x93\xff\x9c\xff\x00\x00\x00\x00\x30\xff\x00\x00\x31\xff\x32\xff\x00\x00\x00\x00\x67\xff\x00\x00\x5c\xff\x2b\xff\x00\x00\x00\x00\x00\x00\x6d\xff\x74\xff\x00\x00\x00\x00\x29\xff\x51\xff\x00\x00\x39\xff\x4d\xff\x49\xff\x48\xff\x47\xff\x4c\xff\x00\x00\x00\x00\x7b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x86\xff\x83\xff\x7c\xff\x93\xff\x8c\xff\x84\xff\x7d\xff\x7e\xff\x82\xff\x6f\xff\x00\x00\x40\xff\x8d\xff\x00\x00\x00\x00\x38\xff\x00\x00\x9c\xff\x00\x00\x28\xff\x58\xff\x52\xff\x00\x00\x00\x00\x4c\xff\x00\x00\x4f\xff\x00\x00\x60\xff\x63\xff\x2c\xff\x00\x00\x5c\xff\x00\x00\x65\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\x00\x00\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x71\xff\x72\xff\x00\x00\x25\xff\x00\x00\x47\xff\x4c\xff\x5e\xff\x00\x00\x00\x00\x4c\xff\x5f\xff\x00\x00\x00\x00\x00\x00\xf7\xff\xf6\xff\x00\x00\x00\x00\xf8\xff\xeb\xff\xfb\xff\xec\xff\xef\xff\xd6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\x36\xff\x57\xff\x00\x00\x00\x00\x81\xff\x75\xff\x5f\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\x96\xff\x91\xff\x8a\xff\x00\x00\x9b\xff\x00\x00\x2f\xff\x8e\xff\x8f\xff\x66\xff\x5b\xff\x00\x00\x2b\xff\x2a\xff\x00\x00\x00\x00\x44\xff\x53\xff\x45\xff\x55\xff\x29\xff\x50\xff\x4b\xff\x46\xff\x39\xff\x00\x00\x4a\xff\x3f\xff\x00\x00\xfc\xff\xe3\xff\xe6\xff\xd6\xff\xdf\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xdb\xff\x00\x00\xdf\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x89\xff\x41\xff\x37\xff\x27\xff\x4e\xff\x2e\xff\x62\xff\x00\x00\x00\x00\x00\x00\x5a\xff\x26\xff\x59\xff\x24\xff\x00\x00\x22\xff\x00\x00\x00\x00\x5d\xff\x54\xff\x4a\xff\x35\xff\x7f\xff\x80\xff\x00\x00\xf4\xff\xf5\xff\x00\x00\x00\x00\xea\xff\x00\x00\xeb\xff\xf0\xff\x00\x00\xed\xff\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\x76\xff\x77\xff\x00\x00\x00\x00\x94\xff\x8b\xff\x7a\xff\xe7\xff\x00\x00\xe4\xff\xd5\xff\xd6\xff\x1c\xff\x1c\xff\x00\x00\xcd\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\xc9\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc6\xff\x00\x00\x00\x00\xcf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xde\xff\xe1\xff\x00\x00\x00\x00\x00\x00\xdf\xff\xdc\xff\x00\x00\x00\x00\x1e\xff\x1c\xff\x00\x00\x9c\xff\xa6\xff\x98\xff\x00\x00\x00\x00\x9a\xff\x1c\xff\x00\x00\xa0\xff\x00\x00\xa8\xff\x98\xff\x00\x00\x1c\xff\x98\xff\x00\x00\x1c\xff\x98\xff\x00\x00\x1c\xff\x1c\xff\xa4\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x23\xff\x21\xff\xf3\xff\x00\x00\xd3\xff\x00\x00\x00\x00\xeb\xff\x00\x00\xf1\xff\xee\xff\xd8\xff\x00\x00\xd2\xff\xe8\xff\xe5\xff\xa3\xff\xbc\xff\x00\x00\xab\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x43\xff\x42\xff\xa1\xff\x00\x00\xaf\xff\x00\x00\x00\x00\xa7\xff\x00\x00\x9f\xff\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xa5\xff\x00\x00\x00\x00\xa9\xff\x1f\xff\x1e\xff\x1c\xff\x00\x00\x1e\xff\x00\x00\x00\x00\xe0\xff\xda\xff\x00\x00\x00\x00\xc5\xff\x1d\xff\x1c\xff\x1c\xff\xb3\xff\x00\x00\x1c\xff\x99\xff\x1c\xff\x1c\xff\x00\x00\x1c\xff\x1c\xff\x97\xff\x00\x00\x33\xff\x1c\xff\x1c\xff\x9e\xff\x1c\xff\x1e\xff\x00\x00\x00\x00\xeb\xff\xf2\xff\xd7\xff\xe9\xff\xb1\xff\xbd\xff\x00\x00\xbb\xff\x00\x00\xba\xff\x1c\xff\xb5\xff\xb7\xff\x1c\xff\xc2\xff\xb4\xff\xc1\xff\x1c\xff\x00\x00\xbf\xff\xbe\xff\x00\x00\x1c\xff\xc4\xff\x00\x00\x00\x00\xb2\xff\xc0\xff\xb6\xff\xb9\xff\x1c\xff\x9d\xff\xb8\xff\x20\xff\x00\x00\x1c\xff\xc3\xff"#
happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x02\x00\x0a\x00\x04\x00\x03\x00\x17\x00\x04\x00\x01\x00\x30\x00\x12\x00\x32\x00\x4a\x00\x06\x00\x07\x00\x08\x00\x0a\x00\x11\x00\x39\x00\x0a\x00\x1c\x00\x15\x00\x11\x00\x17\x00\x12\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x1d\x00\x11\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1f\x00\x25\x00\x1d\x00\x10\x00\x28\x00\x10\x00\x36\x00\x2b\x00\x1f\x00\x2d\x00\x12\x00\x0a\x00\x3c\x00\x31\x00\x4a\x00\x0d\x00\x15\x00\x1e\x00\x47\x00\x1e\x00\x1c\x00\x39\x00\x3a\x00\x42\x00\x1d\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x41\x00\x47\x00\x47\x00\x36\x00\x0b\x00\x0c\x00\x11\x00\x4a\x00\x47\x00\x3c\x00\x15\x00\x15\x00\x17\x00\x16\x00\x19\x00\x4a\x00\x1b\x00\x1c\x00\x1b\x00\x1d\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4a\x00\x25\x00\x4a\x00\x17\x00\x28\x00\x4a\x00\x42\x00\x2b\x00\x4a\x00\x2d\x00\x45\x00\x13\x00\x19\x00\x31\x00\x22\x00\x16\x00\x08\x00\x13\x00\x0a\x00\x1d\x00\x1b\x00\x39\x00\x3a\x00\x14\x00\x20\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x20\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x21\x00\x17\x00\x1e\x00\x4a\x00\x4a\x00\x36\x00\x11\x00\x0b\x00\x05\x00\x4a\x00\x15\x00\x08\x00\x17\x00\x08\x00\x19\x00\x14\x00\x18\x00\x36\x00\x4a\x00\x17\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x47\x00\x25\x00\x23\x00\x21\x00\x28\x00\x4a\x00\x4a\x00\x18\x00\x1e\x00\x47\x00\x1e\x00\x4a\x00\x17\x00\x08\x00\x25\x00\x4a\x00\x4a\x00\x28\x00\x29\x00\x17\x00\x0f\x00\x39\x00\x3a\x00\x22\x00\x47\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x22\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x17\x00\x07\x00\x4a\x00\x17\x00\x4a\x00\x11\x00\x35\x00\x4a\x00\x0e\x00\x15\x00\x22\x00\x17\x00\x3b\x00\x19\x00\x22\x00\x45\x00\x02\x00\x47\x00\x04\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\x25\x00\x4a\x00\x0d\x00\x28\x00\x0f\x00\x18\x00\x11\x00\x12\x00\x4a\x00\x1d\x00\x15\x00\x16\x00\x17\x00\x19\x00\x19\x00\x19\x00\x23\x00\x07\x00\x1d\x00\x19\x00\x39\x00\x3a\x00\x0a\x00\x47\x00\x3d\x00\x4a\x00\x02\x00\x40\x00\x04\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4a\x00\x0f\x00\x0d\x00\x1a\x00\x12\x00\x10\x00\x11\x00\x2f\x00\x30\x00\x36\x00\x15\x00\x16\x00\x17\x00\x02\x00\x19\x00\x04\x00\x47\x00\x39\x00\x1d\x00\x19\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x0d\x00\x47\x00\x47\x00\x02\x00\x11\x00\x04\x00\x47\x00\x05\x00\x15\x00\x16\x00\x17\x00\x0a\x00\x19\x00\x2f\x00\x30\x00\x4a\x00\x1d\x00\x24\x00\x11\x00\x4a\x00\x27\x00\x1a\x00\x15\x00\x39\x00\x17\x00\x25\x00\x19\x00\x25\x00\x2f\x00\x30\x00\x1d\x00\x24\x00\x43\x00\x44\x00\x45\x00\x00\x00\x47\x00\x02\x00\x02\x00\x1a\x00\x04\x00\x3c\x00\x30\x00\x37\x00\x3f\x00\x37\x00\x3a\x00\x0b\x00\x3a\x00\x24\x00\x4a\x00\x39\x00\x08\x00\x11\x00\x43\x00\x44\x00\x45\x00\x15\x00\x47\x00\x17\x00\x4a\x00\x19\x00\x02\x00\x13\x00\x04\x00\x1d\x00\x48\x00\x49\x00\x43\x00\x44\x00\x45\x00\x0b\x00\x47\x00\x02\x00\x1e\x00\x04\x00\x0f\x00\x11\x00\x30\x00\x12\x00\x32\x00\x15\x00\x0b\x00\x17\x00\x35\x00\x19\x00\x05\x00\x39\x00\x11\x00\x1d\x00\x3b\x00\x02\x00\x15\x00\x04\x00\x17\x00\x0e\x00\x19\x00\x33\x00\x34\x00\x35\x00\x1d\x00\x08\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x11\x00\x47\x00\x0f\x00\x35\x00\x15\x00\x41\x00\x17\x00\x4a\x00\x19\x00\x3b\x00\x2f\x00\x30\x00\x1d\x00\x25\x00\x2f\x00\x30\x00\x28\x00\x29\x00\x44\x00\x45\x00\x39\x00\x43\x00\x44\x00\x45\x00\x39\x00\x47\x00\x30\x00\x33\x00\x34\x00\x35\x00\x08\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x39\x00\x47\x00\x0f\x00\x30\x00\x17\x00\x04\x00\x19\x00\x42\x00\x43\x00\x33\x00\x34\x00\x35\x00\x39\x00\x0c\x00\x35\x00\x43\x00\x44\x00\x45\x00\x11\x00\x47\x00\x3b\x00\x4a\x00\x15\x00\x41\x00\x17\x00\x04\x00\x19\x00\x48\x00\x49\x00\x44\x00\x45\x00\x36\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x11\x00\x30\x00\x4a\x00\x28\x00\x15\x00\x35\x00\x17\x00\x35\x00\x19\x00\x4a\x00\x39\x00\x3b\x00\x30\x00\x3b\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\x4a\x00\x39\x00\x0a\x00\x28\x00\x0f\x00\x48\x00\x49\x00\x0f\x00\x04\x00\x35\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x3b\x00\x48\x00\x49\x00\x26\x00\x25\x00\x07\x00\x11\x00\x28\x00\x29\x00\x2c\x00\x15\x00\x05\x00\x17\x00\x04\x00\x19\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4a\x00\x11\x00\x0b\x00\x0c\x00\x28\x00\x15\x00\x25\x00\x17\x00\x25\x00\x19\x00\x33\x00\x34\x00\x35\x00\x26\x00\x27\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x25\x00\x33\x00\x34\x00\x35\x00\x28\x00\x42\x00\x43\x00\x0b\x00\x0c\x00\x04\x00\x0a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x42\x00\x43\x00\x2e\x00\x2f\x00\x30\x00\x25\x00\x11\x00\x25\x00\x28\x00\x29\x00\x15\x00\x35\x00\x17\x00\x39\x00\x19\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x33\x00\x34\x00\x35\x00\x0a\x00\x28\x00\x33\x00\x34\x00\x35\x00\x2e\x00\x2f\x00\x30\x00\x25\x00\x1a\x00\x04\x00\x05\x00\x42\x00\x43\x00\x09\x00\x0a\x00\x39\x00\x42\x00\x43\x00\x0d\x00\x0e\x00\x26\x00\x35\x00\x28\x00\x29\x00\x2a\x00\x38\x00\x2c\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x32\x00\x33\x00\x34\x00\x1a\x00\x25\x00\x37\x00\x38\x00\x28\x00\x29\x00\x3b\x00\x03\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x26\x00\x02\x00\x28\x00\x29\x00\x2a\x00\x1a\x00\x2c\x00\x39\x00\x1a\x00\x26\x00\x27\x00\x03\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x05\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x19\x00\x2c\x00\x25\x00\x1a\x00\x36\x00\x28\x00\x29\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x43\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x47\x00\x2c\x00\x47\x00\x1a\x00\x33\x00\x34\x00\x35\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x05\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x1e\x00\x2c\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x32\x00\x33\x00\x34\x00\x0b\x00\x0c\x00\x37\x00\x38\x00\x12\x00\x39\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1e\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0f\x00\x39\x00\x06\x00\x07\x00\x0b\x00\x0c\x00\x01\x00\x3f\x00\x39\x00\x0d\x00\x0e\x00\x06\x00\x07\x00\x08\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x33\x00\x34\x00\x35\x00\x0d\x00\x0e\x00\x09\x00\x0a\x00\x18\x00\x39\x00\x34\x00\x35\x00\x34\x00\x35\x00\x1a\x00\x3f\x00\x09\x00\x0a\x00\x3d\x00\x3e\x00\x3d\x00\x3e\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3d\x00\x3e\x00\x01\x00\x02\x00\x05\x00\x47\x00\x12\x00\x18\x00\x39\x00\x47\x00\x12\x00\x12\x00\x47\x00\x07\x00\x3f\x00\x47\x00\x07\x00\x04\x00\x36\x00\x04\x00\x12\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x47\x00\x18\x00\x12\x00\x12\x00\x0a\x00\x3f\x00\x40\x00\x39\x00\x12\x00\x47\x00\x0f\x00\x47\x00\x47\x00\x3f\x00\x40\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x12\x00\x39\x00\x12\x00\x47\x00\x0f\x00\x3d\x00\x3e\x00\x3f\x00\x39\x00\x10\x00\x47\x00\x47\x00\x3d\x00\x3e\x00\x3f\x00\x26\x00\x19\x00\x28\x00\x29\x00\x2a\x00\x12\x00\x2c\x00\x10\x00\x47\x00\x10\x00\x47\x00\x10\x00\x32\x00\x33\x00\x34\x00\x47\x00\x10\x00\x37\x00\x38\x00\x10\x00\x10\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x10\x00\x47\x00\x10\x00\x0a\x00\x07\x00\x47\x00\x42\x00\x39\x00\x0a\x00\x18\x00\x07\x00\x42\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x04\x00\x47\x00\x17\x00\x0c\x00\x1a\x00\x10\x00\x1a\x00\x39\x00\x1a\x00\x0e\x00\x04\x00\x47\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x0a\x00\x07\x00\x47\x00\x10\x00\x1a\x00\x47\x00\x2d\x00\x39\x00\x47\x00\x05\x00\x0a\x00\x14\x00\x18\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x2d\x00\x12\x00\x1a\x00\x47\x00\x47\x00\x3f\x00\x47\x00\x39\x00\x0f\x00\x07\x00\x1a\x00\x1a\x00\x35\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x39\x00\x1a\x00\x10\x00\x10\x00\x1a\x00\x10\x00\x3f\x00\x39\x00\x47\x00\x1a\x00\x47\x00\x1a\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0c\x00\x39\x00\x19\x00\x18\x00\x0d\x00\x14\x00\x06\x00\x3f\x00\x39\x00\x1a\x00\x18\x00\x10\x00\x12\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x43\x00\x39\x00\x47\x00\x12\x00\x19\x00\x0d\x00\x0d\x00\x3f\x00\x39\x00\x47\x00\x45\x00\x47\x00\x0f\x00\x05\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x18\x00\x39\x00\x14\x00\x1a\x00\x0c\x00\x13\x00\x0a\x00\x3f\x00\x39\x00\x0a\x00\x35\x00\x47\x00\x2d\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0d\x00\x39\x00\x47\x00\x47\x00\x47\x00\x00\x00\x12\x00\x3f\x00\x39\x00\x48\x00\x19\x00\x47\x00\x47\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x19\x00\x39\x00\x19\x00\x19\x00\x47\x00\x0c\x00\x09\x00\x3f\x00\x39\x00\x0d\x00\x2e\x00\x1e\x00\x48\x00\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\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"#
+happyCheck = HappyA# "\xff\xff\x02\x00\x0d\x00\x04\x00\x03\x00\x17\x00\x04\x00\x01\x00\x30\x00\x11\x00\x32\x00\x48\x00\x06\x00\x07\x00\x08\x00\x48\x00\x11\x00\x39\x00\x0a\x00\x0a\x00\x15\x00\x10\x00\x17\x00\x1f\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x1d\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1e\x00\x25\x00\x1d\x00\x19\x00\x10\x00\x18\x00\x05\x00\x0a\x00\x2c\x00\x11\x00\x30\x00\x46\x00\x30\x00\x31\x00\x32\x00\x0e\x00\x23\x00\x46\x00\x1e\x00\x39\x00\x38\x00\x39\x00\x44\x00\x1f\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x40\x00\x46\x00\x46\x00\x15\x00\x41\x00\x48\x00\x11\x00\x48\x00\x46\x00\x12\x00\x15\x00\x1d\x00\x17\x00\x46\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x48\x00\x1c\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x41\x00\x20\x00\x48\x00\x00\x00\x12\x00\x02\x00\x2c\x00\x13\x00\x1d\x00\x19\x00\x30\x00\x31\x00\x32\x00\x05\x00\x1c\x00\x17\x00\x08\x00\x17\x00\x38\x00\x39\x00\x20\x00\x14\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x18\x00\x21\x00\x14\x00\x48\x00\x35\x00\x1e\x00\x11\x00\x48\x00\x48\x00\x15\x00\x15\x00\x23\x00\x17\x00\x16\x00\x19\x00\x21\x00\x46\x00\x1d\x00\x1b\x00\x17\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x48\x00\x16\x00\x46\x00\x22\x00\x46\x00\x0b\x00\x1b\x00\x06\x00\x07\x00\x17\x00\x19\x00\x31\x00\x32\x00\x48\x00\x0d\x00\x0e\x00\x18\x00\x17\x00\x38\x00\x39\x00\x22\x00\x48\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x48\x00\x1d\x00\x17\x00\x48\x00\x17\x00\x17\x00\x11\x00\x48\x00\x48\x00\x08\x00\x15\x00\x0a\x00\x17\x00\x22\x00\x19\x00\x22\x00\x22\x00\x0a\x00\x48\x00\x19\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x44\x00\x08\x00\x46\x00\x1a\x00\x1e\x00\x0a\x00\x1a\x00\x04\x00\x05\x00\x26\x00\x0f\x00\x31\x00\x32\x00\x24\x00\x2b\x00\x46\x00\x0d\x00\x0e\x00\x38\x00\x39\x00\x35\x00\x25\x00\x3c\x00\x1e\x00\x48\x00\x3f\x00\x48\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x02\x00\x05\x00\x04\x00\x30\x00\x46\x00\x48\x00\x37\x00\x08\x00\x0a\x00\x3a\x00\x25\x00\x0d\x00\x39\x00\x0f\x00\x07\x00\x11\x00\x12\x00\x48\x00\x13\x00\x15\x00\x16\x00\x17\x00\x02\x00\x19\x00\x04\x00\x46\x00\x47\x00\x1d\x00\x37\x00\x1e\x00\x48\x00\x3a\x00\x02\x00\x0d\x00\x04\x00\x30\x00\x10\x00\x11\x00\x0a\x00\x30\x00\x0a\x00\x15\x00\x16\x00\x17\x00\x39\x00\x19\x00\x12\x00\x11\x00\x39\x00\x1d\x00\x1a\x00\x15\x00\x02\x00\x17\x00\x04\x00\x19\x00\x48\x00\x46\x00\x47\x00\x1d\x00\x24\x00\x46\x00\x47\x00\x0d\x00\x42\x00\x43\x00\x44\x00\x11\x00\x46\x00\x30\x00\x08\x00\x15\x00\x16\x00\x17\x00\x08\x00\x19\x00\x48\x00\x0f\x00\x39\x00\x1d\x00\x02\x00\x0f\x00\x04\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x0b\x00\x46\x00\x46\x00\x47\x00\x19\x00\x39\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x0f\x00\x19\x00\x02\x00\x12\x00\x04\x00\x1d\x00\x33\x00\x34\x00\x35\x00\x2f\x00\x30\x00\x0b\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x11\x00\x46\x00\x39\x00\x41\x00\x15\x00\x39\x00\x17\x00\x48\x00\x19\x00\x02\x00\x01\x00\x04\x00\x1d\x00\x2f\x00\x30\x00\x06\x00\x07\x00\x08\x00\x0b\x00\x02\x00\x17\x00\x04\x00\x19\x00\x39\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x05\x00\x19\x00\x36\x00\x11\x00\x04\x00\x1d\x00\x07\x00\x15\x00\x3c\x00\x17\x00\x36\x00\x19\x00\x0c\x00\x0e\x00\x48\x00\x1d\x00\x3c\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x07\x00\x19\x00\x33\x00\x34\x00\x35\x00\x2f\x00\x30\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x26\x00\x27\x00\x24\x00\x39\x00\x41\x00\x27\x00\x42\x00\x43\x00\x44\x00\x48\x00\x46\x00\x25\x00\x2e\x00\x2f\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x08\x00\x46\x00\x48\x00\x04\x00\x36\x00\x39\x00\x3b\x00\x0f\x00\x04\x00\x3e\x00\x3c\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x11\x00\x30\x00\x0a\x00\x32\x00\x15\x00\x11\x00\x17\x00\x0f\x00\x19\x00\x15\x00\x39\x00\x17\x00\x04\x00\x19\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x35\x00\x11\x00\x2e\x00\x2f\x00\x30\x00\x15\x00\x3b\x00\x17\x00\x25\x00\x19\x00\x48\x00\x28\x00\x29\x00\x39\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3b\x00\x48\x00\x33\x00\x34\x00\x35\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x35\x00\x25\x00\x42\x00\x43\x00\x28\x00\x29\x00\x3b\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x11\x00\x25\x00\x0f\x00\x39\x00\x15\x00\x12\x00\x17\x00\x1a\x00\x19\x00\x3f\x00\x40\x00\x33\x00\x34\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x48\x00\x42\x00\x43\x00\x0b\x00\x0c\x00\x31\x00\x32\x00\x33\x00\x2f\x00\x30\x00\x36\x00\x37\x00\x0b\x00\x0c\x00\x3a\x00\x0a\x00\x35\x00\x1a\x00\x39\x00\x2e\x00\x2f\x00\x30\x00\x3b\x00\x25\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x26\x00\x39\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x25\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x0b\x00\x0c\x00\x36\x00\x37\x00\x35\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x0a\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x09\x00\x0a\x00\x36\x00\x37\x00\x35\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x25\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x26\x00\x27\x00\x36\x00\x37\x00\x02\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x0b\x00\x0c\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x26\x00\x27\x00\x36\x00\x37\x00\x26\x00\x27\x00\x3a\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x39\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3f\x00\x39\x00\x26\x00\x27\x00\x38\x00\x44\x00\x45\x00\x3f\x00\x39\x00\x33\x00\x34\x00\x35\x00\x44\x00\x45\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x39\x00\x03\x00\x33\x00\x34\x00\x35\x00\x1a\x00\x3f\x00\x39\x00\x0b\x00\x0c\x00\x05\x00\x44\x00\x45\x00\x3f\x00\x40\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x39\x00\x0d\x00\x0e\x00\x19\x00\x3d\x00\x3e\x00\x3f\x00\x39\x00\x33\x00\x34\x00\x35\x00\x3d\x00\x3e\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x46\x00\x42\x00\x43\x00\x46\x00\x09\x00\x0a\x00\x05\x00\x39\x00\x33\x00\x34\x00\x35\x00\x34\x00\x35\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x35\x00\x42\x00\x43\x00\x34\x00\x35\x00\x09\x00\x0a\x00\x39\x00\x33\x00\x34\x00\x35\x00\x01\x00\x02\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1e\x00\x42\x00\x43\x00\x3d\x00\x3e\x00\x3d\x00\x3e\x00\x39\x00\x3d\x00\x3e\x00\x12\x00\x1e\x00\x0f\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x18\x00\x1a\x00\x05\x00\x46\x00\x12\x00\x3f\x00\x18\x00\x39\x00\x46\x00\x12\x00\x12\x00\x46\x00\x07\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x07\x00\x39\x00\x46\x00\x04\x00\x04\x00\x35\x00\x12\x00\x3f\x00\x39\x00\x18\x00\x04\x00\x46\x00\x12\x00\x12\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0a\x00\x39\x00\x12\x00\x46\x00\x0f\x00\x12\x00\x46\x00\x3f\x00\x39\x00\x46\x00\x12\x00\x46\x00\x0f\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x19\x00\x39\x00\x46\x00\x12\x00\x10\x00\x10\x00\x10\x00\x3f\x00\x39\x00\x46\x00\x46\x00\x10\x00\x10\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x39\x00\x10\x00\x10\x00\x10\x00\x46\x00\x0a\x00\x3f\x00\x39\x00\x18\x00\x07\x00\x46\x00\x41\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0a\x00\x39\x00\x07\x00\x04\x00\x41\x00\x46\x00\x17\x00\x3f\x00\x39\x00\x0c\x00\x1a\x00\x1a\x00\x10\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0e\x00\x39\x00\x04\x00\x46\x00\x1a\x00\x46\x00\x0a\x00\x3f\x00\x39\x00\x2c\x00\x07\x00\x10\x00\x46\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x46\x00\x39\x00\x05\x00\x0a\x00\x14\x00\x2c\x00\x12\x00\x3f\x00\x39\x00\x18\x00\x46\x00\x07\x00\x1a\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x46\x00\x39\x00\x34\x00\x0f\x00\x34\x00\x1a\x00\x10\x00\x3f\x00\x39\x00\x1a\x00\x1a\x00\x10\x00\x1a\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0d\x00\x39\x00\x46\x00\x1a\x00\x46\x00\x0d\x00\x19\x00\x3f\x00\x39\x00\x18\x00\x14\x00\x06\x00\x18\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1a\x00\x39\x00\x12\x00\x46\x00\x42\x00\x46\x00\x12\x00\x3f\x00\x39\x00\x0d\x00\x19\x00\x0d\x00\x46\x00\x44\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0f\x00\x39\x00\x05\x00\x46\x00\x14\x00\x18\x00\x0c\x00\x3f\x00\x39\x00\x1a\x00\x13\x00\x0a\x00\x34\x00\x0a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x39\x00\x46\x00\x2c\x00\x0d\x00\x46\x00\x46\x00\x3f\x00\x39\x00\x46\x00\x12\x00\x46\x00\x46\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x47\x00\x39\x00\x00\x00\x19\x00\x19\x00\x46\x00\x19\x00\x3f\x00\x39\x00\x0c\x00\x46\x00\x46\x00\x0d\x00\x09\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x26\x00\x39\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1e\x00\x3f\x00\x39\x00\x47\x00\x2d\x00\x31\x00\x32\x00\x33\x00\x3f\x00\xff\xff\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\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"#
happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x10\x00\x05\x01\x11\x00\x77\x00\x6d\x01\xf6\x00\x62\x00\x8c\x00\x53\x01\xda\x00\xf4\x01\x63\x00\x64\x00\x65\x00\x9a\x00\x12\x00\x0d\x00\x9b\x01\xa6\x01\x13\x00\x4d\x01\x14\x00\xac\x01\x15\x00\x66\x00\x16\x00\x17\x00\x47\x00\x4d\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa2\x01\x1d\x00\x9c\x01\x59\x01\x1e\x00\x59\x01\x98\x01\x1f\x00\x4e\x01\x20\x00\x53\x01\x05\x01\xc8\x01\x21\x00\xf0\x01\x60\x00\x43\x01\xad\x01\x6e\x01\x5a\x01\x54\x01\x22\x00\x23\x00\x06\x01\x95\x01\x24\x00\x25\x00\x10\x00\x26\x00\x11\x00\x55\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x52\x00\x67\x00\x78\x00\xf7\x00\x98\x01\x8b\x01\x2c\x01\x12\x00\x4f\x01\x9d\x01\x99\x01\x13\x00\x43\x01\x14\x00\x4a\x01\x15\x00\x4f\x01\x16\x00\x17\x00\x9f\x01\x44\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x5b\x01\x1d\x00\x5b\x01\x46\x01\x1e\x00\x55\x01\x28\x01\x1f\x00\x45\x01\x20\x00\x99\x00\x56\x01\xf2\x00\x21\x00\x9d\x01\x4a\x01\xc9\x00\x56\x01\xe5\x00\x9c\x01\x4b\x01\x22\x00\x23\x00\x40\x01\xaa\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x57\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x92\x01\x65\x01\xcb\x00\x45\x01\x4c\x01\xf3\x00\x12\x00\x25\x01\xe1\x00\xe7\x01\x13\x00\xc9\x00\x14\x00\xc9\x00\x15\x00\x40\x01\x50\x01\xb7\x00\x48\x01\x26\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9d\x01\x1d\x00\xa4\x01\x41\x01\x1e\x00\x58\x01\x4c\x01\x4b\x00\xcb\x00\xb8\x00\xcb\x00\x58\x01\x46\x01\xb4\x01\x3c\x00\xeb\x01\x42\x01\x3d\x00\xcd\x00\x46\x01\xf8\x00\x22\x00\x23\x00\x7e\x01\x66\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x7f\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x46\x01\x6d\x01\x39\x01\xec\x01\x46\x01\x52\x01\x12\x00\x94\x00\x42\x01\x3a\x01\x13\x00\x47\x01\x14\x00\xa9\x01\x15\x00\x49\x01\x4c\x00\x54\x00\x4d\x00\x55\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9a\x00\x1d\x00\x48\x01\xc0\x00\x1e\x00\x9c\xff\x50\x01\x56\x00\x9c\xff\x48\x01\x47\x00\x57\x00\xc1\x00\x58\x00\xea\x01\x59\x00\xf2\x00\x51\x01\xd3\x01\x5a\x00\x40\x00\x22\x00\x23\x00\x9a\x00\x6e\x01\x24\x00\x48\x01\x54\x00\x26\x00\x55\x00\x48\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xed\x01\x97\x01\xc0\x00\xe7\x00\x98\x01\xc5\x00\x56\x00\x60\x00\x0c\x00\xf3\x00\x57\x00\xc1\x00\x58\x00\x54\x00\x59\x00\x55\x00\x48\x00\x0d\x00\x5a\x00\xbc\x01\x52\x01\x5b\x00\x5c\x00\x5d\x00\xc0\x00\x5e\x00\xb8\x00\x54\x00\x56\x00\x55\x00\x41\x00\xd1\x01\x57\x00\xc1\x00\x58\x00\x9b\x01\x59\x00\x3b\x00\x0c\x00\xd5\x01\x5a\x00\x30\x00\x56\x00\xd7\x01\x31\x00\xcb\x01\x57\x00\x0d\x00\x58\x00\x7a\x00\x59\x00\x7a\x00\x32\x00\x33\x00\x5a\x00\xef\x01\x5b\x00\x5c\x00\x5d\x00\x2d\x00\x5e\x00\x04\x00\x54\x00\xcb\x01\x55\x00\x34\x00\xae\x01\x7b\x00\x35\x00\x7b\x00\x0a\x01\x84\x00\x7c\x00\xcc\x01\xd9\x01\x0d\x00\xc9\x00\x56\x00\x5b\x00\x5c\x00\x5d\x00\x57\x00\x5e\x00\x58\x00\xdb\x01\x59\x00\x54\x00\xca\x00\x55\x00\x5a\x00\xaf\x01\xd4\x01\x5b\x00\x5c\x00\x5d\x00\x84\x00\x5e\x00\x54\x00\xcb\x00\x55\x00\x9e\x00\x56\x00\x8c\x00\x9f\x00\x8d\x00\x57\x00\x84\x00\x58\x00\x94\x00\x59\x00\x29\x01\x0d\x00\x56\x00\x5a\x00\x31\x01\x54\x00\x57\x00\x55\x00\x58\x00\x2a\x01\x59\x00\x7f\x00\x80\x00\x81\x00\x5a\x00\x5c\x01\xdc\x01\x5b\x00\x5c\x00\x5d\x00\x56\x00\x85\x00\xf8\x00\x94\x00\x57\x00\x0b\x01\x58\x00\xde\x01\x59\x00\x95\x00\x41\x00\x0c\x00\x5a\x00\x3c\x00\x60\x00\x0c\x00\x3d\x00\x49\x00\x96\x00\x11\x01\x0d\x00\x5b\x00\x5c\x00\xa3\x00\x0d\x00\xa4\x00\x36\x00\x9f\x00\x80\x00\x81\x00\xf7\x00\xdf\x01\x5b\x00\x5c\x00\x5d\x00\x0d\x00\xa8\x00\xf8\x00\xae\x01\xa9\x00\x38\x00\xaa\x00\xa0\x00\xa6\x00\x7f\x00\x80\x00\x81\x00\x0d\x00\x2d\xff\x94\x00\x5b\x00\x5c\x00\x5d\x00\x12\x00\x5e\x00\x95\x00\xe0\x01\x13\x00\x82\x00\x14\x00\xb2\x01\x15\x00\xaf\x01\xb7\x01\x96\x00\x97\x00\x98\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa1\x01\x12\x00\xae\x01\xe3\x01\x1e\x00\x13\x00\x94\x00\x14\x00\x94\x00\x15\x00\xe4\x01\x0d\x00\xbe\x00\xae\x01\xd4\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x32\xff\xb9\x01\x0d\x00\x8b\x00\x1e\x00\x32\xff\xaf\x01\xba\x01\x8c\x00\x38\x00\x94\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xbe\x00\xaf\x01\xb0\x01\x3f\x01\x3c\x00\x91\x01\x12\x00\x3d\x00\xec\x00\x40\x01\x13\x00\x8c\x01\x14\x00\x38\x00\x15\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x93\x01\x12\x00\x8d\x01\x2c\x01\x1e\x00\x13\x00\x67\x01\x14\x00\x71\x01\x39\x00\x9f\x00\x80\x00\x81\x00\x76\x01\xc6\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x85\x01\x9f\x00\x80\x00\x81\x00\x1e\x00\xa0\x00\x0f\x01\x90\x01\x2c\x01\x38\x00\x84\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa0\x00\x17\x01\x72\x00\x0b\x00\x0c\x00\x3c\x00\x12\x00\x2e\x01\x3d\x00\x9a\x00\x13\x00\x1d\x01\x14\x00\x0d\x00\x15\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9f\x00\x80\x00\x81\x00\x21\x01\x1e\x00\x9f\x00\x80\x00\x81\x00\x73\x00\x0b\x00\x0c\x00\xd0\x00\xac\xff\xb2\x00\xb3\x00\xa0\x00\xbc\x00\x62\x01\xf4\x00\x0d\x00\xa0\x00\xa1\x00\xb4\x00\xb5\x00\xac\xff\xe1\x00\xac\xff\xac\xff\xac\xff\x75\x00\xac\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xac\xff\xac\xff\xac\xff\xa2\xff\x3c\x00\xac\xff\xac\xff\x3d\x00\x3e\x00\xac\xff\x2e\x00\x74\x00\x0b\x00\x0c\x00\x52\x00\xa2\xff\x04\x00\xa2\xff\xa2\xff\xa2\xff\xf4\x01\xa2\xff\x0d\x00\xb0\xff\x6a\x01\x6b\x01\x69\x00\xa2\xff\xa2\xff\xa2\xff\x73\x01\x74\x01\xa2\xff\xa2\xff\xf2\x01\xb0\xff\xa2\xff\xb0\xff\xb0\xff\xb0\xff\xe9\x01\xb0\xff\x3c\x00\xae\xff\xb7\x00\x3d\x00\x49\x00\xb0\xff\xb0\xff\xb0\xff\x76\x01\x77\x01\xb0\xff\xb0\xff\xf3\x01\xae\xff\xb0\xff\xae\xff\xae\xff\xae\xff\xbe\x01\xae\xff\xce\x01\xaa\xff\x09\x01\x80\x00\x81\x00\xae\xff\xae\xff\xae\xff\x79\x01\x7a\x01\xae\xff\xae\xff\xd3\x01\xaa\xff\xae\xff\xaa\xff\xaa\xff\xaa\xff\xd7\x01\xaa\xff\x71\x00\x6d\x00\x6e\x00\x0b\x00\x0c\x00\xaa\xff\xaa\xff\xaa\xff\x2b\x01\x2c\x01\xaa\xff\xaa\xff\xd9\x01\x0d\x00\xaa\xff\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe3\x01\x6c\x00\x08\x00\x6d\x00\x6e\x00\x0b\x00\x0c\x00\xe6\x01\x0d\x00\xed\x00\xee\x00\x3b\x01\x2c\x01\x62\x00\x0e\x00\x0d\x00\xef\x00\xf0\x00\x63\x00\x64\x00\x65\x00\x19\x01\x83\x01\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x85\x00\x80\x00\x81\x00\x3c\x01\x3d\x01\xf3\x00\xf4\x00\xe7\x01\x0d\x00\x14\x01\x81\x00\x16\x01\x81\x00\xb6\x01\x0e\x00\x26\x01\xf4\x00\x44\x00\xd6\x00\x44\x00\x45\x00\x19\x01\x1a\x01\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x44\x00\x48\x00\x2b\x00\x2c\x00\xb7\x01\xbe\x01\xbf\x01\xc1\x01\x0d\x00\xc2\x01\xc4\x01\xc8\x01\xce\x01\xcf\x01\x0e\x00\xd0\x01\xd1\x01\x2e\x01\xb7\x00\x2e\x01\x8f\x01\x19\x01\x1b\x01\xdc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x01\x4d\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x19\xff\x90\x01\x95\x01\x9f\x01\x9b\x01\x0e\x00\xdd\x00\x0d\x00\xa1\x01\x19\xff\xa4\x01\x19\xff\xa8\x01\x0e\x00\x4e\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa6\x01\x0d\x00\xa9\x01\x19\xff\xad\x01\x44\x00\xb8\x01\x0e\x00\x0d\x00\x67\x01\xb3\x01\xb4\x01\x44\x00\x50\x00\x0e\x00\xfa\x00\x62\x01\xfb\x00\xfc\x00\xfd\x00\x64\x01\xfe\x00\x6a\x01\x69\x01\x6f\x01\x70\x01\x71\x01\xff\x00\x00\x01\x01\x01\x41\x00\x73\x01\x02\x01\x03\x01\x76\x01\x79\x01\x04\x01\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x1c\x01\x7c\x01\x7d\x01\x7e\x01\x05\x01\x81\x01\x41\x00\x82\x01\x0d\x00\x89\x01\x87\x01\x8a\x01\x8b\x01\x88\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbd\x00\x2e\x01\x41\x00\x30\x01\x31\x01\x33\x01\x35\x01\x34\x01\x0d\x00\x39\x01\x36\x01\x2e\x01\xb8\x00\x5e\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa5\x00\x60\x01\x07\x01\x5f\x01\x08\x01\x09\x01\x41\x00\x61\x01\x0d\x00\x0d\x01\x0e\x01\x8b\x00\x0f\x01\x20\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xaa\x00\xe9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x13\x01\x14\x01\x21\x01\x1f\x01\x23\x01\x0e\x00\x24\x01\x0d\x00\xbb\x00\x29\x01\xbc\x00\xc2\x00\xb9\x00\x0e\x00\xee\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xda\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xba\x00\x0d\x00\xc3\x00\xc4\x00\xc6\x00\xc7\x00\xc8\x00\x0e\x00\x0d\x00\x41\x00\xd0\x00\x41\x00\xd2\x00\xd3\x00\x0e\x00\xdd\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe1\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd4\x00\x0d\x00\xd6\x00\xda\x00\xe0\x00\xe3\x00\xe4\x00\x0e\x00\x0d\x00\xe8\x00\xe6\x00\xe9\x00\xea\x00\xeb\x00\x0e\x00\xbb\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbf\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xec\x00\x0d\x00\x41\x00\x6b\x00\x70\x00\x60\x00\x7a\x00\x0e\x00\x0d\x00\x7e\x00\x7f\x00\x87\x00\x88\x00\x89\x00\x0e\x00\xc2\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x8f\x00\x0d\x00\x8a\x00\x90\x00\x91\x00\x92\x00\x93\x00\x0e\x00\x0d\x00\x9a\x00\x94\x00\x41\x00\x9c\x00\x9d\x00\x0e\x00\xc5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x60\x00\x0d\x00\xac\x00\xad\x00\xae\x00\xff\xff\xb2\x00\x0e\x00\x0d\x00\xff\xff\x36\x00\xaf\x00\xb0\x00\xb1\x00\x0e\x00\xca\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x82\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x3a\x00\x0d\x00\x3b\x00\x43\x00\x41\x00\x5f\x00\x68\x00\x0e\x00\x0d\x00\x60\x00\x06\x00\x69\x00\xff\xff\x00\x00\x0e\x00\x36\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x37\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x10\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x15\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xcb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xce\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd7\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xd8\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xdb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xde\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x6b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x70\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x78\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x43\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+happyTable = HappyA# "\x00\x00\x10\x00\x61\x00\x11\x00\x78\x00\x68\x01\xf2\x00\x63\x00\x8d\x00\x48\x01\xd6\x00\xef\x01\x64\x00\x65\x00\x66\x00\xeb\x01\x12\x00\x0d\x00\x96\x01\x01\x01\x13\x00\x54\x01\x14\x00\x9d\x01\x15\x00\x67\x00\x16\x00\x17\x00\x48\x00\xb6\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa8\x01\x1d\x00\x97\x01\x42\x00\x54\x01\x4b\x01\x24\x01\x01\x01\x1e\x00\x48\x01\x36\x00\xb7\x00\x1f\x00\x20\x00\x21\x00\x25\x01\x9f\x01\x69\x01\x55\x01\x0d\x00\x22\x00\x23\x00\x96\x00\x49\x01\x24\x00\x25\x00\x10\x00\x26\x00\x11\x00\x4a\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x53\x00\x68\x00\x79\x00\xf3\x00\x3e\x01\x02\x01\xe2\x01\x12\x00\x56\x01\x98\x01\x4e\x01\x13\x00\x90\x01\x14\x00\x43\x00\x15\x00\x51\x01\x16\x00\x17\x00\x4d\x01\xa1\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x56\x01\x1d\x00\x23\x01\xa5\x01\x4a\x01\x2d\x00\x4e\x01\x04\x00\x1e\x00\x51\x01\x97\x01\xee\x00\x1f\x00\x20\x00\x21\x00\xdd\x00\x4f\x01\x60\x01\xc9\x00\x68\x01\x22\x00\x23\x00\x52\x01\x3b\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x40\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x01\x8d\x01\x3b\x01\x50\x01\xef\x00\xcb\x00\x12\x00\xe6\x01\x53\x01\x3e\x01\x13\x00\x4c\x01\x14\x00\x45\x01\x15\x00\x3c\x01\x98\x01\x3f\x01\x9a\x01\x41\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x50\x01\x1d\x00\x53\x01\x45\x01\x61\x01\x98\x01\x69\x01\x20\x01\x46\x01\xe9\x00\xea\x00\x41\x01\xe5\x01\x20\x00\x21\x00\x3d\x01\xeb\x00\xec\x00\x4c\x00\x21\x01\x22\x00\x23\x00\x79\x01\x4d\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x3d\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x40\x01\x48\x00\x41\x01\x47\x01\x41\x01\x41\x01\x12\x00\xe7\x01\x43\x01\xc9\x00\x13\x00\xe1\x00\x14\x00\x7a\x01\x15\x00\x42\x01\x44\x01\x97\x00\x47\x01\xee\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x43\x01\x1d\x00\x4d\x00\xc9\x00\x4e\x00\xc6\x01\xcb\x00\x32\xff\xe3\x00\xb1\x00\xb2\x00\x3a\x01\x32\xff\x20\x00\x21\x00\xea\x01\x3b\x01\x49\x00\xb3\x00\xb4\x00\x22\x00\x23\x00\xef\x00\x7b\x00\x24\x00\xcb\x00\x43\x01\x26\x00\x43\x01\x43\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x55\x00\xcc\x01\x56\x00\xa9\x01\xb7\x00\xe8\x01\x7c\x00\xc9\x00\x97\x00\x06\x01\x7b\x00\xc0\x00\x0d\x00\x9c\xff\xce\x01\x57\x00\x9c\xff\xd0\x01\xca\x00\x58\x00\xc1\x00\x59\x00\x55\x00\x5a\x00\x56\x00\xaa\x01\xcf\x01\x5b\x00\x7c\x00\xcb\x00\xd2\x01\x7d\x00\x55\x00\xc0\x00\x56\x00\xa9\x01\xc5\x00\x57\x00\x97\x00\xa9\x01\x96\x01\x58\x00\xc1\x00\x59\x00\x0d\x00\x5a\x00\xa7\x01\x57\x00\x0d\x00\x5b\x00\xc6\x01\x58\x00\x55\x00\x59\x00\x56\x00\x5a\x00\xd4\x01\xaa\x01\xb2\x01\x5b\x00\xc7\x01\xaa\x01\xb5\x01\xc0\x00\x5c\x00\x5d\x00\x5e\x00\x57\x00\x5f\x00\xa9\x01\xaf\x01\x58\x00\xc1\x00\x59\x00\x57\x01\x5a\x00\xd6\x01\xf4\x00\x0d\x00\x5b\x00\x55\x00\xf4\x00\x56\x00\x73\x00\x0b\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\x85\x00\x5f\x00\xaa\x01\xab\x01\xb7\x01\x0d\x00\x57\x00\x5c\x00\x5d\x00\x5e\x00\x58\x00\x5f\x00\x59\x00\x92\x01\x5a\x00\x55\x00\x93\x01\x56\x00\x5b\x00\x80\x00\x81\x00\x82\x00\x61\x00\x0c\x00\x85\x00\x9c\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\x57\x00\x5f\x00\x0d\x00\x07\x01\x58\x00\x0d\x00\x59\x00\xd7\x01\x5a\x00\x55\x00\x63\x00\x56\x00\x5b\x00\x9d\x00\x0c\x00\x64\x00\x65\x00\x66\x00\x85\x00\x55\x00\xa8\x00\x56\x00\xa9\x00\x0d\x00\x57\x00\x5c\x00\x5d\x00\x5e\x00\x58\x00\x86\x00\x59\x00\x87\x01\x5a\x00\x93\x01\x57\x00\x38\x00\x5b\x00\x34\x01\x58\x00\xc3\x01\x59\x00\x93\x01\x5a\x00\x2d\xff\x35\x01\xd9\x01\x5b\x00\x94\x01\x12\x00\x5c\x00\x5d\x00\xa2\x00\x13\x00\xa3\x00\x14\x00\x8c\x01\x15\x00\x80\x00\x81\x00\x82\x00\x3b\x00\x0c\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x71\x01\xc1\x01\x30\x00\x0d\x00\x83\x00\x31\x00\x5c\x00\x5d\x00\x5e\x00\xda\x01\xa7\x00\x62\x01\x32\x00\x33\x00\x43\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\xf3\x00\x5f\x00\xdb\x01\xad\x01\x93\x01\x0d\x00\x34\x00\xf4\x00\x38\x00\x35\x00\x9c\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x12\x00\x8d\x00\x8c\x00\x8e\x00\x13\x00\x12\x00\x14\x00\x8d\x00\x15\x00\x13\x00\x0d\x00\x14\x00\x38\x00\x15\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xbd\x00\x12\x00\x74\x00\x0b\x00\x0c\x00\x13\x00\xa4\x01\x14\x00\x3e\x00\x39\x00\xde\x01\x3f\x00\x4a\x00\x0d\x00\xbd\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x2c\x01\xdf\x01\x9e\x00\x81\x00\x82\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xbd\x00\x3e\x00\x9f\x00\xa5\x00\x3f\x00\xcd\x00\x19\x01\x38\x00\xd8\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x12\x00\x6c\x01\x9b\x00\x0d\x00\x13\x00\x9c\x00\x14\x00\xac\xff\x15\x00\x0e\x00\xd9\x00\x9e\x00\x81\x00\x82\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xac\xff\xb4\x01\xac\xff\xac\xff\xac\xff\xac\xff\x8e\x01\x9f\x00\x0b\x01\x86\x01\x27\x01\xac\xff\xac\xff\xac\xff\x61\x00\x0c\x00\xac\xff\xac\xff\x88\x01\x27\x01\xac\xff\x7f\x01\xbd\x00\xa2\xff\x0d\x00\x75\x00\x0b\x00\x0c\x00\xbe\x00\x80\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa2\xff\x0d\x00\xa2\xff\xa2\xff\xa2\xff\xa2\xff\x3e\x00\xb0\xff\x29\x01\x3f\x00\xe8\x00\xa2\xff\xa2\xff\xa2\xff\x8b\x01\x27\x01\xa2\xff\xa2\xff\x17\x01\xb0\xff\xa2\xff\xb0\xff\xb0\xff\xb0\xff\xb0\xff\x3e\x00\xae\xff\x1c\x01\x3f\x00\x97\x00\xb0\xff\xb0\xff\xb0\xff\x5d\x01\xf0\x00\xb0\xff\xb0\xff\xdd\x00\xae\xff\xb0\xff\xae\xff\xae\xff\xae\xff\xae\xff\x3e\x00\xaa\xff\xd0\x00\x3f\x00\x40\x00\xae\xff\xae\xff\xae\xff\x65\x01\x66\x01\xae\xff\xae\xff\x04\x00\xaa\xff\xae\xff\xaa\xff\xaa\xff\xaa\xff\xaa\xff\x3e\x00\x26\x01\x27\x01\x3f\x00\x4a\x00\xaa\xff\xaa\xff\xaa\xff\x6e\x01\x6f\x01\xaa\xff\xaa\xff\x71\x01\x72\x01\xaa\xff\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x00\x0d\x00\x72\x00\x6e\x00\x6f\x00\x0b\x00\x0c\x00\x0e\x00\x0d\x00\x74\x01\x75\x01\x76\x00\x13\x01\x7e\x01\x0e\x00\x0d\x00\x05\x01\x81\x00\x82\x00\x13\x01\x14\x01\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x53\x00\x0d\x00\x6a\x00\x86\x00\x81\x00\x82\x00\xef\x01\x0e\x00\x0d\x00\x36\x01\x27\x01\xed\x01\x13\x01\x15\x01\x0e\x00\x4f\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xee\x01\x0d\x00\x37\x01\x38\x01\xe4\x01\x45\x00\xb3\x01\x0e\x00\x0d\x00\x9e\x00\x81\x00\x82\x00\x45\x00\x51\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x16\x01\xb9\x01\x9f\x00\x11\x01\xc9\x01\xef\x00\xf0\x00\xce\x01\x0d\x00\x9e\x00\x81\x00\x82\x00\x0e\x01\x82\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbc\x00\xb6\x00\x9f\x00\xbb\x00\x10\x01\x82\x00\x21\x01\xf0\x00\x0d\x00\x9e\x00\x81\x00\x82\x00\x2b\x00\x2c\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa4\x00\xd2\x01\x9f\x00\xa0\x00\x45\x00\xd2\x00\x45\x00\x46\x00\x0d\x00\x45\x00\x49\x00\xd4\x01\xde\x01\xe1\x01\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa9\x00\xe4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xe2\x01\xb1\x01\xb2\x01\xb9\x01\xba\x01\x0e\x00\xbc\x01\x0d\x00\xbd\x01\xbf\x01\xc3\x01\xc9\x01\xca\x01\x0e\x00\xe9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcc\x01\x0d\x00\xcb\x01\x29\x01\x29\x01\xb6\x00\x8a\x01\x0e\x00\x0d\x00\x8b\x01\x29\x01\x1c\xff\x90\x01\x9a\x01\x0e\x00\xd8\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xdc\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x96\x01\x0d\x00\x9c\x01\x1c\xff\x9f\x01\xa1\x01\x1c\xff\x0e\x00\x0d\x00\xa3\x01\xa4\x01\x1c\xff\xa8\x01\xae\x01\x0e\x00\xb6\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xba\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5d\x01\x0d\x00\xaf\x01\x5f\x01\x62\x01\x65\x01\x6a\x01\x0e\x00\x0d\x00\x64\x01\x6b\x01\x6c\x01\x6e\x01\x43\x00\x0e\x00\xbd\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbf\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x71\x01\x0d\x00\x74\x01\x77\x01\x79\x01\x78\x01\x01\x01\x0e\x00\x0d\x00\x82\x01\x7c\x01\x43\x00\x7d\x01\x83\x01\x0e\x00\xc0\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x84\x01\x0d\x00\x85\x01\x29\x01\x86\x01\x43\x00\x2b\x01\x0e\x00\x0d\x00\x2c\x01\x2e\x01\x2f\x01\x30\x01\x34\x01\x0e\x00\xc5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x7d\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x31\x01\x0d\x00\x29\x01\xb7\x00\x59\x01\x5a\x01\x5b\x01\x0e\x00\x0d\x00\x5c\x01\x03\x01\x04\x01\x43\x00\x05\x01\x0e\x00\x31\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x32\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x09\x01\x0d\x00\x0a\x01\x8c\x00\x0b\x01\x0d\x01\x0e\x01\x0e\x00\x0d\x00\x1b\x01\x19\x01\x24\x01\x1c\x01\x1e\x01\x0e\x00\x0f\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x1f\x01\x0d\x00\xb8\x00\xba\x00\xb9\x00\xbb\x00\xc4\x00\x0e\x00\x0d\x00\xc2\x00\xc3\x00\xc6\x00\xc7\x00\xc8\x00\x0e\x00\xcc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xce\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x61\x00\x0d\x00\x43\x00\xd0\x00\x43\x00\xdc\x00\xd2\x00\x0e\x00\x0d\x00\xd6\x00\xdf\x00\xe0\x00\xe2\x00\xe5\x00\x0e\x00\xd3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe4\x00\x0d\x00\xe6\x00\xe7\x00\xe8\x00\x43\x00\x6c\x00\x0e\x00\x0d\x00\x61\x00\x71\x00\x7b\x00\x7f\x00\x80\x00\x0e\x00\xd7\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xda\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x89\x00\x0d\x00\x8a\x00\x88\x00\x8b\x00\x90\x00\x92\x00\x0e\x00\x0d\x00\x91\x00\x93\x00\x94\x00\x95\x00\x97\x00\x0e\x00\x6c\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x71\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x9a\x00\x0d\x00\x43\x00\x99\x00\x61\x00\xab\x00\xac\x00\x0e\x00\x0d\x00\xad\x00\xb1\x00\xae\x00\xaf\x00\xb0\x00\x0e\x00\x79\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\x0d\x00\xff\xff\x36\x00\x3a\x00\x3d\x00\x3b\x00\x0e\x00\x0d\x00\x60\x00\x3e\x00\x43\x00\x61\x00\x69\x00\x0e\x00\x44\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xf6\x00\x0d\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\x6a\x00\x0e\x00\x0d\x00\xff\xff\x06\x00\xfb\x00\xfc\x00\xfd\x00\x0e\x00\x00\x00\xfe\x00\xff\x00\x00\x00\x00\x00\x00\x01\x6d\x00\x08\x00\x6e\x00\x6f\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 = array (3, 230) [
+happyReduceArr = array (3, 227) [
(3 , happyReduce_3),
(4 , happyReduce_4),
(5 , happyReduce_5),
@@ -740,14 +728,11 @@ happyReduceArr = array (3, 230) [
(224 , happyReduce_224),
(225 , happyReduce_225),
(226 , happyReduce_226),
- (227 , happyReduce_227),
- (228 , happyReduce_228),
- (229 , happyReduce_229),
- (230 , happyReduce_230)
+ (227 , happyReduce_227)
]
-happy_n_terms = 73 :: Int
-happy_n_nonterms = 75 :: Int
+happy_n_terms = 72 :: Int
+happy_n_nonterms = 73 :: Int
happyReduce_3 = happyMonadReduce 4# 0# happyReduction_3
happyReduction_3 (happy_x_4 `HappyStk`
@@ -1302,10 +1287,10 @@ happyReduction_58 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
- case happyOut79 happy_x_3 of { happy_var_3 ->
- case happyOut80 happy_x_4 of { happy_var_4 ->
+ case happyOut77 happy_x_3 of { happy_var_3 ->
+ case happyOut78 happy_x_4 of { happy_var_4 ->
happyIn22
([(happy_var_2, (happy_var_1,happy_var_4), AbsCat (Just happy_var_3) Nothing)]
) `HappyStk` happyRest}}}}
@@ -1318,10 +1303,10 @@ happyReduction_59 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) ->
- case happyOut79 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_6 of { happy_var_6 ->
+ case happyOut77 happy_x_4 of { happy_var_4 ->
+ case happyOut78 happy_x_6 of { happy_var_6 ->
happyIn22
(listCatDef happy_var_3 (happy_var_1,happy_var_6) happy_var_4 0
) `HappyStk` happyRest}}}}
@@ -1337,11 +1322,11 @@ happyReduction_60 (happy_x_9 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) ->
- case happyOut79 happy_x_4 of { happy_var_4 ->
+ case happyOut77 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_7 of { ((T_Integer happy_var_7)) ->
- case happyOut80 happy_x_9 of { happy_var_9 ->
+ case happyOut78 happy_x_9 of { happy_var_9 ->
happyIn22
(listCatDef happy_var_3 (happy_var_1,happy_var_9) happy_var_4 (fromIntegral happy_var_7)
) `HappyStk` happyRest}}}}}
@@ -1353,12 +1338,12 @@ happyReduction_61 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut43 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn23
- ([(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing) | fun <- happy_var_2]
+ ([(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing (Just [])) | fun <- happy_var_2]
) `HappyStk` happyRest}}}}
happyReduce_62 = happyReduce 5# 18# happyReduction_62
@@ -1368,12 +1353,12 @@ happyReduction_62 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn24
- ([(f, (happy_var_1,happy_var_5),AbsFun Nothing (Just happy_var_4)) | f <- happy_var_2]
+ ([(f, (happy_var_1,happy_var_5),AbsFun Nothing (Just 0) (Just [([],happy_var_4)])) | f <- happy_var_2]
) `HappyStk` happyRest}}}}
happyReduce_63 = happyReduce 6# 18# happyReduction_63
@@ -1384,13 +1369,13 @@ happyReduction_63 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut44 happy_x_2 of { happy_var_2 ->
case happyOut65 happy_x_3 of { happy_var_3 ->
case happyOut48 happy_x_5 of { happy_var_5 ->
- case happyOut80 happy_x_6 of { happy_var_6 ->
+ case happyOut78 happy_x_6 of { happy_var_6 ->
happyIn24
- ([(happy_var_2,(happy_var_1,happy_var_6),AbsFun Nothing (Just (Eqs [(happy_var_3,happy_var_5)])))]
+ ([(happy_var_2,(happy_var_1,happy_var_6),AbsFun Nothing (Just (length happy_var_3)) (Just [(happy_var_3,happy_var_5)]))]
) `HappyStk` happyRest}}}}}
happyReduce_64 = happyReduce 5# 19# happyReduction_64
@@ -1400,13 +1385,13 @@ happyReduction_64 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
case happyOut31 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn25
- ((happy_var_2, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_4))) :
- [(fun, (happy_var_1,happy_var_5), AbsFun Nothing (Just EData)) | fun <- happy_var_4]
+ ((happy_var_2, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_4))) :
+ [(fun, (happy_var_1,happy_var_5), AbsFun Nothing Nothing Nothing) | fun <- happy_var_4]
) `HappyStk` happyRest}}}}
happyReduce_65 = happyReduce 5# 19# happyReduction_65
@@ -1416,13 +1401,13 @@ happyReduction_65 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut43 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn25
- ([(cat, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_2))) | Ok (_,cat) <- [valCat happy_var_4]] ++
- [(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) (Just EData)) | fun <- happy_var_2]
+ ([(cat, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_2))) | Ok (_,cat) <- [valCat happy_var_4]] ++
+ [(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing Nothing) | fun <- happy_var_2]
) `HappyStk` happyRest}}}}
happyReduce_66 = happyReduce 5# 20# happyReduction_66
@@ -1432,10 +1417,10 @@ happyReduction_66 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
case happyOut42 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn26
((happy_var_2, (happy_var_1,happy_var_5), ResParam (Just (happy_var_4,Nothing))) :
[(f, (happy_var_1,happy_var_5), ResValue (Just (mkProdSimple co (Cn happy_var_2),Nothing))) | (f,co) <- happy_var_4]
@@ -1445,9 +1430,9 @@ happyReduce_67 = happySpecReduce_3 20# happyReduction_67
happyReduction_67 happy_x_3
happy_x_2
happy_x_1
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
- case happyOut80 happy_x_3 of { happy_var_3 ->
+ case happyOut78 happy_x_3 of { happy_var_3 ->
happyIn26
([(happy_var_2, (happy_var_1,happy_var_3), ResParam Nothing)]
)}}}
@@ -1459,10 +1444,10 @@ happyReduction_68 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn27
([(i, (happy_var_1,happy_var_5), info) | i <- happy_var_2, info <- mkOverload (Just happy_var_4) Nothing ]
) `HappyStk` happyRest}}}}
@@ -1474,10 +1459,10 @@ happyReduction_69 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn27
([(i, (happy_var_1,happy_var_5), info) | i <- happy_var_2, info <- mkOverload Nothing (Just happy_var_4)]
) `HappyStk` happyRest}}}}
@@ -1490,11 +1475,11 @@ happyReduction_70 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut44 happy_x_2 of { happy_var_2 ->
case happyOut66 happy_x_3 of { happy_var_3 ->
case happyOut48 happy_x_5 of { happy_var_5 ->
- case happyOut80 happy_x_6 of { happy_var_6 ->
+ case happyOut78 happy_x_6 of { happy_var_6 ->
happyIn27
([(i, (happy_var_1,happy_var_6), info) | i <- [happy_var_2], info <- mkOverload Nothing (Just (mkAbs happy_var_3 happy_var_5))]
) `HappyStk` happyRest}}}}}
@@ -1508,11 +1493,11 @@ happyReduction_71 (happy_x_7 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
case happyOut48 happy_x_6 of { happy_var_6 ->
- case happyOut80 happy_x_7 of { happy_var_7 ->
+ case happyOut78 happy_x_7 of { happy_var_7 ->
happyIn27
([(i, (happy_var_1,happy_var_7), info) | i <- happy_var_2, info <- mkOverload (Just happy_var_4) (Just happy_var_6)]
) `HappyStk` happyRest}}}}}
@@ -1524,10 +1509,10 @@ happyReduction_72 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn28
([(f, (happy_var_1,happy_var_5), CncFun Nothing (Just happy_var_4) Nothing) | f <- happy_var_2]
) `HappyStk` happyRest}}}}
@@ -1540,11 +1525,11 @@ happyReduction_73 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut44 happy_x_2 of { happy_var_2 ->
case happyOut66 happy_x_3 of { happy_var_3 ->
case happyOut48 happy_x_5 of { happy_var_5 ->
- case happyOut80 happy_x_6 of { happy_var_6 ->
+ case happyOut78 happy_x_6 of { happy_var_6 ->
happyIn28
([(happy_var_2, (happy_var_1,happy_var_6), CncFun Nothing (Just (mkAbs happy_var_3 happy_var_5)) Nothing)]
) `HappyStk` happyRest}}}}}
@@ -1556,10 +1541,10 @@ happyReduction_74 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut80 happy_x_1 of { happy_var_1 ->
+ = case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOut45 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- case happyOut80 happy_x_5 of { happy_var_5 ->
+ case happyOut78 happy_x_5 of { happy_var_5 ->
happyIn29
([(i,(happy_var_1,happy_var_5),happy_var_4) | i <- happy_var_2]
) `HappyStk` happyRest}}}}
@@ -1571,7 +1556,7 @@ happyReduction_75 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut80 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut78 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
case happyOutTok happy_x_4 of { ((T_Ident happy_var_4)) ->
( case parseModuleOptions ["--" ++ prIdent happy_var_2 ++ "=" ++ prIdent happy_var_4] of
@@ -1600,7 +1585,7 @@ happyReduce_78 = happySpecReduce_2 26# happyReduction_78
happyReduction_78 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { ((T_Ident happy_var_1)) ->
- case happyOut79 happy_x_2 of { happy_var_2 ->
+ case happyOut77 happy_x_2 of { happy_var_2 ->
happyIn32
((happy_var_1,happy_var_2)
)}}
@@ -1986,19 +1971,8 @@ happyReduction_118 (happy_x_5 `HappyStk`
return $ mkLet defs happy_var_1)}}
) (\r -> happyReturn (happyIn48 r))
-happyReduce_119 = happyReduce 4# 42# happyReduction_119
-happyReduction_119 (happy_x_4 `HappyStk`
- happy_x_3 `HappyStk`
- happy_x_2 `HappyStk`
- happy_x_1 `HappyStk`
- happyRest)
- = case happyOut75 happy_x_3 of { happy_var_3 ->
- happyIn48
- (Eqs happy_var_3
- ) `HappyStk` happyRest}
-
-happyReduce_120 = happySpecReduce_3 42# happyReduction_120
-happyReduction_120 happy_x_3
+happyReduce_119 = happySpecReduce_3 42# happyReduction_119
+happyReduction_119 happy_x_3
happy_x_2
happy_x_1
= case happyOut53 happy_x_2 of { happy_var_2 ->
@@ -2007,15 +1981,15 @@ happyReduction_120 happy_x_3
(Example happy_var_2 happy_var_3
)}}
-happyReduce_121 = happySpecReduce_1 42# happyReduction_121
-happyReduction_121 happy_x_1
+happyReduce_120 = happySpecReduce_1 42# happyReduction_120
+happyReduction_120 happy_x_1
= case happyOut49 happy_x_1 of { happy_var_1 ->
happyIn48
(happy_var_1
)}
-happyReduce_122 = happySpecReduce_3 43# happyReduction_122
-happyReduction_122 happy_x_3
+happyReduce_121 = happySpecReduce_3 43# happyReduction_121
+happyReduction_121 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
@@ -2024,15 +1998,15 @@ happyReduction_122 happy_x_3
(C happy_var_1 happy_var_3
)}}
-happyReduce_123 = happySpecReduce_1 43# happyReduction_123
-happyReduction_123 happy_x_1
+happyReduce_122 = happySpecReduce_1 43# happyReduction_122
+happyReduction_122 happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
happyIn49
(happy_var_1
)}
-happyReduce_124 = happySpecReduce_3 44# happyReduction_124
-happyReduction_124 happy_x_3
+happyReduce_123 = happySpecReduce_3 44# happyReduction_123
+happyReduction_123 happy_x_3
happy_x_2
happy_x_1
= case happyOut51 happy_x_1 of { happy_var_1 ->
@@ -2041,15 +2015,15 @@ happyReduction_124 happy_x_3
(Glue happy_var_1 happy_var_3
)}}
-happyReduce_125 = happySpecReduce_1 44# happyReduction_125
-happyReduction_125 happy_x_1
+happyReduce_124 = happySpecReduce_1 44# happyReduction_124
+happyReduction_124 happy_x_1
= case happyOut51 happy_x_1 of { happy_var_1 ->
happyIn50
(happy_var_1
)}
-happyReduce_126 = happySpecReduce_3 45# happyReduction_126
-happyReduction_126 happy_x_3
+happyReduce_125 = happySpecReduce_3 45# happyReduction_125
+happyReduction_125 happy_x_3
happy_x_2
happy_x_1
= case happyOut51 happy_x_1 of { happy_var_1 ->
@@ -2058,8 +2032,8 @@ happyReduction_126 happy_x_3
(S happy_var_1 happy_var_3
)}}
-happyReduce_127 = happyReduce 4# 45# happyReduction_127
-happyReduction_127 (happy_x_4 `HappyStk`
+happyReduce_126 = happyReduce 4# 45# happyReduction_126
+happyReduction_126 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2069,8 +2043,8 @@ happyReduction_127 (happy_x_4 `HappyStk`
(T TRaw happy_var_3
) `HappyStk` happyRest}
-happyReduce_128 = happyReduce 5# 45# happyReduction_128
-happyReduction_128 (happy_x_5 `HappyStk`
+happyReduce_127 = happyReduce 5# 45# happyReduction_127
+happyReduction_127 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2082,8 +2056,8 @@ happyReduction_128 (happy_x_5 `HappyStk`
(T (TTyped happy_var_2) happy_var_4
) `HappyStk` happyRest}}
-happyReduce_129 = happyReduce 5# 45# happyReduction_129
-happyReduction_129 (happy_x_5 `HappyStk`
+happyReduce_128 = happyReduce 5# 45# happyReduction_128
+happyReduction_128 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2095,8 +2069,8 @@ happyReduction_129 (happy_x_5 `HappyStk`
(V happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_130 = happySpecReduce_3 45# happyReduction_130
-happyReduction_130 happy_x_3
+happyReduce_129 = happySpecReduce_3 45# happyReduction_129
+happyReduction_129 happy_x_3
happy_x_2
happy_x_1
= case happyOut51 happy_x_1 of { happy_var_1 ->
@@ -2107,8 +2081,8 @@ happyReduction_130 happy_x_3
t -> RecType [(tupleLabel 1,happy_var_1), (tupleLabel 2,happy_var_3)]
)}}
-happyReduce_131 = happySpecReduce_3 45# happyReduction_131
-happyReduction_131 happy_x_3
+happyReduce_130 = happySpecReduce_3 45# happyReduction_130
+happyReduction_130 happy_x_3
happy_x_2
happy_x_1
= case happyOut51 happy_x_1 of { happy_var_1 ->
@@ -2117,15 +2091,15 @@ happyReduction_131 happy_x_3
(ExtR happy_var_1 happy_var_3
)}}
-happyReduce_132 = happySpecReduce_1 45# happyReduction_132
-happyReduction_132 happy_x_1
+happyReduce_131 = happySpecReduce_1 45# happyReduction_131
+happyReduction_131 happy_x_1
= case happyOut52 happy_x_1 of { happy_var_1 ->
happyIn51
(happy_var_1
)}
-happyReduce_133 = happySpecReduce_2 46# happyReduction_133
-happyReduction_133 happy_x_2
+happyReduce_132 = happySpecReduce_2 46# happyReduction_132
+happyReduction_132 happy_x_2
happy_x_1
= case happyOut52 happy_x_1 of { happy_var_1 ->
case happyOut53 happy_x_2 of { happy_var_2 ->
@@ -2133,8 +2107,8 @@ happyReduction_133 happy_x_2
(App happy_var_1 happy_var_2
)}}
-happyReduce_134 = happyReduce 6# 46# happyReduction_134
-happyReduction_134 (happy_x_6 `HappyStk`
+happyReduce_133 = happyReduce 6# 46# happyReduction_133
+happyReduction_133 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2150,8 +2124,8 @@ happyReduction_134 (happy_x_6 `HappyStk`
in S (T annot happy_var_5) happy_var_2
) `HappyStk` happyRest}}
-happyReduce_135 = happyReduce 4# 46# happyReduction_135
-happyReduction_135 (happy_x_4 `HappyStk`
+happyReduce_134 = happyReduce 4# 46# happyReduction_134
+happyReduction_134 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2161,8 +2135,8 @@ happyReduction_135 (happy_x_4 `HappyStk`
(FV happy_var_3
) `HappyStk` happyRest}
-happyReduce_136 = happyMonadReduce 4# 46# happyReduction_136
-happyReduction_136 (happy_x_4 `HappyStk`
+happyReduce_135 = happyMonadReduce 4# 46# happyReduction_135
+happyReduction_135 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2171,8 +2145,8 @@ happyReduction_136 (happy_x_4 `HappyStk`
( mkAlts happy_var_3)}
) (\r -> happyReturn (happyIn52 r))
-happyReduce_137 = happyReduce 6# 46# happyReduction_137
-happyReduction_137 (happy_x_6 `HappyStk`
+happyReduce_136 = happyReduce 6# 46# happyReduction_136
+happyReduction_136 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2180,13 +2154,13 @@ happyReduction_137 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_3 of { ((T_String happy_var_3)) ->
- case happyOut77 happy_x_5 of { happy_var_5 ->
+ case happyOut75 happy_x_5 of { happy_var_5 ->
happyIn52
(Alts (K happy_var_3, happy_var_5)
) `HappyStk` happyRest}}
-happyReduce_138 = happyReduce 6# 46# happyReduction_138
-happyReduction_138 (happy_x_6 `HappyStk`
+happyReduce_137 = happyReduce 6# 46# happyReduction_137
+happyReduction_137 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2194,13 +2168,13 @@ happyReduction_138 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) ->
- case happyOut77 happy_x_5 of { happy_var_5 ->
+ case happyOut75 happy_x_5 of { happy_var_5 ->
happyIn52
(Alts (Vr happy_var_3, happy_var_5)
) `HappyStk` happyRest}}
-happyReduce_139 = happyReduce 4# 46# happyReduction_139
-happyReduction_139 (happy_x_4 `HappyStk`
+happyReduce_138 = happyReduce 4# 46# happyReduction_138
+happyReduction_138 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2210,31 +2184,51 @@ happyReduction_139 (happy_x_4 `HappyStk`
(Strs happy_var_3
) `HappyStk` happyRest}
-happyReduce_140 = happySpecReduce_2 46# happyReduction_140
-happyReduction_140 happy_x_2
+happyReduce_139 = happySpecReduce_2 46# happyReduction_139
+happyReduction_139 happy_x_2
happy_x_1
= case happyOut59 happy_x_2 of { happy_var_2 ->
happyIn52
(EPatt happy_var_2
)}
-happyReduce_141 = happySpecReduce_2 46# happyReduction_141
-happyReduction_141 happy_x_2
+happyReduce_140 = happySpecReduce_2 46# happyReduction_140
+happyReduction_140 happy_x_2
happy_x_1
= case happyOut53 happy_x_2 of { happy_var_2 ->
happyIn52
(EPattType happy_var_2
)}
-happyReduce_142 = happySpecReduce_1 46# happyReduction_142
-happyReduction_142 happy_x_1
+happyReduce_141 = happySpecReduce_3 46# happyReduction_141
+happyReduction_141 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
+ case happyOut53 happy_x_3 of { happy_var_3 ->
+ happyIn52
+ (ELincat happy_var_2 happy_var_3
+ )}}
+
+happyReduce_142 = happySpecReduce_3 46# happyReduction_142
+happyReduction_142 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) ->
+ case happyOut53 happy_x_3 of { happy_var_3 ->
+ happyIn52
+ (ELin happy_var_2 happy_var_3
+ )}}
+
+happyReduce_143 = happySpecReduce_1 46# happyReduction_143
+happyReduction_143 happy_x_1
= case happyOut53 happy_x_1 of { happy_var_1 ->
happyIn52
(happy_var_1
)}
-happyReduce_143 = happySpecReduce_3 47# happyReduction_143
-happyReduction_143 happy_x_3
+happyReduce_144 = happySpecReduce_3 47# happyReduction_144
+happyReduction_144 happy_x_3
happy_x_2
happy_x_1
= case happyOut53 happy_x_1 of { happy_var_1 ->
@@ -2243,67 +2237,61 @@ happyReduction_143 happy_x_3
(P happy_var_1 happy_var_3
)}}
-happyReduce_144 = happySpecReduce_1 47# happyReduction_144
-happyReduction_144 happy_x_1
+happyReduce_145 = happySpecReduce_1 47# happyReduction_145
+happyReduction_145 happy_x_1
= case happyOut54 happy_x_1 of { happy_var_1 ->
happyIn53
(happy_var_1
)}
-happyReduce_145 = happySpecReduce_1 48# happyReduction_145
-happyReduction_145 happy_x_1
+happyReduce_146 = happySpecReduce_1 48# happyReduction_146
+happyReduction_146 happy_x_1
= case happyOutTok happy_x_1 of { ((T_Ident happy_var_1)) ->
happyIn54
(Vr happy_var_1
)}
-happyReduce_146 = happySpecReduce_1 48# happyReduction_146
-happyReduction_146 happy_x_1
+happyReduce_147 = happySpecReduce_1 48# happyReduction_147
+happyReduction_147 happy_x_1
= case happyOut63 happy_x_1 of { happy_var_1 ->
happyIn54
(Sort happy_var_1
)}
-happyReduce_147 = happySpecReduce_1 48# happyReduction_147
-happyReduction_147 happy_x_1
+happyReduce_148 = happySpecReduce_1 48# happyReduction_148
+happyReduction_148 happy_x_1
= case happyOutTok happy_x_1 of { ((T_String happy_var_1)) ->
happyIn54
(K happy_var_1
)}
-happyReduce_148 = happySpecReduce_1 48# happyReduction_148
-happyReduction_148 happy_x_1
+happyReduce_149 = happySpecReduce_1 48# happyReduction_149
+happyReduction_149 happy_x_1
= case happyOutTok happy_x_1 of { ((T_Integer happy_var_1)) ->
happyIn54
(EInt happy_var_1
)}
-happyReduce_149 = happySpecReduce_1 48# happyReduction_149
-happyReduction_149 happy_x_1
+happyReduce_150 = happySpecReduce_1 48# happyReduction_150
+happyReduction_150 happy_x_1
= case happyOutTok happy_x_1 of { ((T_Double happy_var_1)) ->
happyIn54
(EFloat happy_var_1
)}
-happyReduce_150 = happySpecReduce_1 48# happyReduction_150
-happyReduction_150 happy_x_1
+happyReduce_151 = happySpecReduce_1 48# happyReduction_151
+happyReduction_151 happy_x_1
= happyIn54
(Meta (int2meta 0)
)
-happyReduce_151 = happySpecReduce_2 48# happyReduction_151
-happyReduction_151 happy_x_2
+happyReduce_152 = happySpecReduce_2 48# happyReduction_152
+happyReduction_152 happy_x_2
happy_x_1
= happyIn54
(Empty
)
-happyReduce_152 = happySpecReduce_1 48# happyReduction_152
-happyReduction_152 happy_x_1
- = happyIn54
- (EData
- )
-
happyReduce_153 = happyReduce 4# 48# happyReduction_153
happyReduction_153 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2530,7 +2518,7 @@ happyReduction_177 (happy_x_4 `HappyStk`
happyReduce_178 = happySpecReduce_1 53# happyReduction_178
happyReduction_178 happy_x_1
= happyIn59
- (wildPatt
+ (PW
)
happyReduce_179 = happySpecReduce_1 53# happyReduction_179
@@ -2854,7 +2842,7 @@ happyReduce_220 = happySpecReduce_3 68# happyReduction_220
happyReduction_220 happy_x_3
happy_x_2
happy_x_1
- = case happyOut65 happy_x_1 of { happy_var_1 ->
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
case happyOut48 happy_x_3 of { happy_var_3 ->
happyIn74
((happy_var_1,happy_var_3)
@@ -2864,7 +2852,7 @@ happyReduce_221 = happySpecReduce_1 69# happyReduction_221
happyReduction_221 happy_x_1
= case happyOut74 happy_x_1 of { happy_var_1 ->
happyIn75
- ((:[]) happy_var_1
+ ([happy_var_1]
)}
happyReduce_222 = happySpecReduce_3 69# happyReduction_222
@@ -2874,38 +2862,11 @@ happyReduction_222 happy_x_3
= case happyOut74 happy_x_1 of { happy_var_1 ->
case happyOut75 happy_x_3 of { happy_var_3 ->
happyIn75
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_223 = happySpecReduce_3 70# happyReduction_223
-happyReduction_223 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut48 happy_x_1 of { happy_var_1 ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
- happyIn76
- ((happy_var_1,happy_var_3)
- )}}
-
-happyReduce_224 = happySpecReduce_1 71# happyReduction_224
-happyReduction_224 happy_x_1
- = case happyOut76 happy_x_1 of { happy_var_1 ->
- happyIn77
- ([happy_var_1]
- )}
-
-happyReduce_225 = happySpecReduce_3 71# happyReduction_225
-happyReduction_225 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut76 happy_x_1 of { happy_var_1 ->
- case happyOut77 happy_x_3 of { happy_var_3 ->
- happyIn77
(happy_var_1 : happy_var_3
)}}
-happyReduce_226 = happyReduce 5# 72# happyReduction_226
-happyReduction_226 (happy_x_5 `HappyStk`
+happyReduce_223 = happyReduce 5# 70# happyReduction_223
+happyReduction_223 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2913,41 +2874,41 @@ happyReduction_226 (happy_x_5 `HappyStk`
happyRest)
= case happyOut68 happy_x_2 of { happy_var_2 ->
case happyOut48 happy_x_4 of { happy_var_4 ->
- happyIn78
+ happyIn76
([(x,happy_var_4) | x <- happy_var_2]
) `HappyStk` happyRest}}
-happyReduce_227 = happySpecReduce_1 72# happyReduction_227
-happyReduction_227 happy_x_1
+happyReduce_224 = happySpecReduce_1 70# happyReduction_224
+happyReduction_224 happy_x_1
= case happyOut54 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn76
([mkDecl happy_var_1]
)}
-happyReduce_228 = happySpecReduce_0 73# happyReduction_228
-happyReduction_228 = happyIn79
+happyReduce_225 = happySpecReduce_0 71# happyReduction_225
+happyReduction_225 = happyIn77
([]
)
-happyReduce_229 = happySpecReduce_2 73# happyReduction_229
-happyReduction_229 happy_x_2
+happyReduce_226 = happySpecReduce_2 71# happyReduction_226
+happyReduction_226 happy_x_2
happy_x_1
- = case happyOut78 happy_x_1 of { happy_var_1 ->
- case happyOut79 happy_x_2 of { happy_var_2 ->
- happyIn79
+ = case happyOut76 happy_x_1 of { happy_var_1 ->
+ case happyOut77 happy_x_2 of { happy_var_2 ->
+ happyIn77
(happy_var_1 ++ happy_var_2
)}}
-happyReduce_230 = happyMonadReduce 0# 74# happyReduction_230
-happyReduction_230 (happyRest) tk
+happyReduce_227 = happyMonadReduce 0# 72# happyReduction_227
+happyReduction_227 (happyRest) tk
= happyThen (( getPosn)
- ) (\r -> happyReturn (happyIn80 r))
+ ) (\r -> happyReturn (happyIn78 r))
happyNewToken action sts stk
= lexer(\tk ->
let cont i = happyDoAction i tk action sts stk in
case tk of {
- T_EOF -> happyDoAction 72# tk action sts stk;
+ T_EOF -> happyDoAction 71# tk action sts stk;
T_exclmark -> cont 1#;
T_patt -> cont 2#;
T_int_label -> cont 3#;
@@ -2990,35 +2951,34 @@ happyNewToken action sts stk
T_data -> cont 40#;
T_def -> cont 41#;
T_flags -> cont 42#;
- T_fn -> cont 43#;
- T_fun -> cont 44#;
- T_in -> cont 45#;
- T_incomplete -> cont 46#;
- T_instance -> cont 47#;
- T_interface -> cont 48#;
- T_let -> cont 49#;
- T_lin -> cont 50#;
- T_lincat -> cont 51#;
- T_lindef -> cont 52#;
- T_of -> cont 53#;
- T_open -> cont 54#;
- T_oper -> cont 55#;
- T_param -> cont 56#;
- T_pattern -> cont 57#;
- T_pre -> cont 58#;
- T_printname -> cont 59#;
- T_resource -> cont 60#;
- T_strs -> cont 61#;
- T_table -> cont 62#;
- T_transfer -> cont 63#;
- T_variants -> cont 64#;
- T_where -> cont 65#;
- T_with -> cont 66#;
- (T_Integer happy_dollar_dollar) -> cont 67#;
- (T_Double happy_dollar_dollar) -> cont 68#;
- (T_String happy_dollar_dollar) -> cont 69#;
- (T_LString happy_dollar_dollar) -> cont 70#;
- (T_Ident happy_dollar_dollar) -> cont 71#;
+ T_fun -> cont 43#;
+ T_in -> cont 44#;
+ T_incomplete -> cont 45#;
+ T_instance -> cont 46#;
+ T_interface -> cont 47#;
+ T_let -> cont 48#;
+ T_lin -> cont 49#;
+ T_lincat -> cont 50#;
+ T_lindef -> cont 51#;
+ T_of -> cont 52#;
+ T_open -> cont 53#;
+ T_oper -> cont 54#;
+ T_param -> cont 55#;
+ T_pattern -> cont 56#;
+ T_pre -> cont 57#;
+ T_printname -> cont 58#;
+ T_resource -> cont 59#;
+ T_strs -> cont 60#;
+ T_table -> cont 61#;
+ T_transfer -> cont 62#;
+ T_variants -> cont 63#;
+ T_where -> cont 64#;
+ T_with -> cont 65#;
+ (T_Integer happy_dollar_dollar) -> cont 66#;
+ (T_Double happy_dollar_dollar) -> cont 67#;
+ (T_String happy_dollar_dollar) -> cont 68#;
+ (T_LString happy_dollar_dollar) -> cont 69#;
+ (T_Ident happy_dollar_dollar) -> cont 70#;
_ -> happyError' tk
})
@@ -3063,9 +3023,9 @@ listCatDef id pos cont size = [catd,nilfund,consfund]
baseId = mkBaseId id
consId = mkConsId id
- catd = (listId, pos, AbsCat (Just cont') (Just [Cn baseId,Cn consId]))
- nilfund = (baseId, pos, AbsFun (Just niltyp) (Just EData))
- consfund = (consId, pos, AbsFun (Just constyp) (Just EData))
+ catd = (listId, pos, AbsCat (Just cont') (Just [Cn baseId,Cn consId]))
+ nilfund = (baseId, pos, AbsFun (Just niltyp) Nothing Nothing)
+ consfund = (consId, pos, AbsFun (Just constyp) Nothing Nothing)
cont' = [(mkId x i,ty) | (i,(x,ty)) <- zip [0..] cont]
xs = map (Vr . fst) cont'
@@ -3122,7 +3082,7 @@ type SrcSpan = (Posn,Posn)
checkInfoType MTAbstract (id,pos,info) =
case info of
AbsCat _ _ -> return ()
- AbsFun _ _ -> return ()
+ AbsFun _ _ _ -> return ()
_ -> failLoc (fst pos) "illegal definition in abstract module"
checkInfoType MTResource (id,pos,info) =
case info of
@@ -3156,7 +3116,7 @@ checkInfoType (MTInstance _) (id,pos,info) =
checkInfoType (MTTransfer _ _) (id,pos,info) =
case info of
AbsCat _ _ -> return ()
- AbsFun _ _ -> return ()
+ AbsFun _ _ _ -> return ()
_ -> failLoc (fst pos) "illegal definition in transfer module"
@@ -3177,7 +3137,9 @@ mkAlts cs = case cs of
Strs bs <- mkStrs b
return $ Strs $ as ++ bs
PString s -> return $ Strs [K s]
- t -> return t --- for macros; not yet complete
+ PV x -> return (Vr x) --- for macros; not yet complete
+ PMacro x -> return (Vr x) --- for macros; not yet complete
+ PM m c -> return (Q m c) --- for macros; not yet complete
_ -> fail "no strs from pattern"
{-# LINE 1 "GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
diff --git a/src/GF/Grammar/Parser.y b/src/GF/Grammar/Parser.y
index e07ec8684..c25693652 100644
--- a/src/GF/Grammar/Parser.y
+++ b/src/GF/Grammar/Parser.y
@@ -423,6 +423,8 @@ Exp4
| 'strs' '{' ListExp '}' { Strs $3 }
| '#' Patt2 { EPatt $2 }
| 'pattern' Exp5 { EPattType $2 }
+ | 'lincat' Ident Exp5 { ELincat $2 $3 }
+ | 'lin' Ident Exp5 { ELin $2 $3 }
| Exp5 { $1 }
Exp5 :: { Term }