summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2005-12-20 22:38:38 +0000
committeraarne <aarne@cs.chalmers.se>2005-12-20 22:38:38 +0000
commit59ee1bfd7c430576427943384f2e52efb9b3da08 (patch)
tree7b737c9be67f41504649c376ab743987f2012d60
parent7383e6d93ed111b418a27bb8605973fa77f3135c (diff)
full disjunctive patterns ; more prec levels for Exp
-rw-r--r--doc/tutorial/gf-tutorial2.txt30
-rw-r--r--examples/systemS/ProofSymb.gf8
-rw-r--r--src/GF/Source/AbsGF.hs15
-rw-r--r--src/GF/Source/GF.cf126
-rw-r--r--src/GF/Source/GrammarToSource.hs4
-rw-r--r--src/GF/Source/LexGF.hs94
-rw-r--r--src/GF/Source/ParGF.hs965
-rw-r--r--src/GF/Source/PrintGF.hs144
-rw-r--r--src/GF/Source/SourceToGrammar.hs23
9 files changed, 741 insertions, 668 deletions
diff --git a/doc/tutorial/gf-tutorial2.txt b/doc/tutorial/gf-tutorial2.txt
index 0d530c22a..9ba3a9619 100644
--- a/doc/tutorial/gf-tutorial2.txt
+++ b/doc/tutorial/gf-tutorial2.txt
@@ -1704,6 +1704,36 @@ Product types and tuples are syntactic sugar for record types and records:
Thus the labels ``p1, p2,...``` are hard-coded.
+===Record and tuple patterns===
+
+Record types of parameter types are also parameter types.
+A typical example is a record of agreement features, e.g. French
+```
+ oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
+```
+Notice the term ``PType`` rather than just ``Type`` referring to
+parameter types. Every ``PType`` is also a ``Type``.
+
+Pattern matching is done in the expected way, but it can moreover
+utilize partial records: the branch
+```
+ {g = Fem} => t
+```
+in a table of type ``Agr => T`` means the same as
+```
+ {g = Fem ; n = _ ; p = _} => t
+```
+Tuple patterns are translated to record patterns in the
+same way as tuples to records; partial patterns make it
+possible to write, slightly surprisingly,
+```
+ case <g,n,p> of {
+ <Fem> => t
+ ...
+ }
+```
+
+
%--!
===Prefix-dependent choices===
diff --git a/examples/systemS/ProofSymb.gf b/examples/systemS/ProofSymb.gf
index 4ff18ca14..3de1b91b7 100644
--- a/examples/systemS/ProofSymb.gf
+++ b/examples/systemS/ProofSymb.gf
@@ -18,7 +18,7 @@ concrete ProofSymb of Proof = FormulaSymb ** open Prelude, Precedence in {
RedAbs form = continue ["Reductio ad absurdum"] (task neg abs)
where { neg = useTop (prefixR 4 "~" form) } ;
- ExFalso form = finish (["Ex falso quodlibet"] ++ form.s) "Ø" ; --- form
+ ExFalso form = finish (["Ex falso quodlibet"] ++ toProve form) "Ø" ; --- form
ConjSplit a b c =
continue ["Conjunction split"]
@@ -81,4 +81,10 @@ concrete ProofSymb of Proof = FormulaSymb ** open Prelude, Precedence in {
abs = "_|_" ;
+ toProve : PrecExp -> Str = \c ->
+ variants {
+ [] ; -- for generation
+ useTop c -- for parsing
+ } ;
+
} \ No newline at end of file
diff --git a/src/GF/Source/AbsGF.hs b/src/GF/Source/AbsGF.hs
index 4cdc911d2..5e00b938a 100644
--- a/src/GF/Source/AbsGF.hs
+++ b/src/GF/Source/AbsGF.hs
@@ -1,5 +1,4 @@
-
-module GF.Source.AbsGF where
+module GF.Source.AbsGF where --H
import GF.Infra.Ident --H
@@ -189,16 +188,17 @@ data Exp =
| ESelect Exp Exp
| ETupTyp Exp Exp
| EExtend Exp Exp
+ | EGlue Exp Exp
+ | EConcat Exp Exp
| EAbstr [Bind] Exp
| ECTable [Bind] Exp
| EProd Decl Exp
| ETType Exp Exp
- | EConcat Exp Exp
- | EGlue Exp Exp
| ELet [LocDef] Exp
| ELetb [LocDef] Exp
| EWhere Exp [LocDef]
| EEqs [Equation]
+ | EExample Exp String
| ELString LString
| ELin Ident
deriving (Eq,Ord,Show)
@@ -220,6 +220,7 @@ data Patt =
| PTup [PattTupleComp]
| PC Ident [Patt]
| PQC Ident Ident [Patt]
+ | PDisj Patt Patt
deriving (Eq,Ord,Show)
data PattAss =
@@ -239,10 +240,6 @@ data Sort =
| Sort_Strs
deriving (Eq,Ord,Show)
-data PattAlt =
- AltP Patt
- deriving (Eq,Ord,Show)
-
data Bind =
BIdent Ident
| BWild
@@ -262,7 +259,7 @@ data PattTupleComp =
deriving (Eq,Ord,Show)
data Case =
- Case [PattAlt] Exp
+ Case Patt Exp
deriving (Eq,Ord,Show)
data Equation =
diff --git a/src/GF/Source/GF.cf b/src/GF/Source/GF.cf
index ec07d3c0f..cdfb59d25 100644
--- a/src/GF/Source/GF.cf
+++ b/src/GF/Source/GF.cf
@@ -150,75 +150,80 @@ separator LocDef ";" ;
-- terms and types
-EIdent. Exp4 ::= Ident ;
-EConstr. Exp4 ::= "{" Ident "}" ;
-ECons. Exp4 ::= "%" Ident "%" ;
-ESort. Exp4 ::= Sort ;
-EString. Exp4 ::= String ;
-EInt. Exp4 ::= Integer ;
-EFloat. Exp4 ::= Double ;
-EMeta. Exp4 ::= "?" ;
-EEmpty. Exp4 ::= "[" "]" ;
-EData. Exp4 ::= "data" ;
-EList. Exp4 ::= "[" Ident Exps "]" ;
-EStrings. Exp4 ::= "[" String "]" ;
-ERecord. Exp4 ::= "{" [LocDef] "}" ; -- !
-ETuple. Exp4 ::= "<" [TupleComp] ">" ; --- needed for separator ","
-EIndir. Exp4 ::= "(" "in" Ident ")" ; -- indirection, used in judgements
-ETyped. Exp4 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations
-
-EProj. Exp3 ::= Exp3 "." Label ;
-EQConstr. Exp3 ::= "{" Ident "." Ident "}" ; -- qualified constructor
-EQCons. Exp3 ::= "%" Ident "." Ident ; -- qualified constant
-
-EApp. Exp2 ::= Exp2 Exp3 ;
-ETable. Exp2 ::= "table" "{" [Case] "}" ;
-ETTable. Exp2 ::= "table" Exp4 "{" [Case] "}" ;
-EVTable. Exp2 ::= "table" Exp4 "[" [Exp] "]" ;
-ECase. Exp2 ::= "case" Exp "of" "{" [Case] "}" ;
-EVariants. Exp2 ::= "variants" "{" [Exp] "}" ;
-EPre. Exp2 ::= "pre" "{" Exp ";" [Altern] "}" ;
-EStrs. Exp2 ::= "strs" "{" [Exp] "}" ;
-EConAt. Exp2 ::= Ident "@" Exp4 ;
-
-ESelect. Exp1 ::= Exp1 "!" Exp2 ;
-ETupTyp. Exp1 ::= Exp1 "*" Exp2 ;
-EExtend. Exp1 ::= Exp1 "**" Exp2 ;
+EIdent. Exp6 ::= Ident ;
+EConstr. Exp6 ::= "{" Ident "}" ;
+ECons. Exp6 ::= "%" Ident "%" ;
+ESort. Exp6 ::= Sort ;
+EString. Exp6 ::= String ;
+EInt. Exp6 ::= Integer ;
+EFloat. Exp6 ::= Double ;
+EMeta. Exp6 ::= "?" ;
+EEmpty. Exp6 ::= "[" "]" ;
+EData. Exp6 ::= "data" ;
+EList. Exp6 ::= "[" Ident Exps "]" ;
+EStrings. Exp6 ::= "[" String "]" ;
+ERecord. Exp6 ::= "{" [LocDef] "}" ; -- !
+ETuple. Exp6 ::= "<" [TupleComp] ">" ; --- needed for separator ","
+EIndir. Exp6 ::= "(" "in" Ident ")" ; -- indirection, used in judgements
+ETyped. Exp6 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations
+
+EProj. Exp5 ::= Exp5 "." Label ;
+EQConstr. Exp5 ::= "{" Ident "." Ident "}" ; -- qualified constructor
+EQCons. Exp5 ::= "%" Ident "." Ident ; -- qualified constant
+
+EApp. Exp4 ::= Exp4 Exp5 ;
+ETable. Exp4 ::= "table" "{" [Case] "}" ;
+ETTable. Exp4 ::= "table" Exp6 "{" [Case] "}" ;
+EVTable. Exp4 ::= "table" Exp6 "[" [Exp] "]" ;
+ECase. Exp4 ::= "case" Exp "of" "{" [Case] "}" ;
+EVariants. Exp4 ::= "variants" "{" [Exp] "}" ;
+EPre. Exp4 ::= "pre" "{" Exp ";" [Altern] "}" ;
+EStrs. Exp4 ::= "strs" "{" [Exp] "}" ;
+EConAt. Exp4 ::= Ident "@" Exp6 ;
+
+ESelect. Exp3 ::= Exp3 "!" Exp4 ;
+ETupTyp. Exp3 ::= Exp3 "*" Exp4 ;
+EExtend. Exp3 ::= Exp3 "**" Exp4 ;
+
+EGlue. Exp1 ::= Exp2 "+" Exp1 ;
+
+EConcat. Exp ::= Exp1 "++" Exp ;
EAbstr. Exp ::= "\\" [Bind] "->" Exp ;
ECTable. Exp ::= "\\""\\" [Bind] "=>" Exp ;
EProd. Exp ::= Decl "->" Exp ;
-ETType. Exp ::= Exp1 "=>" Exp ; -- these are thus right associative
-EConcat. Exp ::= Exp1 "++" Exp ;
-EGlue. Exp ::= Exp1 "+" Exp ;
+ETType. Exp ::= Exp3 "=>" Exp ; -- these are thus right associative
ELet. Exp ::= "let" "{" [LocDef] "}" "in" Exp ;
ELetb. Exp ::= "let" [LocDef] "in" Exp ;
-EWhere. Exp ::= Exp1 "where" "{" [LocDef] "}" ;
+EWhere. Exp ::= Exp3 "where" "{" [LocDef] "}" ;
EEqs. Exp ::= "fn" "{" [Equation] "}" ;
+EExample. Exp ::= "in" Exp5 String ;
+
coercions Exp 4 ;
separator Exp ";" ; -- in variants
-- list of arguments to category
NilExp. Exps ::= ;
-ConsExp. Exps ::= Exp4 Exps ; -- Exp4 to force parantheses
+ConsExp. Exps ::= Exp6 Exps ; -- Exp6 to force parantheses
-- patterns
-PW. Patt1 ::= "_" ;
-PV. Patt1 ::= Ident ;
-PCon. Patt1 ::= "{" Ident "}" ;
-PQ. Patt1 ::= Ident "." Ident ;
-PInt. Patt1 ::= Integer ;
-PFloat. Patt1 ::= Double ;
-PStr. Patt1 ::= String ;
-PR. Patt1 ::= "{" [PattAss] "}" ;
-PTup. Patt1 ::= "<" [PattTupleComp] ">" ;
-PC. Patt ::= Ident [Patt] ;
-PQC. Patt ::= Ident "." Ident [Patt] ;
-
-coercions Patt 1 ;
+PW. Patt2 ::= "_" ;
+PV. Patt2 ::= Ident ;
+PCon. Patt2 ::= "{" Ident "}" ;
+PQ. Patt2 ::= Ident "." Ident ;
+PInt. Patt2 ::= Integer ;
+PFloat. Patt2 ::= Double ;
+PStr. Patt2 ::= String ;
+PR. Patt2 ::= "{" [PattAss] "}" ;
+PTup. Patt2 ::= "<" [PattTupleComp] ">" ;
+PC. Patt1 ::= Ident [Patt] ;
+PQC. Patt1 ::= Ident "." Ident [Patt] ;
+PDisj. Patt ::= Patt "|" Patt1 ;
+
+coercions Patt 2 ;
PA. PattAss ::= [Ident] "=" Patt ;
@@ -233,13 +238,10 @@ rules Sort ::= "Type" | "PType" | "Tok" | "Str" | "Strs" ;
separator PattAss ";" ;
-AltP. PattAlt ::= Patt ;
-
-- this is explicit to force higher precedence level on rhs
-(:[]). [Patt] ::= Patt1 ;
-(:). [Patt] ::= Patt1 [Patt] ;
+(:[]). [Patt] ::= Patt2 ;
+(:). [Patt] ::= Patt2 [Patt] ;
-separator nonempty PattAlt "|" ;
-- binds in lambdas and lin rules
@@ -252,7 +254,7 @@ separator Bind "," ;
-- declarations in function types
DDec. Decl ::= "(" [Bind] ":" Exp ")" ;
-DExp. Decl ::= Exp2 ; -- can thus be an application
+DExp. Decl ::= Exp4 ; -- can thus be an application
-- tuple component (term or pattern)
@@ -264,7 +266,7 @@ separator PattTupleComp "," ;
-- case branches
-Case. Case ::= [PattAlt] "=>" Exp ;
+Case. Case ::= Patt "=>" Exp ;
separator nonempty Case ";" ;
@@ -283,7 +285,7 @@ separator Altern ";" ;
-- in a context, higher precedence is required than in function types
DDDec. DDecl ::= "(" [Bind] ":" Exp ")" ;
-DDExp. DDecl ::= Exp4 ; -- can thus *not* be an application
+DDExp. DDecl ::= Exp6 ; -- can thus *not* be an application
separator DDecl "" ;
@@ -308,8 +310,8 @@ FMinus. FileName ::= "-" FileName ;
FAddId. FileName ::= Ident FileName ;
token LString '\'' (char - '\'')* '\'' ;
-ELString. Exp4 ::= LString ;
-ELin. Exp2 ::= "Lin" Ident ;
+ELString. Exp6 ::= LString ;
+ELin. Exp4 ::= "Lin" Ident ;
DefPrintOld. TopDef ::= "printname" [PrintDef] ;
DefLintype. TopDef ::= "lintype" [Def] ;
diff --git a/src/GF/Source/GrammarToSource.hs b/src/GF/Source/GrammarToSource.hs
index 8375af2af..c5ecf6b19 100644
--- a/src/GF/Source/GrammarToSource.hs
+++ b/src/GF/Source/GrammarToSource.hs
@@ -205,8 +205,8 @@ trAssign (lab, (mty, t)) = maybe (P.LDDef x t') (\ty -> P.LDFull x (trt ty) t')
trLabelling (lab,ty) = P.LDDecl [trLabelIdent lab] (trt ty)
-trCase (patt, trm) = P.Case [P.AltP (trp patt)] (trt trm)
-trCases (patts,trm) = P.Case (map (P.AltP . trp) patts) (trt trm)
+trCase (patt, trm) = P.Case (trp patt) (trt trm)
+trCases (patts,trm) = P.Case (foldl1 P.PDisj (map trp patts)) (trt trm)
trDecl (x,ty) = P.DDDec [trb x] (trt ty)
diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs
index d29f702b8..9aa802910 100644
--- a/src/GF/Source/LexGF.hs
+++ b/src/GF/Source/LexGF.hs
@@ -1,16 +1,10 @@
{-# OPTIONS -fglasgow-exts -cpp #-}
{-# LINE 3 "LexGF.x" #-}
-module GF.Source.LexGF where -- H
+module GF.Source.LexGF where --H
-import GF.Data.ErrM -- H
-import GF.Data.SharedString -- H
+import GF.Data.ErrM --H
+import GF.Data.SharedString --H
-
-#if __GLASGOW_HASKELL__ >= 603
-#include "ghcconfig.h"
-#else
-#include "config.h"
-#endif
#if __GLASGOW_HASKELL__ >= 503
import Data.Array
import Data.Char (ord)
@@ -25,24 +19,24 @@ import GHC.Exts
import GlaExts
#endif
alex_base :: AlexAddr
-alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\x6c\x01\x00\x00\x79\x01\x00\x00"#
+alex_base = AlexA# "\x01\x00\x15\x00\x39\x00\x3a\x00\x18\x00\x19\x00\x1a\x00\x00\x00\x44\x00\x45\x00\x1b\x00\x1c\x00\x1d\x00\x42\x00\x00\x00\x26\x00\x27\x00\x13\x00\x00\x00\x2c\x00\x2d\x00\x9c\x00\x6c\x01\x00\x00\x17\x01\xe7\x01\xd5\x00\x35\x00\xe7\x00\xf2\x00\x1d\x01\xc2\x01\xcc\x01"#
alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\x0e\x00\x16\x00\xff\xff\x0e\x00\x0e\x00\xff\xff\x13\x00\x0e\x00\x0e\x00\x0f\x00\x11\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x0e\x00\x0e\x00\x0e\x00\x10\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x12\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x1b\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x16\x00\xff\xff\x00\x00\x00\x00\x14\x00\x16\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\xff\xff\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x17\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1c\x00\x00\x00\x00\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\x0e\x00\x18\x00\xff\xff\x0e\x00\x0e\x00\xff\xff\x13\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x02\x00\x02\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x12\x00\x12\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x1e\x00\x00\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x1b\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x19\x00\xff\xff\x00\x00\x00\x00\x16\x00\x19\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\xff\xff\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x1f\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1a\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\xff\xff\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x1a\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\x27\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\x14\x00\xff\xff\x02\x00\x02\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_deflt = AlexA# "\x15\x00\xff\xff\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0b\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x14\x00\xff\xff\xff\xff\xff\xff\x19\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-alex_accept = listArray (0::Int,29) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[],[],[]]
+alex_accept = listArray (0::Int,32) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[],[],[]]
{-# LINE 35 "LexGF.x" #-}
tok f p s = f p s
share :: String -> String
-share = shareString --H
+share = shareString
data Tok =
TS !String -- reserved words
@@ -147,9 +141,6 @@ alex_action_6 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s))
alex_action_7 = tok (\p s -> PT p (TI $ share s))
alex_action_8 = tok (\p s -> PT p (TD $ share s))
{-# LINE 1 "GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "GenericTemplate.hs" #-}
-- -----------------------------------------------------------------------------
-- ALEX TEMPLATE
--
@@ -160,7 +151,6 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s))
-- INTERNALS and main scanner engine
-{-# LINE 35 "GenericTemplate.hs" #-}
@@ -172,57 +162,39 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s))
+{-# LINE 34 "GenericTemplate.hs" #-}
-data AlexAddr = AlexA# Addr#
-#if __GLASGOW_HASKELL__ < 503
-uncheckedShiftL# = shiftL#
-#endif
-{-# INLINE alexIndexInt16OffAddr #-}
-alexIndexInt16OffAddr (AlexA# arr) off =
-#ifdef WORDS_BIGENDIAN
- narrow16Int# i
- where
- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- low = int2Word# (ord# (indexCharOffAddr# arr off'))
- off' = off *# 2#
-#else
- indexInt16OffAddr# arr off
-#endif
-{-# INLINE alexIndexInt32OffAddr #-}
-alexIndexInt32OffAddr (AlexA# arr) off =
-#ifdef WORDS_BIGENDIAN
- narrow32Int# i
- where
- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
- (b2 `uncheckedShiftL#` 16#) `or#`
- (b1 `uncheckedShiftL#` 8#) `or#` b0)
- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
- off' = off *# 4#
-#else
- indexInt32OffAddr# arr off
-#endif
+data AlexAddr = AlexA# Addr#
-#if __GLASGOW_HASKELL__ < 503
-quickIndex arr i = arr ! i
+{-# INLINE alexIndexShortOffAddr #-}
+alexIndexShortOffAddr (AlexA# arr) off =
+#if __GLASGOW_HASKELL__ > 500
+ narrow16Int# i
+#elif __GLASGOW_HASKELL__ == 500
+ intToInt16# i
#else
--- GHC >= 503, unsafeAt is available from Data.Array.Base.
-quickIndex = unsafeAt
+ (i `iShiftL#` 16#) `iShiftRA#` 16#
#endif
+ where
+#if __GLASGOW_HASKELL__ >= 503
+ i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
+#else
+ i = word2Int# ((high `shiftL#` 8#) `or#` low)
+#endif
+ high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+ low = int2Word# (ord# (indexCharOffAddr# arr off'))
+ off' = off *# 2#
@@ -253,7 +225,7 @@ alexScanUser user input (I# (sc))
- AlexError input'
+ AlexError input
(AlexLastSkip input len, _) ->
@@ -279,7 +251,7 @@ alex_scan_tkn user orig_input len input s last_acc =
alex_scan_tkn' user orig_input len input s last_acc =
let
- new_acc = check_accs (alex_accept `quickIndex` (I# (s)))
+ new_acc = check_accs (alex_accept `unsafeAt` (I# (s)))
in
new_acc `seq`
case alexGetChar input of
@@ -289,14 +261,14 @@ alex_scan_tkn' user orig_input len input s last_acc =
let
- base = alexIndexInt32OffAddr alex_base s
+ base = alexIndexShortOffAddr alex_base s
(I# (ord_c)) = ord c
offset = (base +# ord_c)
- check = alexIndexInt16OffAddr alex_check offset
+ check = alexIndexShortOffAddr alex_check offset
new_s = if (offset >=# 0#) && (check ==# ord_c)
- then alexIndexInt16OffAddr alex_table offset
- else alexIndexInt16OffAddr alex_deflt s
+ then alexIndexShortOffAddr alex_table offset
+ else alexIndexShortOffAddr alex_deflt s
in
alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc
diff --git a/src/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs
index 3f22068bf..d75c29977 100644
--- a/src/GF/Source/ParGF.hs
+++ b/src/GF/Source/ParGF.hs
@@ -332,186 +332,192 @@ happyIn59 x = unsafeCoerce# x
happyOut59 :: (HappyAbsSyn ) -> (Exp)
happyOut59 x = unsafeCoerce# x
{-# INLINE happyOut59 #-}
-happyIn60 :: ([Exp]) -> (HappyAbsSyn )
+happyIn60 :: (Exp) -> (HappyAbsSyn )
happyIn60 x = unsafeCoerce# x
{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> ([Exp])
+happyOut60 :: (HappyAbsSyn ) -> (Exp)
happyOut60 x = unsafeCoerce# x
{-# INLINE happyOut60 #-}
-happyIn61 :: (Exps) -> (HappyAbsSyn )
+happyIn61 :: (Exp) -> (HappyAbsSyn )
happyIn61 x = unsafeCoerce# x
{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> (Exps)
+happyOut61 :: (HappyAbsSyn ) -> (Exp)
happyOut61 x = unsafeCoerce# x
{-# INLINE happyOut61 #-}
-happyIn62 :: (Patt) -> (HappyAbsSyn )
+happyIn62 :: ([Exp]) -> (HappyAbsSyn )
happyIn62 x = unsafeCoerce# x
{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn ) -> (Patt)
+happyOut62 :: (HappyAbsSyn ) -> ([Exp])
happyOut62 x = unsafeCoerce# x
{-# INLINE happyOut62 #-}
-happyIn63 :: (Patt) -> (HappyAbsSyn )
+happyIn63 :: (Exps) -> (HappyAbsSyn )
happyIn63 x = unsafeCoerce# x
{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn ) -> (Patt)
+happyOut63 :: (HappyAbsSyn ) -> (Exps)
happyOut63 x = unsafeCoerce# x
{-# INLINE happyOut63 #-}
-happyIn64 :: (PattAss) -> (HappyAbsSyn )
+happyIn64 :: (Patt) -> (HappyAbsSyn )
happyIn64 x = unsafeCoerce# x
{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn ) -> (PattAss)
+happyOut64 :: (HappyAbsSyn ) -> (Patt)
happyOut64 x = unsafeCoerce# x
{-# INLINE happyOut64 #-}
-happyIn65 :: (Label) -> (HappyAbsSyn )
+happyIn65 :: (Patt) -> (HappyAbsSyn )
happyIn65 x = unsafeCoerce# x
{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn ) -> (Label)
+happyOut65 :: (HappyAbsSyn ) -> (Patt)
happyOut65 x = unsafeCoerce# x
{-# INLINE happyOut65 #-}
-happyIn66 :: (Sort) -> (HappyAbsSyn )
+happyIn66 :: (Patt) -> (HappyAbsSyn )
happyIn66 x = unsafeCoerce# x
{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn ) -> (Sort)
+happyOut66 :: (HappyAbsSyn ) -> (Patt)
happyOut66 x = unsafeCoerce# x
{-# INLINE happyOut66 #-}
-happyIn67 :: ([PattAss]) -> (HappyAbsSyn )
+happyIn67 :: (PattAss) -> (HappyAbsSyn )
happyIn67 x = unsafeCoerce# x
{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn ) -> ([PattAss])
+happyOut67 :: (HappyAbsSyn ) -> (PattAss)
happyOut67 x = unsafeCoerce# x
{-# INLINE happyOut67 #-}
-happyIn68 :: (PattAlt) -> (HappyAbsSyn )
+happyIn68 :: (Label) -> (HappyAbsSyn )
happyIn68 x = unsafeCoerce# x
{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn ) -> (PattAlt)
+happyOut68 :: (HappyAbsSyn ) -> (Label)
happyOut68 x = unsafeCoerce# x
{-# INLINE happyOut68 #-}
-happyIn69 :: ([Patt]) -> (HappyAbsSyn )
+happyIn69 :: (Sort) -> (HappyAbsSyn )
happyIn69 x = unsafeCoerce# x
{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn ) -> ([Patt])
+happyOut69 :: (HappyAbsSyn ) -> (Sort)
happyOut69 x = unsafeCoerce# x
{-# INLINE happyOut69 #-}
-happyIn70 :: ([PattAlt]) -> (HappyAbsSyn )
+happyIn70 :: ([PattAss]) -> (HappyAbsSyn )
happyIn70 x = unsafeCoerce# x
{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn ) -> ([PattAlt])
+happyOut70 :: (HappyAbsSyn ) -> ([PattAss])
happyOut70 x = unsafeCoerce# x
{-# INLINE happyOut70 #-}
-happyIn71 :: (Bind) -> (HappyAbsSyn )
+happyIn71 :: ([Patt]) -> (HappyAbsSyn )
happyIn71 x = unsafeCoerce# x
{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn ) -> (Bind)
+happyOut71 :: (HappyAbsSyn ) -> ([Patt])
happyOut71 x = unsafeCoerce# x
{-# INLINE happyOut71 #-}
-happyIn72 :: ([Bind]) -> (HappyAbsSyn )
+happyIn72 :: (Bind) -> (HappyAbsSyn )
happyIn72 x = unsafeCoerce# x
{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn ) -> ([Bind])
+happyOut72 :: (HappyAbsSyn ) -> (Bind)
happyOut72 x = unsafeCoerce# x
{-# INLINE happyOut72 #-}
-happyIn73 :: (Decl) -> (HappyAbsSyn )
+happyIn73 :: ([Bind]) -> (HappyAbsSyn )
happyIn73 x = unsafeCoerce# x
{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn ) -> (Decl)
+happyOut73 :: (HappyAbsSyn ) -> ([Bind])
happyOut73 x = unsafeCoerce# x
{-# INLINE happyOut73 #-}
-happyIn74 :: (TupleComp) -> (HappyAbsSyn )
+happyIn74 :: (Decl) -> (HappyAbsSyn )
happyIn74 x = unsafeCoerce# x
{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn ) -> (TupleComp)
+happyOut74 :: (HappyAbsSyn ) -> (Decl)
happyOut74 x = unsafeCoerce# x
{-# INLINE happyOut74 #-}
-happyIn75 :: (PattTupleComp) -> (HappyAbsSyn )
+happyIn75 :: (TupleComp) -> (HappyAbsSyn )
happyIn75 x = unsafeCoerce# x
{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn ) -> (PattTupleComp)
+happyOut75 :: (HappyAbsSyn ) -> (TupleComp)
happyOut75 x = unsafeCoerce# x
{-# INLINE happyOut75 #-}
-happyIn76 :: ([TupleComp]) -> (HappyAbsSyn )
+happyIn76 :: (PattTupleComp) -> (HappyAbsSyn )
happyIn76 x = unsafeCoerce# x
{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn ) -> ([TupleComp])
+happyOut76 :: (HappyAbsSyn ) -> (PattTupleComp)
happyOut76 x = unsafeCoerce# x
{-# INLINE happyOut76 #-}
-happyIn77 :: ([PattTupleComp]) -> (HappyAbsSyn )
+happyIn77 :: ([TupleComp]) -> (HappyAbsSyn )
happyIn77 x = unsafeCoerce# x
{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn ) -> ([PattTupleComp])
+happyOut77 :: (HappyAbsSyn ) -> ([TupleComp])
happyOut77 x = unsafeCoerce# x
{-# INLINE happyOut77 #-}
-happyIn78 :: (Case) -> (HappyAbsSyn )
+happyIn78 :: ([PattTupleComp]) -> (HappyAbsSyn )
happyIn78 x = unsafeCoerce# x
{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn ) -> (Case)
+happyOut78 :: (HappyAbsSyn ) -> ([PattTupleComp])
happyOut78 x = unsafeCoerce# x
{-# INLINE happyOut78 #-}
-happyIn79 :: ([Case]) -> (HappyAbsSyn )
+happyIn79 :: (Case) -> (HappyAbsSyn )
happyIn79 x = unsafeCoerce# x
{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn ) -> ([Case])
+happyOut79 :: (HappyAbsSyn ) -> (Case)
happyOut79 x = unsafeCoerce# x
{-# INLINE happyOut79 #-}
-happyIn80 :: (Equation) -> (HappyAbsSyn )
+happyIn80 :: ([Case]) -> (HappyAbsSyn )
happyIn80 x = unsafeCoerce# x
{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn ) -> (Equation)
+happyOut80 :: (HappyAbsSyn ) -> ([Case])
happyOut80 x = unsafeCoerce# x
{-# INLINE happyOut80 #-}
-happyIn81 :: ([Equation]) -> (HappyAbsSyn )
+happyIn81 :: (Equation) -> (HappyAbsSyn )
happyIn81 x = unsafeCoerce# x
{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn ) -> ([Equation])
+happyOut81 :: (HappyAbsSyn ) -> (Equation)
happyOut81 x = unsafeCoerce# x
{-# INLINE happyOut81 #-}
-happyIn82 :: (Altern) -> (HappyAbsSyn )
+happyIn82 :: ([Equation]) -> (HappyAbsSyn )
happyIn82 x = unsafeCoerce# x
{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn ) -> (Altern)
+happyOut82 :: (HappyAbsSyn ) -> ([Equation])
happyOut82 x = unsafeCoerce# x
{-# INLINE happyOut82 #-}
-happyIn83 :: ([Altern]) -> (HappyAbsSyn )
+happyIn83 :: (Altern) -> (HappyAbsSyn )
happyIn83 x = unsafeCoerce# x
{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn ) -> ([Altern])
+happyOut83 :: (HappyAbsSyn ) -> (Altern)
happyOut83 x = unsafeCoerce# x
{-# INLINE happyOut83 #-}
-happyIn84 :: (DDecl) -> (HappyAbsSyn )
+happyIn84 :: ([Altern]) -> (HappyAbsSyn )
happyIn84 x = unsafeCoerce# x
{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn ) -> (DDecl)
+happyOut84 :: (HappyAbsSyn ) -> ([Altern])
happyOut84 x = unsafeCoerce# x
{-# INLINE happyOut84 #-}
-happyIn85 :: ([DDecl]) -> (HappyAbsSyn )
+happyIn85 :: (DDecl) -> (HappyAbsSyn )
happyIn85 x = unsafeCoerce# x
{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn ) -> ([DDecl])
+happyOut85 :: (HappyAbsSyn ) -> (DDecl)
happyOut85 x = unsafeCoerce# x
{-# INLINE happyOut85 #-}
-happyIn86 :: (OldGrammar) -> (HappyAbsSyn )
+happyIn86 :: ([DDecl]) -> (HappyAbsSyn )
happyIn86 x = unsafeCoerce# x
{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn ) -> (OldGrammar)
+happyOut86 :: (HappyAbsSyn ) -> ([DDecl])
happyOut86 x = unsafeCoerce# x
{-# INLINE happyOut86 #-}
-happyIn87 :: (Include) -> (HappyAbsSyn )
+happyIn87 :: (OldGrammar) -> (HappyAbsSyn )
happyIn87 x = unsafeCoerce# x
{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn ) -> (Include)
+happyOut87 :: (HappyAbsSyn ) -> (OldGrammar)
happyOut87 x = unsafeCoerce# x
{-# INLINE happyOut87 #-}
-happyIn88 :: (FileName) -> (HappyAbsSyn )
+happyIn88 :: (Include) -> (HappyAbsSyn )
happyIn88 x = unsafeCoerce# x
{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn ) -> (FileName)
+happyOut88 :: (HappyAbsSyn ) -> (Include)
happyOut88 x = unsafeCoerce# x
{-# INLINE happyOut88 #-}
-happyIn89 :: ([FileName]) -> (HappyAbsSyn )
+happyIn89 :: (FileName) -> (HappyAbsSyn )
happyIn89 x = unsafeCoerce# x
{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn ) -> ([FileName])
+happyOut89 :: (HappyAbsSyn ) -> (FileName)
happyOut89 x = unsafeCoerce# x
{-# INLINE happyOut89 #-}
+happyIn90 :: ([FileName]) -> (HappyAbsSyn )
+happyIn90 x = unsafeCoerce# x
+{-# INLINE happyIn90 #-}
+happyOut90 :: (HappyAbsSyn ) -> ([FileName])
+happyOut90 x = unsafeCoerce# x
+{-# INLINE happyOut90 #-}
happyInTok :: Token -> (HappyAbsSyn )
happyInTok x = unsafeCoerce# x
{-# INLINE happyInTok #-}
@@ -520,21 +526,21 @@ happyOutTok x = unsafeCoerce# x
{-# INLINE happyOutTok #-}
happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x39\x01\x5a\x05\xb7\x00\x3c\x05\x00\x00\x72\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x05\x42\x01\x72\x01\x20\x05\x00\x00\x75\x05\x25\x05\x1b\x00\xf9\xff\x25\x05\x00\x00\xb7\x00\xd9\x00\x25\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x6c\x05\xff\xff\x6b\x05\x6a\x05\x1a\x02\x69\x05\x00\x00\x00\x00\x00\x00\x00\x00\x19\x05\x00\x00\x78\x00\x0e\x00\xd4\x05\x1e\x05\x00\x00\x16\x05\x9a\x02\x5c\x05\x54\x05\x46\x05\x08\x05\x08\x05\x08\x05\x08\x05\x08\x05\x08\x05\x00\x00\x78\x00\x00\x00\x40\x05\x00\x00\x78\x00\x78\x00\x78\x00\xd6\x05\xb7\x00\x00\x00\xf3\x01\x7e\x00\x69\x00\xf4\x04\xb7\x00\xb7\x00\x2c\x05\xda\x02\x28\x05\xfe\x04\xdf\x04\x7e\x00\xe9\x04\x00\x00\x00\x00\x15\x05\x0b\x05\xf6\xff\x00\x00\x0a\x05\x04\x05\xfc\x04\x47\x02\xe8\x01\x00\x05\x00\x00\x20\x00\xfb\x04\xf6\x04\xb4\x04\x25\x02\xfa\x04\xb7\x00\xec\x00\xec\x00\xec\x00\xb7\x00\xb7\x00\xb7\x00\xf9\x04\xed\x04\x63\x00\xe8\x01\x00\x00\xae\x04\x00\x00\x00\x00\xac\x04\xab\x04\x00\x00\x00\x00\x00\x00\xc7\x01\xc7\x01\xc7\x01\x00\x00\x00\x00\x00\x00\xab\x04\xab\x04\xdd\x04\xb7\x00\x00\x00\x00\x00\x95\x01\xd6\x04\x9e\x04\x00\x00\x00\x00\xb7\x00\xb7\x00\xc8\x04\xb7\x00\xf6\xff\xdb\x04\xc9\x04\x00\x00\x00\x00\x00\x00\x7e\x00\xc0\x04\xcb\x04\xc7\x04\x7b\x04\x7e\x00\x7e\x00\x00\x00\xc5\x04\xb7\x00\x7a\x04\xb7\x00\xb7\x00\xc4\x04\xc3\x04\xbe\x04\xa0\x04\x4a\x02\x00\x00\x00\x00\xa8\x04\x96\x04\xa1\x04\x97\x04\x7e\x00\xb7\x00\x94\x04\x00\x00\x68\x00\x4b\x04\x62\x00\x4b\x04\x4b\x04\x62\x00\x62\x00\x62\x00\x62\x00\x62\x00\x4b\x04\x4b\x04\x62\x00\x97\x00\x4b\x04\x62\x00\x62\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x55\x04\x4e\x04\x00\x00\x36\x00\x80\x04\x5e\x04\x9e\x00\x00\x00\x42\x04\x70\x04\x62\x04\x1f\x04\x1f\x04\x1f\x04\x1f\x04\x24\x00\x00\x00\x00\x00\x5a\x04\x00\x00\x72\x00\x91\x00\x1c\x04\x00\x00\x59\x04\x52\x04\x00\x00\x47\x04\x44\x04\x62\x00\x62\x00\x00\x00\x43\x04\x3d\x04\x00\x00\x3a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x04\x00\x00\x30\x04\x36\x04\x35\x04\x00\x00\x00\x00\x0e\x01\x34\x04\x00\x00\x00\x00\x00\x00\x32\x04\x00\x00\xe8\x03\x00\x00\x1a\x04\x98\x00\x2d\x04\x00\x00\x7e\x00\xb7\x00\x7e\x00\x00\x00\xd9\x03\x00\x00\xb7\x00\xb7\x00\x22\x04\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x18\x04\x02\x04\x1b\x04\x2a\x01\x10\x04\x0f\x04\xfa\x03\x00\x00\x7e\x00\xb7\x00\x00\x00\xb0\x03\x7e\x00\x00\x00\x00\x00\xb7\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\xec\x03\x00\x00\xeb\x03\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x7e\x00\x00\x00\x00\x00\x00\x00\x7e\x00\xb7\x00\xb7\x00\xce\x03\xe9\x03\xde\x03\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x74\x01\x9d\x03\x9d\x03\x9d\x03\x9d\x03\xb7\x00\x9d\x03\xdd\x03\x89\x03\x23\x00\x00\x00\x00\x00\xb7\x00\x05\x00\x05\x00\x00\x00\xc0\x03\xb7\x00\xb7\x00\xc9\x03\x05\x00\x00\x00\xa9\x03\xa3\x02\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x7e\x03\x7e\x03\xc6\x03\x1a\x00\x68\x03\xa8\x03\x1a\x00\xae\x03\x63\x03\x00\x00\x8b\x03\x61\x03\x88\x03\x65\x03\x00\x00\x46\x03\x00\x00\x33\x03\x00\x00\x00\x00\x1a\x00\x00\x00\xb7\x00\x7c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x03\x00\x00\x4e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x03\x66\x03\x00\x00\x60\x03\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x21\x01\x00\x00\x00\x00\xb7\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x03\x59\x03\x09\x03\x09\x03\xd2\x02\x09\x03\x09\x03\x74\x01\xb7\x00\x00\x00\x00\x00\xea\x01\x1a\x00\xb1\x02\x00\x00\x00\x00\x53\x03\x1a\x00\x49\x03\xfd\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\x40\x03\x44\x03\x00\x00\x00\x00\xb7\x00\xf1\x02\x39\x03\x36\x03\x00\x00\x00\x00\x35\x03\x37\x03\x2d\x03\x29\x03\x00\x00\xdb\x02\xdb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x03\x00\x00\xcd\x02\x30\x01\x1a\x00\x1a\x00\x1e\x03\x0e\x03\x00\x00\x00\x00\x00\x00"#
+happyActOffsets = HappyA# "\x00\x00\x98\x01\xf3\x04\x48\x01\xc9\x04\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x05\xb2\x01\x89\x00\xf9\x04\xbe\x04\xf8\x04\x00\x00\x0a\x05\xc1\x04\x5e\x00\x27\x00\xc1\x04\x00\x00\x48\x01\x74\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x09\x05\xb2\x02\x16\x00\x08\x05\x07\x05\x99\x02\x05\x05\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x28\x00\x0e\x00\x90\x04\xae\x04\x00\x00\xa7\x04\x86\x01\xf7\x04\xf5\x04\xf4\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\xa9\x04\x00\x00\x28\x00\x00\x00\xef\x04\x00\x00\x28\x00\x28\x00\x28\x00\x7f\x07\x48\x01\x00\x00\x15\x00\x75\x00\xfa\x00\xa8\x04\xac\x00\xac\x00\xe9\x04\xeb\x00\xee\x04\xc0\x04\xa5\x04\x1d\x00\x75\x00\xa6\x04\x00\x00\x00\x00\xe2\x04\xe3\x04\x2f\x00\x00\x00\xd6\x04\xd2\x04\xc7\x04\x97\x02\x80\x02\xcf\x04\x00\x00\x2e\x03\xd3\x04\xce\x04\x4b\x02\x7c\x04\xd4\x04\xac\x00\x7d\x01\xac\x00\x7d\x01\x7d\x01\x7d\x01\xac\x00\xd1\x04\xc5\x04\xfa\xff\x32\x02\x00\x00\x84\x04\x00\x00\x00\x00\x76\x04\x74\x04\x00\x00\x19\x02\x19\x02\x19\x02\x00\x00\x19\x02\x7f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x74\x04\xb9\x04\xac\x00\x00\x00\x00\x00\xe4\x01\xb2\x04\x70\x04\x00\x00\x00\x00\xac\x00\xac\x00\xa3\x04\xac\x00\x2f\x00\xb7\x04\xab\x04\x00\x00\x00\x00\x00\x00\x75\x00\xb0\x04\xa4\x04\xb1\x04\x58\x04\x75\x00\x75\x00\x00\x00\x00\x00\xa2\x04\xac\x00\x57\x04\xac\x00\xac\x00\xa1\x04\xa0\x04\x9b\x04\x8e\x04\x00\x03\x00\x00\x00\x00\x0d\x00\x9c\x04\x98\x04\x75\x00\xac\x00\x88\x04\x00\x00\x8d\x00\x3c\x04\x8c\x00\x3c\x04\x3c\x04\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x3c\x04\x3c\x04\x8c\x00\x7a\x00\x3c\x04\x8c\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x7e\x04\x00\x00\x00\x00\x51\x04\x4f\x04\x00\x00\xfc\xff\x80\x04\x5e\x04\x37\x00\x00\x00\x48\x04\x66\x04\x64\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x21\x00\x00\x00\x00\x00\x65\x04\x00\x00\xb5\x00\x4e\x00\x19\x04\x00\x00\x63\x04\x53\x04\x00\x00\x49\x04\x50\x04\x8c\x00\x8c\x00\x00\x00\x46\x04\x37\x04\x00\x00\x44\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x04\x00\x00\x28\x04\x2f\x04\x2d\x04\x00\x00\x00\x00\x88\x01\x2b\x04\x00\x00\x00\x00\x00\x00\x29\x04\x00\x00\xe1\x03\x00\x00\x0e\x04\x97\x00\x17\x04\x00\x00\x75\x00\x75\x00\xac\x00\x00\x00\xcd\x03\x00\x00\xac\x00\xac\x00\x16\x04\x00\x00\x00\x00\x00\x00\xe9\x03\xf0\x03\x0b\x04\xea\x03\x95\x00\xf1\x02\xfc\x03\xfb\x03\xe0\x03\x00\x00\x75\x00\xac\x00\x00\x00\xa7\x03\x75\x00\x00\x00\x00\x00\xac\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\xdf\x03\x00\x00\xd6\x03\x00\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x75\x00\x00\x00\x00\x00\x00\x00\x75\x00\xac\x00\xac\x00\xb9\x03\xc8\x03\xc4\x03\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\xcb\x01\x7b\x03\x7b\x03\x7b\x03\x7b\x03\xac\x00\x7b\x03\xbe\x03\x74\x03\x20\x00\x00\x00\x00\x00\xac\x00\x3c\x00\x3c\x00\x00\x00\xaf\x03\xac\x00\xac\x00\x9e\x03\x3c\x00\x00\x00\xac\x03\x0e\x02\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x53\x03\x53\x03\x8d\x03\xfd\xff\x41\x03\x7c\x03\xfd\xff\x83\x03\x31\x03\x00\x00\x72\x03\x2d\x03\x6f\x03\x49\x03\x00\x00\x22\x03\x00\x00\x24\x03\x00\x00\x00\x00\xfd\xff\x00\x00\xac\x00\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x03\x58\x03\x00\x00\x51\x03\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x18\x00\x00\x00\x00\x00\xac\x00\xac\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x45\x03\x39\x03\xf5\x02\xf5\x02\x6d\x03\xf5\x02\xf5\x02\xcb\x01\xac\x00\x00\x00\x00\x00\xa4\x01\xfd\xff\x4c\x03\x00\x00\x00\x00\x32\x03\xfd\xff\x36\x03\xef\x02\x00\x00\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\x27\x03\x18\x03\x00\x00\x00\x00\xac\x00\xc4\x02\x0c\x03\x21\x03\x00\x00\x00\x00\x12\x03\x0a\x03\xfc\x02\xf8\x02\x00\x00\xc1\x02\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\xb0\x02\xf3\xff\xfd\xff\xfd\xff\xf4\x02\xe8\x02\x00\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x09\x02\xaa\x01\xd4\xff\x78\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x04\x1b\x03\xf5\x01\x0d\x03\x00\x00\x9d\x02\xa0\x00\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x05\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x04\x00\x00\x00\xf7\x02\xf5\x02\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\xf0\x02\xea\x02\xe4\x02\xe3\x02\xde\x02\xcc\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\xa5\x02\x86\x03\x00\x00\x00\x00\x73\x01\x4f\x05\xbd\x02\x6a\x03\x43\x05\x00\x00\x00\x00\x00\x00\x00\x00\x19\x03\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x2e\x05\x28\x03\xc2\x02\x20\x02\x1a\x05\x07\x05\xf2\x04\x00\x00\x00\x00\x12\x00\x54\x04\x00\x00\x91\x02\x00\x00\x00\x00\xa6\x02\x03\x02\x00\x00\x00\x00\x00\x00\x80\x02\x80\x02\x80\x02\x00\x00\x00\x00\x00\x00\x30\x00\x93\x02\x00\x00\xe5\x04\x00\x00\x00\x00\x79\x02\x00\x00\x8d\x02\x00\x00\x00\x00\x86\x02\xd2\x04\x00\x00\xbd\x04\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x13\x01\xda\x01\x19\x01\x00\x00\x00\x00\xa9\x04\x7e\x01\x9d\x04\x88\x04\x00\x00\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x02\x50\x03\x00\x00\x00\x00\xdb\x00\xcb\x05\xc2\x05\x58\x01\xd2\x05\xbe\x05\xa0\x05\xb6\x05\x9d\x05\x9a\x05\x8c\x02\xae\x01\x12\x05\x8f\x05\x61\x02\x10\x05\x6d\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x44\x02\x00\x00\x00\x00\x41\x02\x28\x02\x30\x02\x27\x02\x78\x02\x00\x00\x00\x00\x00\x00\x00\x00\x77\x03\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x05\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x20\x03\x00\x00\x00\x00\x5d\x02\x74\x04\xeb\x00\x00\x00\xb9\x01\x00\x00\x34\x03\x43\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x61\x04\x00\x00\xa8\x01\xc5\x01\x00\x00\x00\x00\x4c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\xce\x01\x00\x00\x00\x00\x00\x00\xd1\x00\x3f\x04\x2c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x01\xa1\x00\x14\x00\x2e\x00\x25\x03\x1d\x01\x89\x01\x17\x04\x57\x01\x00\x00\x59\x01\x9f\x01\x00\x00\x00\x00\xf7\x03\xb1\x00\xd3\x01\x00\x00\x00\x00\xdb\x03\xcf\x03\x00\x00\xb3\x01\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x83\x01\x00\x00\x9b\x02\x22\x00\x00\x00\x7f\x02\x00\x00\x7d\x01\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x00\x00\x5a\x01\x00\x00\x00\x00\x2d\x02\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x14\x00\x00\x00\x00\x00\x18\x02\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\xb0\x00\xcf\x00\xa4\x00\x36\x01\x14\x00\x8c\x03\x00\x00\x00\x00\x00\x00\x16\x01\x65\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x03\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x25\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\xee\x01\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+happyGotoOffsets = HappyA# "\x58\x01\x3e\x01\xe3\x00\xf1\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x03\xb6\x03\x32\x00\xeb\x02\x00\x00\x28\x03\x30\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x06\x00\x00\x00\x00\x2a\x07\x34\x03\x00\x00\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x04\x00\x00\x00\xa5\x02\xd9\x02\x00\x00\x00\x00\x28\x01\x00\x00\x00\x00\x00\x00\xd7\x02\xd6\x02\xcb\x02\xc6\x02\xb6\x02\xb4\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\x9a\x02\x25\x04\x00\x00\x00\x00\x1c\x03\xba\x06\xb1\x02\x09\x04\x9e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x03\xa4\x02\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x04\x00\x00\x00\x00\x83\x06\x0c\x07\x67\x06\x1b\x07\x13\x03\xdf\x01\x4c\x06\x00\x00\x00\x00\x2d\x00\xf8\x01\x00\x00\x90\x01\x00\x00\x00\x00\x95\x02\x56\x01\x00\x00\x4d\x04\x4d\x04\x4d\x04\x00\x00\x4d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x93\x02\x00\x00\x30\x06\x00\x00\x00\x00\xc2\x03\x00\x00\x75\x02\x00\x00\x00\x00\x46\x02\x15\x06\x00\x00\xf9\x05\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x00\x00\x00\x00\x00\x00\x30\x01\x10\x04\x12\x02\x00\x00\x00\x00\x00\x00\xde\x05\x26\x01\xc2\x05\xa7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\xed\x03\x00\x00\x00\x00\x09\x02\x7e\x01\x77\x07\x2e\x01\x29\x07\x70\x07\x5e\x07\x57\x07\x55\x07\x51\x07\x70\x02\x08\x02\x4f\x07\x19\x07\x64\x02\x49\x07\x30\x07\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x51\x02\x00\x00\x00\x00\x60\x02\xf7\x01\x4f\x02\x45\x02\x2c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x2e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x03\x52\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x25\x02\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x06\x01\xbc\x03\x8b\x05\x00\x00\x16\x02\x00\x00\xd1\x03\xf0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x70\x05\x00\x00\x0b\x02\xdb\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x77\x01\x00\x00\x00\x00\x00\x00\xab\x01\x39\x05\x1d\x05\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x01\x65\x01\x11\x00\x93\x01\x42\x01\xee\x00\xfd\x01\x02\x05\x62\x02\x00\x00\xa8\x01\x5c\x01\x00\x00\x00\x00\xe6\x04\x0e\x01\x9d\x02\x00\x00\x00\x00\xcb\x04\xaf\x04\x00\x00\xc0\x02\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xa7\x01\x00\x00\x61\x02\xc9\x00\x00\x00\x5e\x02\x00\x00\x74\x01\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\xde\x01\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x11\x00\x00\x00\x00\x00\xac\x02\x78\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\xf1\x00\xc8\x00\xd6\x00\xa8\x00\x11\x00\x5d\x04\x00\x00\x00\x00\x00\x00\xfe\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x04\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x8a\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xf5\xff\xd0\xff\x0f\xff\x00\x00\x00\x00\xfb\xff\x80\xff\x7b\xff\x7c\xff\x7a\xff\x6f\xff\x6b\xff\x61\xff\x5c\xff\x51\xff\x00\x00\x7d\xff\x00\x00\x83\xff\x2c\xff\x00\x00\x00\x00\x79\xff\x25\xff\x2c\xff\x00\x00\x3a\xff\x38\xff\x37\xff\x39\xff\x3b\xff\x00\x00\x77\xff\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\x00\x00\xd0\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x0c\xff\x0d\xff\x00\x00\x0e\xff\x00\x00\x00\x00\x00\x00\x10\xff\x50\xff\x80\xff\x00\x00\x83\xff\x00\x00\x00\x00\x50\xff\x00\x00\x8c\xff\x00\x00\x82\xff\x00\x00\x83\xff\x1b\xff\x00\x00\x60\xff\x2e\xff\x2b\xff\x00\x00\x2c\xff\x2d\xff\x27\xff\x24\xff\x00\x00\x00\x00\x4d\xff\x00\x00\x78\xff\x80\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\x62\xff\x83\xff\x3d\xff\x6e\xff\x00\x00\x83\xff\x56\xff\x57\xff\x58\xff\x5e\xff\x5f\xff\x5d\xff\x59\xff\x74\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x75\xff\x4d\xff\x00\x00\x00\x00\x7e\xff\x73\xff\x25\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x00\x00\x4a\xff\x47\xff\x45\xff\x46\xff\x32\xff\x00\x00\x1a\xff\x00\x00\x36\xff\x00\x00\x22\xff\x4b\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x4f\xff\x00\x00\x00\x00\x8c\xff\x3f\xff\x33\xff\x30\xff\x00\x00\x1e\xff\x00\x00\x00\x00\x50\xff\x00\x00\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\xff\x0a\xff\x09\xff\x07\xff\x08\xff\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xd9\xff\x00\x00\x00\x00\xc8\xff\xf1\xff\xd5\xff\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x06\xff\x8a\xff\x00\x00\xaf\xff\x88\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xb3\xff\x88\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xa1\xff\x00\x00\xbb\xff\x00\x00\xba\xff\xb2\xff\xb8\xff\xb9\xff\xb7\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xb4\xff\xbe\xff\x8c\xff\x00\x00\xbf\xff\xbd\xff\x12\xff\x00\x00\xc1\xff\x00\x00\x65\xff\x00\x00\x4a\xff\x00\x00\x69\xff\x00\x00\x00\x00\x00\x00\x41\xff\x00\x00\x63\xff\x50\xff\x17\xff\x86\xff\x85\xff\x81\xff\x54\xff\x00\x00\x26\xff\x21\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x35\xff\x00\x00\x52\xff\x1b\xff\x00\x00\x31\xff\x00\x00\x00\x00\x2a\xff\x5b\xff\x00\x00\x00\x00\x27\xff\x23\xff\x6c\xff\x76\xff\x4c\xff\x00\x00\x72\xff\x00\x00\x8b\xff\x00\x00\x3c\xff\x8c\xff\x53\xff\x6d\xff\x29\xff\x71\xff\x5a\xff\x00\x00\x48\xff\x1c\xff\x19\xff\x44\xff\x36\xff\x00\x00\x49\xff\x42\xff\x43\xff\x22\xff\x00\x00\x00\x00\x00\x00\x16\xff\x00\x00\x4e\xff\x48\xff\x2f\xff\x1f\xff\x1d\xff\x68\xff\x67\xff\x12\xff\x9b\xff\xad\xff\x97\xff\xa6\xff\x91\xff\x00\x00\x00\x00\x99\xff\x00\x00\x95\xff\x8f\xff\xb5\xff\xb6\xff\x00\x00\x00\x00\x93\xff\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xd3\xff\x00\x00\xce\xff\xe3\xff\xe4\xff\xc8\xff\xdd\xff\xde\xff\xcb\xff\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\xd8\xff\x00\x00\x00\x00\xe0\xff\xd7\xff\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\xc9\xff\x00\x00\xcd\xff\xcc\xff\x00\x00\x9c\xff\x00\x00\xc5\xff\xc4\xff\x89\xff\x92\xff\x87\xff\x9f\xff\x12\xff\x8e\xff\xa3\xff\x00\x00\x94\xff\xdc\xff\x98\xff\xaa\xff\x9e\xff\x90\xff\xa8\xff\xa5\xff\xa9\xff\x00\x00\x96\xff\x13\xff\x11\xff\x2c\xff\x9a\xff\x00\x00\x40\xff\x64\xff\x17\xff\x00\x00\x84\xff\x55\xff\x20\xff\x3e\xff\x34\xff\x66\xff\x18\xff\x15\xff\xac\xff\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\x8f\xff\xa0\xff\x00\x00\xc3\xff\xe2\xff\x00\x00\xd8\xff\x00\x00\xd4\xff\xc7\xff\x00\x00\xd8\xff\x00\x00\xef\xff\xd6\xff\xc6\xff\xe1\xff\xdf\xff\x00\x00\xd2\xff\xc2\xff\x8d\xff\x00\x00\x00\x00\xa7\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xa2\xff\x00\x00\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\xd1\xff\x14\xff\xab\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"#
+happyDefActions = HappyA# "\xf5\xff\xd0\xff\x0d\xff\x00\x00\x00\x00\xfb\xff\x80\xff\x7b\xff\x7c\xff\x7a\xff\x6f\xff\x6b\xff\x61\xff\x5c\xff\x4e\xff\x4f\xff\x00\x00\x5a\xff\x7d\xff\x00\x00\x83\xff\x2a\xff\x00\x00\x00\x00\x79\xff\x23\xff\x2a\xff\x00\x00\x35\xff\x33\xff\x32\xff\x34\xff\x36\xff\x00\x00\x77\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\x00\x00\xd0\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x0a\xff\x0b\xff\x00\x00\x0c\xff\x00\x00\x00\x00\x00\x00\x0e\xff\x4d\xff\x80\xff\x00\x00\x83\xff\x00\x00\x00\x00\x4d\xff\x00\x00\x8c\xff\x00\x00\x82\xff\x00\x00\x83\xff\x00\x00\x19\xff\x00\x00\x60\xff\x2c\xff\x29\xff\x00\x00\x2a\xff\x2b\xff\x25\xff\x22\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x78\xff\x80\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\x62\xff\x83\xff\x38\xff\x6e\xff\x00\x00\x83\xff\x55\xff\x5e\xff\x5f\xff\x5d\xff\x59\xff\x5c\xff\x4e\xff\x5b\xff\x56\xff\x74\xff\x7f\xff\x00\x00\x00\x00\x80\xff\x00\x00\x70\xff\x75\xff\x4a\xff\x00\x00\x00\x00\x7e\xff\x73\xff\x23\xff\x00\x00\x00\x00\x00\x00\x2a\xff\x00\x00\x47\xff\x44\xff\x42\xff\x43\xff\x2e\xff\x00\x00\x18\xff\x00\x00\x31\xff\x00\x00\x20\xff\x48\xff\x50\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x4c\xff\x00\x00\x00\x00\x8c\xff\x3c\xff\x3a\xff\x00\x00\x1c\xff\x00\x00\x00\x00\x4d\xff\x00\x00\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\xff\x08\xff\x07\xff\x05\xff\x06\xff\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xd9\xff\x00\x00\x00\x00\xc8\xff\xf1\xff\xd5\xff\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x04\xff\x8a\xff\x00\x00\xaf\xff\x88\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xb3\xff\x88\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xa1\xff\x00\x00\xbb\xff\x00\x00\xba\xff\xb2\xff\xb8\xff\xb9\xff\xb7\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xb4\xff\xbe\xff\x8c\xff\x00\x00\xbf\xff\xbd\xff\x10\xff\x00\x00\xc1\xff\x00\x00\x65\xff\x00\x00\x47\xff\x00\x00\x69\xff\x00\x00\x00\x00\x00\x00\x3e\xff\x00\x00\x63\xff\x4d\xff\x15\xff\x86\xff\x85\xff\x81\xff\x53\xff\x00\x00\x24\xff\x1f\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x30\xff\x00\x00\x51\xff\x19\xff\x00\x00\x2d\xff\x00\x00\x00\x00\x28\xff\x58\xff\x00\x00\x00\x00\x25\xff\x21\xff\x6c\xff\x76\xff\x49\xff\x00\x00\x72\xff\x00\x00\x8b\xff\x00\x00\x37\xff\x8c\xff\x52\xff\x6d\xff\x27\xff\x71\xff\x57\xff\x00\x00\x45\xff\x1a\xff\x17\xff\x41\xff\x31\xff\x00\x00\x46\xff\x3f\xff\x40\xff\x20\xff\x00\x00\x00\x00\x00\x00\x14\xff\x00\x00\x4b\xff\x45\xff\x1d\xff\x3b\xff\x1b\xff\x68\xff\x67\xff\x10\xff\x9b\xff\xad\xff\x97\xff\xa6\xff\x91\xff\x00\x00\x00\x00\x99\xff\x00\x00\x95\xff\x8f\xff\xb5\xff\xb6\xff\x00\x00\x00\x00\x93\xff\xae\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xd3\xff\x00\x00\xce\xff\xe3\xff\xe4\xff\xc8\xff\xdd\xff\xde\xff\xcb\xff\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\xd8\xff\x00\x00\x00\x00\xe0\xff\xd7\xff\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\xc9\xff\x00\x00\xcd\xff\xcc\xff\x00\x00\x9c\xff\x00\x00\xc5\xff\xc4\xff\x89\xff\x92\xff\x87\xff\x9f\xff\x10\xff\x8e\xff\xa3\xff\x00\x00\x94\xff\xdc\xff\x98\xff\xaa\xff\x9e\xff\x90\xff\xa8\xff\xa5\xff\xa9\xff\x00\x00\x96\xff\x11\xff\x0f\xff\x2a\xff\x9a\xff\x00\x00\x3d\xff\x64\xff\x15\xff\x00\x00\x84\xff\x54\xff\x1e\xff\x39\xff\x2f\xff\x66\xff\x16\xff\x13\xff\xac\xff\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\x8f\xff\xa0\xff\x00\x00\xc3\xff\xe2\xff\x00\x00\xd8\xff\x00\x00\xd4\xff\xc7\xff\x00\x00\xd8\xff\x00\x00\xef\xff\xd6\xff\xc6\xff\xe1\xff\xdf\xff\x00\x00\xd2\xff\xc2\xff\x8d\xff\x00\x00\x00\x00\xa7\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xa2\xff\x00\x00\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\xd1\xff\x12\xff\xab\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"#
happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x00\x00\x03\x00\x02\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x0b\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x03\x00\x05\x00\x05\x00\x00\x00\x00\x00\x4f\x00\x50\x00\x00\x00\x0b\x00\x07\x00\x05\x00\x05\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x17\x00\x0c\x00\x14\x00\x0b\x00\x1b\x00\x16\x00\x17\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x09\x00\x25\x00\x01\x00\x4c\x00\x28\x00\x30\x00\x4c\x00\x2b\x00\x4e\x00\x2b\x00\x2e\x00\x1c\x00\x4c\x00\x3a\x00\x2b\x00\x33\x00\x3b\x00\x37\x00\x4c\x00\x51\x00\x52\x00\x26\x00\x51\x00\x52\x00\x3e\x00\x51\x00\x51\x00\x3f\x00\x2b\x00\x51\x00\x51\x00\x43\x00\x44\x00\x52\x00\x4d\x00\x49\x00\x4a\x00\x49\x00\x0b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x0b\x00\x05\x00\x4c\x00\x4c\x00\x40\x00\x41\x00\x0b\x00\x0b\x00\x03\x00\x4c\x00\x05\x00\x42\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x47\x00\x19\x00\x1c\x00\x17\x00\x03\x00\x4c\x00\x05\x00\x12\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x00\x00\x12\x00\x28\x00\x00\x00\x02\x00\x2b\x00\x1d\x00\x00\x00\x2e\x00\x07\x00\x1b\x00\x07\x00\x03\x00\x33\x00\x05\x00\x08\x00\x09\x00\x00\x00\x00\x00\x0b\x00\x11\x00\x00\x00\x13\x00\x0e\x00\x14\x00\x3f\x00\x0b\x00\x12\x00\x0d\x00\x43\x00\x44\x00\x4c\x00\x4c\x00\x00\x00\x00\x00\x49\x00\x1b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x1a\x00\x05\x00\x26\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x2c\x00\x4c\x00\x24\x00\x4e\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x17\x00\x40\x00\x41\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x2c\x00\x2d\x00\x28\x00\x40\x00\x41\x00\x2b\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x19\x00\x4b\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x17\x00\x05\x00\x04\x00\x0f\x00\x1b\x00\x1a\x00\x3f\x00\x0b\x00\x0a\x00\x00\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x24\x00\x49\x00\x08\x00\x09\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x37\x00\x38\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x02\x00\x25\x00\x00\x00\x00\x00\x28\x00\x44\x00\x00\x00\x46\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x37\x00\x38\x00\x03\x00\x4c\x00\x05\x00\x11\x00\x3d\x00\x13\x00\x3f\x00\x3f\x00\x0b\x00\x0c\x00\x04\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x49\x00\x00\x00\x4e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x2b\x00\x2b\x00\x22\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x29\x00\x05\x00\x00\x00\x28\x00\x08\x00\x39\x00\x39\x00\x0b\x00\x3c\x00\x3c\x00\x37\x00\x38\x00\x10\x00\x11\x00\x12\x00\x37\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x3e\x00\x44\x00\x2e\x00\x46\x00\x2a\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x2d\x00\x49\x00\x4a\x00\x30\x00\x28\x00\x3b\x00\x0f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1f\x00\x05\x00\x22\x00\x09\x00\x25\x00\x00\x00\x00\x00\x0b\x00\x27\x00\x29\x00\x2b\x00\x00\x00\x10\x00\x11\x00\x12\x00\x15\x00\x16\x00\x00\x00\x18\x00\x19\x00\x1a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x15\x00\x05\x00\x0e\x00\x28\x00\x10\x00\x2b\x00\x00\x00\x0b\x00\x2e\x00\x2f\x00\x16\x00\x17\x00\x10\x00\x11\x00\x12\x00\x00\x00\x2b\x00\x37\x00\x38\x00\x2e\x00\x2f\x00\x00\x00\x4e\x00\x3d\x00\x07\x00\x3f\x00\x00\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x47\x00\x48\x00\x4a\x00\x28\x00\x14\x00\x20\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2a\x00\x03\x00\x18\x00\x05\x00\x1f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x00\x00\x00\x00\x27\x00\x23\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x2c\x00\x2d\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x02\x00\x05\x00\x00\x00\x28\x00\x06\x00\x1d\x00\x1e\x00\x0b\x00\x21\x00\x00\x00\x03\x00\x02\x00\x10\x00\x11\x00\x12\x00\x28\x00\x37\x00\x38\x00\x0b\x00\x2c\x00\x2d\x00\x13\x00\x3d\x00\x00\x00\x3f\x00\x37\x00\x38\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x47\x00\x48\x00\x05\x00\x06\x00\x28\x00\x37\x00\x38\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x4e\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x04\x00\x10\x00\x11\x00\x12\x00\x00\x00\x2b\x00\x0a\x00\x00\x00\x2e\x00\x2f\x00\x0e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x16\x00\x17\x00\x13\x00\x00\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x03\x00\x04\x00\x05\x00\x30\x00\x31\x00\x32\x00\x3b\x00\x0a\x00\x0e\x00\x12\x00\x10\x00\x0e\x00\x0f\x00\x42\x00\x3b\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x18\x00\x4b\x00\x4c\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x11\x00\x00\x00\x13\x00\x00\x00\x37\x00\x38\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x3d\x00\x00\x00\x3f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x37\x00\x38\x00\x47\x00\x48\x00\x37\x00\x01\x00\x3d\x00\x30\x00\x3f\x00\x00\x00\x11\x00\x3e\x00\x13\x00\x36\x00\x30\x00\x31\x00\x47\x00\x48\x00\x3b\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x2b\x00\x00\x00\x19\x00\x2e\x00\x2f\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2d\x00\x42\x00\x43\x00\x30\x00\x45\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0b\x00\x30\x00\x0d\x00\x32\x00\x04\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x02\x00\x2c\x00\x00\x00\x42\x00\x43\x00\x07\x00\x45\x00\x00\x00\x00\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x52\x00\x3c\x00\x3d\x00\x3e\x00\x00\x00\x40\x00\x30\x00\x31\x00\x32\x00\x00\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x3b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0d\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x00\x00\x3a\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x46\x00\x06\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x00\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x00\x00\x05\x00\x4c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x3b\x00\x06\x00\x06\x00\x04\x00\x4d\x00\x40\x00\x41\x00\x42\x00\x1d\x00\x1e\x00\x2b\x00\x01\x00\x06\x00\x2e\x00\x2f\x00\x4c\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x37\x00\x30\x00\x31\x00\x32\x00\x40\x00\x41\x00\x42\x00\x3e\x00\x0c\x00\x07\x00\x03\x00\x02\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0f\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0e\x00\x2e\x00\x0f\x00\x02\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4b\x00\x42\x00\x2e\x00\x0c\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x42\x00\x4c\x00\x37\x00\x4c\x00\x02\x00\x08\x00\x42\x00\x0b\x00\x4c\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3b\x00\x42\x00\x03\x00\x4c\x00\x02\x00\x0c\x00\x37\x00\x42\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x3b\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x4c\x00\x01\x00\x1d\x00\x4c\x00\x06\x00\x04\x00\x04\x00\x04\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x13\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x01\x00\x42\x00\x02\x00\x30\x00\x31\x00\x13\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2b\x00\x42\x00\x3b\x00\x2e\x00\x2f\x00\x06\x00\x0a\x00\x2e\x00\x02\x00\x4c\x00\x0c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x3b\x00\x01\x00\x4c\x00\x01\x00\x01\x00\x07\x00\x02\x00\x42\x00\x01\x00\x00\x00\x02\x00\x37\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x02\x00\x02\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x3b\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x01\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2b\x00\x3b\x00\x4c\x00\x2e\x00\x2f\x00\x4c\x00\x0a\x00\x00\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x09\x00\x3b\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x24\x00\x03\x00\x30\x00\x18\x00\x38\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x38\x00\x42\x00\x3b\x00\x23\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x07\x00\x4c\x00\x04\x00\x2c\x00\x2d\x00\x04\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x18\x00\x3b\x00\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x0f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x3b\x00\x01\x00\x01\x00\x4c\x00\x4c\x00\x08\x00\x04\x00\x42\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0e\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x03\x00\x42\x00\x18\x00\x30\x00\x0c\x00\x06\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x42\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x4d\x00\x4c\x00\x0e\x00\x03\x00\x07\x00\x04\x00\x42\x00\x4c\x00\x06\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x3b\x00\x0a\x00\x13\x00\x00\x00\x07\x00\x00\x00\x08\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x3b\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x42\x00\x18\x00\x01\x00\x18\x00\x4c\x00\x2e\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x23\x00\x42\x00\x23\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x4c\x00\x01\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x42\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x3b\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x42\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x52\x00\x3b\x00\x4c\x00\x52\x00\x03\x00\x03\x00\x03\x00\x03\x00\x42\x00\x4c\x00\x52\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x08\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x0e\x00\x42\x00\x14\x00\x30\x00\x4c\x00\x2f\x00\x3b\x00\xff\xff\x00\x00\x36\x00\xff\xff\x00\x00\xff\xff\x42\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x3b\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\xff\xff\xff\xff\x21\x00\xff\xff\x18\x00\x3b\x00\x28\x00\x18\x00\x00\x00\x28\x00\x2c\x00\x2d\x00\x42\x00\x2c\x00\x2d\x00\x23\x00\x00\x00\xff\xff\x23\x00\x21\x00\x00\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x28\x00\x2c\x00\x2d\x00\x00\x00\x2c\x00\x2d\x00\x18\x00\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\x23\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x2c\x00\x2d\x00\xff\xff\x23\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x1b\x00\x2c\x00\x2d\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x25\x00\x24\x00\xff\xff\xff\xff\x27\x00\x26\x00\x2b\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x41\x00\x40\x00\xff\xff\xff\xff\xff\xff\x46\x00\x45\x00\x46\x00\xff\xff\x48\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\x00\x00\x05\x00\x02\x00\x00\x00\x09\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1c\x00\x19\x00\x03\x00\x03\x00\x00\x00\x03\x00\x0f\x00\x05\x00\x00\x00\x00\x00\x0b\x00\x2e\x00\x0b\x00\x0b\x00\x0c\x00\x05\x00\x05\x00\x1a\x00\x10\x00\x11\x00\x12\x00\x0e\x00\x00\x00\x00\x00\x3b\x00\x11\x00\x00\x00\x13\x00\x00\x00\x0c\x00\x02\x00\x0d\x00\x0e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x42\x00\x13\x00\x28\x00\x30\x00\x0b\x00\x47\x00\x0d\x00\x1d\x00\x4c\x00\x0b\x00\x4c\x00\x4c\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3e\x00\x02\x00\x41\x00\x42\x00\x52\x00\x53\x00\x07\x00\x52\x00\x53\x00\x0b\x00\x52\x00\x52\x00\x41\x00\x42\x00\x52\x00\x52\x00\x4e\x00\x52\x00\x03\x00\x4c\x00\x05\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x3d\x00\x4e\x00\x4c\x00\x4c\x00\x10\x00\x11\x00\x12\x00\x41\x00\x42\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\x19\x00\x03\x00\x1b\x00\x05\x00\x4c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4b\x00\x25\x00\x39\x00\x0b\x00\x28\x00\x12\x00\x4c\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x19\x00\x00\x00\x1b\x00\x1b\x00\x33\x00\x09\x00\x0c\x00\x0a\x00\x4a\x00\x4b\x00\x0b\x00\x0b\x00\x4c\x00\x03\x00\x06\x00\x05\x00\x3f\x00\x15\x00\x16\x00\x26\x00\x43\x00\x44\x00\x1a\x00\x0f\x00\x0e\x00\x2c\x00\x49\x00\x00\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x01\x00\x05\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x4c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x19\x00\x4c\x00\x12\x00\x20\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x2a\x00\x4a\x00\x28\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4c\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x00\x00\x19\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x39\x00\x02\x00\x00\x00\x43\x00\x44\x00\x00\x00\x07\x00\x40\x00\x2b\x00\x49\x00\x16\x00\x17\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x00\x00\x11\x00\x22\x00\x13\x00\x0f\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x29\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x25\x00\x39\x00\x3f\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x00\x00\x07\x00\x00\x00\x4a\x00\x4b\x00\x50\x00\x51\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x2c\x00\x2d\x00\x14\x00\x43\x00\x44\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x49\x00\x4f\x00\x07\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x48\x00\x49\x00\x22\x00\x2b\x00\x14\x00\x0b\x00\x2e\x00\x2f\x00\x00\x00\x29\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x00\x00\x05\x00\x06\x00\x1d\x00\x1e\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x25\x00\x39\x00\x3f\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x00\x00\x40\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x20\x00\x04\x00\x00\x00\x1a\x00\x03\x00\x2b\x00\x05\x00\x0a\x00\x2e\x00\x2f\x00\x2a\x00\x3f\x00\x0b\x00\x24\x00\x02\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1b\x00\x1c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x25\x00\x26\x00\x28\x00\x02\x00\x00\x00\x00\x00\x2b\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1c\x00\x39\x00\x3a\x00\x3b\x00\x2d\x00\x13\x00\x03\x00\x30\x00\x05\x00\x0f\x00\x26\x00\x08\x00\x2b\x00\x3f\x00\x0b\x00\x2e\x00\x2f\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x2d\x00\x49\x00\x1f\x00\x30\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x27\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0b\x00\x52\x00\x0d\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x15\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x13\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x28\x00\x16\x00\x17\x00\x30\x00\x31\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1a\x00\x0b\x00\x00\x00\x4f\x00\x1f\x00\x30\x00\x10\x00\x11\x00\x12\x00\x00\x00\x24\x00\x00\x00\x27\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x30\x00\x13\x00\x32\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x39\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x11\x00\x00\x00\x13\x00\x11\x00\x28\x00\x13\x00\x00\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x00\x00\x25\x00\x09\x00\x43\x00\x44\x00\x0b\x00\x46\x00\x2b\x00\x08\x00\x09\x00\x10\x00\x11\x00\x12\x00\x00\x00\x15\x00\x16\x00\x01\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0e\x00\x02\x00\x10\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x0d\x00\x19\x00\x00\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x21\x00\x00\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x28\x00\x00\x00\x08\x00\x09\x00\x2c\x00\x2d\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x18\x00\x00\x00\x28\x00\x0f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x00\x00\x2c\x00\x2d\x00\x06\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x46\x00\x05\x00\x4c\x00\x4d\x00\x06\x00\x0a\x00\x04\x00\x01\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x04\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x00\x00\x02\x00\x4c\x00\x0e\x00\x0f\x00\x04\x00\x4d\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x06\x00\x01\x00\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x06\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x00\x00\x07\x00\x2b\x00\x01\x00\x0a\x00\x2e\x00\x2f\x00\x4c\x00\x4c\x00\x4d\x00\x0c\x00\x39\x00\x07\x00\x4c\x00\x14\x00\x30\x00\x31\x00\x32\x00\x40\x00\x2b\x00\x03\x00\x0f\x00\x2e\x00\x2f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x04\x00\x3e\x00\x00\x00\x02\x00\x0e\x00\x39\x00\x3a\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x2b\x00\x00\x00\x2e\x00\x2e\x00\x2f\x00\x48\x00\x49\x00\x3e\x00\x0f\x00\x39\x00\x0f\x00\x02\x00\x43\x00\x44\x00\x4b\x00\x46\x00\x40\x00\x4c\x00\x04\x00\x26\x00\x21\x00\x28\x00\x29\x00\x2a\x00\x2e\x00\x2c\x00\x4c\x00\x28\x00\x0c\x00\x0a\x00\x4c\x00\x2c\x00\x2d\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x02\x00\x3a\x00\x0b\x00\x3c\x00\x3d\x00\x3e\x00\x2b\x00\x40\x00\x4c\x00\x2e\x00\x2f\x00\x03\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x02\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x0e\x00\x3a\x00\x10\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x16\x00\x17\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x08\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4c\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x04\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1d\x00\x4c\x00\x3e\x00\x04\x00\x04\x00\x41\x00\x42\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x04\x00\x13\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x4c\x00\x3e\x00\x39\x00\x3a\x00\x41\x00\x42\x00\x43\x00\x38\x00\x06\x00\x01\x00\x13\x00\x02\x00\x0f\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x0a\x00\x38\x00\x2e\x00\x02\x00\x4c\x00\x0c\x00\x04\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x3e\x00\x01\x00\x4c\x00\x01\x00\x07\x00\x43\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x3e\x00\x02\x00\x39\x00\x3a\x00\x3b\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x0a\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x01\x00\x4c\x00\x01\x00\x4c\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x09\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x04\x00\x39\x00\x24\x00\x03\x00\x43\x00\x07\x00\x0a\x00\x38\x00\x4c\x00\x38\x00\x0e\x00\x3e\x00\x04\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x04\x00\x01\x00\x10\x00\x04\x00\x43\x00\x01\x00\x01\x00\x4c\x00\x4c\x00\x01\x00\x04\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x04\x00\x3e\x00\x27\x00\x08\x00\x0e\x00\x03\x00\x43\x00\x4c\x00\x1a\x00\x0c\x00\x06\x00\x4c\x00\x31\x00\x32\x00\x4d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x41\x00\x3e\x00\x0e\x00\x03\x00\x07\x00\x46\x00\x43\x00\x04\x00\x06\x00\x13\x00\x0c\x00\x0a\x00\x07\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x08\x00\x0a\x00\x3e\x00\x2e\x00\x01\x00\x01\x00\x4c\x00\x43\x00\x0a\x00\x4c\x00\x4c\x00\x02\x00\x02\x00\x01\x00\x52\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x52\x00\x03\x00\x3e\x00\x03\x00\x03\x00\x03\x00\x4c\x00\x43\x00\x17\x00\x52\x00\x18\x00\x08\x00\x14\x00\x0e\x00\x4c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2f\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\x00\x00\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x21\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x28\x00\x36\x00\xff\xff\x1b\x00\x2c\x00\x2d\x00\xff\xff\x18\x00\x00\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x25\x00\x00\x00\xff\xff\x00\x00\xff\xff\x23\x00\x2b\x00\x00\x00\xff\xff\x00\x00\xff\xff\x3e\x00\x30\x00\x31\x00\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x18\x00\x3e\x00\x18\x00\xff\xff\xff\xff\x23\x00\x18\x00\xff\xff\x18\x00\x00\x00\xff\xff\x23\x00\x3e\x00\x23\x00\x2c\x00\x2d\x00\x00\x00\x23\x00\xff\xff\x23\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x21\x00\xff\xff\x2c\x00\x2d\x00\x2c\x00\x2d\x00\xff\xff\x28\x00\xff\xff\x18\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x46\x00\xff\xff\x48\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"#
happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x3e\x00\x53\x00\x3f\x00\x3e\x00\x62\x00\x3f\x00\x3e\x00\x3e\x00\x3f\x00\x3f\x00\x3e\x00\x3e\x00\x3f\x00\x3f\x00\x3e\x00\xe3\x00\x5b\x00\x75\x00\xd2\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x93\x00\x94\x00\x95\x00\x96\x00\x4e\x00\x13\x00\x6a\x01\x14\x00\x6c\x01\x4e\x00\x2b\x00\x2c\x00\xdc\x01\x15\x00\x2e\xff\x90\x01\x6a\x01\x2e\xff\x16\x00\x17\x00\x18\x00\x99\x01\xdd\x01\x4e\x00\x56\x00\x19\x00\xe0\x01\x73\x00\x04\x01\x5b\x00\x7f\x01\xd6\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xcb\xff\x20\x00\xce\x01\x06\x00\x21\x00\x9b\x01\x06\x00\x22\x00\x29\x00\xbc\x01\x66\x00\xfd\x00\x06\x00\x76\x00\x7b\x01\x23\x00\x10\x00\x97\x00\x06\x00\x40\x00\xdc\x00\x9a\x01\x40\x00\x41\x00\x98\x00\xc4\x00\xc5\x00\x24\x00\x30\x01\xc6\x00\xc8\x00\x25\x00\x26\x00\xff\xff\x9c\x01\x99\x00\x3c\x01\x27\x00\xdf\x01\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x13\x00\xe3\x00\x14\x00\x06\x00\x06\x00\x57\x00\x24\x01\x04\x01\x15\x00\x9c\x00\x06\x00\x9d\x00\xd8\x00\x16\x00\x17\x00\x18\x00\x60\x01\xd9\x00\xb2\x00\x78\x00\x19\x00\x9c\x00\x06\x00\x9d\x00\x9e\x00\x43\x00\x44\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x9f\x00\x20\x00\x56\x00\x9e\x00\x21\x00\x67\x01\x64\x01\x22\x00\x45\x00\xd3\x01\x66\x00\x65\x01\x9f\x00\x34\x00\x9c\x00\x23\x00\x9d\x00\xd4\x01\xde\x01\x56\x00\x00\x01\xe3\x00\xc0\x01\xc8\x01\x79\x01\x0e\x01\x2f\x00\x24\x00\x74\x01\x9e\x00\x75\x01\x25\x00\x26\x00\x06\x00\x06\x00\xca\x01\xdd\x00\x27\x00\x9f\x00\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x13\x00\x01\x01\x14\x00\xea\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x15\x00\xeb\x00\x06\x00\x9e\x01\x29\x00\x16\x00\x17\x00\x18\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x19\x00\x57\x00\x8f\x00\x06\x01\x94\x00\x95\x00\x96\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x01\x20\x00\xe7\x00\x8a\x01\x21\x00\x57\x00\x58\x00\x22\x00\x06\x00\x06\x00\x28\x00\x29\x00\x2a\x00\xb2\x00\x76\x01\x23\x00\x06\x01\x94\x00\x95\x00\x96\x00\x13\x00\x5a\x00\x4b\x00\x82\x00\xb0\x01\x5b\x00\x01\x01\x24\x00\x15\x00\x83\x00\xd3\x01\x25\x00\x26\x00\x16\x00\x17\x00\x18\x00\x02\x01\x27\x00\xd4\x01\xd5\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa9\x00\x16\x01\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x55\x01\x20\x00\x4e\x00\x1a\x01\x21\x00\x17\x01\x67\x01\xa6\x01\x83\x00\x06\x01\x94\x00\x95\x00\x96\x00\xf8\x00\x93\x00\x94\x00\x95\x00\x96\x00\xa9\x00\xaa\x00\x75\x00\x06\x00\x9e\x01\xc3\x01\xab\x00\x79\x01\x4b\x01\x24\x00\x15\x00\xad\x01\x41\x01\x25\x00\x26\x00\x4c\x00\x17\x00\x18\x00\x83\x00\x27\x00\x8c\x01\xb3\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x01\x1b\x01\xf9\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x13\x00\x95\x01\x4b\x00\x67\x01\x21\x00\x28\xff\x1c\x01\x1c\x01\x15\x00\xa8\x01\x1d\x01\xa9\x00\x16\x01\x16\x00\x17\x00\x18\x00\x97\x00\x8d\x01\x4e\x00\xf8\x00\xec\x00\xb7\x01\xe5\x01\x98\x00\x17\x01\xe4\x01\x18\x01\xc7\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x31\x00\x99\x00\x9a\x00\x32\x00\x21\x00\xe5\x01\xb9\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xf5\x00\xa8\x00\x94\x00\x95\x00\x96\x00\x75\x00\xed\x00\x9e\x01\xf9\x00\x6a\x00\x92\x01\xbe\x01\x4e\x00\x15\x00\x90\x01\xfa\x00\xf7\x00\x7e\x01\x4c\x00\x17\x00\x18\x00\x6b\x00\x6c\x00\x94\x01\x6d\x00\x6e\x00\x6f\x00\xd2\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x75\x00\x80\x01\x4b\x00\xd3\x00\x21\x00\xd4\x00\x4f\x00\x8c\x01\x15\x00\x50\x00\x67\x00\xd5\x00\xd6\x00\x4c\x00\x17\x00\x18\x00\x3a\x01\x4f\x00\xa9\x00\xaa\x00\x50\x00\x13\x01\xec\x00\x9f\x01\xab\x00\x2e\x00\xac\x00\xdd\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4a\x01\xad\x00\xae\x00\x70\x00\x21\x00\x2f\x00\x8d\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x01\x94\x00\x95\x00\x96\x00\x8e\x01\x13\x00\xde\x00\x4b\x00\xed\x00\x06\x01\x94\x00\x95\x00\x96\x00\x15\x00\xdd\x00\x96\x01\xee\x00\x84\x01\x16\x00\x17\x00\x18\x00\x06\x01\x94\x00\x95\x00\x96\x00\x50\x01\xe0\x00\xe1\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x75\x00\xc5\x01\x4b\x00\x67\x01\x21\x00\xc6\x01\x97\x01\xcb\x01\x15\x00\xe5\x00\x5f\x00\xb0\x00\x60\x00\x4c\x00\x17\x00\x18\x00\x89\x01\xa9\x00\xaa\x00\xb1\x00\xe7\x00\xe8\x00\xe6\x01\xab\x00\x4e\x00\xac\x00\xa9\x00\xa7\x01\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xad\x00\x39\x01\x32\x00\x33\x00\x21\x00\xa9\x00\x19\x01\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4a\x00\x52\x01\x4b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x15\x00\x62\x01\x6a\x01\x6c\x01\x82\x00\x4c\x00\x17\x00\x18\x00\x67\x01\x4f\x00\x83\x00\x6b\x01\x50\x00\x31\x01\x84\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x6d\x01\xd6\x00\xb6\x01\x6e\x01\x21\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x46\x01\x9c\x00\x82\x00\x9d\x00\x0b\x00\x0c\x00\x7c\x00\x10\x00\x83\x00\x8b\x00\x71\x01\x8c\x00\x0e\x01\x4a\xff\x11\x00\x10\x00\x9e\x00\x06\x01\x94\x00\x95\x00\x96\x00\xe4\x00\x4a\xff\x47\x01\xab\x01\x9f\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x06\x01\x94\x00\x95\x00\x96\x00\x93\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x46\x01\x67\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x67\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x68\x01\xef\x00\x2a\x01\x47\x01\x48\x01\x78\x01\x33\x01\x79\x01\x2f\x01\xa9\x00\xaa\x00\x06\x00\x28\x00\x29\x00\x2a\x00\xab\x00\x67\x01\xac\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xa9\x00\xaa\x00\xad\x00\x4d\x01\x97\x00\x32\x01\xab\x00\x88\x00\xac\x00\x84\x00\x7c\x01\xa0\x01\x79\x01\x2c\x01\x0b\x00\x70\x00\xad\x00\x07\x01\x10\x00\xc3\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x28\x01\x10\x00\x4f\x00\xa7\x00\xb2\x00\x50\x00\x67\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x31\x00\x11\x00\x5c\x00\x32\x00\x29\x01\xc9\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x5b\x00\x74\x01\x82\x01\x75\x01\x83\x01\xca\x01\xb4\x00\x10\x00\xb5\x00\xb6\x00\xb7\x00\xa3\x00\xb8\x00\xca\x00\x11\x00\x5c\x00\xa4\x00\x5d\x00\xcb\x00\xcc\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xdd\x00\xcd\x00\xbd\x00\xf6\xff\xbe\x00\xbf\x00\xc0\x00\xce\x00\xc1\x00\x0b\x00\x0c\x00\x7d\x00\x35\x00\xc2\x00\xc3\x00\xb4\x00\xc4\x00\xb5\x00\xb6\x00\xb7\x00\x10\x00\xb8\x00\x62\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x36\x00\x45\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xe5\x00\x55\x00\xbd\x00\x5e\x00\xbe\x00\xbf\x00\xc0\x00\x5c\x01\xc1\x00\xe3\x01\xe8\x01\xe7\x00\xe8\x00\xc2\x00\xc3\x00\x4e\x00\xc4\x00\x62\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x93\x00\x94\x00\x95\x00\x96\x00\xe9\x01\x96\x01\xe2\x01\x06\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd7\x01\xd8\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd9\x01\x10\x00\xda\x01\xdb\x01\xdc\x01\x28\x00\x57\x00\xad\x01\x11\x00\x97\x01\x98\x01\x4f\x00\xd1\x01\xd2\x01\x50\x00\x9f\x00\x06\x00\xc0\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x97\x00\x0b\x00\x0c\x00\x7e\x00\x57\x00\x64\x00\x11\x00\x0c\x01\xc2\x01\xcd\x01\xce\x01\x55\x01\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\x49\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xaf\x01\x11\x00\x93\x00\x94\x00\x95\x00\x96\x00\xb0\x01\xb2\x01\xb3\x01\xb5\x01\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\x05\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb9\x01\x11\x00\xbb\x01\xbc\x01\xbe\x01\x93\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\xa6\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xcf\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x11\x00\x06\x00\x97\x00\x06\x00\x78\x01\x84\x01\x11\x00\x7b\x01\x06\x00\x65\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x00\xb1\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xc6\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x10\x00\x11\x00\x7e\x01\x06\x00\x86\x01\x89\x01\x97\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0c\x01\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xaa\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x92\x01\x10\x00\xa2\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x06\x00\xa3\x01\xa4\x01\x06\x00\x37\x01\xaa\x01\x35\x01\x36\x01\x4e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xb5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x3e\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x86\x01\x11\x00\x38\x01\x93\x00\x94\x00\x95\x00\x96\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x87\x01\x3f\x01\x11\x00\x40\x01\x0b\x00\x70\x00\x43\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x00\x11\x00\x10\x00\x50\x00\x51\x00\x42\x01\x44\x01\x45\x01\x46\x01\x06\x00\x50\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x8b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x01\x10\x00\x52\x01\x06\x00\x54\x01\x56\x01\x58\x01\x57\x01\x11\x00\x59\x01\x66\x00\x5a\x01\x97\x00\x5b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x21\x01\x5c\x01\x5f\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x93\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x60\x01\x10\x00\x61\x01\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x62\x01\x67\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa4\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4f\x00\x10\x00\x06\x00\x50\x00\x67\x00\x06\x00\x70\x01\xdd\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x71\x01\x10\x00\x73\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x38\x01\x11\x00\x77\x01\xd2\x00\x73\x00\xde\x00\xda\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xdb\x00\x11\x00\x10\x00\xdf\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x3b\x01\xdc\x00\x06\x00\x05\x01\xe0\x00\xe1\x00\x09\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0a\x01\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4c\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x01\x10\x00\x8c\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x0c\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x11\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0f\x01\x10\x00\x10\x01\x11\x01\x06\x00\x06\x00\x21\x01\x16\x01\x11\x00\x1f\x01\x20\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x12\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x23\x01\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x14\x01\x24\x01\x11\x00\x27\x01\x48\x00\x2c\x01\x2f\x01\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x11\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x25\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\x28\x00\x06\x00\x72\x00\x79\x00\x86\x00\x81\x00\x11\x00\x06\x00\x87\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x27\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x88\x00\x10\x00\x8e\x00\x8d\x00\xdd\x00\x8f\x00\xdd\x00\x91\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x2d\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x92\x00\x10\x00\x93\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x79\x00\x11\x00\xde\x00\xa2\x00\xde\x00\x06\x00\xa1\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe3\x00\x11\x00\xeb\x00\x83\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\xe0\x00\xe1\x00\xe0\x00\xe1\x00\x06\x00\xc8\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd0\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7b\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x10\x00\xd1\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x3e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x10\x00\x06\x00\xff\xff\x47\x00\x4d\x00\x4e\x00\x54\x00\x11\x00\x06\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xa4\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x69\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x00\x72\x00\x11\x00\x73\x00\x88\x00\x06\x00\x2e\x00\x10\x00\x00\x00\xdd\x00\x89\x00\x00\x00\xdd\x00\x00\x00\x11\x00\x10\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x54\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\xdd\x00\x10\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xe5\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xde\x00\x10\x00\x5d\x01\xde\x00\xdd\x00\xe6\x00\xe7\x00\xe8\x00\x11\x00\xe7\x00\xe8\x00\xf0\x00\xdd\x00\x00\x00\xf1\x00\xe5\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe1\x00\xf3\x00\xe0\x00\xe1\x00\xfc\x00\xe7\x00\xe8\x00\xde\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\xf2\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\xe0\x00\xe1\x00\x00\x00\xfb\x00\xf5\x00\xfd\x00\x00\x00\x00\x00\xe0\x00\xe1\x00\x00\x00\xf5\x00\xe0\x00\xe1\x00\xfe\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\xf6\x00\x38\x00\x00\x00\x00\x00\x39\x00\xb4\x00\xf7\x00\xb5\x00\xb6\x00\xb7\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\xbd\x00\x00\x00\xbe\x00\xbf\x00\xc0\x00\x3c\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x3d\x00\xc2\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\x00\x00\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\x41\x00\x70\x01\x42\x00\x41\x00\xcb\xff\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x5a\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x7c\x00\xb8\x00\xb6\x00\x56\x00\x5a\x00\x79\x00\x11\x01\xa4\x01\x6d\x01\x9c\x01\xb7\x00\xea\x01\xe5\x01\x17\x00\xb3\x01\x96\x01\x70\x01\x12\x01\x4f\x00\x19\x00\x1a\x00\x76\x00\x6d\x01\x79\x00\xeb\x01\xc6\x01\x5a\x00\x7f\x01\x63\x00\x66\x00\x64\x00\x46\x00\x47\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x9d\x01\xd1\x01\xde\x00\xeb\x01\x23\x00\xa1\x01\x7a\x01\xdf\x00\x7b\x01\x48\x00\x06\x00\xe9\x00\x06\x00\x06\x00\x5f\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x12\x00\x6a\x01\x5b\x00\x2a\x01\x43\x00\xe2\x00\x6b\x01\x43\x00\x44\x00\x0a\x01\xca\x00\xcb\x00\x5b\x00\x95\x00\xcc\x00\xce\x00\xa2\x01\xff\xff\x15\x00\x06\x00\x16\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x17\x00\x7a\x00\x2c\x00\x06\x00\x06\x00\x18\x00\x19\x00\x1a\x00\x5b\x00\x5c\x00\x06\x00\x06\x00\x2c\x00\x2c\x00\x1b\x00\xa2\x00\x5f\x00\xa3\x00\x06\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x7c\x01\x22\x00\x9d\x00\xe9\x00\x23\x00\xa4\x00\x06\x00\x24\x00\xe2\x01\x9e\x00\x6a\x00\x5e\x00\x51\x00\x5f\x00\xa5\x00\x26\x00\x70\x00\xe6\x01\xe3\x01\x9f\x00\x42\x01\xe9\x00\x0a\x01\x06\x00\xa2\x00\x48\x01\xa3\x00\x27\x00\x71\x00\x72\x00\xf0\x00\x28\x00\x29\x00\x73\x00\x11\x01\x14\x01\xf1\x00\x2a\x00\x92\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xd4\x01\x16\x00\xa5\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x17\x00\xa2\x00\xc2\x01\xa3\x00\xd8\x01\x18\x00\x19\x00\x1a\x00\x66\x01\x06\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x1b\x00\x06\x00\xa4\x00\x93\x01\x51\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\xcd\x01\x74\x00\x23\x00\x51\x00\xce\x01\x24\x00\x06\x00\x06\x00\x25\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\x72\x01\xb8\x00\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\x9d\x00\xaa\x00\xfe\x00\x28\x00\x29\x00\xd0\x01\xab\x00\xa6\x01\x81\x01\x2a\x00\x85\x01\xdc\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x6d\x01\x16\x00\x36\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x18\x00\x19\x00\x1a\x00\x21\x01\xe3\x00\xc9\x01\xff\x00\x7f\x01\xb6\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\x9b\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x01\x22\x00\x9d\x00\xae\x01\x23\x00\xb3\x00\x3f\x01\x24\x00\x51\x00\x9e\x00\x6a\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\xfe\x00\x37\x00\x20\x01\x9f\x00\xa0\x00\x2e\x00\x2f\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\xed\x00\x90\x01\x32\x00\x28\x00\x29\x00\xb0\x00\xb1\x00\xb2\x00\x9c\x01\x2a\x00\xb9\x01\x31\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xbd\x01\x16\x00\xb3\x00\x53\x01\xff\x00\x52\x00\x32\x00\x17\x00\x53\x00\x19\x01\x51\x00\x00\x01\x18\x00\x19\x00\x1a\x00\x21\x01\x92\x01\x35\x00\x36\x00\x9d\x01\x9e\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\x06\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x01\x22\x00\x9d\x00\x23\x01\x23\x00\xb3\x00\x0d\x01\x24\x00\xc4\x01\x12\x01\x25\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\x93\x01\x88\x00\x02\x01\x07\x01\x15\x00\x52\x00\x4e\x00\x89\x00\x53\x00\x37\x01\x94\x01\x27\x00\x17\x00\xa4\x01\x5b\x01\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x39\x01\x2a\x00\x89\x00\x9f\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xfb\x00\x03\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x6d\x01\x22\x00\x04\x01\x05\x01\x23\x00\xcb\x01\x84\x01\xf2\x00\xfd\x00\xcc\x01\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x03\x01\xb0\x00\xb1\x00\xad\x01\x34\x00\xec\x01\x15\x00\x35\x00\x4e\x00\xbf\x01\xa0\x01\x26\xff\x52\x00\x27\x00\x17\x00\x53\x00\x6b\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x34\x00\x2a\x00\xf3\x00\x35\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x96\x01\xa4\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x7a\x01\xf6\xff\x7b\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x6d\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x1c\x01\x79\x00\x86\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x1d\x01\xbc\x01\xac\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x72\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x9a\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xf2\x00\x06\x01\xa5\x01\x40\x01\x23\x00\x73\x01\xdc\x00\x0b\x00\x0c\x00\x7e\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x50\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x12\x00\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x07\x01\x17\x00\x56\x01\x58\x01\xf3\x00\x77\x00\x18\x00\x19\x00\x1a\x00\x6d\x01\x08\x01\x68\x01\xf4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x88\x01\x6e\x01\x89\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x70\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x1c\x01\x15\x00\x71\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x1d\x01\x9d\x00\x1e\x01\x23\x00\x18\x00\x19\x00\x1a\x00\x6d\x01\x6b\x01\x74\x01\x6d\x01\x51\x00\x77\x01\xea\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x7e\x01\xf5\x00\x7f\x01\x82\x01\x23\x00\x7f\x01\x30\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2e\x01\x11\x00\xfb\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\xd9\x01\x98\x01\x70\x00\x13\x00\x60\x00\x17\x00\x2f\x01\xfd\x00\xda\x01\xe4\x01\x4f\x00\x19\x00\x1a\x00\x35\x01\x71\x00\x72\x00\x38\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x4d\x00\xe3\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x91\x00\xa5\x00\x92\x00\x23\x00\x4f\x00\x19\x00\x1a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xae\x00\x39\x00\xb8\x00\xcf\x00\x15\x00\xd0\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xeb\x00\xd9\x01\xe3\x00\x23\x00\x18\x00\x19\x00\x1a\x00\x8f\x01\xd1\x00\xda\x01\xdb\x01\xed\x00\xee\x00\xd2\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd3\x00\xd4\x00\xe4\x00\x38\x00\x23\x00\x48\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4c\x01\x11\x00\x8a\x01\x59\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x12\x00\x62\x00\xe6\x00\xe7\x00\xee\x01\x13\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x47\x01\xe9\x01\xe8\x01\x4d\x01\xb1\x01\xef\x01\x89\x00\xdd\x01\xde\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xa2\x00\x88\x00\xa3\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x89\x00\x51\x00\xdf\x01\x06\x00\x14\x01\x47\xff\xe2\x01\x2b\x00\xa4\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe0\x01\xd7\x01\x47\xff\xa5\x00\xaf\x00\x9a\x00\x9b\x00\x9c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4c\x01\x11\x00\xe1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd8\x01\x12\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x13\x00\x51\x00\x2c\xff\x52\x00\xc6\x01\x2c\xff\x53\x00\xa6\x00\x06\x00\x4d\x01\x4e\x01\xc8\x01\x9d\x00\xd3\x01\x06\x00\x77\x00\x0b\x00\x0c\x00\x7f\x00\x12\x01\x52\x00\xd4\x01\x11\x01\x53\x00\x6b\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\xc9\x01\x12\x00\xe3\x00\x5b\x01\xb6\x01\xb0\x00\xb1\x00\xb2\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x5f\x00\x11\x00\x52\x00\x6a\x00\xb8\x01\x53\x00\x54\x00\xb3\x00\xb4\x00\x12\x00\xb5\x01\x9d\x00\xb9\x01\xbb\x01\x13\x00\x60\x00\xbf\x01\x61\x00\x27\x01\x06\x00\xd0\x01\xba\x00\xeb\x00\xbb\x00\xbc\x00\xbd\x00\xc1\x01\xbe\x00\x06\x00\x62\x01\xc2\x01\xc4\x01\x06\x00\xed\x00\xee\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xe3\x00\x7e\x01\xc3\x00\x81\x01\xc4\x00\xc5\x00\xc6\x00\x52\x00\xc7\x00\x06\x00\x53\x00\x6b\x00\x84\x01\xc8\x00\xc9\x00\xba\x00\xca\x00\xbb\x00\xbc\x00\xbd\x00\xd8\x00\xbe\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x8c\x01\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xeb\x00\xd9\x00\xc3\x00\xda\x00\xc4\x00\xc5\x00\xc6\x00\x63\x01\xc7\x00\xdb\x00\xdc\x00\xed\x00\xee\x00\xc8\x00\xc9\x00\x8a\x01\xca\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8f\x01\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x06\x00\x98\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\xa8\x01\xa9\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xaa\x01\x06\x00\x12\x00\xb0\x01\x3b\x01\x5b\x00\xb3\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3c\x01\x44\x01\x3e\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x06\x00\x12\x00\xb0\x00\x52\x01\x5b\x00\x68\x00\x13\x00\x32\x01\x3d\x01\x45\x01\x49\x01\x46\x01\x11\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x4f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x12\x00\x0c\x01\x9a\x00\x9b\x00\x9c\x00\x13\x00\x4a\x01\x8f\x00\x4b\x01\x4c\x01\x06\x00\x56\x01\x55\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x0b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x58\x01\x12\x00\x5a\x01\x06\x00\x5c\x01\x5e\x01\x13\x00\x5d\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x5f\x01\x61\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xad\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x60\x01\x12\x00\x62\x01\xb0\x00\xb1\x00\x1f\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x65\x01\x66\x01\x67\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xb7\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4b\x00\x12\x00\x68\x01\x06\x00\x6d\x01\x06\x00\x13\x00\x8a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x76\x01\x77\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd5\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x74\x00\x12\x00\x88\x00\x79\x01\x7d\x01\xd8\x00\x13\x00\xe2\x00\x89\x00\xe0\x00\x06\x00\xe1\x00\x8a\x00\x12\x00\x0b\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xcc\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x56\x00\x12\x00\x0f\x01\x10\x01\x92\x00\x15\x01\x13\x00\x16\x01\x17\x01\x06\x00\x06\x00\x26\x01\x1c\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb0\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3b\x00\x25\x01\x12\x00\x3c\x00\x27\x01\x29\x01\x2a\x01\x13\x00\x06\x00\x2d\x01\x32\x01\x35\x01\x06\x00\x3d\x00\x3e\x00\x2b\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xbb\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x3f\x00\x12\x00\x76\x00\x7d\x00\x8c\x00\x40\x00\x13\x00\x87\x00\x8d\x00\x93\x00\x8e\x00\x94\x00\x95\x00\x99\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8c\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x97\x00\x98\x00\x12\x00\xa8\x00\xa9\x00\xce\x00\x06\x00\x13\x00\x89\x00\x06\x00\x06\x00\xd6\x00\xd7\x00\x41\x00\xff\xff\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8d\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x4a\x00\x12\x00\x50\x00\x51\x00\x58\x00\x06\x00\x13\x00\x6e\x00\xff\xff\x6f\x00\x6d\x00\x77\x00\x76\x00\x06\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x91\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x31\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x99\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xaa\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xab\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x3e\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x41\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x17\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x18\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1a\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2b\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x2d\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x33\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x7d\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x81\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x85\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x58\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\xe3\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x51\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x12\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xeb\x00\x00\x00\x0b\x00\x0c\x00\x82\x00\x83\x00\x84\x00\xec\x00\x11\x00\x00\x00\xfb\x00\xed\x00\xee\x00\x00\x00\xe4\x00\xe3\x00\x12\x00\x0b\x00\x0c\x00\x80\x00\xfc\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe5\x00\xfd\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x12\x00\x0b\x00\x56\x00\xe6\x00\xe7\x00\xe3\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x74\x00\xe4\x00\x12\x00\xe4\x00\x00\x00\x00\x00\xe9\x00\xe4\x00\x00\x00\xe4\x00\xe3\x00\x00\x00\xf1\x00\x12\x00\xf6\x00\xe6\x00\xe7\x00\xe3\x00\xf7\x00\x00\x00\xf8\x00\xe6\x00\xe7\x00\xe6\x00\xe7\x00\xeb\x00\x00\x00\xe6\x00\xe7\x00\xe6\x00\xe7\x00\x00\x00\xf9\x00\x00\x00\xe4\x00\x00\x00\xed\x00\xee\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\xe6\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\xe7\x00\xba\x00\x00\x00\xbb\x00\xbc\x00\xbd\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\xc5\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\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 (4, 249) [
+happyReduceArr = array (4, 251) [
(4 , happyReduce_4),
(5 , happyReduce_5),
(6 , happyReduce_6),
@@ -780,11 +786,13 @@ happyReduceArr = array (4, 249) [
(246 , happyReduce_246),
(247 , happyReduce_247),
(248 , happyReduce_248),
- (249 , happyReduce_249)
+ (249 , happyReduce_249),
+ (250 , happyReduce_250),
+ (251 , happyReduce_251)
]
happy_n_terms = 83 :: Int
-happy_n_nonterms = 83 :: Int
+happy_n_nonterms = 84 :: Int
happyReduce_4 = happySpecReduce_1 0# happyReduction_4
happyReduction_4 happy_x_1
@@ -1262,7 +1270,7 @@ happyReduction_58 happy_x_3
happy_x_2
happy_x_1
= case happyOut52 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn31
(DDecl happy_var_1 happy_var_3
)}}
@@ -1272,7 +1280,7 @@ happyReduction_59 happy_x_3
happy_x_2
happy_x_1
= case happyOut52 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn31
(DDef happy_var_1 happy_var_3
)}}
@@ -1284,8 +1292,8 @@ happyReduction_60 (happy_x_4 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut51 happy_x_1 of { happy_var_1 ->
- case happyOut69 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
+ case happyOut71 happy_x_2 of { happy_var_2 ->
+ case happyOut60 happy_x_4 of { happy_var_4 ->
happyIn31
(DPatt happy_var_1 happy_var_2 happy_var_4
) `HappyStk` happyRest}}}
@@ -1298,8 +1306,8 @@ happyReduction_61 (happy_x_5 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut52 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- case happyOut59 happy_x_5 of { happy_var_5 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_5 of { happy_var_5 ->
happyIn31
(DFull happy_var_1 happy_var_3 happy_var_5
) `HappyStk` happyRest}}}
@@ -1478,7 +1486,7 @@ happyReduce_82 = happySpecReduce_2 26# happyReduction_82
happyReduction_82 happy_x_2
happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut85 happy_x_2 of { happy_var_2 ->
+ case happyOut86 happy_x_2 of { happy_var_2 ->
happyIn33
(SimpleCatDef happy_var_1 (reverse happy_var_2)
)}}
@@ -1490,7 +1498,7 @@ happyReduction_83 (happy_x_4 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut85 happy_x_3 of { happy_var_3 ->
+ case happyOut86 happy_x_3 of { happy_var_3 ->
happyIn33
(ListCatDef happy_var_2 (reverse happy_var_3)
) `HappyStk` happyRest}}
@@ -1505,7 +1513,7 @@ happyReduction_84 (happy_x_7 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut85 happy_x_3 of { happy_var_3 ->
+ case happyOut86 happy_x_3 of { happy_var_3 ->
case happyOut8 happy_x_6 of { happy_var_6 ->
happyIn33
(ListSizeCatDef happy_var_2 (reverse happy_var_3) happy_var_6
@@ -1516,7 +1524,7 @@ happyReduction_85 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn34
(FunDef happy_var_1 happy_var_3
)}}
@@ -1605,7 +1613,7 @@ happyReduce_95 = happySpecReduce_2 32# happyReduction_95
happyReduction_95 happy_x_2
happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut85 happy_x_2 of { happy_var_2 ->
+ case happyOut86 happy_x_2 of { happy_var_2 ->
happyIn39
(ParConstr happy_var_1 (reverse happy_var_2)
)}}
@@ -1615,7 +1623,7 @@ happyReduction_96 happy_x_3
happy_x_2
happy_x_1
= case happyOut52 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn40
(PrintDef happy_var_1 happy_var_3
)}}
@@ -1833,7 +1841,7 @@ happyReduction_121 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn53
(LDDecl happy_var_1 happy_var_3
)}}
@@ -1843,7 +1851,7 @@ happyReduction_122 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
happyIn53
(LDDef happy_var_1 happy_var_3
)}}
@@ -1856,8 +1864,8 @@ happyReduction_123 (happy_x_5 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut50 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- case happyOut59 happy_x_5 of { happy_var_5 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_5 of { happy_var_5 ->
happyIn53
(LDFull happy_var_1 happy_var_3 happy_var_5
) `HappyStk` happyRest}}}
@@ -1911,7 +1919,7 @@ happyReduction_129 happy_x_3
happyReduce_130 = happySpecReduce_1 48# happyReduction_130
happyReduction_130 happy_x_1
- = case happyOut66 happy_x_1 of { happy_var_1 ->
+ = case happyOut69 happy_x_1 of { happy_var_1 ->
happyIn55
(ESort happy_var_1
)}
@@ -1963,7 +1971,7 @@ happyReduction_137 (happy_x_4 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut61 happy_x_3 of { happy_var_3 ->
+ case happyOut63 happy_x_3 of { happy_var_3 ->
happyIn55
(EList happy_var_2 happy_var_3
) `HappyStk` happyRest}}
@@ -1990,7 +1998,7 @@ happyReduce_140 = happySpecReduce_3 48# happyReduction_140
happyReduction_140 happy_x_3
happy_x_2
happy_x_1
- = case happyOut76 happy_x_2 of { happy_var_2 ->
+ = case happyOut77 happy_x_2 of { happy_var_2 ->
happyIn55
(ETuple happy_var_2
)}
@@ -2013,8 +2021,8 @@ happyReduction_142 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut59 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
+ = case happyOut60 happy_x_2 of { happy_var_2 ->
+ case happyOut60 happy_x_4 of { happy_var_4 ->
happyIn55
(ETyped happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -2023,7 +2031,7 @@ happyReduce_143 = happySpecReduce_3 48# happyReduction_143
happyReduction_143 happy_x_3
happy_x_2
happy_x_1
- = case happyOut59 happy_x_2 of { happy_var_2 ->
+ = case happyOut60 happy_x_2 of { happy_var_2 ->
happyIn55
(happy_var_2
)}
@@ -2040,7 +2048,7 @@ happyReduction_145 happy_x_3
happy_x_2
happy_x_1
= case happyOut56 happy_x_1 of { happy_var_1 ->
- case happyOut65 happy_x_3 of { happy_var_3 ->
+ case happyOut68 happy_x_3 of { happy_var_3 ->
happyIn56
(EProj happy_var_1 happy_var_3
)}}
@@ -2092,7 +2100,7 @@ happyReduction_150 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut79 happy_x_3 of { happy_var_3 ->
+ = case happyOut80 happy_x_3 of { happy_var_3 ->
happyIn57
(ETable happy_var_3
) `HappyStk` happyRest}
@@ -2105,7 +2113,7 @@ happyReduction_151 (happy_x_5 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut55 happy_x_2 of { happy_var_2 ->
- case happyOut79 happy_x_4 of { happy_var_4 ->
+ case happyOut80 happy_x_4 of { happy_var_4 ->
happyIn57
(ETTable happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -2118,7 +2126,7 @@ happyReduction_152 (happy_x_5 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut55 happy_x_2 of { happy_var_2 ->
- case happyOut60 happy_x_4 of { happy_var_4 ->
+ case happyOut62 happy_x_4 of { happy_var_4 ->
happyIn57
(EVTable happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -2131,8 +2139,8 @@ happyReduction_153 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut59 happy_x_2 of { happy_var_2 ->
- case happyOut79 happy_x_5 of { happy_var_5 ->
+ = case happyOut60 happy_x_2 of { happy_var_2 ->
+ case happyOut80 happy_x_5 of { happy_var_5 ->
happyIn57
(ECase happy_var_2 happy_var_5
) `HappyStk` happyRest}}
@@ -2143,7 +2151,7 @@ happyReduction_154 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut60 happy_x_3 of { happy_var_3 ->
+ = case happyOut62 happy_x_3 of { happy_var_3 ->
happyIn57
(EVariants happy_var_3
) `HappyStk` happyRest}
@@ -2156,8 +2164,8 @@ happyReduction_155 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut59 happy_x_3 of { happy_var_3 ->
- case happyOut83 happy_x_5 of { happy_var_5 ->
+ = case happyOut60 happy_x_3 of { happy_var_3 ->
+ case happyOut84 happy_x_5 of { happy_var_5 ->
happyIn57
(EPre happy_var_3 happy_var_5
) `HappyStk` happyRest}}
@@ -2168,7 +2176,7 @@ happyReduction_156 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut60 happy_x_3 of { happy_var_3 ->
+ = case happyOut62 happy_x_3 of { happy_var_3 ->
happyIn57
(EStrs happy_var_3
) `HappyStk` happyRest}
@@ -2235,73 +2243,80 @@ happyReduction_163 happy_x_1
(happy_var_1
)}
-happyReduce_164 = happyReduce 4# 52# happyReduction_164
-happyReduction_164 (happy_x_4 `HappyStk`
+happyReduce_164 = happySpecReduce_3 52# happyReduction_164
+happyReduction_164 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut61 happy_x_1 of { happy_var_1 ->
+ case happyOut59 happy_x_3 of { happy_var_3 ->
+ happyIn59
+ (EGlue happy_var_1 happy_var_3
+ )}}
+
+happyReduce_165 = happySpecReduce_1 52# happyReduction_165
+happyReduction_165 happy_x_1
+ = case happyOut61 happy_x_1 of { happy_var_1 ->
+ happyIn59
+ (happy_var_1
+ )}
+
+happyReduce_166 = happySpecReduce_3 53# happyReduction_166
+happyReduction_166 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut59 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn60
+ (EConcat happy_var_1 happy_var_3
+ )}}
+
+happyReduce_167 = happyReduce 4# 53# happyReduction_167
+happyReduction_167 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut72 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
- happyIn59
+ = case happyOut73 happy_x_2 of { happy_var_2 ->
+ case happyOut60 happy_x_4 of { happy_var_4 ->
+ happyIn60
(EAbstr happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_165 = happyReduce 5# 52# happyReduction_165
-happyReduction_165 (happy_x_5 `HappyStk`
+happyReduce_168 = happyReduce 5# 53# happyReduction_168
+happyReduction_168 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut72 happy_x_3 of { happy_var_3 ->
- case happyOut59 happy_x_5 of { happy_var_5 ->
- happyIn59
+ = case happyOut73 happy_x_3 of { happy_var_3 ->
+ case happyOut60 happy_x_5 of { happy_var_5 ->
+ happyIn60
(ECTable happy_var_3 happy_var_5
) `HappyStk` happyRest}}
-happyReduce_166 = happySpecReduce_3 52# happyReduction_166
-happyReduction_166 happy_x_3
+happyReduce_169 = happySpecReduce_3 53# happyReduction_169
+happyReduction_169 happy_x_3
happy_x_2
happy_x_1
- = case happyOut73 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn59
+ = case happyOut74 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn60
(EProd happy_var_1 happy_var_3
)}}
-happyReduce_167 = happySpecReduce_3 52# happyReduction_167
-happyReduction_167 happy_x_3
+happyReduce_170 = happySpecReduce_3 53# happyReduction_170
+happyReduction_170 happy_x_3
happy_x_2
happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn59
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn60
(ETType happy_var_1 happy_var_3
)}}
-happyReduce_168 = happySpecReduce_3 52# happyReduction_168
-happyReduction_168 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut58 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn59
- (EConcat happy_var_1 happy_var_3
- )}}
-
-happyReduce_169 = happySpecReduce_3 52# happyReduction_169
-happyReduction_169 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut58 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn59
- (EGlue happy_var_1 happy_var_3
- )}}
-
-happyReduce_170 = happyReduce 6# 52# happyReduction_170
-happyReduction_170 (happy_x_6 `HappyStk`
+happyReduce_171 = happyReduce 6# 53# happyReduction_171
+happyReduction_171 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2309,25 +2324,25 @@ happyReduction_170 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut54 happy_x_3 of { happy_var_3 ->
- case happyOut59 happy_x_6 of { happy_var_6 ->
- happyIn59
+ case happyOut60 happy_x_6 of { happy_var_6 ->
+ happyIn60
(ELet happy_var_3 happy_var_6
) `HappyStk` happyRest}}
-happyReduce_171 = happyReduce 4# 52# happyReduction_171
-happyReduction_171 (happy_x_4 `HappyStk`
+happyReduce_172 = happyReduce 4# 53# happyReduction_172
+happyReduction_172 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut54 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
- happyIn59
+ case happyOut60 happy_x_4 of { happy_var_4 ->
+ happyIn60
(ELetb happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_172 = happyReduce 5# 52# happyReduction_172
-happyReduction_172 (happy_x_5 `HappyStk`
+happyReduce_173 = happyReduce 5# 53# happyReduction_173
+happyReduction_173 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2335,276 +2350,270 @@ happyReduction_172 (happy_x_5 `HappyStk`
happyRest)
= case happyOut58 happy_x_1 of { happy_var_1 ->
case happyOut54 happy_x_4 of { happy_var_4 ->
- happyIn59
+ happyIn60
(EWhere happy_var_1 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_173 = happyReduce 4# 52# happyReduction_173
-happyReduction_173 (happy_x_4 `HappyStk`
+happyReduce_174 = happyReduce 4# 53# happyReduction_174
+happyReduction_174 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut81 happy_x_3 of { happy_var_3 ->
- happyIn59
+ = case happyOut82 happy_x_3 of { happy_var_3 ->
+ happyIn60
(EEqs happy_var_3
) `HappyStk` happyRest}
-happyReduce_174 = happySpecReduce_1 52# happyReduction_174
-happyReduction_174 happy_x_1
+happyReduce_175 = happySpecReduce_3 53# happyReduction_175
+happyReduction_175 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut56 happy_x_2 of { happy_var_2 ->
+ case happyOut9 happy_x_3 of { happy_var_3 ->
+ happyIn60
+ (EExample happy_var_2 happy_var_3
+ )}}
+
+happyReduce_176 = happySpecReduce_1 53# happyReduction_176
+happyReduction_176 happy_x_1
+ = case happyOut59 happy_x_1 of { happy_var_1 ->
+ happyIn60
+ (happy_var_1
+ )}
+
+happyReduce_177 = happySpecReduce_1 54# happyReduction_177
+happyReduction_177 happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
- happyIn59
+ happyIn61
(happy_var_1
)}
-happyReduce_175 = happySpecReduce_0 53# happyReduction_175
-happyReduction_175 = happyIn60
+happyReduce_178 = happySpecReduce_0 55# happyReduction_178
+happyReduction_178 = happyIn62
([]
)
-happyReduce_176 = happySpecReduce_1 53# happyReduction_176
-happyReduction_176 happy_x_1
- = case happyOut59 happy_x_1 of { happy_var_1 ->
- happyIn60
+happyReduce_179 = happySpecReduce_1 55# happyReduction_179
+happyReduction_179 happy_x_1
+ = case happyOut60 happy_x_1 of { happy_var_1 ->
+ happyIn62
((:[]) happy_var_1
)}
-happyReduce_177 = happySpecReduce_3 53# happyReduction_177
-happyReduction_177 happy_x_3
+happyReduce_180 = happySpecReduce_3 55# happyReduction_180
+happyReduction_180 happy_x_3
happy_x_2
happy_x_1
- = case happyOut59 happy_x_1 of { happy_var_1 ->
- case happyOut60 happy_x_3 of { happy_var_3 ->
- happyIn60
+ = case happyOut60 happy_x_1 of { happy_var_1 ->
+ case happyOut62 happy_x_3 of { happy_var_3 ->
+ happyIn62
((:) happy_var_1 happy_var_3
)}}
-happyReduce_178 = happySpecReduce_0 54# happyReduction_178
-happyReduction_178 = happyIn61
+happyReduce_181 = happySpecReduce_0 56# happyReduction_181
+happyReduction_181 = happyIn63
(NilExp
)
-happyReduce_179 = happySpecReduce_2 54# happyReduction_179
-happyReduction_179 happy_x_2
+happyReduce_182 = happySpecReduce_2 56# happyReduction_182
+happyReduction_182 happy_x_2
happy_x_1
= case happyOut55 happy_x_1 of { happy_var_1 ->
- case happyOut61 happy_x_2 of { happy_var_2 ->
- happyIn61
+ case happyOut63 happy_x_2 of { happy_var_2 ->
+ happyIn63
(ConsExp happy_var_1 happy_var_2
)}}
-happyReduce_180 = happySpecReduce_1 55# happyReduction_180
-happyReduction_180 happy_x_1
- = happyIn62
+happyReduce_183 = happySpecReduce_1 57# happyReduction_183
+happyReduction_183 happy_x_1
+ = happyIn64
(PW
)
-happyReduce_181 = happySpecReduce_1 55# happyReduction_181
-happyReduction_181 happy_x_1
+happyReduce_184 = happySpecReduce_1 57# happyReduction_184
+happyReduction_184 happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- happyIn62
+ happyIn64
(PV happy_var_1
)}
-happyReduce_182 = happySpecReduce_3 55# happyReduction_182
-happyReduction_182 happy_x_3
+happyReduce_185 = happySpecReduce_3 57# happyReduction_185
+happyReduction_185 happy_x_3
happy_x_2
happy_x_1
= case happyOut7 happy_x_2 of { happy_var_2 ->
- happyIn62
+ happyIn64
(PCon happy_var_2
)}
-happyReduce_183 = happySpecReduce_3 55# happyReduction_183
-happyReduction_183 happy_x_3
+happyReduce_186 = happySpecReduce_3 57# happyReduction_186
+happyReduction_186 happy_x_3
happy_x_2
happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
case happyOut7 happy_x_3 of { happy_var_3 ->
- happyIn62
+ happyIn64
(PQ happy_var_1 happy_var_3
)}}
-happyReduce_184 = happySpecReduce_1 55# happyReduction_184
-happyReduction_184 happy_x_1
+happyReduce_187 = happySpecReduce_1 57# happyReduction_187
+happyReduction_187 happy_x_1
= case happyOut8 happy_x_1 of { happy_var_1 ->
- happyIn62
+ happyIn64
(PInt happy_var_1
)}
-happyReduce_185 = happySpecReduce_1 55# happyReduction_185
-happyReduction_185 happy_x_1
+happyReduce_188 = happySpecReduce_1 57# happyReduction_188
+happyReduction_188 happy_x_1
= case happyOut10 happy_x_1 of { happy_var_1 ->
- happyIn62
+ happyIn64
(PFloat happy_var_1
)}
-happyReduce_186 = happySpecReduce_1 55# happyReduction_186
-happyReduction_186 happy_x_1
+happyReduce_189 = happySpecReduce_1 57# happyReduction_189
+happyReduction_189 happy_x_1
= case happyOut9 happy_x_1 of { happy_var_1 ->
- happyIn62
+ happyIn64
(PStr happy_var_1
)}
-happyReduce_187 = happySpecReduce_3 55# happyReduction_187
-happyReduction_187 happy_x_3
+happyReduce_190 = happySpecReduce_3 57# happyReduction_190
+happyReduction_190 happy_x_3
happy_x_2
happy_x_1
- = case happyOut67 happy_x_2 of { happy_var_2 ->
- happyIn62
+ = case happyOut70 happy_x_2 of { happy_var_2 ->
+ happyIn64
(PR happy_var_2
)}
-happyReduce_188 = happySpecReduce_3 55# happyReduction_188
-happyReduction_188 happy_x_3
+happyReduce_191 = happySpecReduce_3 57# happyReduction_191
+happyReduction_191 happy_x_3
happy_x_2
happy_x_1
- = case happyOut77 happy_x_2 of { happy_var_2 ->
- happyIn62
+ = case happyOut78 happy_x_2 of { happy_var_2 ->
+ happyIn64
(PTup happy_var_2
)}
-happyReduce_189 = happySpecReduce_3 55# happyReduction_189
-happyReduction_189 happy_x_3
+happyReduce_192 = happySpecReduce_3 57# happyReduction_192
+happyReduction_192 happy_x_3
happy_x_2
happy_x_1
- = case happyOut63 happy_x_2 of { happy_var_2 ->
- happyIn62
+ = case happyOut66 happy_x_2 of { happy_var_2 ->
+ happyIn64
(happy_var_2
)}
-happyReduce_190 = happySpecReduce_2 56# happyReduction_190
-happyReduction_190 happy_x_2
+happyReduce_193 = happySpecReduce_2 58# happyReduction_193
+happyReduction_193 happy_x_2
happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut69 happy_x_2 of { happy_var_2 ->
- happyIn63
+ case happyOut71 happy_x_2 of { happy_var_2 ->
+ happyIn65
(PC happy_var_1 happy_var_2
)}}
-happyReduce_191 = happyReduce 4# 56# happyReduction_191
-happyReduction_191 (happy_x_4 `HappyStk`
+happyReduce_194 = happyReduce 4# 58# happyReduction_194
+happyReduction_194 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut7 happy_x_1 of { happy_var_1 ->
case happyOut7 happy_x_3 of { happy_var_3 ->
- case happyOut69 happy_x_4 of { happy_var_4 ->
- happyIn63
+ case happyOut71 happy_x_4 of { happy_var_4 ->
+ happyIn65
(PQC happy_var_1 happy_var_3 happy_var_4
) `HappyStk` happyRest}}}
-happyReduce_192 = happySpecReduce_1 56# happyReduction_192
-happyReduction_192 happy_x_1
- = case happyOut62 happy_x_1 of { happy_var_1 ->
- happyIn63
+happyReduce_195 = happySpecReduce_1 58# happyReduction_195
+happyReduction_195 happy_x_1
+ = case happyOut64 happy_x_1 of { happy_var_1 ->
+ happyIn65
(happy_var_1
)}
-happyReduce_193 = happySpecReduce_3 57# happyReduction_193
-happyReduction_193 happy_x_3
+happyReduce_196 = happySpecReduce_3 59# happyReduction_196
+happyReduction_196 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut66 happy_x_1 of { happy_var_1 ->
+ case happyOut65 happy_x_3 of { happy_var_3 ->
+ happyIn66
+ (PDisj happy_var_1 happy_var_3
+ )}}
+
+happyReduce_197 = happySpecReduce_1 59# happyReduction_197
+happyReduction_197 happy_x_1
+ = case happyOut65 happy_x_1 of { happy_var_1 ->
+ happyIn66
+ (happy_var_1
+ )}
+
+happyReduce_198 = happySpecReduce_3 60# happyReduction_198
+happyReduction_198 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
- case happyOut63 happy_x_3 of { happy_var_3 ->
- happyIn64
+ case happyOut66 happy_x_3 of { happy_var_3 ->
+ happyIn67
(PA happy_var_1 happy_var_3
)}}
-happyReduce_194 = happySpecReduce_1 58# happyReduction_194
-happyReduction_194 happy_x_1
+happyReduce_199 = happySpecReduce_1 61# happyReduction_199
+happyReduction_199 happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- happyIn65
+ happyIn68
(LIdent happy_var_1
)}
-happyReduce_195 = happySpecReduce_2 58# happyReduction_195
-happyReduction_195 happy_x_2
+happyReduce_200 = happySpecReduce_2 61# happyReduction_200
+happyReduction_200 happy_x_2
happy_x_1
= case happyOut8 happy_x_2 of { happy_var_2 ->
- happyIn65
+ happyIn68
(LVar happy_var_2
)}
-happyReduce_196 = happySpecReduce_1 59# happyReduction_196
-happyReduction_196 happy_x_1
- = happyIn66
+happyReduce_201 = happySpecReduce_1 62# happyReduction_201
+happyReduction_201 happy_x_1
+ = happyIn69
(Sort_Type
)
-happyReduce_197 = happySpecReduce_1 59# happyReduction_197
-happyReduction_197 happy_x_1
- = happyIn66
+happyReduce_202 = happySpecReduce_1 62# happyReduction_202
+happyReduction_202 happy_x_1
+ = happyIn69
(Sort_PType
)
-happyReduce_198 = happySpecReduce_1 59# happyReduction_198
-happyReduction_198 happy_x_1
- = happyIn66
+happyReduce_203 = happySpecReduce_1 62# happyReduction_203
+happyReduction_203 happy_x_1
+ = happyIn69
(Sort_Tok
)
-happyReduce_199 = happySpecReduce_1 59# happyReduction_199
-happyReduction_199 happy_x_1
- = happyIn66
+happyReduce_204 = happySpecReduce_1 62# happyReduction_204
+happyReduction_204 happy_x_1
+ = happyIn69
(Sort_Str
)
-happyReduce_200 = happySpecReduce_1 59# happyReduction_200
-happyReduction_200 happy_x_1
- = happyIn66
+happyReduce_205 = happySpecReduce_1 62# happyReduction_205
+happyReduction_205 happy_x_1
+ = happyIn69
(Sort_Strs
)
-happyReduce_201 = happySpecReduce_0 60# happyReduction_201
-happyReduction_201 = happyIn67
+happyReduce_206 = happySpecReduce_0 63# happyReduction_206
+happyReduction_206 = happyIn70
([]
)
-happyReduce_202 = happySpecReduce_1 60# happyReduction_202
-happyReduction_202 happy_x_1
- = case happyOut64 happy_x_1 of { happy_var_1 ->
- happyIn67
- ((:[]) happy_var_1
- )}
-
-happyReduce_203 = happySpecReduce_3 60# happyReduction_203
-happyReduction_203 happy_x_3
- happy_x_2
- happy_x_1
- = case happyOut64 happy_x_1 of { happy_var_1 ->
- case happyOut67 happy_x_3 of { happy_var_3 ->
- happyIn67
- ((:) happy_var_1 happy_var_3
- )}}
-
-happyReduce_204 = happySpecReduce_1 61# happyReduction_204
-happyReduction_204 happy_x_1
- = case happyOut63 happy_x_1 of { happy_var_1 ->
- happyIn68
- (AltP happy_var_1
- )}
-
-happyReduce_205 = happySpecReduce_1 62# happyReduction_205
-happyReduction_205 happy_x_1
- = case happyOut62 happy_x_1 of { happy_var_1 ->
- happyIn69
- ((:[]) happy_var_1
- )}
-
-happyReduce_206 = happySpecReduce_2 62# happyReduction_206
-happyReduction_206 happy_x_2
- happy_x_1
- = case happyOut62 happy_x_1 of { happy_var_1 ->
- case happyOut69 happy_x_2 of { happy_var_2 ->
- happyIn69
- ((:) happy_var_1 happy_var_2
- )}}
-
happyReduce_207 = happySpecReduce_1 63# happyReduction_207
happyReduction_207 happy_x_1
- = case happyOut68 happy_x_1 of { happy_var_1 ->
+ = case happyOut67 happy_x_1 of { happy_var_1 ->
happyIn70
((:[]) happy_var_1
)}
@@ -2613,7 +2622,7 @@ happyReduce_208 = happySpecReduce_3 63# happyReduction_208
happyReduction_208 happy_x_3
happy_x_2
happy_x_1
- = case happyOut68 happy_x_1 of { happy_var_1 ->
+ = case happyOut67 happy_x_1 of { happy_var_1 ->
case happyOut70 happy_x_3 of { happy_var_3 ->
happyIn70
((:) happy_var_1 happy_var_3
@@ -2621,326 +2630,342 @@ happyReduction_208 happy_x_3
happyReduce_209 = happySpecReduce_1 64# happyReduction_209
happyReduction_209 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut64 happy_x_1 of { happy_var_1 ->
happyIn71
+ ((:[]) happy_var_1
+ )}
+
+happyReduce_210 = happySpecReduce_2 64# happyReduction_210
+happyReduction_210 happy_x_2
+ happy_x_1
+ = case happyOut64 happy_x_1 of { happy_var_1 ->
+ case happyOut71 happy_x_2 of { happy_var_2 ->
+ happyIn71
+ ((:) happy_var_1 happy_var_2
+ )}}
+
+happyReduce_211 = happySpecReduce_1 65# happyReduction_211
+happyReduction_211 happy_x_1
+ = case happyOut7 happy_x_1 of { happy_var_1 ->
+ happyIn72
(BIdent happy_var_1
)}
-happyReduce_210 = happySpecReduce_1 64# happyReduction_210
-happyReduction_210 happy_x_1
- = happyIn71
+happyReduce_212 = happySpecReduce_1 65# happyReduction_212
+happyReduction_212 happy_x_1
+ = happyIn72
(BWild
)
-happyReduce_211 = happySpecReduce_0 65# happyReduction_211
-happyReduction_211 = happyIn72
+happyReduce_213 = happySpecReduce_0 66# happyReduction_213
+happyReduction_213 = happyIn73
([]
)
-happyReduce_212 = happySpecReduce_1 65# happyReduction_212
-happyReduction_212 happy_x_1
- = case happyOut71 happy_x_1 of { happy_var_1 ->
- happyIn72
+happyReduce_214 = happySpecReduce_1 66# happyReduction_214
+happyReduction_214 happy_x_1
+ = case happyOut72 happy_x_1 of { happy_var_1 ->
+ happyIn73
((:[]) happy_var_1
)}
-happyReduce_213 = happySpecReduce_3 65# happyReduction_213
-happyReduction_213 happy_x_3
+happyReduce_215 = happySpecReduce_3 66# happyReduction_215
+happyReduction_215 happy_x_3
happy_x_2
happy_x_1
- = case happyOut71 happy_x_1 of { happy_var_1 ->
- case happyOut72 happy_x_3 of { happy_var_3 ->
- happyIn72
+ = case happyOut72 happy_x_1 of { happy_var_1 ->
+ case happyOut73 happy_x_3 of { happy_var_3 ->
+ happyIn73
((:) happy_var_1 happy_var_3
)}}
-happyReduce_214 = happyReduce 5# 66# happyReduction_214
-happyReduction_214 (happy_x_5 `HappyStk`
+happyReduce_216 = happyReduce 5# 67# happyReduction_216
+happyReduction_216 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut72 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
- happyIn73
+ = case happyOut73 happy_x_2 of { happy_var_2 ->
+ case happyOut60 happy_x_4 of { happy_var_4 ->
+ happyIn74
(DDec happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_215 = happySpecReduce_1 66# happyReduction_215
-happyReduction_215 happy_x_1
+happyReduce_217 = happySpecReduce_1 67# happyReduction_217
+happyReduction_217 happy_x_1
= case happyOut57 happy_x_1 of { happy_var_1 ->
- happyIn73
+ happyIn74
(DExp happy_var_1
)}
-happyReduce_216 = happySpecReduce_1 67# happyReduction_216
-happyReduction_216 happy_x_1
- = case happyOut59 happy_x_1 of { happy_var_1 ->
- happyIn74
+happyReduce_218 = happySpecReduce_1 68# happyReduction_218
+happyReduction_218 happy_x_1
+ = case happyOut60 happy_x_1 of { happy_var_1 ->
+ happyIn75
(TComp happy_var_1
)}
-happyReduce_217 = happySpecReduce_1 68# happyReduction_217
-happyReduction_217 happy_x_1
- = case happyOut63 happy_x_1 of { happy_var_1 ->
- happyIn75
+happyReduce_219 = happySpecReduce_1 69# happyReduction_219
+happyReduction_219 happy_x_1
+ = case happyOut66 happy_x_1 of { happy_var_1 ->
+ happyIn76
(PTComp happy_var_1
)}
-happyReduce_218 = happySpecReduce_0 69# happyReduction_218
-happyReduction_218 = happyIn76
+happyReduce_220 = happySpecReduce_0 70# happyReduction_220
+happyReduction_220 = happyIn77
([]
)
-happyReduce_219 = happySpecReduce_1 69# happyReduction_219
-happyReduction_219 happy_x_1
- = case happyOut74 happy_x_1 of { happy_var_1 ->
- happyIn76
+happyReduce_221 = happySpecReduce_1 70# happyReduction_221
+happyReduction_221 happy_x_1
+ = case happyOut75 happy_x_1 of { happy_var_1 ->
+ happyIn77
((:[]) happy_var_1
)}
-happyReduce_220 = happySpecReduce_3 69# happyReduction_220
-happyReduction_220 happy_x_3
+happyReduce_222 = happySpecReduce_3 70# happyReduction_222
+happyReduction_222 happy_x_3
happy_x_2
happy_x_1
- = case happyOut74 happy_x_1 of { happy_var_1 ->
- case happyOut76 happy_x_3 of { happy_var_3 ->
- happyIn76
+ = case happyOut75 happy_x_1 of { happy_var_1 ->
+ case happyOut77 happy_x_3 of { happy_var_3 ->
+ happyIn77
((:) happy_var_1 happy_var_3
)}}
-happyReduce_221 = happySpecReduce_0 70# happyReduction_221
-happyReduction_221 = happyIn77
+happyReduce_223 = happySpecReduce_0 71# happyReduction_223
+happyReduction_223 = happyIn78
([]
)
-happyReduce_222 = happySpecReduce_1 70# happyReduction_222
-happyReduction_222 happy_x_1
- = case happyOut75 happy_x_1 of { happy_var_1 ->
- happyIn77
+happyReduce_224 = happySpecReduce_1 71# happyReduction_224
+happyReduction_224 happy_x_1
+ = case happyOut76 happy_x_1 of { happy_var_1 ->
+ happyIn78
((:[]) happy_var_1
)}
-happyReduce_223 = happySpecReduce_3 70# happyReduction_223
-happyReduction_223 happy_x_3
+happyReduce_225 = happySpecReduce_3 71# happyReduction_225
+happyReduction_225 happy_x_3
happy_x_2
happy_x_1
- = case happyOut75 happy_x_1 of { happy_var_1 ->
- case happyOut77 happy_x_3 of { happy_var_3 ->
- happyIn77
+ = case happyOut76 happy_x_1 of { happy_var_1 ->
+ case happyOut78 happy_x_3 of { happy_var_3 ->
+ happyIn78
((:) happy_var_1 happy_var_3
)}}
-happyReduce_224 = happySpecReduce_3 71# happyReduction_224
-happyReduction_224 happy_x_3
+happyReduce_226 = happySpecReduce_3 72# happyReduction_226
+happyReduction_226 happy_x_3
happy_x_2
happy_x_1
- = case happyOut70 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn78
+ = case happyOut66 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn79
(Case happy_var_1 happy_var_3
)}}
-happyReduce_225 = happySpecReduce_1 72# happyReduction_225
-happyReduction_225 happy_x_1
- = case happyOut78 happy_x_1 of { happy_var_1 ->
- happyIn79
+happyReduce_227 = happySpecReduce_1 73# happyReduction_227
+happyReduction_227 happy_x_1
+ = case happyOut79 happy_x_1 of { happy_var_1 ->
+ happyIn80
((:[]) happy_var_1
)}
-happyReduce_226 = happySpecReduce_3 72# happyReduction_226
-happyReduction_226 happy_x_3
+happyReduce_228 = happySpecReduce_3 73# happyReduction_228
+happyReduction_228 happy_x_3
happy_x_2
happy_x_1
- = case happyOut78 happy_x_1 of { happy_var_1 ->
- case happyOut79 happy_x_3 of { happy_var_3 ->
- happyIn79
+ = case happyOut79 happy_x_1 of { happy_var_1 ->
+ case happyOut80 happy_x_3 of { happy_var_3 ->
+ happyIn80
((:) happy_var_1 happy_var_3
)}}
-happyReduce_227 = happySpecReduce_3 73# happyReduction_227
-happyReduction_227 happy_x_3
+happyReduce_229 = happySpecReduce_3 74# happyReduction_229
+happyReduction_229 happy_x_3
happy_x_2
happy_x_1
- = case happyOut69 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn80
+ = case happyOut71 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn81
(Equ happy_var_1 happy_var_3
)}}
-happyReduce_228 = happySpecReduce_0 74# happyReduction_228
-happyReduction_228 = happyIn81
+happyReduce_230 = happySpecReduce_0 75# happyReduction_230
+happyReduction_230 = happyIn82
([]
)
-happyReduce_229 = happySpecReduce_1 74# happyReduction_229
-happyReduction_229 happy_x_1
- = case happyOut80 happy_x_1 of { happy_var_1 ->
- happyIn81
+happyReduce_231 = happySpecReduce_1 75# happyReduction_231
+happyReduction_231 happy_x_1
+ = case happyOut81 happy_x_1 of { happy_var_1 ->
+ happyIn82
((:[]) happy_var_1
)}
-happyReduce_230 = happySpecReduce_3 74# happyReduction_230
-happyReduction_230 happy_x_3
+happyReduce_232 = happySpecReduce_3 75# happyReduction_232
+happyReduction_232 happy_x_3
happy_x_2
happy_x_1
- = case happyOut80 happy_x_1 of { happy_var_1 ->
- case happyOut81 happy_x_3 of { happy_var_3 ->
- happyIn81
+ = case happyOut81 happy_x_1 of { happy_var_1 ->
+ case happyOut82 happy_x_3 of { happy_var_3 ->
+ happyIn82
((:) happy_var_1 happy_var_3
)}}
-happyReduce_231 = happySpecReduce_3 75# happyReduction_231
-happyReduction_231 happy_x_3
+happyReduce_233 = happySpecReduce_3 76# happyReduction_233
+happyReduction_233 happy_x_3
happy_x_2
happy_x_1
- = case happyOut59 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- happyIn82
+ = case happyOut60 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_3 of { happy_var_3 ->
+ happyIn83
(Alt happy_var_1 happy_var_3
)}}
-happyReduce_232 = happySpecReduce_0 76# happyReduction_232
-happyReduction_232 = happyIn83
+happyReduce_234 = happySpecReduce_0 77# happyReduction_234
+happyReduction_234 = happyIn84
([]
)
-happyReduce_233 = happySpecReduce_1 76# happyReduction_233
-happyReduction_233 happy_x_1
- = case happyOut82 happy_x_1 of { happy_var_1 ->
- happyIn83
+happyReduce_235 = happySpecReduce_1 77# happyReduction_235
+happyReduction_235 happy_x_1
+ = case happyOut83 happy_x_1 of { happy_var_1 ->
+ happyIn84
((:[]) happy_var_1
)}
-happyReduce_234 = happySpecReduce_3 76# happyReduction_234
-happyReduction_234 happy_x_3
+happyReduce_236 = happySpecReduce_3 77# happyReduction_236
+happyReduction_236 happy_x_3
happy_x_2
happy_x_1
- = case happyOut82 happy_x_1 of { happy_var_1 ->
- case happyOut83 happy_x_3 of { happy_var_3 ->
- happyIn83
+ = case happyOut83 happy_x_1 of { happy_var_1 ->
+ case happyOut84 happy_x_3 of { happy_var_3 ->
+ happyIn84
((:) happy_var_1 happy_var_3
)}}
-happyReduce_235 = happyReduce 5# 77# happyReduction_235
-happyReduction_235 (happy_x_5 `HappyStk`
+happyReduce_237 = happyReduce 5# 78# happyReduction_237
+happyReduction_237 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut72 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
- happyIn84
+ = case happyOut73 happy_x_2 of { happy_var_2 ->
+ case happyOut60 happy_x_4 of { happy_var_4 ->
+ happyIn85
(DDDec happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_236 = happySpecReduce_1 77# happyReduction_236
-happyReduction_236 happy_x_1
+happyReduce_238 = happySpecReduce_1 78# happyReduction_238
+happyReduction_238 happy_x_1
= case happyOut55 happy_x_1 of { happy_var_1 ->
- happyIn84
+ happyIn85
(DDExp happy_var_1
)}
-happyReduce_237 = happySpecReduce_0 78# happyReduction_237
-happyReduction_237 = happyIn85
+happyReduce_239 = happySpecReduce_0 79# happyReduction_239
+happyReduction_239 = happyIn86
([]
)
-happyReduce_238 = happySpecReduce_2 78# happyReduction_238
-happyReduction_238 happy_x_2
+happyReduce_240 = happySpecReduce_2 79# happyReduction_240
+happyReduction_240 happy_x_2
happy_x_1
- = case happyOut85 happy_x_1 of { happy_var_1 ->
- case happyOut84 happy_x_2 of { happy_var_2 ->
- happyIn85
+ = case happyOut86 happy_x_1 of { happy_var_1 ->
+ case happyOut85 happy_x_2 of { happy_var_2 ->
+ happyIn86
(flip (:) happy_var_1 happy_var_2
)}}
-happyReduce_239 = happySpecReduce_2 79# happyReduction_239
-happyReduction_239 happy_x_2
+happyReduce_241 = happySpecReduce_2 80# happyReduction_241
+happyReduction_241 happy_x_2
happy_x_1
- = case happyOut87 happy_x_1 of { happy_var_1 ->
+ = case happyOut88 happy_x_1 of { happy_var_1 ->
case happyOut22 happy_x_2 of { happy_var_2 ->
- happyIn86
+ happyIn87
(OldGr happy_var_1 (reverse happy_var_2)
)}}
-happyReduce_240 = happySpecReduce_0 80# happyReduction_240
-happyReduction_240 = happyIn87
+happyReduce_242 = happySpecReduce_0 81# happyReduction_242
+happyReduction_242 = happyIn88
(NoIncl
)
-happyReduce_241 = happySpecReduce_2 80# happyReduction_241
-happyReduction_241 happy_x_2
+happyReduce_243 = happySpecReduce_2 81# happyReduction_243
+happyReduction_243 happy_x_2
happy_x_1
- = case happyOut89 happy_x_2 of { happy_var_2 ->
- happyIn87
+ = case happyOut90 happy_x_2 of { happy_var_2 ->
+ happyIn88
(Incl happy_var_2
)}
-happyReduce_242 = happySpecReduce_1 81# happyReduction_242
-happyReduction_242 happy_x_1
+happyReduce_244 = happySpecReduce_1 82# happyReduction_244
+happyReduction_244 happy_x_1
= case happyOut9 happy_x_1 of { happy_var_1 ->
- happyIn88
+ happyIn89
(FString happy_var_1
)}
-happyReduce_243 = happySpecReduce_1 81# happyReduction_243
-happyReduction_243 happy_x_1
+happyReduce_245 = happySpecReduce_1 82# happyReduction_245
+happyReduction_245 happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- happyIn88
+ happyIn89
(FIdent happy_var_1
)}
-happyReduce_244 = happySpecReduce_2 81# happyReduction_244
-happyReduction_244 happy_x_2
+happyReduce_246 = happySpecReduce_2 82# happyReduction_246
+happyReduction_246 happy_x_2
happy_x_1
- = case happyOut88 happy_x_2 of { happy_var_2 ->
- happyIn88
+ = case happyOut89 happy_x_2 of { happy_var_2 ->
+ happyIn89
(FSlash happy_var_2
)}
-happyReduce_245 = happySpecReduce_2 81# happyReduction_245
-happyReduction_245 happy_x_2
+happyReduce_247 = happySpecReduce_2 82# happyReduction_247
+happyReduction_247 happy_x_2
happy_x_1
- = case happyOut88 happy_x_2 of { happy_var_2 ->
- happyIn88
+ = case happyOut89 happy_x_2 of { happy_var_2 ->
+ happyIn89
(FDot happy_var_2
)}
-happyReduce_246 = happySpecReduce_2 81# happyReduction_246
-happyReduction_246 happy_x_2
+happyReduce_248 = happySpecReduce_2 82# happyReduction_248
+happyReduction_248 happy_x_2
happy_x_1
- = case happyOut88 happy_x_2 of { happy_var_2 ->
- happyIn88
+ = case happyOut89 happy_x_2 of { happy_var_2 ->
+ happyIn89
(FMinus happy_var_2
)}
-happyReduce_247 = happySpecReduce_2 81# happyReduction_247
-happyReduction_247 happy_x_2
+happyReduce_249 = happySpecReduce_2 82# happyReduction_249
+happyReduction_249 happy_x_2
happy_x_1
= case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut88 happy_x_2 of { happy_var_2 ->
- happyIn88
+ case happyOut89 happy_x_2 of { happy_var_2 ->
+ happyIn89
(FAddId happy_var_1 happy_var_2
)}}
-happyReduce_248 = happySpecReduce_2 82# happyReduction_248
-happyReduction_248 happy_x_2
+happyReduce_250 = happySpecReduce_2 83# happyReduction_250
+happyReduction_250 happy_x_2
happy_x_1
- = case happyOut88 happy_x_1 of { happy_var_1 ->
- happyIn89
+ = case happyOut89 happy_x_1 of { happy_var_1 ->
+ happyIn90
((:[]) happy_var_1
)}
-happyReduce_249 = happySpecReduce_3 82# happyReduction_249
-happyReduction_249 happy_x_3
+happyReduce_251 = happySpecReduce_3 83# happyReduction_251
+happyReduction_251 happy_x_3
happy_x_2
happy_x_1
- = case happyOut88 happy_x_1 of { happy_var_1 ->
- case happyOut89 happy_x_3 of { happy_var_3 ->
- happyIn89
+ = case happyOut89 happy_x_1 of { happy_var_1 ->
+ case happyOut90 happy_x_3 of { happy_var_3 ->
+ happyIn90
((:) happy_var_1 happy_var_3
)}}
@@ -2972,10 +2997,10 @@ happyNewToken action sts stk (tk:tks) =
PT _ (TS "@") -> cont 20#;
PT _ (TS "!") -> cont 21#;
PT _ (TS "*") -> cont 22#;
- PT _ (TS "\\") -> cont 23#;
- PT _ (TS "=>") -> cont 24#;
- PT _ (TS "++") -> cont 25#;
- PT _ (TS "+") -> cont 26#;
+ PT _ (TS "+") -> cont 23#;
+ PT _ (TS "++") -> cont 24#;
+ PT _ (TS "\\") -> cont 25#;
+ PT _ (TS "=>") -> cont 26#;
PT _ (TS "_") -> cont 27#;
PT _ (TS "$") -> cont 28#;
PT _ (TS "/") -> cont 29#;
@@ -3053,10 +3078,10 @@ pModDef tks = happySomeParser where
happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut14 x))
pOldGrammar tks = happySomeParser where
- happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut86 x))
+ happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut87 x))
pExp tks = happySomeParser where
- happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut59 x))
+ happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut60 x))
happySeq = happyDontSeq
@@ -3072,13 +3097,22 @@ happyError ts =
myLexer = tokens
{-# LINE 1 "GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "GenericTemplate.hs" #-}
-- $Id$
-{-# LINE 28 "GenericTemplate.hs" #-}
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 27 "GenericTemplate.hs" #-}
+
data Happy_IntList = HappyCons Int# Happy_IntList
@@ -3088,10 +3122,28 @@ data Happy_IntList = HappyCons Int# Happy_IntList
-{-# LINE 49 "GenericTemplate.hs" #-}
-{-# LINE 59 "GenericTemplate.hs" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3192,7 +3244,8 @@ data HappyAddr = HappyA# Addr#
-----------------------------------------------------------------------------
-- HappyState data type (not arrays)
-{-# LINE 170 "GenericTemplate.hs" #-}
+{-# LINE 169 "GenericTemplate.hs" #-}
+
-----------------------------------------------------------------------------
-- Shifting a token
diff --git a/src/GF/Source/PrintGF.hs b/src/GF/Source/PrintGF.hs
index 51e7317e3..c01329227 100644
--- a/src/GF/Source/PrintGF.hs
+++ b/src/GF/Source/PrintGF.hs
@@ -1,11 +1,10 @@
-
-module GF.Source.PrintGF where
+module GF.Source.PrintGF where --H
-- pretty-printer generated by the BNF converter, except --H
import GF.Infra.Ident --H
-import GF.Source.AbsGF
-import Data.Char
+import GF.Source.AbsGF --H
+import Data.Char --H
-- the top-level printing method
printTree :: Print a => a -> String
@@ -27,13 +26,11 @@ render d = rend 0 (map ($ "") $ d []) "" where
"[" :ts -> showChar '[' . rend i ts
"(" :ts -> showChar '(' . rend i ts
- "%" :ts -> showChar '%' . rend i ts
"{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts
"}" : ";":ts -> new (i-1) . space "}" . showChar ';' . new (i-1) . rend (i-1) ts
"}" :ts -> new (i-1) . showChar '}' . new (i-1) . rend (i-1) ts
";" :ts -> showChar ';' . new i . rend i ts
t : "," :ts -> showString t . space "," . rend i ts
- t : "%" :ts -> showString t . showChar '%' . rend i ts
t : ")" :ts -> showString t . showChar ')' . rend i ts
t : "]" :ts -> showString t . showChar ']' . rend i ts
t :ts -> space t . rend i ts
@@ -62,12 +59,6 @@ class Print a where
instance Print a => Print [a] where
prt _ = prtList
-instance Print Integer where
- prt _ x = doc (shows x)
-
-instance Print Double where
- prt _ x = doc (shows x)
-
instance Print Char where
prt _ s = doc (showChar '\'' . mkEsc '\'' s . showChar '\'')
prtList s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"')
@@ -84,8 +75,16 @@ prPrec :: Int -> Int -> Doc -> Doc
prPrec i j = if j<i then parenth else id
+instance Print Integer where
+ prt _ x = doc (shows x)
+
+
+instance Print Double where
+ prt _ x = doc (shows x)
+
+
instance Print Ident where
- prt _ i = doc (showString $ prIdent i)
+ prt _ i = doc (showString $ prIdent i) --H
prtList es = case es of
[x] -> (concatD [prt 0 x])
x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs])
@@ -192,6 +191,7 @@ instance Print Included where
prt i e = case e of
IAll id -> prPrec i 0 (concatD [prt 0 id])
ISome id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "[") , prt 0 ids , doc (showString "]")])
+ IMinus id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "-") , doc (showString "[") , prt 0 ids , doc (showString "]")])
prtList es = case es of
[] -> (concatD [])
@@ -329,49 +329,50 @@ instance Print LocDef where
instance Print Exp where
prt i e = case e of
- EIdent id -> prPrec i 4 (concatD [prt 0 id])
- EConstr id -> prPrec i 4 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) -- H
- ECons id -> prPrec i 4 (concatD [doc (showString "%") , prt 0 id , doc (showString "%")])
- ESort sort -> prPrec i 4 (concatD [prt 0 sort])
- EString str -> prPrec i 4 (concatD [prt 0 str])
- EInt n -> prPrec i 4 (concatD [prt 0 n])
- EFloat n -> prPrec i 4 (concatD [prt 0 n])
- EMeta -> prPrec i 4 (concatD [doc (showString "?")])
- EEmpty -> prPrec i 4 (concatD [doc (showString "[") , doc (showString "]")])
- EData -> prPrec i 4 (concatD [doc (showString "data")])
- EList id exps -> prPrec i 4 (concatD [doc (showString "[") , prt 0 id , prt 0 exps , doc (showString "]")])
- EStrings str -> prPrec i 4 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")])
- ERecord locdefs -> prPrec i 4 (concatD [doc (showString "{") , prt 0 locdefs , doc (showString "}")])
- ETuple tuplecomps -> prPrec i 4 (concatD [doc (showString "<") , prt 0 tuplecomps , doc (showString ">")])
- EIndir id -> prPrec i 4 (concatD [doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")])
- ETyped exp0 exp -> prPrec i 4 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")])
- EProj exp label -> prPrec i 3 (concatD [prt 3 exp , doc (showString ".") , prt 0 label])
- EQConstr id0 id -> prPrec i 3 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) -- H
- EQCons id0 id -> prPrec i 3 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id])
- EApp exp0 exp -> prPrec i 2 (concatD [prt 2 exp0 , prt 3 exp])
- ETable cases -> prPrec i 2 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")])
- ETTable exp cases -> prPrec i 2 (concatD [doc (showString "table") , prt 4 exp , doc (showString "{") , prt 0 cases , doc (showString "}")])
- EVTable exp exps -> prPrec i 2 (concatD [doc (showString "table") , prt 4 exp , doc (showString "[") , prt 0 exps , doc (showString "]")])
- ECase exp cases -> prPrec i 2 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")])
- EVariants exps -> prPrec i 2 (concatD [doc (showString "variants") , doc (showString "{") , prt 0 exps , doc (showString "}")])
- EPre exp alterns -> prPrec i 2 (concatD [doc (showString "pre") , doc (showString "{") , prt 0 exp , doc (showString ";") , prt 0 alterns , doc (showString "}")])
- EStrs exps -> prPrec i 2 (concatD [doc (showString "strs") , doc (showString "{") , prt 0 exps , doc (showString "}")])
- EConAt id exp -> prPrec i 2 (concatD [prt 0 id , doc (showString "@") , prt 4 exp])
- ESelect exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "!") , prt 2 exp])
- ETupTyp exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "*") , prt 2 exp])
- EExtend exp0 exp -> prPrec i 1 (concatD [prt 1 exp0 , doc (showString "**") , prt 2 exp])
+ EIdent id -> prPrec i 6 (concatD [prt 0 id])
+ EConstr id -> prPrec i 6 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H
+ ECons id -> prPrec i 6 (concatD [doc (showString "%") , prt 0 id , doc (showString "%")])
+ ESort sort -> prPrec i 6 (concatD [prt 0 sort])
+ EString str -> prPrec i 6 (concatD [prt 0 str])
+ EInt n -> prPrec i 6 (concatD [prt 0 n])
+ EFloat d -> prPrec i 6 (concatD [prt 0 d])
+ EMeta -> prPrec i 6 (concatD [doc (showString "?")])
+ EEmpty -> prPrec i 6 (concatD [doc (showString "[") , doc (showString "]")])
+ EData -> prPrec i 6 (concatD [doc (showString "data")])
+ EList id exps -> prPrec i 6 (concatD [doc (showString "[") , prt 0 id , prt 0 exps , doc (showString "]")])
+ EStrings str -> prPrec i 6 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")])
+ ERecord locdefs -> prPrec i 6 (concatD [doc (showString "{") , prt 0 locdefs , doc (showString "}")])
+ ETuple tuplecomps -> prPrec i 6 (concatD [doc (showString "<") , prt 0 tuplecomps , doc (showString ">")])
+ EIndir id -> prPrec i 6 (concatD [doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")])
+ ETyped exp0 exp -> prPrec i 6 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")])
+ EProj exp label -> prPrec i 5 (concatD [prt 5 exp , doc (showString ".") , prt 0 label])
+ EQConstr id0 id -> prPrec i 5 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) --H
+ EQCons id0 id -> prPrec i 5 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id])
+ EApp exp0 exp -> prPrec i 4 (concatD [prt 4 exp0 , prt 5 exp])
+ ETable cases -> prPrec i 4 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")])
+ ETTable exp cases -> prPrec i 4 (concatD [doc (showString "table") , prt 6 exp , doc (showString "{") , prt 0 cases , doc (showString "}")])
+ EVTable exp exps -> prPrec i 4 (concatD [doc (showString "table") , prt 6 exp , doc (showString "[") , prt 0 exps , doc (showString "]")])
+ ECase exp cases -> prPrec i 4 (concatD [doc (showString "case") , prt 0 exp , doc (showString "of") , doc (showString "{") , prt 0 cases , doc (showString "}")])
+ EVariants exps -> prPrec i 4 (concatD [doc (showString "variants") , doc (showString "{") , prt 0 exps , doc (showString "}")])
+ EPre exp alterns -> prPrec i 4 (concatD [doc (showString "pre") , doc (showString "{") , prt 0 exp , doc (showString ";") , prt 0 alterns , doc (showString "}")])
+ EStrs exps -> prPrec i 4 (concatD [doc (showString "strs") , doc (showString "{") , prt 0 exps , doc (showString "}")])
+ EConAt id exp -> prPrec i 4 (concatD [prt 0 id , doc (showString "@") , prt 6 exp])
+ ESelect exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "!") , prt 4 exp])
+ ETupTyp exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "*") , prt 4 exp])
+ EExtend exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "**") , prt 4 exp])
+ EGlue exp0 exp -> prPrec i 1 (concatD [prt 2 exp0 , doc (showString "+") , prt 1 exp])
+ EConcat exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "++") , prt 0 exp])
EAbstr binds exp -> prPrec i 0 (concatD [doc (showString "\\") , prt 0 binds , doc (showString "->") , prt 0 exp])
ECTable binds exp -> prPrec i 0 (concatD [doc (showString "\\") , doc (showString "\\") , prt 0 binds , doc (showString "=>") , prt 0 exp])
EProd decl exp -> prPrec i 0 (concatD [prt 0 decl , doc (showString "->") , prt 0 exp])
- ETType exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "=>") , prt 0 exp])
- EConcat exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "++") , prt 0 exp])
- EGlue exp0 exp -> prPrec i 0 (concatD [prt 1 exp0 , doc (showString "+") , prt 0 exp])
+ ETType exp0 exp -> prPrec i 0 (concatD [prt 3 exp0 , doc (showString "=>") , prt 0 exp])
ELet locdefs exp -> prPrec i 0 (concatD [doc (showString "let") , doc (showString "{") , prt 0 locdefs , doc (showString "}") , doc (showString "in") , prt 0 exp])
ELetb locdefs exp -> prPrec i 0 (concatD [doc (showString "let") , prt 0 locdefs , doc (showString "in") , prt 0 exp])
- EWhere exp locdefs -> prPrec i 0 (concatD [prt 1 exp , doc (showString "where") , doc (showString "{") , prt 0 locdefs , doc (showString "}")])
+ EWhere exp locdefs -> prPrec i 0 (concatD [prt 3 exp , doc (showString "where") , doc (showString "{") , prt 0 locdefs , doc (showString "}")])
EEqs equations -> prPrec i 0 (concatD [doc (showString "fn") , doc (showString "{") , prt 0 equations , doc (showString "}")])
- ELString lstring -> prPrec i 4 (concatD [prt 0 lstring])
- ELin id -> prPrec i 2 (concatD [doc (showString "Lin") , prt 0 id])
+ EExample exp str -> prPrec i 0 (concatD [doc (showString "in") , prt 5 exp , prt 0 str])
+ ELString lstring -> prPrec i 6 (concatD [prt 0 lstring])
+ ELin id -> prPrec i 4 (concatD [doc (showString "Lin") , prt 0 id])
prtList es = case es of
[] -> (concatD [])
@@ -381,26 +382,27 @@ instance Print Exp where
instance Print Exps where
prt i e = case e of
NilExp -> prPrec i 0 (concatD [])
- ConsExp exp exps -> prPrec i 0 (concatD [prt 4 exp , prt 0 exps])
+ ConsExp exp exps -> prPrec i 0 (concatD [prt 6 exp , prt 0 exps])
instance Print Patt where
prt i e = case e of
- PW -> prPrec i 1 (concatD [doc (showString "_")])
- PV id -> prPrec i 1 (concatD [prt 0 id])
- PCon id -> prPrec i 1 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) -- H
- PQ id0 id -> prPrec i 1 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id])
- PInt n -> prPrec i 1 (concatD [prt 0 n])
- PFloat n -> prPrec i 1 (concatD [prt 0 n])
- PStr str -> prPrec i 1 (concatD [prt 0 str])
- PR pattasss -> prPrec i 1 (concatD [doc (showString "{") , prt 0 pattasss , doc (showString "}")])
- PTup patttuplecomps -> prPrec i 1 (concatD [doc (showString "<") , prt 0 patttuplecomps , doc (showString ">")])
- PC id patts -> prPrec i 0 (concatD [prt 0 id , prt 0 patts])
- PQC id0 id patts -> prPrec i 0 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id , prt 0 patts])
+ PW -> prPrec i 2 (concatD [doc (showString "_")])
+ PV id -> prPrec i 2 (concatD [prt 0 id])
+ PCon id -> prPrec i 2 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H
+ PQ id0 id -> prPrec i 2 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id])
+ PInt n -> prPrec i 2 (concatD [prt 0 n])
+ PFloat d -> prPrec i 2 (concatD [prt 0 d])
+ PStr str -> prPrec i 2 (concatD [prt 0 str])
+ PR pattasss -> prPrec i 2 (concatD [doc (showString "{") , prt 0 pattasss , doc (showString "}")])
+ PTup patttuplecomps -> prPrec i 2 (concatD [doc (showString "<") , prt 0 patttuplecomps , doc (showString ">")])
+ PC id patts -> prPrec i 1 (concatD [prt 0 id , prt 0 patts])
+ PQC id0 id patts -> prPrec i 1 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id , prt 0 patts])
+ PDisj patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "|") , prt 1 patt])
prtList es = case es of
- [x] -> (concatD [prt 1 x])
- x:xs -> (concatD [prt 1 x , prt 0 xs])
+ [x] -> (concatD [prt 2 x])
+ x:xs -> (concatD [prt 2 x , prt 0 xs])
instance Print PattAss where
prt i e = case e of
@@ -426,14 +428,6 @@ instance Print Sort where
Sort_Strs -> prPrec i 0 (concatD [doc (showString "Strs")])
-instance Print PattAlt where
- prt i e = case e of
- AltP patt -> prPrec i 0 (concatD [prt 0 patt])
-
- prtList es = case es of
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString "|") , prt 0 xs])
-
instance Print Bind where
prt i e = case e of
BIdent id -> prPrec i 0 (concatD [prt 0 id])
@@ -447,7 +441,7 @@ instance Print Bind where
instance Print Decl where
prt i e = case e of
DDec binds exp -> prPrec i 0 (concatD [doc (showString "(") , prt 0 binds , doc (showString ":") , prt 0 exp , doc (showString ")")])
- DExp exp -> prPrec i 0 (concatD [prt 2 exp])
+ DExp exp -> prPrec i 0 (concatD [prt 4 exp])
instance Print TupleComp where
@@ -470,7 +464,7 @@ instance Print PattTupleComp where
instance Print Case where
prt i e = case e of
- Case pattalts exp -> prPrec i 0 (concatD [prt 0 pattalts , doc (showString "=>") , prt 0 exp])
+ Case patt exp -> prPrec i 0 (concatD [prt 0 patt , doc (showString "=>") , prt 0 exp])
prtList es = case es of
[x] -> (concatD [prt 0 x])
@@ -497,7 +491,7 @@ instance Print Altern where
instance Print DDecl where
prt i e = case e of
DDDec binds exp -> prPrec i 0 (concatD [doc (showString "(") , prt 0 binds , doc (showString ":") , prt 0 exp , doc (showString ")")])
- DDExp exp -> prPrec i 0 (concatD [prt 4 exp])
+ DDExp exp -> prPrec i 0 (concatD [prt 6 exp])
prtList es = case es of
[] -> (concatD [])
diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs
index 00e7c0c56..cfd8ae827 100644
--- a/src/GF/Source/SourceToGrammar.hs
+++ b/src/GF/Source/SourceToGrammar.hs
@@ -517,6 +517,24 @@ transSort :: Sort -> Err String
transSort x = case x of
_ -> return $ printTree x
+transPatts :: Patt -> Err [G.Patt]
+transPatts p = case p of
+ PDisj p1 p2 -> liftM2 (++) (transPatts p1) (transPatts p2)
+ PC id patts -> liftM (map (G.PC id) . combinations) $ mapM transPatts patts
+ PR pattasss -> do
+ let (lss,ps) = unzip [(ls,p) | PA ls p <- pattasss]
+ ls = map LIdent $ concat lss
+ ps0 <- mapM transPatts ps
+ let ps' = combinations ps0
+ lss' <- mapM trLabel ls
+ let rss = map (zip lss') ps'
+ return $ map G.PR rss
+ PTup pcs -> do
+ ps0 <- mapM transPatts [e | PTComp e <- pcs]
+ let ps' = combinations ps0
+ return $ map (G.PR . M.tuple2recordPatt) ps'
+ _ -> liftM singleton $ transPatt p
+
transPatt :: Patt -> Err G.Patt
transPatt x = case x of
PW -> return G.wildPatt
@@ -535,6 +553,7 @@ transPatt x = case x of
PQ id0 id -> liftM3 G.PP (transIdent id0) (transIdent id) (return [])
PQC id0 id patts ->
liftM3 G.PP (transIdent id0) (transIdent id) (mapM transPatt patts)
+ PDisj _ _ -> Bad $ "not allowed pattern" +++ printTree x
transBind :: Bind -> Err Ident
transBind x = case x of
@@ -553,8 +572,8 @@ transCases :: [Case] -> Err [G.Case]
transCases = liftM concat . mapM transCase
transCase :: Case -> Err [G.Case]
-transCase (Case pattalts exp) = do
- patts <- mapM transPatt [p | AltP p <- pattalts]
+transCase (Case p exp) = do
+ patts <- transPatts p
exp' <- transExp exp
return [(p,exp') | p <- patts]