Agda 2.2.8 → 2.2.10
raw patch · 169 files changed
+8483/−5697 lines, 169 filesdep +epicdep +haskell-src-extsdep −Cabaldep −haskell-srcdep ~QuickCheckdep ~basedep ~haskelinePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: epic, haskell-src-exts
Dependencies removed: Cabal, haskell-src
Dependency ranges changed: QuickCheck, base, haskeline, mtl, syb
API changes (from Hackage documentation)
- Agda.Auto.NarrowingSearch: instance (Trav a blk) => Trav (MM a blk) blk
- Agda.Auto.SearchControl: instance (Trav a blk) => Trav [a] blk
- Agda.Interaction.GhciTop: includeDirectories :: Interaction -> Maybe [FilePath]
- Agda.Interaction.GhciTop: instance (LowerMeta a) => LowerMeta (Arg a)
- Agda.Interaction.GhciTop: instance (LowerMeta a) => LowerMeta (Named name a)
- Agda.Interaction.GhciTop: instance (LowerMeta a) => LowerMeta [a]
- Agda.Interaction.GhciTop: instance (Pretty a) => Pretty (Lisp a)
- Agda.Interaction.GhciTop: instance (Pretty a) => Show (Lisp a)
- Agda.Interaction.MakeCase: prettySplitError :: SplitError -> TCM Doc
- Agda.Syntax.Abstract: instance (Data e) => Data (Pattern' e)
- Agda.Syntax.Abstract: instance (KillRange e) => KillRange (Pattern' e)
- Agda.Syntax.Abstract: instance (Show e) => Show (Pattern' e)
- Agda.Syntax.Common: instance (Data e) => Data (Arg e)
- Agda.Syntax.Common: instance (Eq a) => Eq (Arg a)
- Agda.Syntax.Common: instance (HasRange a) => HasRange (Arg a)
- Agda.Syntax.Common: instance (HasRange a) => HasRange (Named name a)
- Agda.Syntax.Common: instance (KillRange a) => KillRange (Arg a)
- Agda.Syntax.Common: instance (KillRange a) => KillRange (Named name a)
- Agda.Syntax.Common: instance (Ord e) => Ord (Arg e)
- Agda.Syntax.Common: instance (Show a) => Show (Arg a)
- Agda.Syntax.Common: instance (Show a) => Show (Named String a)
- Agda.Syntax.Common: instance (Sized a) => Sized (Arg a)
- Agda.Syntax.Common: instance (Sized a) => Sized (Named name a)
- Agda.Syntax.Concrete.Pretty: instance (Pretty e) => Pretty (Arg e)
- Agda.Syntax.Concrete.Pretty: instance (Pretty e) => Pretty (Named String e)
- Agda.Syntax.Internal: instance (Data a) => Data (Abs a)
- Agda.Syntax.Internal: instance (Data a) => Data (Tele a)
- Agda.Syntax.Internal: instance (Data t) => Data (Blocked t)
- Agda.Syntax.Internal: instance (Eq a) => Eq (Abs a)
- Agda.Syntax.Internal: instance (Eq a) => Eq (Tele a)
- Agda.Syntax.Internal: instance (Eq t) => Eq (Blocked t)
- Agda.Syntax.Internal: instance (KillRange a) => KillRange (Abs a)
- Agda.Syntax.Internal: instance (KillRange a) => KillRange (Blocked a)
- Agda.Syntax.Internal: instance (KillRange a) => KillRange (Tele a)
- Agda.Syntax.Internal: instance (Ord a) => Ord (Abs a)
- Agda.Syntax.Internal: instance (Ord a) => Ord (Tele a)
- Agda.Syntax.Internal: instance (Ord t) => Ord (Blocked t)
- Agda.Syntax.Internal: instance (Show a) => Show (Abs a)
- Agda.Syntax.Internal: instance (Show a) => Show (Tele a)
- Agda.Syntax.Internal: instance (Show t) => Show (Blocked t)
- Agda.Syntax.Internal: instance (Sized a) => Sized (Abs a)
- Agda.Syntax.Internal.Generic: instance (TermLike a) => TermLike (Abs a)
- Agda.Syntax.Internal.Generic: instance (TermLike a) => TermLike (Arg a)
- Agda.Syntax.Internal.Generic: instance (TermLike a) => TermLike [a]
- Agda.Syntax.Position: instance (HasRange a) => HasRange (Maybe a)
- Agda.Syntax.Position: instance (HasRange a) => HasRange [a]
- Agda.Syntax.Position: instance (KillRange a) => KillRange (Maybe a)
- Agda.Syntax.Position: instance (KillRange a) => KillRange [a]
- Agda.Syntax.Strict: instance (Strict a) => Strict (Abs a)
- Agda.Syntax.Strict: instance (Strict a) => Strict (Arg a)
- Agda.Syntax.Strict: instance (Strict a) => Strict [a]
- Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] (ToConcrete a c) => ToConcrete (Arg a) (Arg c)
- Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] (ToConcrete a c) => ToConcrete (Named name a) (Named name c)
- Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] (ToConcrete a c) => ToConcrete [a] [c]
- Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] (ToAbstract c a) => ToAbstract (Arg c) (Arg a)
- Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] (ToAbstract c a) => ToAbstract (Maybe c) (Maybe a)
- Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] (ToAbstract c a) => ToAbstract (Named name c) (Named name a)
- Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] (ToAbstract c a) => ToAbstract (Pattern' c) (Pattern' a)
- Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] (ToAbstract c a) => ToAbstract [c] [a]
- Agda.Syntax.Translation.InternalToAbstract: instance (DotVars a) => DotVars (Arg a)
- Agda.Syntax.Translation.InternalToAbstract: instance (DotVars a) => DotVars (Named s a)
- Agda.Syntax.Translation.InternalToAbstract: instance (DotVars a) => DotVars [a]
- Agda.Syntax.Translation.InternalToAbstract: instance (Reify i a) => Reify (Abs i) (Name, a)
- Agda.Syntax.Translation.InternalToAbstract: instance (Reify i a) => Reify (Arg i) (Arg a)
- Agda.Syntax.Translation.InternalToAbstract: instance (Reify i a) => Reify [i] [a]
- Agda.Termination.CallGraph: instance (Eq meta) => Eq (CallGraph meta)
- Agda.Termination.CallGraph: instance (Show meta) => Pretty (CallGraph meta)
- Agda.Termination.CallGraph: instance (Show meta) => Show (CallGraph meta)
- Agda.Termination.Matrix: instance (CoArbitrary i) => CoArbitrary (MIx i)
- Agda.Termination.Matrix: instance (CoArbitrary i) => CoArbitrary (Size i)
- Agda.Termination.Matrix: instance (Eq i) => Eq (MIx i)
- Agda.Termination.Matrix: instance (Eq i) => Eq (Size i)
- Agda.Termination.Matrix: instance (Ix i) => Ix (MIx i)
- Agda.Termination.Matrix: instance (Ord i) => Ord (MIx i)
- Agda.Termination.Matrix: instance (Show i) => Show (MIx i)
- Agda.Termination.Matrix: instance (Show i) => Show (Size i)
- Agda.Termination.SparseMatrix: instance (CoArbitrary i) => CoArbitrary (MIx i)
- Agda.Termination.SparseMatrix: instance (CoArbitrary i) => CoArbitrary (Size i)
- Agda.Termination.SparseMatrix: instance (Eq i) => Eq (MIx i)
- Agda.Termination.SparseMatrix: instance (Eq i) => Eq (Size i)
- Agda.Termination.SparseMatrix: instance (Ix i) => Ix (MIx i)
- Agda.Termination.SparseMatrix: instance (Ord i) => Ord (MIx i)
- Agda.Termination.SparseMatrix: instance (Ord i) => Ord (Size i)
- Agda.Termination.SparseMatrix: instance (Show i) => Show (MIx i)
- Agda.Termination.SparseMatrix: instance (Show i) => Show (Size i)
- Agda.TypeChecking.Abstract: instance (AbstractTerm a) => AbstractTerm (Arg a)
- Agda.TypeChecking.Abstract: instance (AbstractTerm a) => AbstractTerm [a]
- Agda.TypeChecking.CompiledClause: instance (Data c) => Data (Case c)
- Agda.TypeChecking.CompiledClause: instance (Monoid m) => Monoid (Case m)
- Agda.TypeChecking.CompiledClause: instance (Pretty a) => Pretty (Case a)
- Agda.TypeChecking.CompiledClause: instance (Pretty a) => Show (Case a)
- Agda.TypeChecking.Coverage.Match: instance (Monoid a) => Monoid (Match a)
- Agda.TypeChecking.DisplayForm: instance (Match a) => Match (Arg a)
- Agda.TypeChecking.DisplayForm: instance (Match a) => Match [a]
- Agda.TypeChecking.Free: instance (Free a) => Free (Abs a)
- Agda.TypeChecking.Free: instance (Free a) => Free (Arg a)
- Agda.TypeChecking.Free: instance (Free a) => Free (Tele a)
- Agda.TypeChecking.Free: instance (Free a) => Free [a]
- Agda.TypeChecking.MetaVars.Occurs: instance (Occurs a) => Occurs (Abs a)
- Agda.TypeChecking.MetaVars.Occurs: instance (Occurs a) => Occurs (Arg a)
- Agda.TypeChecking.MetaVars.Occurs: instance (Occurs a) => Occurs [a]
- Agda.TypeChecking.Monad.Base: instance (Data a) => Data (Closure a)
- Agda.TypeChecking.Monad.Base: instance (Data a) => Data (Open a)
- Agda.TypeChecking.Monad.Base: instance (Data pf) => Data (Builtin pf)
- Agda.TypeChecking.Monad.Base: instance (HasFresh i FreshThings) => HasFresh i TCState
- Agda.TypeChecking.Monad.Base: instance (HasRange a) => HasRange (Closure a)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => Applicative (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => Functor (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => Monad (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => MonadIO (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => MonadReader TCEnv (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => MonadState TCState (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (MonadIO m) => MonadTCM (TCMT m)
- Agda.TypeChecking.Monad.Base: instance (Show a) => Show (Closure a)
- Agda.TypeChecking.Monad.Base: instance (Show a) => Show (Open a)
- Agda.TypeChecking.Monad.Base: instance (Show pf) => Show (Builtin pf)
- Agda.TypeChecking.Monad.Exception: instance (Functor f) => Functor (ExceptionT err f)
- Agda.TypeChecking.Polarity: instance (HasPolarity a) => HasPolarity (Abs a)
- Agda.TypeChecking.Polarity: instance (HasPolarity a) => HasPolarity (Arg a)
- Agda.TypeChecking.Polarity: instance (HasPolarity a) => HasPolarity [a]
- Agda.TypeChecking.Positivity: instance (ComputeOccurrences a) => ComputeOccurrences (Abs a)
- Agda.TypeChecking.Positivity: instance (ComputeOccurrences a) => ComputeOccurrences (Arg a)
- Agda.TypeChecking.Positivity: instance (ComputeOccurrences a) => ComputeOccurrences (Tele a)
- Agda.TypeChecking.Positivity: instance (ComputeOccurrences a) => ComputeOccurrences [a]
- Agda.TypeChecking.Pretty: instance (PrettyTCM a) => PrettyTCM (Blocked a)
- Agda.TypeChecking.Pretty: instance (PrettyTCM a) => PrettyTCM (Closure a)
- Agda.TypeChecking.Pretty: instance (PrettyTCM a) => PrettyTCM [a]
- Agda.TypeChecking.Primitive: abstractFromType :: (MonadTCM tcm) => tcm Type -> tcm PrimitiveImpl
- Agda.TypeChecking.Primitive: abstractPrim :: (MonadTCM tcm, PrimType a) => a -> tcm PrimitiveImpl
- Agda.TypeChecking.Primitive: instance (PrimTerm a) => PrimTerm (IO a)
- Agda.TypeChecking.Primitive: instance (PrimTerm a) => PrimTerm [a]
- Agda.TypeChecking.Primitive: instance (PrimTerm a) => PrimType a
- Agda.TypeChecking.Reduce: instance (Instantiate a) => Instantiate (Blocked a)
- Agda.TypeChecking.Reduce: instance (Instantiate a) => Instantiate (Closure a)
- Agda.TypeChecking.Reduce: instance (Instantiate t) => Instantiate (Abs t)
- Agda.TypeChecking.Reduce: instance (Instantiate t) => Instantiate (Arg t)
- Agda.TypeChecking.Reduce: instance (Instantiate t) => Instantiate [t]
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Builtin a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Case a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Closure a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Maybe a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Open a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull a) => InstantiateFull (Tele a)
- Agda.TypeChecking.Reduce: instance (InstantiateFull t) => InstantiateFull (Abs t)
- Agda.TypeChecking.Reduce: instance (InstantiateFull t) => InstantiateFull (Arg t)
- Agda.TypeChecking.Reduce: instance (InstantiateFull t) => InstantiateFull [t]
- Agda.TypeChecking.Reduce: instance (Normalise a) => Normalise (Closure a)
- Agda.TypeChecking.Reduce: instance (Normalise a) => Normalise (Maybe a)
- Agda.TypeChecking.Reduce: instance (Normalise a) => Normalise (Tele a)
- Agda.TypeChecking.Reduce: instance (Normalise t) => Normalise (Abs t)
- Agda.TypeChecking.Reduce: instance (Normalise t) => Normalise (Arg t)
- Agda.TypeChecking.Reduce: instance (Normalise t) => Normalise [t]
- Agda.TypeChecking.Reduce: instance (Reduce a) => Reduce (Closure a)
- Agda.TypeChecking.Reduce: instance (Reduce t) => Reduce (Abs t)
- Agda.TypeChecking.Reduce: instance (Reduce t) => Reduce (Arg t)
- Agda.TypeChecking.Reduce: instance (Reduce t) => Reduce [t]
- Agda.TypeChecking.Rules.LHS.Problem: instance (Monoid p) => Monoid (Problem' p)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Abs a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Arg a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Builtin a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Case a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Maybe a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj (Open a)
- Agda.TypeChecking.Serialise: instance [incoherent] (EmbPrj a) => EmbPrj [a]
- Agda.TypeChecking.Substitute: instance (Abstract a) => Abstract (Case a)
- Agda.TypeChecking.Substitute: instance (Abstract t) => Abstract (Maybe t)
- Agda.TypeChecking.Substitute: instance (Abstract t) => Abstract [t]
- Agda.TypeChecking.Substitute: instance (Abstract v) => Abstract (Map k v)
- Agda.TypeChecking.Substitute: instance (Apply a) => Apply (Case a)
- Agda.TypeChecking.Substitute: instance (Apply t) => Apply (Blocked t)
- Agda.TypeChecking.Substitute: instance (Apply t) => Apply (Maybe t)
- Agda.TypeChecking.Substitute: instance (Apply t) => Apply [t]
- Agda.TypeChecking.Substitute: instance (Apply v) => Apply (Map k v)
- Agda.TypeChecking.Substitute: instance (Raise a) => Raise (Tele a)
- Agda.TypeChecking.Substitute: instance (Raise t) => Raise (Abs t)
- Agda.TypeChecking.Substitute: instance (Raise t) => Raise (Arg t)
- Agda.TypeChecking.Substitute: instance (Raise t) => Raise (Blocked t)
- Agda.TypeChecking.Substitute: instance (Raise t) => Raise (Maybe t)
- Agda.TypeChecking.Substitute: instance (Raise t) => Raise [t]
- Agda.TypeChecking.Substitute: instance (Raise v) => Raise (Map k v)
- Agda.TypeChecking.Substitute: instance (Subst a) => Apply (Tele a)
- Agda.TypeChecking.Substitute: instance (Subst a) => Subst (Abs a)
- Agda.TypeChecking.Substitute: instance (Subst a) => Subst (Arg a)
- Agda.TypeChecking.Substitute: instance (Subst a) => Subst (Maybe a)
- Agda.TypeChecking.Substitute: instance (Subst a) => Subst (Tele a)
- Agda.TypeChecking.Substitute: instance (Subst a) => Subst [a]
- Agda.TypeChecking.Substitute: instance (Subst t) => Subst (Blocked t)
- Agda.TypeChecking.Test.Generators: instance (GenC a) => GenC (Abs a)
- Agda.TypeChecking.Test.Generators: instance (GenC a) => GenC (Arg a)
- Agda.TypeChecking.Test.Generators: instance (GenC a) => GenC (SizedList a)
- Agda.TypeChecking.Test.Generators: instance (GenC a) => GenC [a]
- Agda.TypeChecking.Test.Generators: instance (KillVar a) => KillVar (Abs a)
- Agda.TypeChecking.Test.Generators: instance (KillVar a) => KillVar (Arg a)
- Agda.TypeChecking.Test.Generators: instance (KillVar a) => KillVar [a]
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC (Abs a) (Abs b)
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC (Arg a) (Arg b)
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC (Blocked a) (Blocked b)
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC (NoType a) b
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC (YesType a) b
- Agda.TypeChecking.Test.Generators: instance (ShrinkC a b) => ShrinkC [a] [b]
- Agda.Utils.Monad: instance (Error e, Monad m) => Applicative (ErrorT e m)
- Agda.Utils.Monad: instance (Monad m) => Applicative (ReaderT env m)
- Agda.Utils.Monad: instance (Monad m) => Applicative (StateT s m)
- Agda.Utils.Monad: instance (Monoid o, Monad m) => Applicative (WriterT o m)
- Agda.Utils.Monad: instance Applicative (Reader env)
- Agda.Utils.Monad: instance Applicative (State s)
- Agda.Utils.SemiRing: instance (SemiRing a) => SemiRing (Maybe a)
+ Agda.Auto.NarrowingSearch: instance Trav a blk => Trav (MM a blk) blk
+ Agda.Auto.SearchControl: instance Trav a blk => Trav [a] blk
+ Agda.Compiler.Epic.AuxAST: App :: Var -> [Expr] -> Expr
+ Agda.Compiler.Epic.AuxAST: BrInt :: Int -> Expr -> Branch
+ Agda.Compiler.Epic.AuxAST: Branch :: Tag -> QName -> [Var] -> Expr -> Branch
+ Agda.Compiler.Epic.AuxAST: Case :: Expr -> [Branch] -> Expr
+ Agda.Compiler.Epic.AuxAST: Con :: Tag -> QName -> [Expr] -> Expr
+ Agda.Compiler.Epic.AuxAST: Default :: Expr -> Branch
+ Agda.Compiler.Epic.AuxAST: EpicFun :: Var -> Comment -> String -> Fun
+ Agda.Compiler.Epic.AuxAST: Fun :: Inline -> Var -> Comment -> [Var] -> Expr -> Fun
+ Agda.Compiler.Epic.AuxAST: IMPOSSIBLE :: Expr
+ Agda.Compiler.Epic.AuxAST: If :: Expr -> Expr -> Expr -> Expr
+ Agda.Compiler.Epic.AuxAST: LChar :: Char -> Lit
+ Agda.Compiler.Epic.AuxAST: LFloat :: Double -> Lit
+ Agda.Compiler.Epic.AuxAST: LInt :: Integer -> Lit
+ Agda.Compiler.Epic.AuxAST: LString :: String -> Lit
+ Agda.Compiler.Epic.AuxAST: Lam :: Var -> Expr -> Expr
+ Agda.Compiler.Epic.AuxAST: Lazy :: Expr -> Expr
+ Agda.Compiler.Epic.AuxAST: Let :: Var -> Expr -> Expr -> Expr
+ Agda.Compiler.Epic.AuxAST: Lit :: Lit -> Expr
+ Agda.Compiler.Epic.AuxAST: UNIT :: Expr
+ Agda.Compiler.Epic.AuxAST: Var :: Var -> Expr
+ Agda.Compiler.Epic.AuxAST: apps :: Var -> [Expr] -> Expr
+ Agda.Compiler.Epic.AuxAST: brExpr :: Branch -> Expr
+ Agda.Compiler.Epic.AuxAST: brInt :: Branch -> Int
+ Agda.Compiler.Epic.AuxAST: brName :: Branch -> QName
+ Agda.Compiler.Epic.AuxAST: brTag :: Branch -> Tag
+ Agda.Compiler.Epic.AuxAST: brVars :: Branch -> [Var]
+ Agda.Compiler.Epic.AuxAST: data Branch
+ Agda.Compiler.Epic.AuxAST: data Expr
+ Agda.Compiler.Epic.AuxAST: data Fun
+ Agda.Compiler.Epic.AuxAST: data Lit
+ Agda.Compiler.Epic.AuxAST: funArgs :: Fun -> [Var]
+ Agda.Compiler.Epic.AuxAST: funComment :: Fun -> Comment
+ Agda.Compiler.Epic.AuxAST: funEpicCode :: Fun -> String
+ Agda.Compiler.Epic.AuxAST: funExpr :: Fun -> Expr
+ Agda.Compiler.Epic.AuxAST: funInline :: Fun -> Inline
+ Agda.Compiler.Epic.AuxAST: funName :: Fun -> Var
+ Agda.Compiler.Epic.AuxAST: fv :: Expr -> [Var]
+ Agda.Compiler.Epic.AuxAST: instance Eq Branch
+ Agda.Compiler.Epic.AuxAST: instance Eq Expr
+ Agda.Compiler.Epic.AuxAST: instance Eq Fun
+ Agda.Compiler.Epic.AuxAST: instance Eq Lit
+ Agda.Compiler.Epic.AuxAST: instance Ord Branch
+ Agda.Compiler.Epic.AuxAST: instance Ord Expr
+ Agda.Compiler.Epic.AuxAST: instance Ord Fun
+ Agda.Compiler.Epic.AuxAST: instance Ord Lit
+ Agda.Compiler.Epic.AuxAST: instance Show Branch
+ Agda.Compiler.Epic.AuxAST: instance Show Expr
+ Agda.Compiler.Epic.AuxAST: instance Show Fun
+ Agda.Compiler.Epic.AuxAST: instance Show Lit
+ Agda.Compiler.Epic.AuxAST: pairwiseFilter :: [Bool] -> [a] -> [a]
+ Agda.Compiler.Epic.AuxAST: subst :: Var -> Var -> Expr -> Expr
+ Agda.Compiler.Epic.AuxAST: substBranch :: Var -> Var -> Branch -> Branch
+ Agda.Compiler.Epic.AuxAST: type Comment = String
+ Agda.Compiler.Epic.AuxAST: type Inline = Bool
+ Agda.Compiler.Epic.AuxAST: type Tag = Int
+ Agda.Compiler.Epic.AuxAST: type Var = String
+ Agda.Compiler.Epic.CompileState: CompileState :: Map QName Tag -> [Var] -> Set Var -> Map QName Bool -> Map QName Int -> Maybe QName -> Map QName IrrFilter -> CompileState
+ Agda.Compiler.Epic.CompileState: addDataDecl :: Monad m => [QName] -> Compile m ()
+ Agda.Compiler.Epic.CompileState: addDefName :: Monad m => QName -> Compile m ()
+ Agda.Compiler.Epic.CompileState: conPars :: CompileState -> Map QName Int
+ Agda.Compiler.Epic.CompileState: constructorArity :: (MonadTCM tcm, Num a) => QName -> tcm a
+ Agda.Compiler.Epic.CompileState: data CompileState
+ Agda.Compiler.Epic.CompileState: dataDecls :: CompileState -> Map QName Tag
+ Agda.Compiler.Epic.CompileState: defDelayed :: CompileState -> Map QName Bool
+ Agda.Compiler.Epic.CompileState: definitions :: CompileState -> Set Var
+ Agda.Compiler.Epic.CompileState: epicError :: MonadTCM m => String -> Compile m a
+ Agda.Compiler.Epic.CompileState: getConPar :: MonadTCM m => QName -> Compile m Int
+ Agda.Compiler.Epic.CompileState: getConstrTag :: Monad m => QName -> Compile m Tag
+ Agda.Compiler.Epic.CompileState: getDelayed :: MonadTCM m => QName -> Compile m Bool
+ Agda.Compiler.Epic.CompileState: getIrrFilter :: Monad m => QName -> Compile m IrrFilter
+ Agda.Compiler.Epic.CompileState: getMain :: MonadTCM m => Compile m Var
+ Agda.Compiler.Epic.CompileState: initCompileState :: CompileState
+ Agda.Compiler.Epic.CompileState: instance Show CompileState
+ Agda.Compiler.Epic.CompileState: irrFilters :: CompileState -> Map QName IrrFilter
+ Agda.Compiler.Epic.CompileState: mainName :: CompileState -> Maybe QName
+ Agda.Compiler.Epic.CompileState: nameSupply :: CompileState -> [Var]
+ Agda.Compiler.Epic.CompileState: newName :: Monad m => Compile m Var
+ Agda.Compiler.Epic.CompileState: putConPar :: Monad m => QName -> Int -> Compile m ()
+ Agda.Compiler.Epic.CompileState: putDelayed :: Monad m => QName -> Bool -> Compile m ()
+ Agda.Compiler.Epic.CompileState: putIrrFilter :: Monad m => QName -> IrrFilter -> Compile m ()
+ Agda.Compiler.Epic.CompileState: putMain :: Monad m => QName -> Compile m ()
+ Agda.Compiler.Epic.CompileState: replaceAt :: Int -> [a] -> [a] -> [a]
+ Agda.Compiler.Epic.CompileState: topBindings :: Monad m => Compile m (Set Var)
+ Agda.Compiler.Epic.CompileState: type Compile = StateT CompileState
+ Agda.Compiler.Epic.CompileState: type IrrFilter = [Bool]
+ Agda.Compiler.Epic.CompileState: unqname :: QName -> Var
+ Agda.Compiler.Epic.Compiler: compilerMain :: Interface -> TCM ()
+ Agda.Compiler.Epic.ConstructorIrrelevancy: constrIrr :: MonadTCM m => [Fun] -> Compile m [Fun]
+ Agda.Compiler.Epic.ConstructorIrrelevancy: irrBranch :: MonadTCM m => Branch -> Compile m Branch
+ Agda.Compiler.Epic.ConstructorIrrelevancy: irrExpr :: MonadTCM m => Expr -> Compile m Expr
+ Agda.Compiler.Epic.ConstructorIrrelevancy: irrFilter :: Type -> IrrFilter
+ Agda.Compiler.Epic.ConstructorIrrelevancy: irrFun :: MonadTCM m => Fun -> Compile m Fun
+ Agda.Compiler.Epic.Epic: prettyEpicFun :: Fun -> String
+ Agda.Compiler.Epic.Erasure: (&&-) :: Relevancy -> Relevancy -> Relevancy
+ Agda.Compiler.Epic.Erasure: DontKnow :: Relevancy
+ Agda.Compiler.Epic.Erasure: ErasureState :: Map Var [Relevancy] -> Map Var Fun -> ErasureState
+ Agda.Compiler.Epic.Erasure: Irr :: Relevancy
+ Agda.Compiler.Epic.Erasure: Rel :: Relevancy
+ Agda.Compiler.Epic.Erasure: data ErasureState
+ Agda.Compiler.Epic.Erasure: data Relevancy
+ Agda.Compiler.Epic.Erasure: erasure :: MonadTCM m => [Fun] -> Compile m [Fun]
+ Agda.Compiler.Epic.Erasure: funs :: ErasureState -> Map Var Fun
+ Agda.Compiler.Epic.Erasure: initiate :: Monad m => Fun -> Erasure m ()
+ Agda.Compiler.Epic.Erasure: instance Eq Relevancy
+ Agda.Compiler.Epic.Erasure: instance Ord Relevancy
+ Agda.Compiler.Epic.Erasure: instance Show Relevancy
+ Agda.Compiler.Epic.Erasure: isIrr :: Relevancy -> Bool
+ Agda.Compiler.Epic.Erasure: isRel :: Relevancy -> Bool
+ Agda.Compiler.Epic.Erasure: relevancies :: ErasureState -> Map Var [Relevancy]
+ Agda.Compiler.Epic.Erasure: relevant :: (Functor m, Monad m) => Var -> Expr -> Erasure m Relevancy
+ Agda.Compiler.Epic.Erasure: step :: (Monad m, Functor m) => Erasure m (Map Var [Relevancy])
+ Agda.Compiler.Epic.Erasure: type Erasure = StateT ErasureState
+ Agda.Compiler.Epic.Forcing: FoldState :: CompiledClauses -> (CompiledClauses -> CompiledClauses) -> [Maybe Term] -> Telescope -> Nat -> FoldState
+ Agda.Compiler.Epic.Forcing: clauseToFix :: FoldState -> CompiledClauses
+ Agda.Compiler.Epic.Forcing: clausesAbove :: FoldState -> CompiledClauses -> CompiledClauses
+ Agda.Compiler.Epic.Forcing: constrType :: MonadTCM m => QName -> Compile m Type
+ Agda.Compiler.Epic.Forcing: data FoldState
+ Agda.Compiler.Epic.Forcing: dataParameters :: MonadTCM m => QName -> Compile m Nat
+ Agda.Compiler.Epic.Forcing: findPosition :: Nat -> [Maybe Term] -> (Nat, Term)
+ Agda.Compiler.Epic.Forcing: foldM' :: Monad m => a -> [b] -> (a -> b -> m a) -> m a
+ Agda.Compiler.Epic.Forcing: insertTele :: MonadTCM m => Int -> Maybe Type -> Term -> Telescope -> Compile m (Telescope, (Type, Type))
+ Agda.Compiler.Epic.Forcing: instance Show FoldState
+ Agda.Compiler.Epic.Forcing: isIn :: MonadTCM m => Nat -> CompiledClauses -> Compile m Bool
+ Agda.Compiler.Epic.Forcing: isInCase :: MonadTCM m => Nat -> (Nat, Case CompiledClauses) -> Compile m Bool
+ Agda.Compiler.Epic.Forcing: isInTerm :: Nat -> Term -> Bool
+ Agda.Compiler.Epic.Forcing: lift2 :: (MonadTrans t, Monad (t1 m), MonadTrans t1, Monad m) => m a -> t (t1 m) a
+ Agda.Compiler.Epic.Forcing: modifyM :: MonadState a m => (a -> m a) -> m ()
+ Agda.Compiler.Epic.Forcing: raiseFromCC :: Nat -> Nat -> CompiledClauses -> CompiledClauses
+ Agda.Compiler.Epic.Forcing: remForced :: MonadTCM m => CompiledClauses -> Telescope -> Compile m CompiledClauses
+ Agda.Compiler.Epic.Forcing: removeForced :: MonadTCM m => CompiledClauses -> Type -> Compile m CompiledClauses
+ Agda.Compiler.Epic.Forcing: replaceForced :: MonadTCM m => (Nat, Telescope) -> [Nat] -> (CompiledClauses, [Maybe Term]) -> Compile m CompiledClauses
+ Agda.Compiler.Epic.Forcing: substCC :: MonadTCM m => [Nat] -> CompiledClauses -> StateT FoldState (Compile m) CompiledClauses
+ Agda.Compiler.Epic.Forcing: substCCBody :: Nat -> Term -> CompiledClauses -> CompiledClauses
+ Agda.Compiler.Epic.Forcing: substsCCBody :: [Term] -> CompiledClauses -> CompiledClauses
+ Agda.Compiler.Epic.Forcing: telePos :: FoldState -> Nat
+ Agda.Compiler.Epic.Forcing: theTelescope :: FoldState -> Telescope
+ Agda.Compiler.Epic.Forcing: unification :: FoldState -> [Maybe Term]
+ Agda.Compiler.Epic.Forcing: unifyI :: MonadTCM m => Telescope -> [Nat] -> Type -> Args -> Args -> Compile m [Maybe Term]
+ Agda.Compiler.Epic.FromAgda: compileClauses :: MonadTCM m => QName -> Int -> CompiledClauses -> Compile m Fun
+ Agda.Compiler.Epic.FromAgda: fromAgda :: MonadTCM m => Maybe Term -> [(QName, Definition)] -> Compile m [Fun]
+ Agda.Compiler.Epic.FromAgda: reverseCCBody :: CompiledClauses -> CompiledClauses
+ Agda.Compiler.Epic.FromAgda: substLit :: MonadTCM m => Literal -> Compile m Lit
+ Agda.Compiler.Epic.FromAgda: substTerm :: MonadTCM m => [Var] -> Term -> Compile m Expr
+ Agda.Compiler.Epic.FromAgda: translateDefn :: MonadTCM m => Maybe Term -> (QName, Definition) -> Compile m (Maybe Fun)
+ Agda.Compiler.Epic.LambdaLift: lambdaLift :: MonadTCM m => [Fun] -> Compile m [Fun]
+ Agda.Compiler.Epic.LambdaLift: lambdaLiftExpr :: MonadTCM m => Expr -> LL (Compile m) Expr
+ Agda.Compiler.Epic.LambdaLift: lambdaLiftFun :: MonadTCM m => Fun -> LL (Compile m) Fun
+ Agda.Compiler.Epic.LambdaLift: type LL = WriterT [Fun]
+ Agda.Compiler.Epic.NatDetection: argIsDef :: Type -> QName -> Bool
+ Agda.Compiler.Epic.NatDetection: getNatish :: MonadTCM m => Compile m [(IrrFilter, [QName])]
+ Agda.Compiler.Epic.NatDetection: isRec :: Int -> Type -> QName -> Bool
+ Agda.Compiler.Epic.NatDetection: nrRel :: IrrFilter -> Integer
+ Agda.Compiler.Epic.Primitive: PrimTF :: Map QName Var -> (Expr -> [Branch] -> Expr) -> PrimTransform
+ Agda.Compiler.Epic.Primitive: boolPrimTF :: [QName] -> PrimTransform
+ Agda.Compiler.Epic.Primitive: data PrimTransform
+ Agda.Compiler.Epic.Primitive: getBuiltins :: MonadTCM m => Compile m [PrimTransform]
+ Agda.Compiler.Epic.Primitive: mapCon :: PrimTransform -> Map QName Var
+ Agda.Compiler.Epic.Primitive: natPrimTF :: IrrFilter -> [QName] -> PrimTransform
+ Agda.Compiler.Epic.Primitive: primExpr :: MonadTCM m => [PrimTransform] -> Expr -> Compile m Expr
+ Agda.Compiler.Epic.Primitive: primFun :: MonadTCM m => [PrimTransform] -> Fun -> Compile m Fun
+ Agda.Compiler.Epic.Primitive: primLists :: MonadTCM m => Compile m [Fun]
+ Agda.Compiler.Epic.Primitive: primNatCaseZD :: Expr -> Expr -> Expr -> Expr
+ Agda.Compiler.Epic.Primitive: primNatCaseZS :: Expr -> Expr -> Var -> Expr -> Expr
+ Agda.Compiler.Epic.Primitive: primitivise :: MonadTCM m => [Fun] -> Compile m [Fun]
+ Agda.Compiler.Epic.Primitive: translateCase :: PrimTransform -> Expr -> [Branch] -> Expr
+ Agda.Compiler.MAlonzo.Compiler: outFile_ :: TCM FilePath
+ Agda.Compiler.MAlonzo.Compiler: rteModule :: Module
+ Agda.Compiler.MAlonzo.Compiler: term' :: Arg Term -> ReaderT Nat TCM Exp
+ Agda.Compiler.MAlonzo.Misc: mazRTE :: ModuleName
+ Agda.Interaction.GhciTop: Dependent :: Independence
+ Agda.Interaction.GhciTop: Epic :: Backend
+ Agda.Interaction.GhciTop: Independent :: (Maybe [FilePath]) -> Independence
+ Agda.Interaction.GhciTop: MAlonzo :: Backend
+ Agda.Interaction.GhciTop: data Backend
+ Agda.Interaction.GhciTop: data Independence
+ Agda.Interaction.GhciTop: independence :: Interaction -> Independence
+ Agda.Interaction.GhciTop: instance LowerMeta a => LowerMeta (Arg a)
+ Agda.Interaction.GhciTop: instance LowerMeta a => LowerMeta (Named name a)
+ Agda.Interaction.GhciTop: instance LowerMeta a => LowerMeta [a]
+ Agda.Interaction.GhciTop: instance Pretty a => Pretty (Lisp a)
+ Agda.Interaction.GhciTop: instance Pretty a => Show (Lisp a)
+ Agda.Interaction.Options: optEpicCompile :: CommandLineOptions -> Bool
+ Agda.Interaction.Options: optEpicFlags :: CommandLineOptions -> [String]
+ Agda.Interaction.Options: optIrrelevantProjections :: PragmaOptions -> Bool
+ Agda.Interaction.Options: optWithoutK :: PragmaOptions -> Bool
+ Agda.Syntax.Abstract: CompiledEpicPragma :: QName -> String -> Pragma
+ Agda.Syntax.Abstract: instance Data e => Data (Pattern' e)
+ Agda.Syntax.Abstract: instance KillRange Relevance
+ Agda.Syntax.Abstract: instance KillRange e => KillRange (Pattern' e)
+ Agda.Syntax.Abstract: instance Show e => Show (Pattern' e)
+ Agda.Syntax.Common: instance Data e => Data (Arg e)
+ Agda.Syntax.Common: instance Eq a => Eq (Arg a)
+ Agda.Syntax.Common: instance HasRange a => HasRange (Arg a)
+ Agda.Syntax.Common: instance HasRange a => HasRange (Named name a)
+ Agda.Syntax.Common: instance KillRange a => KillRange (Arg a)
+ Agda.Syntax.Common: instance KillRange a => KillRange (Named name a)
+ Agda.Syntax.Common: instance Ord e => Ord (Arg e)
+ Agda.Syntax.Common: instance Show a => Show (Arg a)
+ Agda.Syntax.Common: instance Show a => Show (Named String a)
+ Agda.Syntax.Common: instance Sized a => Sized (Arg a)
+ Agda.Syntax.Common: instance Sized a => Sized (Named name a)
+ Agda.Syntax.Common: irrelevant :: Bool -> Relevance
+ Agda.Syntax.Concrete: CompiledEpicPragma :: !Range -> QName -> String -> Pragma
+ Agda.Syntax.Concrete.Pretty: instance Pretty e => Pretty (Arg e)
+ Agda.Syntax.Concrete.Pretty: instance Pretty e => Pretty (Named String e)
+ Agda.Syntax.Internal: instance Data a => Data (Abs a)
+ Agda.Syntax.Internal: instance Data a => Data (Tele a)
+ Agda.Syntax.Internal: instance Data t => Data (Blocked t)
+ Agda.Syntax.Internal: instance Eq a => Eq (Abs a)
+ Agda.Syntax.Internal: instance Eq a => Eq (Tele a)
+ Agda.Syntax.Internal: instance Eq t => Eq (Blocked t)
+ Agda.Syntax.Internal: instance KillRange a => KillRange (Abs a)
+ Agda.Syntax.Internal: instance KillRange a => KillRange (Blocked a)
+ Agda.Syntax.Internal: instance KillRange a => KillRange (Tele a)
+ Agda.Syntax.Internal: instance Ord a => Ord (Abs a)
+ Agda.Syntax.Internal: instance Ord a => Ord (Tele a)
+ Agda.Syntax.Internal: instance Ord t => Ord (Blocked t)
+ Agda.Syntax.Internal: instance Show a => Show (Abs a)
+ Agda.Syntax.Internal: instance Show a => Show (Tele a)
+ Agda.Syntax.Internal: instance Show t => Show (Blocked t)
+ Agda.Syntax.Internal: instance Sized a => Sized (Abs a)
+ Agda.Syntax.Internal.Generic: instance TermLike a => TermLike (Abs a)
+ Agda.Syntax.Internal.Generic: instance TermLike a => TermLike (Arg a)
+ Agda.Syntax.Internal.Generic: instance TermLike a => TermLike [a]
+ Agda.Syntax.Parser.Tokens: KwCOMPILED_EPIC :: Keyword
+ Agda.Syntax.Position: beginningOfFile :: Range -> Range
+ Agda.Syntax.Position: instance HasRange a => HasRange (Maybe a)
+ Agda.Syntax.Position: instance HasRange a => HasRange [a]
+ Agda.Syntax.Position: instance KillRange a => KillRange (Maybe a)
+ Agda.Syntax.Position: instance KillRange a => KillRange [a]
+ Agda.Syntax.Strict: instance Strict a => Strict (Abs a)
+ Agda.Syntax.Strict: instance Strict a => Strict (Arg a)
+ Agda.Syntax.Strict: instance Strict a => Strict [a]
+ Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] ToConcrete a c => ToConcrete (Arg a) (Arg c)
+ Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] ToConcrete a c => ToConcrete (Named name a) (Named name c)
+ Agda.Syntax.Translation.AbstractToConcrete: instance [overlap ok] ToConcrete a c => ToConcrete [a] [c]
+ Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] ToAbstract c a => ToAbstract (Arg c) (Arg a)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] ToAbstract c a => ToAbstract (Maybe c) (Maybe a)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] ToAbstract c a => ToAbstract (Named name c) (Named name a)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] ToAbstract c a => ToAbstract (Pattern' c) (Pattern' a)
+ Agda.Syntax.Translation.ConcreteToAbstract: instance [overlap ok] ToAbstract c a => ToAbstract [c] [a]
+ Agda.Syntax.Translation.InternalToAbstract: instance DotVars a => DotVars (Arg a)
+ Agda.Syntax.Translation.InternalToAbstract: instance DotVars a => DotVars (Named s a)
+ Agda.Syntax.Translation.InternalToAbstract: instance DotVars a => DotVars [a]
+ Agda.Syntax.Translation.InternalToAbstract: instance Reify i a => Reify (Abs i) (Name, a)
+ Agda.Syntax.Translation.InternalToAbstract: instance Reify i a => Reify (Arg i) (Arg a)
+ Agda.Syntax.Translation.InternalToAbstract: instance Reify i a => Reify [i] [a]
+ Agda.Termination.CallGraph: instance Eq meta => Eq (CallGraph meta)
+ Agda.Termination.CallGraph: instance Show meta => Pretty (CallGraph meta)
+ Agda.Termination.CallGraph: instance Show meta => Show (CallGraph meta)
+ Agda.Termination.Matrix: instance CoArbitrary i => CoArbitrary (MIx i)
+ Agda.Termination.Matrix: instance CoArbitrary i => CoArbitrary (Size i)
+ Agda.Termination.Matrix: instance Eq i => Eq (MIx i)
+ Agda.Termination.Matrix: instance Eq i => Eq (Size i)
+ Agda.Termination.Matrix: instance Ix i => Ix (MIx i)
+ Agda.Termination.Matrix: instance Ord i => Ord (MIx i)
+ Agda.Termination.Matrix: instance Show i => Show (MIx i)
+ Agda.Termination.Matrix: instance Show i => Show (Size i)
+ Agda.Termination.SparseMatrix: instance CoArbitrary i => CoArbitrary (MIx i)
+ Agda.Termination.SparseMatrix: instance CoArbitrary i => CoArbitrary (Size i)
+ Agda.Termination.SparseMatrix: instance Eq i => Eq (MIx i)
+ Agda.Termination.SparseMatrix: instance Eq i => Eq (Size i)
+ Agda.Termination.SparseMatrix: instance Ix i => Ix (MIx i)
+ Agda.Termination.SparseMatrix: instance Ord i => Ord (MIx i)
+ Agda.Termination.SparseMatrix: instance Ord i => Ord (Size i)
+ Agda.Termination.SparseMatrix: instance Show i => Show (MIx i)
+ Agda.Termination.SparseMatrix: instance Show i => Show (Size i)
+ Agda.TypeChecking.Abstract: instance AbstractTerm a => AbstractTerm (Arg a)
+ Agda.TypeChecking.Abstract: instance AbstractTerm a => AbstractTerm [a]
+ Agda.TypeChecking.CompiledClause: instance Data c => Data (Case c)
+ Agda.TypeChecking.CompiledClause: instance Monoid m => Monoid (Case m)
+ Agda.TypeChecking.CompiledClause: instance Pretty a => Pretty (Case a)
+ Agda.TypeChecking.CompiledClause: instance Pretty a => Show (Case a)
+ Agda.TypeChecking.Coverage: CoinductiveDatatype :: Type -> SplitError
+ Agda.TypeChecking.Coverage: instance PrettyTCM SplitError
+ Agda.TypeChecking.Coverage.Match: instance Monoid a => Monoid (Match a)
+ Agda.TypeChecking.DisplayForm: instance Match a => Match (Arg a)
+ Agda.TypeChecking.DisplayForm: instance Match a => Match [a]
+ Agda.TypeChecking.Free: instance Free a => Free (Abs a)
+ Agda.TypeChecking.Free: instance Free a => Free (Arg a)
+ Agda.TypeChecking.Free: instance Free a => Free (Tele a)
+ Agda.TypeChecking.Free: instance Free a => Free [a]
+ Agda.TypeChecking.MetaVars: etaExpandMetaSafe :: MonadTCM tcm => MetaId -> tcm ()
+ Agda.TypeChecking.MetaVars: unblockedTester :: MonadTCM tcm => Type -> tcm Bool
+ Agda.TypeChecking.MetaVars.Occurs: instance Occurs a => Occurs (Abs a)
+ Agda.TypeChecking.MetaVars.Occurs: instance Occurs a => Occurs (Arg a)
+ Agda.TypeChecking.MetaVars.Occurs: instance Occurs a => Occurs [a]
+ Agda.TypeChecking.MetaVars.Occurs: instance Show OccursCtx
+ Agda.TypeChecking.Monad.Base: DefinitionIsIrrelevant :: QName -> TypeError
+ Agda.TypeChecking.Monad.Base: IndexFreeInParameter :: Nat -> [Arg Term] -> TypeError
+ Agda.TypeChecking.Monad.Base: IndexVariablesNotDistinct :: [Arg Term] -> TypeError
+ Agda.TypeChecking.Monad.Base: IndicesNotConstructorApplications :: [Arg Term] -> TypeError
+ Agda.TypeChecking.Monad.Base: MaybeRed :: IsReduced -> a -> MaybeReduced a
+ Agda.TypeChecking.Monad.Base: NotReduced :: IsReduced
+ Agda.TypeChecking.Monad.Base: Reduced :: (Blocked ()) -> IsReduced
+ Agda.TypeChecking.Monad.Base: axEpDef :: Defn -> Maybe EpicCode
+ Agda.TypeChecking.Monad.Base: data IsReduced
+ Agda.TypeChecking.Monad.Base: data MaybeReduced a
+ Agda.TypeChecking.Monad.Base: defRelevance :: Definition -> Relevance
+ Agda.TypeChecking.Monad.Base: envIrrelevant :: TCEnv -> Bool
+ Agda.TypeChecking.Monad.Base: funProjection :: Defn -> Maybe Int
+ Agda.TypeChecking.Monad.Base: ignoreReduced :: MaybeReduced a -> a
+ Agda.TypeChecking.Monad.Base: instance Data a => Data (Closure a)
+ Agda.TypeChecking.Monad.Base: instance Data a => Data (Open a)
+ Agda.TypeChecking.Monad.Base: instance Data pf => Data (Builtin pf)
+ Agda.TypeChecking.Monad.Base: instance Functor MaybeReduced
+ Agda.TypeChecking.Monad.Base: instance HasFresh i FreshThings => HasFresh i TCState
+ Agda.TypeChecking.Monad.Base: instance HasRange a => HasRange (Closure a)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => Applicative (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => Functor (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => Monad (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => MonadIO (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => MonadReader TCEnv (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => MonadState TCState (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance MonadIO m => MonadTCM (TCMT m)
+ Agda.TypeChecking.Monad.Base: instance Show a => Show (Closure a)
+ Agda.TypeChecking.Monad.Base: instance Show a => Show (Open a)
+ Agda.TypeChecking.Monad.Base: instance Show pf => Show (Builtin pf)
+ Agda.TypeChecking.Monad.Base: isReduced :: MaybeReduced a -> IsReduced
+ Agda.TypeChecking.Monad.Base: notReduced :: a -> MaybeReduced a
+ Agda.TypeChecking.Monad.Base: primCompiled :: Defn -> Maybe CompiledClauses
+ Agda.TypeChecking.Monad.Base: reduced :: Blocked a -> MaybeReduced a
+ Agda.TypeChecking.Monad.Base: type EpicCode = String
+ Agda.TypeChecking.Monad.Base: type MaybeReducedArgs = [MaybeReduced (Arg Term)]
+ Agda.TypeChecking.Monad.Exception: instance Functor f => Functor (ExceptionT err f)
+ Agda.TypeChecking.Monad.Signature: addEpicCode :: MonadTCM tcm => QName -> EpicCode -> tcm ()
+ Agda.TypeChecking.Monad.Signature: isProjection :: MonadTCM tcm => QName -> tcm (Maybe Int)
+ Agda.TypeChecking.Monad.Signature: relOfConst :: MonadTCM tcm => QName -> tcm Relevance
+ Agda.TypeChecking.Polarity: instance HasPolarity a => HasPolarity (Abs a)
+ Agda.TypeChecking.Polarity: instance HasPolarity a => HasPolarity (Arg a)
+ Agda.TypeChecking.Polarity: instance HasPolarity a => HasPolarity [a]
+ Agda.TypeChecking.Positivity: instance ComputeOccurrences a => ComputeOccurrences (Abs a)
+ Agda.TypeChecking.Positivity: instance ComputeOccurrences a => ComputeOccurrences (Arg a)
+ Agda.TypeChecking.Positivity: instance ComputeOccurrences a => ComputeOccurrences (Tele a)
+ Agda.TypeChecking.Positivity: instance ComputeOccurrences a => ComputeOccurrences [a]
+ Agda.TypeChecking.Pretty: instance PrettyTCM NamedClause
+ Agda.TypeChecking.Pretty: instance PrettyTCM Relevance
+ Agda.TypeChecking.Pretty: instance PrettyTCM a => PrettyTCM (Blocked a)
+ Agda.TypeChecking.Pretty: instance PrettyTCM a => PrettyTCM (Closure a)
+ Agda.TypeChecking.Pretty: instance PrettyTCM a => PrettyTCM [a]
+ Agda.TypeChecking.Primitive: instance PrimTerm a => PrimTerm (IO a)
+ Agda.TypeChecking.Primitive: instance PrimTerm a => PrimTerm [a]
+ Agda.TypeChecking.Primitive: instance PrimTerm a => PrimType a
+ Agda.TypeChecking.Records: isRecordConstructor :: MonadTCM tcm => QName -> tcm Bool
+ Agda.TypeChecking.Reduce: instance Instantiate a => Instantiate (Blocked a)
+ Agda.TypeChecking.Reduce: instance Instantiate a => Instantiate (Closure a)
+ Agda.TypeChecking.Reduce: instance Instantiate t => Instantiate (Abs t)
+ Agda.TypeChecking.Reduce: instance Instantiate t => Instantiate (Arg t)
+ Agda.TypeChecking.Reduce: instance Instantiate t => Instantiate [t]
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Builtin a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Case a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Closure a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Maybe a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Open a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull a => InstantiateFull (Tele a)
+ Agda.TypeChecking.Reduce: instance InstantiateFull t => InstantiateFull (Abs t)
+ Agda.TypeChecking.Reduce: instance InstantiateFull t => InstantiateFull (Arg t)
+ Agda.TypeChecking.Reduce: instance InstantiateFull t => InstantiateFull [t]
+ Agda.TypeChecking.Reduce: instance Normalise a => Normalise (Closure a)
+ Agda.TypeChecking.Reduce: instance Normalise a => Normalise (Maybe a)
+ Agda.TypeChecking.Reduce: instance Normalise a => Normalise (Tele a)
+ Agda.TypeChecking.Reduce: instance Normalise t => Normalise (Abs t)
+ Agda.TypeChecking.Reduce: instance Normalise t => Normalise (Arg t)
+ Agda.TypeChecking.Reduce: instance Normalise t => Normalise [t]
+ Agda.TypeChecking.Reduce: instance Reduce a => Reduce (Closure a)
+ Agda.TypeChecking.Reduce: instance Reduce t => Reduce (Abs t)
+ Agda.TypeChecking.Reduce: instance Reduce t => Reduce (Arg t)
+ Agda.TypeChecking.Reduce: instance Reduce t => Reduce [t]
+ Agda.TypeChecking.Rules.LHS.Problem: instance Monoid p => Monoid (Problem' p)
+ Agda.TypeChecking.Rules.LHS.Split: wellFormedIndices :: MonadTCM tcm => [Arg Term] -> [Arg Term] -> tcm ()
+ Agda.TypeChecking.Rules.Term: checkArguments' :: ExpandHidden -> Range -> [NamedArg Expr] -> Type -> Type -> Expr -> (Args -> Type -> Constraints -> TCM Term) -> TCM Term
+ Agda.TypeChecking.Rules.Term: forcePi :: MonadTCM tcm => Hiding -> String -> Type -> tcm (Type, Constraints)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Abs a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Arg a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Builtin a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Case a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Maybe a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj (Open a)
+ Agda.TypeChecking.Serialise: instance [incoherent] EmbPrj a => EmbPrj [a]
+ Agda.TypeChecking.Substitute: instance Abstract a => Abstract (Case a)
+ Agda.TypeChecking.Substitute: instance Abstract t => Abstract (Maybe t)
+ Agda.TypeChecking.Substitute: instance Abstract t => Abstract [t]
+ Agda.TypeChecking.Substitute: instance Abstract v => Abstract (Map k v)
+ Agda.TypeChecking.Substitute: instance Apply a => Apply (Case a)
+ Agda.TypeChecking.Substitute: instance Apply t => Apply (Blocked t)
+ Agda.TypeChecking.Substitute: instance Apply t => Apply (Maybe t)
+ Agda.TypeChecking.Substitute: instance Apply t => Apply [t]
+ Agda.TypeChecking.Substitute: instance Apply v => Apply (Map k v)
+ Agda.TypeChecking.Substitute: instance Raise a => Raise (Tele a)
+ Agda.TypeChecking.Substitute: instance Raise t => Raise (Abs t)
+ Agda.TypeChecking.Substitute: instance Raise t => Raise (Arg t)
+ Agda.TypeChecking.Substitute: instance Raise t => Raise (Blocked t)
+ Agda.TypeChecking.Substitute: instance Raise t => Raise (Maybe t)
+ Agda.TypeChecking.Substitute: instance Raise t => Raise [t]
+ Agda.TypeChecking.Substitute: instance Raise v => Raise (Map k v)
+ Agda.TypeChecking.Substitute: instance Subst a => Apply (Tele a)
+ Agda.TypeChecking.Substitute: instance Subst a => Subst (Abs a)
+ Agda.TypeChecking.Substitute: instance Subst a => Subst (Arg a)
+ Agda.TypeChecking.Substitute: instance Subst a => Subst (Maybe a)
+ Agda.TypeChecking.Substitute: instance Subst a => Subst (Tele a)
+ Agda.TypeChecking.Substitute: instance Subst a => Subst [a]
+ Agda.TypeChecking.Substitute: instance Subst t => Subst (Blocked t)
+ Agda.TypeChecking.Telescope: telViewUpTo :: MonadTCM tcm => Int -> Type -> tcm TelView
+ Agda.TypeChecking.Test.Generators: instance GenC a => GenC (Abs a)
+ Agda.TypeChecking.Test.Generators: instance GenC a => GenC (Arg a)
+ Agda.TypeChecking.Test.Generators: instance GenC a => GenC (SizedList a)
+ Agda.TypeChecking.Test.Generators: instance GenC a => GenC [a]
+ Agda.TypeChecking.Test.Generators: instance KillVar a => KillVar (Abs a)
+ Agda.TypeChecking.Test.Generators: instance KillVar a => KillVar (Arg a)
+ Agda.TypeChecking.Test.Generators: instance KillVar a => KillVar [a]
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC (Abs a) (Abs b)
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC (Arg a) (Arg b)
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC (Blocked a) (Blocked b)
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC (NoType a) b
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC (YesType a) b
+ Agda.TypeChecking.Test.Generators: instance ShrinkC a b => ShrinkC [a] [b]
+ Agda.Utils.IO.Locale: stdoutFlush :: IO ()
+ Agda.Utils.List: fastDistinct :: Ord a => [a] -> Bool
+ Agda.Utils.List: prop_distinct_fastDistinct :: [Integer] -> Bool
+ Agda.Utils.SemiRing: instance SemiRing a => SemiRing (Maybe a)
+ Agda.Utils.TestHelpers: three :: Gen a -> Gen (a, a, a)
+ Agda.Utils.TestHelpers: two :: Gen a -> Gen (a, a)
- Agda.Auto.Convert: norm :: (Normalise t) => t -> TCM t
+ Agda.Auto.Convert: norm :: Normalise t => t -> TCM t
- Agda.Auto.NarrowingSearch: mmbpcase :: MetaEnv (MB a blk) -> (forall b. (Refinable b blk) => MM b blk -> MetaEnv (PB blk)) -> (a -> MetaEnv (PB blk)) -> MetaEnv (PB blk)
+ Agda.Auto.NarrowingSearch: mmbpcase :: MetaEnv (MB a blk) -> (forall b. Refinable b blk => MM b blk -> MetaEnv (PB blk)) -> (a -> MetaEnv (PB blk)) -> MetaEnv (PB blk)
- Agda.Auto.NarrowingSearch: mmcase :: (Refinable a blk) => MM a blk -> (a -> MetaEnv (MB b blk)) -> MetaEnv (MB b blk)
+ Agda.Auto.NarrowingSearch: mmcase :: Refinable a blk => MM a blk -> (a -> MetaEnv (MB b blk)) -> MetaEnv (MB b blk)
- Agda.Auto.NarrowingSearch: mmmcase :: (Refinable a blk) => MM a blk -> MetaEnv (MB b blk) -> (a -> MetaEnv (MB b blk)) -> MetaEnv (MB b blk)
+ Agda.Auto.NarrowingSearch: mmmcase :: Refinable a blk => MM a blk -> MetaEnv (MB b blk) -> (a -> MetaEnv (MB b blk)) -> MetaEnv (MB b blk)
- Agda.Auto.NarrowingSearch: mmpcase :: (Refinable a blk) => BlkInfo blk -> MM a blk -> (a -> MetaEnv (PB blk)) -> MetaEnv (PB blk)
+ Agda.Auto.NarrowingSearch: mmpcase :: Refinable a blk => BlkInfo blk -> MM a blk -> (a -> MetaEnv (PB blk)) -> MetaEnv (PB blk)
- Agda.Auto.NarrowingSearch: refinements :: (Refinable a blk) => blk -> [blk] -> Metavar a blk -> IO [(Int, RefCreateEnv blk a)]
+ Agda.Auto.NarrowingSearch: refinements :: Refinable a blk => blk -> [blk] -> Metavar a blk -> IO [(Int, RefCreateEnv blk a)]
- Agda.Auto.NarrowingSearch: traverse :: (Trav a blk, Monad m) => (forall b. (Trav b blk) => MM b blk -> m ()) -> a -> m ()
+ Agda.Auto.NarrowingSearch: traverse :: (Trav a blk, Monad m) => (forall b. Trav b blk => MM b blk -> m ()) -> a -> m ()
- Agda.Compiler.HaskellTypes: getHsType :: (MonadTCM tcm) => QName -> tcm HaskellType
+ Agda.Compiler.HaskellTypes: getHsType :: MonadTCM tcm => QName -> tcm HaskellType
- Agda.Compiler.HaskellTypes: getHsVar :: (MonadTCM tcm) => Nat -> tcm HaskellCode
+ Agda.Compiler.HaskellTypes: getHsVar :: MonadTCM tcm => Nat -> tcm HaskellCode
- Agda.Compiler.HaskellTypes: haskellKind :: (MonadTCM tcm) => Type -> tcm HaskellKind
+ Agda.Compiler.HaskellTypes: haskellKind :: MonadTCM tcm => Type -> tcm HaskellKind
- Agda.Compiler.HaskellTypes: haskellType :: (MonadTCM tcm) => Type -> tcm HaskellType
+ Agda.Compiler.HaskellTypes: haskellType :: MonadTCM tcm => Type -> tcm HaskellType
- Agda.Compiler.HaskellTypes: notAHaskellKind :: (MonadTCM tcm) => Type -> tcm a
+ Agda.Compiler.HaskellTypes: notAHaskellKind :: MonadTCM tcm => Type -> tcm a
- Agda.Compiler.HaskellTypes: notAHaskellType :: (MonadTCM tcm) => Type -> tcm a
+ Agda.Compiler.HaskellTypes: notAHaskellType :: MonadTCM tcm => Type -> tcm a
- Agda.Compiler.MAlonzo.Compiler: argpatts :: [Arg Pattern] -> [HsPat] -> TCM [HsPat]
+ Agda.Compiler.MAlonzo.Compiler: argpatts :: [Arg Pattern] -> [Pat] -> TCM [Pat]
- Agda.Compiler.MAlonzo.Compiler: cdecl :: QName -> Nat -> HsConDecl
+ Agda.Compiler.MAlonzo.Compiler: cdecl :: QName -> Nat -> ConDecl
- Agda.Compiler.MAlonzo.Compiler: checkConstructorType :: QName -> TCM [HsDecl]
+ Agda.Compiler.MAlonzo.Compiler: checkConstructorType :: QName -> TCM [Decl]
- Agda.Compiler.MAlonzo.Compiler: checkCover :: QName -> HaskellType -> Nat -> [QName] -> TCM [HsDecl]
+ Agda.Compiler.MAlonzo.Compiler: checkCover :: QName -> HaskellType -> Nat -> [QName] -> TCM [Decl]
- Agda.Compiler.MAlonzo.Compiler: clause :: QName -> (Nat, Bool, Clause) -> TCM HsDecl
+ Agda.Compiler.MAlonzo.Compiler: clause :: QName -> (Nat, Bool, Clause) -> TCM Decl
- Agda.Compiler.MAlonzo.Compiler: clausebody :: ClauseBody -> TCM HsExp
+ Agda.Compiler.MAlonzo.Compiler: clausebody :: ClauseBody -> TCM Exp
- Agda.Compiler.MAlonzo.Compiler: condecl :: QName -> TCM (Nat, HsConDecl)
+ Agda.Compiler.MAlonzo.Compiler: condecl :: QName -> TCM (Nat, ConDecl)
- Agda.Compiler.MAlonzo.Compiler: constructorArity :: (MonadTCM tcm) => QName -> tcm Nat
+ Agda.Compiler.MAlonzo.Compiler: constructorArity :: MonadTCM tcm => QName -> tcm Nat
- Agda.Compiler.MAlonzo.Compiler: definition :: Maybe CoinductionKit -> Definition -> TCM [HsDecl]
+ Agda.Compiler.MAlonzo.Compiler: definition :: Maybe CoinductionKit -> Definition -> TCM [Decl]
- Agda.Compiler.MAlonzo.Compiler: definitions :: Definitions -> TCM [HsDecl]
+ Agda.Compiler.MAlonzo.Compiler: definitions :: Definitions -> TCM [Decl]
- Agda.Compiler.MAlonzo.Compiler: hsCast :: HsExp -> HsExp
+ Agda.Compiler.MAlonzo.Compiler: hsCast :: Exp -> Exp
- Agda.Compiler.MAlonzo.Compiler: hslit :: Literal -> HsLiteral
+ Agda.Compiler.MAlonzo.Compiler: hslit :: Literal -> Literal
- Agda.Compiler.MAlonzo.Compiler: imports :: TCM [HsImportDecl]
+ Agda.Compiler.MAlonzo.Compiler: imports :: TCM [ImportDecl]
- Agda.Compiler.MAlonzo.Compiler: infodecl :: QName -> HsDecl
+ Agda.Compiler.MAlonzo.Compiler: infodecl :: QName -> Decl
- Agda.Compiler.MAlonzo.Compiler: literal :: Literal -> TCM HsExp
+ Agda.Compiler.MAlonzo.Compiler: literal :: Literal -> TCM Exp
- Agda.Compiler.MAlonzo.Compiler: outFile :: TCM FilePath
+ Agda.Compiler.MAlonzo.Compiler: outFile :: ModuleName -> TCM FilePath
- Agda.Compiler.MAlonzo.Compiler: term :: Term -> ReaderT Nat TCM HsExp
+ Agda.Compiler.MAlonzo.Compiler: term :: Term -> ReaderT Nat TCM Exp
- Agda.Compiler.MAlonzo.Compiler: tvaldecl :: QName -> Induction -> Nat -> Nat -> [HsConDecl] -> Maybe Clause -> [HsDecl]
+ Agda.Compiler.MAlonzo.Compiler: tvaldecl :: QName -> Induction -> Nat -> Nat -> [ConDecl] -> Maybe Clause -> [Decl]
- Agda.Compiler.MAlonzo.Compiler: writeModule :: HsModule -> TCM ()
+ Agda.Compiler.MAlonzo.Compiler: writeModule :: Module -> TCM ()
- Agda.Compiler.MAlonzo.Encode: encodeModuleName :: Module -> Module
+ Agda.Compiler.MAlonzo.Encode: encodeModuleName :: ModuleName -> ModuleName
- Agda.Compiler.MAlonzo.Misc: bltQual :: String -> String -> TCM HsQName
+ Agda.Compiler.MAlonzo.Misc: bltQual :: String -> String -> TCM QName
- Agda.Compiler.MAlonzo.Misc: conhqn :: QName -> TCM HsQName
+ Agda.Compiler.MAlonzo.Misc: conhqn :: QName -> TCM QName
- Agda.Compiler.MAlonzo.Misc: curHsMod :: TCM Module
+ Agda.Compiler.MAlonzo.Misc: curHsMod :: TCM ModuleName
- Agda.Compiler.MAlonzo.Misc: fakeD :: HsName -> String -> HsDecl
+ Agda.Compiler.MAlonzo.Misc: fakeD :: Name -> String -> Decl
- Agda.Compiler.MAlonzo.Misc: fakeDQ :: QName -> String -> HsDecl
+ Agda.Compiler.MAlonzo.Misc: fakeDQ :: QName -> String -> Decl
- Agda.Compiler.MAlonzo.Misc: fakeDS :: String -> String -> HsDecl
+ Agda.Compiler.MAlonzo.Misc: fakeDS :: String -> String -> Decl
- Agda.Compiler.MAlonzo.Misc: fakeExp :: String -> HsExp
+ Agda.Compiler.MAlonzo.Misc: fakeExp :: String -> Exp
- Agda.Compiler.MAlonzo.Misc: fakeType :: String -> HsQualType
+ Agda.Compiler.MAlonzo.Misc: fakeType :: String -> Type
- Agda.Compiler.MAlonzo.Misc: gshow' :: (Data a) => a -> String
+ Agda.Compiler.MAlonzo.Misc: gshow' :: Data a => a -> String
- Agda.Compiler.MAlonzo.Misc: hsVarUQ :: HsName -> HsExp
+ Agda.Compiler.MAlonzo.Misc: hsVarUQ :: Name -> Exp
- Agda.Compiler.MAlonzo.Misc: ihname :: String -> Nat -> HsName
+ Agda.Compiler.MAlonzo.Misc: ihname :: String -> Nat -> Name
- Agda.Compiler.MAlonzo.Misc: mazMod :: ModuleName -> Module
+ Agda.Compiler.MAlonzo.Misc: mazMod :: ModuleName -> ModuleName
- Agda.Compiler.MAlonzo.Misc: tlmodOf :: ModuleName -> TCM Module
+ Agda.Compiler.MAlonzo.Misc: tlmodOf :: ModuleName -> TCM ModuleName
- Agda.Compiler.MAlonzo.Misc: unqhname :: String -> QName -> HsName
+ Agda.Compiler.MAlonzo.Misc: unqhname :: String -> QName -> Name
- Agda.Compiler.MAlonzo.Misc: xhqn :: String -> QName -> TCM HsQName
+ Agda.Compiler.MAlonzo.Misc: xhqn :: String -> QName -> TCM QName
- Agda.Compiler.MAlonzo.Misc: xqual :: QName -> HsName -> TCM HsQName
+ Agda.Compiler.MAlonzo.Misc: xqual :: QName -> Name -> TCM QName
- Agda.Compiler.MAlonzo.Primitives: declsForPrim :: TCM [HsDecl]
+ Agda.Compiler.MAlonzo.Primitives: declsForPrim :: TCM [Decl]
- Agda.Compiler.MAlonzo.Primitives: importsForPrim :: TCM [Module]
+ Agda.Compiler.MAlonzo.Primitives: importsForPrim :: TCM [ModuleName]
- Agda.Compiler.MAlonzo.Primitives: primBody :: String -> TCM HsExp
+ Agda.Compiler.MAlonzo.Primitives: primBody :: String -> TCM Exp
- Agda.Interaction.GhciTop: Interaction :: Maybe [FilePath] -> TCM (Maybe ModuleName) -> Interaction
+ Agda.Interaction.GhciTop: Interaction :: Independence -> TCM (Maybe ModuleName) -> Interaction
- Agda.Interaction.GhciTop: cmd_compile :: FilePath -> [FilePath] -> Interaction
+ Agda.Interaction.GhciTop: cmd_compile :: Backend -> FilePath -> [FilePath] -> Interaction
- Agda.Interaction.GhciTop: cmd_write_highlighting_info :: [FilePath] -> FilePath -> FilePath -> Interaction
+ Agda.Interaction.GhciTop: cmd_write_highlighting_info :: FilePath -> FilePath -> Interaction
- Agda.Interaction.GhciTop: lowerMeta :: (LowerMeta a) => a -> a
+ Agda.Interaction.GhciTop: lowerMeta :: LowerMeta a => a -> a
- Agda.Interaction.Options: Options :: String -> Maybe FilePath -> Either [FilePath] [AbsolutePath] -> Bool -> Bool -> Bool -> Bool -> Bool -> Maybe FilePath -> Bool -> Bool -> FilePath -> Maybe FilePath -> Bool -> Bool -> [String] -> PragmaOptions -> CommandLineOptions
+ Agda.Interaction.Options: Options :: String -> Maybe FilePath -> Either [FilePath] [AbsolutePath] -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Maybe FilePath -> Bool -> Bool -> FilePath -> Maybe FilePath -> Bool -> Bool -> [String] -> PragmaOptions -> [String] -> CommandLineOptions
- Agda.Interaction.Options: PragmaOptions :: Bool -> Verbosity -> Bool -> Bool -> Bool -> Bool -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> PragmaOptions
+ Agda.Interaction.Options: PragmaOptions :: Bool -> Verbosity -> Bool -> Bool -> Bool -> Bool -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> PragmaOptions
- Agda.Syntax.Abstract: Axiom :: DefInfo -> QName -> Expr -> Declaration
+ Agda.Syntax.Abstract: Axiom :: DefInfo -> Relevance -> QName -> Expr -> Declaration
- Agda.Syntax.Abstract: LetBind :: LetInfo -> Name -> Expr -> Expr -> LetBinding
+ Agda.Syntax.Abstract: LetBind :: LetInfo -> Relevance -> Name -> Expr -> Expr -> LetBinding
- Agda.Syntax.Concrete: TypeSig :: Name -> Expr -> Declaration
+ Agda.Syntax.Concrete: TypeSig :: Relevance -> Name -> Expr -> Declaration
- Agda.Syntax.Concrete.Definitions: Axiom :: Range -> Fixity' -> Access -> IsAbstract -> Name -> Expr -> NiceDeclaration
+ Agda.Syntax.Concrete.Definitions: Axiom :: Range -> Fixity' -> Access -> IsAbstract -> Relevance -> Name -> Expr -> NiceDeclaration
- Agda.Syntax.Concrete.Operators: paren :: (Monad m) => (Name -> m Fixity) -> Expr -> m (Precedence -> Expr)
+ Agda.Syntax.Concrete.Operators: paren :: Monad m => (Name -> m Fixity) -> Expr -> m (Precedence -> Expr)
- Agda.Syntax.Concrete.Operators.Parser: appP :: (IsExpr e) => ReadP e e -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: appP :: IsExpr e => ReadP e e -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: atomP :: (IsExpr e) => (Name -> Bool) -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: atomP :: IsExpr e => (Name -> Bool) -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: binop :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> e -> ReadP a e)
+ Agda.Syntax.Concrete.Operators.Parser: binop :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> e -> ReadP a e)
- Agda.Syntax.Concrete.Operators.Parser: class (HasRange e) => IsExpr e
+ Agda.Syntax.Concrete.Operators.Parser: class HasRange e => IsExpr e
- Agda.Syntax.Concrete.Operators.Parser: exprView :: (IsExpr e) => e -> ExprView e
+ Agda.Syntax.Concrete.Operators.Parser: exprView :: IsExpr e => e -> ExprView e
- Agda.Syntax.Concrete.Operators.Parser: infixP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: infixP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: infixlP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: infixlP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: infixrP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: infixrP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: nonfixP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: nonfixP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: opP :: (IsExpr e) => ReadP e e -> NewNotation -> ReadP e (NewNotation, Range, [e])
+ Agda.Syntax.Concrete.Operators.Parser: opP :: IsExpr e => ReadP e e -> NewNotation -> ReadP e (NewNotation, Range, [e])
- Agda.Syntax.Concrete.Operators.Parser: partP :: (IsExpr e) => String -> ReadP e (Range, NamePart)
+ Agda.Syntax.Concrete.Operators.Parser: partP :: IsExpr e => String -> ReadP e (Range, NamePart)
- Agda.Syntax.Concrete.Operators.Parser: postfixP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: postfixP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: postop :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> ReadP a e)
+ Agda.Syntax.Concrete.Operators.Parser: postop :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> ReadP a e)
- Agda.Syntax.Concrete.Operators.Parser: prefixP :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
+ Agda.Syntax.Concrete.Operators.Parser: prefixP :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e e -> ReadP e e
- Agda.Syntax.Concrete.Operators.Parser: preop :: (IsExpr e) => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> ReadP a e)
+ Agda.Syntax.Concrete.Operators.Parser: preop :: IsExpr e => ReadP e (NewNotation, Range, [e]) -> ReadP e (e -> ReadP a e)
- Agda.Syntax.Concrete.Operators.Parser: rebuild :: (IsExpr e) => NewNotation -> Range -> [e] -> ReadP a e
+ Agda.Syntax.Concrete.Operators.Parser: rebuild :: IsExpr e => NewNotation -> Range -> [e] -> ReadP a e
- Agda.Syntax.Concrete.Operators.Parser: unExprView :: (IsExpr e) => ExprView e -> e
+ Agda.Syntax.Concrete.Operators.Parser: unExprView :: IsExpr e => ExprView e -> e
- Agda.Syntax.Concrete.Pretty: pHidden :: (Pretty a) => Hiding -> a -> Doc
+ Agda.Syntax.Concrete.Pretty: pHidden :: Pretty a => Hiding -> a -> Doc
- Agda.Syntax.Concrete.Pretty: pRelevance :: (Pretty a) => Relevance -> a -> Doc
+ Agda.Syntax.Concrete.Pretty: pRelevance :: Pretty a => Relevance -> a -> Doc
- Agda.Syntax.Internal.Generic: traverseTerm :: (TermLike a) => (Term -> Term) -> a -> a
+ Agda.Syntax.Internal.Generic: traverseTerm :: TermLike a => (Term -> Term) -> a -> a
- Agda.Syntax.Parser: parse :: (Strict a) => Parser a -> String -> IO a
+ Agda.Syntax.Parser: parse :: Strict a => Parser a -> String -> IO a
- Agda.Syntax.Parser: parseFile' :: (Strict a) => Parser a -> AbsolutePath -> IO a
+ Agda.Syntax.Parser: parseFile' :: Strict a => Parser a -> AbsolutePath -> IO a
- Agda.Syntax.Parser: parseLiterate :: (Strict a) => Parser a -> String -> IO a
+ Agda.Syntax.Parser: parseLiterate :: Strict a => Parser a -> String -> IO a
- Agda.Syntax.Parser: parsePosString :: (Strict a) => Parser a -> Position -> String -> IO a
+ Agda.Syntax.Parser: parsePosString :: Strict a => Parser a -> Position -> String -> IO a
- Agda.Syntax.Parser.LexActions: literal :: (Read a) => (Range -> a -> Literal) -> LexAction Token
+ Agda.Syntax.Parser.LexActions: literal :: Read a => (Range -> a -> Literal) -> LexAction Token
- Agda.Syntax.Position: class (HasRange t) => SetRange t
+ Agda.Syntax.Position: class HasRange t => SetRange t
- Agda.Syntax.Position: getRange :: (HasRange t) => t -> Range
+ Agda.Syntax.Position: getRange :: HasRange t => t -> Range
- Agda.Syntax.Position: killRange :: (KillRange a) => a -> a
+ Agda.Syntax.Position: killRange :: KillRange a => a -> a
- Agda.Syntax.Position: killRange1 :: (KillRange a) => (a -> t) -> a -> t
+ Agda.Syntax.Position: killRange1 :: KillRange a => (a -> t) -> a -> t
- Agda.Syntax.Position: killRange2 :: (KillRange a, KillRange a1) => (a -> a1 -> t) -> a -> a1 -> t
+ Agda.Syntax.Position: killRange2 :: (KillRange a1, KillRange a) => (a1 -> a -> t) -> a1 -> a -> t
- Agda.Syntax.Position: killRange3 :: (KillRange a, KillRange a1, KillRange a2) => (a -> a1 -> a2 -> t) -> a -> a1 -> a2 -> t
+ Agda.Syntax.Position: killRange3 :: (KillRange a2, KillRange a1, KillRange a) => (a2 -> a1 -> a -> t) -> a2 -> a1 -> a -> t
- Agda.Syntax.Position: killRange4 :: (KillRange a, KillRange a1, KillRange a2, KillRange a3) => (a -> a1 -> a2 -> a3 -> t) -> a -> a1 -> a2 -> a3 -> t
+ Agda.Syntax.Position: killRange4 :: (KillRange a3, KillRange a1, KillRange a2, KillRange a) => (a3 -> a2 -> a1 -> a -> t) -> a3 -> a2 -> a1 -> a -> t
- Agda.Syntax.Position: killRange5 :: (KillRange a, KillRange a1, KillRange a2, KillRange a3, KillRange a4) => (a -> a1 -> a2 -> a3 -> a4 -> t) -> a -> a1 -> a2 -> a3 -> a4 -> t
+ Agda.Syntax.Position: killRange5 :: (KillRange a4, KillRange a2, KillRange a3, KillRange a1, KillRange a) => (a4 -> a3 -> a2 -> a1 -> a -> t) -> a4 -> a3 -> a2 -> a1 -> a -> t
- Agda.Syntax.Position: killRange6 :: (KillRange a, KillRange a1, KillRange a2, KillRange a3, KillRange a4, KillRange a5) => (a -> a1 -> a2 -> a3 -> a4 -> a5 -> t) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> t
+ Agda.Syntax.Position: killRange6 :: (KillRange a5, KillRange a1, KillRange a2, KillRange a4, KillRange a3, KillRange a) => (a5 -> a4 -> a3 -> a2 -> a1 -> a -> t) -> a5 -> a4 -> a3 -> a2 -> a1 -> a -> t
- Agda.Syntax.Position: killRange7 :: (KillRange a, KillRange a1, KillRange a2, KillRange a3, KillRange a4, KillRange a5, KillRange a6) => (a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> t) -> a -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> t
+ Agda.Syntax.Position: killRange7 :: (KillRange a6, KillRange a3, KillRange a2, KillRange a5, KillRange a1, KillRange a4, KillRange a) => (a6 -> a5 -> a4 -> a3 -> a2 -> a1 -> a -> t) -> a6 -> a5 -> a4 -> a3 -> a2 -> a1 -> a -> t
- Agda.Syntax.Position: setRange :: (SetRange t) => Range -> t -> t
+ Agda.Syntax.Position: setRange :: SetRange t => Range -> t -> t
- Agda.Syntax.Scope.Base: allNamesInScope :: (InScope a) => Scope -> ThingsInScope a
+ Agda.Syntax.Scope.Base: allNamesInScope :: InScope a => Scope -> ThingsInScope a
- Agda.Syntax.Scope.Base: class (Eq a) => InScope a
+ Agda.Syntax.Scope.Base: class Eq a => InScope a
- Agda.Syntax.Scope.Base: exportedNamesInScope :: (InScope a) => Scope -> ThingsInScope a
+ Agda.Syntax.Scope.Base: exportedNamesInScope :: InScope a => Scope -> ThingsInScope a
- Agda.Syntax.Scope.Base: inNameSpace :: (InScope a) => NameSpace -> ThingsInScope a
+ Agda.Syntax.Scope.Base: inNameSpace :: InScope a => NameSpace -> ThingsInScope a
- Agda.Syntax.Scope.Base: inScopeTag :: (InScope a) => InScopeTag a
+ Agda.Syntax.Scope.Base: inScopeTag :: InScope a => InScopeTag a
- Agda.Syntax.Scope.Base: mapNameSpaceM :: (Monad m) => (NamesInScope -> m NamesInScope) -> (ModulesInScope -> m ModulesInScope) -> NameSpace -> m NameSpace
+ Agda.Syntax.Scope.Base: mapNameSpaceM :: Monad m => (NamesInScope -> m NamesInScope) -> (ModulesInScope -> m ModulesInScope) -> NameSpace -> m NameSpace
- Agda.Syntax.Scope.Base: mapScopeM :: (Monad m) => (NameSpaceId -> NamesInScope -> m NamesInScope) -> (NameSpaceId -> ModulesInScope -> m ModulesInScope) -> Scope -> m Scope
+ Agda.Syntax.Scope.Base: mapScopeM :: Monad m => (NameSpaceId -> NamesInScope -> m NamesInScope) -> (NameSpaceId -> ModulesInScope -> m ModulesInScope) -> Scope -> m Scope
- Agda.Syntax.Scope.Base: mapScopeM_ :: (Monad m) => (NamesInScope -> m NamesInScope) -> (ModulesInScope -> m ModulesInScope) -> Scope -> m Scope
+ Agda.Syntax.Scope.Base: mapScopeM_ :: Monad m => (NamesInScope -> m NamesInScope) -> (ModulesInScope -> m ModulesInScope) -> Scope -> m Scope
- Agda.Syntax.Scope.Base: mergeNames :: (InScope a) => ThingsInScope a -> ThingsInScope a -> ThingsInScope a
+ Agda.Syntax.Scope.Base: mergeNames :: InScope a => ThingsInScope a -> ThingsInScope a -> ThingsInScope a
- Agda.Syntax.Scope.Base: namesInScope :: (InScope a) => [Scope -> NameSpace] -> Scope -> ThingsInScope a
+ Agda.Syntax.Scope.Base: namesInScope :: InScope a => [Scope -> NameSpace] -> Scope -> ThingsInScope a
- Agda.Syntax.Scope.Base: scopeLookup :: (InScope a) => QName -> ScopeInfo -> [a]
+ Agda.Syntax.Scope.Base: scopeLookup :: InScope a => QName -> ScopeInfo -> [a]
- Agda.Syntax.Strict: ($!!) :: (Strict a) => (a -> b) -> a -> b
+ Agda.Syntax.Strict: ($!!) :: Strict a => (a -> b) -> a -> b
- Agda.Syntax.Strict: force :: (Strict a) => a -> Int
+ Agda.Syntax.Strict: force :: Strict a => a -> Int
- Agda.Syntax.Strict: strict :: (Strict a) => a -> a
+ Agda.Syntax.Strict: strict :: Strict a => a -> a
- Agda.Syntax.Translation.AbstractToConcrete: abstractToConcrete :: (ToConcrete a c) => Env -> a -> c
+ Agda.Syntax.Translation.AbstractToConcrete: abstractToConcrete :: ToConcrete a c => Env -> a -> c
- Agda.Syntax.Translation.AbstractToConcrete: bindToConcrete :: (ToConcrete a c) => a -> (c -> AbsToCon b) -> AbsToCon b
+ Agda.Syntax.Translation.AbstractToConcrete: bindToConcrete :: ToConcrete a c => a -> (c -> AbsToCon b) -> AbsToCon b
- Agda.Syntax.Translation.AbstractToConcrete: runAbsToCon :: (MonadTCM tcm) => AbsToCon a -> tcm a
+ Agda.Syntax.Translation.AbstractToConcrete: runAbsToCon :: MonadTCM tcm => AbsToCon a -> tcm a
- Agda.Syntax.Translation.AbstractToConcrete: toConcrete :: (ToConcrete a c) => a -> AbsToCon c
+ Agda.Syntax.Translation.AbstractToConcrete: toConcrete :: ToConcrete a c => a -> AbsToCon c
- Agda.Syntax.Translation.AbstractToConcrete: toConcreteCtx :: (ToConcrete a c) => Precedence -> a -> AbsToCon c
+ Agda.Syntax.Translation.AbstractToConcrete: toConcreteCtx :: ToConcrete a c => Precedence -> a -> AbsToCon c
- Agda.Syntax.Translation.ConcreteToAbstract: concreteToAbstract :: (ToAbstract c a) => ScopeInfo -> c -> ScopeM a
+ Agda.Syntax.Translation.ConcreteToAbstract: concreteToAbstract :: ToAbstract c a => ScopeInfo -> c -> ScopeM a
- Agda.Syntax.Translation.ConcreteToAbstract: concreteToAbstract_ :: (ToAbstract c a) => c -> ScopeM a
+ Agda.Syntax.Translation.ConcreteToAbstract: concreteToAbstract_ :: ToAbstract c a => c -> ScopeM a
- Agda.Syntax.Translation.ConcreteToAbstract: localToAbstract :: (ToAbstract c a) => c -> (a -> ScopeM b) -> ScopeM b
+ Agda.Syntax.Translation.ConcreteToAbstract: localToAbstract :: ToAbstract c a => c -> (a -> ScopeM b) -> ScopeM b
- Agda.Syntax.Translation.ConcreteToAbstract: toAbstract :: (ToAbstract concrete abstract) => concrete -> ScopeM abstract
+ Agda.Syntax.Translation.ConcreteToAbstract: toAbstract :: ToAbstract concrete abstract => concrete -> ScopeM abstract
- Agda.Syntax.Translation.InternalToAbstract: apps :: (MonadTCM tcm) => (Expr, [Arg Expr]) -> tcm Expr
+ Agda.Syntax.Translation.InternalToAbstract: apps :: MonadTCM tcm => (Expr, [Arg Expr]) -> tcm Expr
- Agda.Syntax.Translation.InternalToAbstract: dotVars :: (DotVars a) => a -> Set Name
+ Agda.Syntax.Translation.InternalToAbstract: dotVars :: DotVars a => a -> Set Name
- Agda.Syntax.Translation.InternalToAbstract: reifyApp :: (MonadTCM tcm) => Expr -> [Arg Term] -> tcm Expr
+ Agda.Syntax.Translation.InternalToAbstract: reifyApp :: MonadTCM tcm => Expr -> [Arg Term] -> tcm Expr
- Agda.Syntax.Translation.InternalToAbstract: reifyDisplayForm :: (MonadTCM tcm) => QName -> Args -> tcm Expr -> tcm Expr
+ Agda.Syntax.Translation.InternalToAbstract: reifyDisplayForm :: MonadTCM tcm => QName -> Args -> tcm Expr -> tcm Expr
- Agda.Syntax.Translation.InternalToAbstract: reifyPatterns :: (MonadTCM tcm) => Telescope -> Permutation -> [Arg Pattern] -> tcm [NamedArg Pattern]
+ Agda.Syntax.Translation.InternalToAbstract: reifyPatterns :: MonadTCM tcm => Telescope -> Permutation -> [Arg Pattern] -> tcm [NamedArg Pattern]
- Agda.Syntax.Translation.InternalToAbstract: stripImplicits :: (MonadTCM tcm) => [NamedArg Pattern] -> [Pattern] -> tcm ([NamedArg Pattern], [Pattern])
+ Agda.Syntax.Translation.InternalToAbstract: stripImplicits :: MonadTCM tcm => [NamedArg Pattern] -> [Pattern] -> tcm ([NamedArg Pattern], [Pattern])
- Agda.Termination.CallGraph: complete :: (?cutoff :: Int) => (Monoid meta) => CallGraph meta -> CallGraph meta
+ Agda.Termination.CallGraph: complete :: (?cutoff :: Int) => Monoid meta => CallGraph meta -> CallGraph meta
- Agda.Termination.CallGraph: fromList :: (Monoid meta) => [(Call, meta)] -> CallGraph meta
+ Agda.Termination.CallGraph: fromList :: Monoid meta => [(Call, meta)] -> CallGraph meta
- Agda.Termination.CallGraph: insert :: (Monoid meta) => Call -> meta -> CallGraph meta -> CallGraph meta
+ Agda.Termination.CallGraph: insert :: Monoid meta => Call -> meta -> CallGraph meta -> CallGraph meta
- Agda.Termination.CallGraph: prettyBehaviour :: (Show meta) => CallGraph meta -> Doc
+ Agda.Termination.CallGraph: prettyBehaviour :: Show meta => CallGraph meta -> Doc
- Agda.Termination.CallGraph: union :: (Monoid meta) => CallGraph meta -> CallGraph meta -> CallGraph meta
+ Agda.Termination.CallGraph: union :: Monoid meta => CallGraph meta -> CallGraph meta -> CallGraph meta
- Agda.Termination.Lexicographic: recBehaviourInvariant :: (Eq call) => RecBehaviour arg call -> Bool
+ Agda.Termination.Lexicographic: recBehaviourInvariant :: Eq call => RecBehaviour arg call -> Bool
- Agda.Termination.Matrix: size :: (Ix i) => Matrix i b -> Size i
+ Agda.Termination.Matrix: size :: Ix i => Matrix i b -> Size i
- Agda.Termination.Matrix: square :: (Ix i) => Matrix i b -> Bool
+ Agda.Termination.Matrix: square :: Ix i => Matrix i b -> Bool
- Agda.Termination.Semiring: class (Eq a) => HasZero a
+ Agda.Termination.Semiring: class Eq a => HasZero a
- Agda.Termination.Semiring: multiply :: (SemiRing a) => a -> a -> a
+ Agda.Termination.Semiring: multiply :: SemiRing a => a -> a -> a
- Agda.Termination.Semiring: zeroElement :: (HasZero a) => a
+ Agda.Termination.Semiring: zeroElement :: HasZero a => a
- Agda.Termination.SparseMatrix: add :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
+ Agda.Termination.SparseMatrix: add :: Ord i => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
- Agda.Termination.SparseMatrix: intersectWith :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
+ Agda.Termination.SparseMatrix: intersectWith :: Ord i => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
- Agda.Termination.SparseMatrix: square :: (Ix i) => Matrix i b -> Bool
+ Agda.Termination.SparseMatrix: square :: Ix i => Matrix i b -> Bool
- Agda.Termination.SparseMatrix: transpose :: (Ord i) => Matrix i b -> Matrix i b
+ Agda.Termination.SparseMatrix: transpose :: Ord i => Matrix i b -> Matrix i b
- Agda.TypeChecking.Abstract: abstractTerm :: (AbstractTerm a) => Term -> a -> a
+ Agda.TypeChecking.Abstract: abstractTerm :: AbstractTerm a => Term -> a -> a
- Agda.TypeChecking.CompiledClause.Match: match :: CompiledClauses -> Args -> (Args -> Args) -> Stack -> TCM (Reduced (Blocked Args) Term)
+ Agda.TypeChecking.CompiledClause.Match: match :: CompiledClauses -> MaybeReducedArgs -> (Args -> Args) -> Stack -> TCM (Reduced (Blocked Args) Term)
- Agda.TypeChecking.CompiledClause.Match: matchCompiled :: CompiledClauses -> Args -> TCM (Reduced (Blocked Args) Term)
+ Agda.TypeChecking.CompiledClause.Match: matchCompiled :: CompiledClauses -> MaybeReducedArgs -> TCM (Reduced (Blocked Args) Term)
- Agda.TypeChecking.CompiledClause.Match: type Stack = [(CompiledClauses, Args, Args -> Args)]
+ Agda.TypeChecking.CompiledClause.Match: type Stack = [(CompiledClauses, MaybeReducedArgs, Args -> Args)]
- Agda.TypeChecking.Constraints: addNewConstraints :: (MonadTCM tcm) => Constraints -> tcm ()
+ Agda.TypeChecking.Constraints: addNewConstraints :: MonadTCM tcm => Constraints -> tcm ()
- Agda.TypeChecking.Constraints: catchConstraint :: (MonadTCM tcm) => Constraint -> TCM Constraints -> tcm Constraints
+ Agda.TypeChecking.Constraints: catchConstraint :: MonadTCM tcm => Constraint -> TCM Constraints -> tcm Constraints
- Agda.TypeChecking.Constraints: guardConstraint :: (MonadTCM tcm) => tcm Constraints -> Constraint -> tcm Constraints
+ Agda.TypeChecking.Constraints: guardConstraint :: MonadTCM tcm => tcm Constraints -> Constraint -> tcm Constraints
- Agda.TypeChecking.Constraints: noConstraints :: (MonadTCM tcm) => tcm Constraints -> tcm ()
+ Agda.TypeChecking.Constraints: noConstraints :: MonadTCM tcm => tcm Constraints -> tcm ()
- Agda.TypeChecking.Constraints: solveConstraint :: (MonadTCM tcm) => Constraint -> tcm Constraints
+ Agda.TypeChecking.Constraints: solveConstraint :: MonadTCM tcm => Constraint -> tcm Constraints
- Agda.TypeChecking.Constraints: solveConstraints :: (MonadTCM tcm) => Constraints -> tcm Constraints
+ Agda.TypeChecking.Constraints: solveConstraints :: MonadTCM tcm => Constraints -> tcm Constraints
- Agda.TypeChecking.Constraints: wakeupConstraints :: (MonadTCM tcm) => tcm ()
+ Agda.TypeChecking.Constraints: wakeupConstraints :: MonadTCM tcm => tcm ()
- Agda.TypeChecking.Conversion: compareArgs :: (MonadTCM tcm) => [Polarity] -> Type -> Args -> Args -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareArgs :: MonadTCM tcm => [Polarity] -> Type -> Args -> Args -> tcm Constraints
- Agda.TypeChecking.Conversion: compareAtom :: (MonadTCM tcm) => Comparison -> Type -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareAtom :: MonadTCM tcm => Comparison -> Type -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: compareSort :: (MonadTCM tcm) => Comparison -> Sort -> Sort -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareSort :: MonadTCM tcm => Comparison -> Sort -> Sort -> tcm Constraints
- Agda.TypeChecking.Conversion: compareTel :: (MonadTCM tcm) => Comparison -> Telescope -> Telescope -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareTel :: MonadTCM tcm => Comparison -> Telescope -> Telescope -> tcm Constraints
- Agda.TypeChecking.Conversion: compareTerm :: (MonadTCM tcm) => Comparison -> Type -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareTerm :: MonadTCM tcm => Comparison -> Type -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: compareType :: (MonadTCM tcm) => Comparison -> Type -> Type -> tcm Constraints
+ Agda.TypeChecking.Conversion: compareType :: MonadTCM tcm => Comparison -> Type -> Type -> tcm Constraints
- Agda.TypeChecking.Conversion: equalArgs :: (MonadTCM tcm) => Type -> Args -> Args -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalArgs :: MonadTCM tcm => Type -> Args -> Args -> tcm Constraints
- Agda.TypeChecking.Conversion: equalAtom :: (MonadTCM tcm) => Type -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalAtom :: MonadTCM tcm => Type -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: equalLevel :: (MonadTCM tcm) => Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalLevel :: MonadTCM tcm => Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: equalSort :: (MonadTCM tcm) => Sort -> Sort -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalSort :: MonadTCM tcm => Sort -> Sort -> tcm Constraints
- Agda.TypeChecking.Conversion: equalTerm :: (MonadTCM tcm) => Type -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalTerm :: MonadTCM tcm => Type -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: equalType :: (MonadTCM tcm) => Type -> Type -> tcm Constraints
+ Agda.TypeChecking.Conversion: equalType :: MonadTCM tcm => Type -> Type -> tcm Constraints
- Agda.TypeChecking.Conversion: leqLevel :: (MonadTCM tcm) => Term -> Term -> tcm Constraints
+ Agda.TypeChecking.Conversion: leqLevel :: MonadTCM tcm => Term -> Term -> tcm Constraints
- Agda.TypeChecking.Conversion: leqSort :: (MonadTCM tcm) => Sort -> Sort -> tcm Constraints
+ Agda.TypeChecking.Conversion: leqSort :: MonadTCM tcm => Sort -> Sort -> tcm Constraints
- Agda.TypeChecking.Conversion: leqType :: (MonadTCM tcm) => Type -> Type -> tcm Constraints
+ Agda.TypeChecking.Conversion: leqType :: MonadTCM tcm => Type -> Type -> tcm Constraints
- Agda.TypeChecking.Coverage: cover :: (MonadTCM tcm) => [Clause] -> SplitClause -> tcm (Set Nat, [[Arg Pattern]])
+ Agda.TypeChecking.Coverage: cover :: MonadTCM tcm => [Clause] -> SplitClause -> tcm (Set Nat, [[Arg Pattern]])
- Agda.TypeChecking.Coverage: isDatatype :: (MonadTCM tcm, MonadException SplitError tcm) => Arg Type -> tcm (QName, [Arg Term], [Arg Term], [QName])
+ Agda.TypeChecking.Coverage: isDatatype :: (MonadTCM tcm, MonadException SplitError tcm) => Induction -> Arg Type -> tcm (QName, [Arg Term], [Arg Term], [QName])
- Agda.TypeChecking.Coverage: split :: (MonadTCM tcm) => Telescope -> Permutation -> [Arg Pattern] -> Nat -> tcm (Either SplitError Covering)
+ Agda.TypeChecking.Coverage: split :: MonadTCM tcm => Induction -> Telescope -> Permutation -> [Arg Pattern] -> Nat -> tcm (Either SplitError Covering)
- Agda.TypeChecking.Coverage: split' :: (MonadTCM tcm) => Telescope -> Permutation -> [Arg Pattern] -> Nat -> tcm (Either SplitError (Either SplitClause Covering))
+ Agda.TypeChecking.Coverage: split' :: MonadTCM tcm => Induction -> Telescope -> Permutation -> [Arg Pattern] -> Nat -> tcm (Either SplitError (Either SplitClause Covering))
- Agda.TypeChecking.Datatypes: getConstructorData :: (MonadTCM tcm) => QName -> tcm QName
+ Agda.TypeChecking.Datatypes: getConstructorData :: MonadTCM tcm => QName -> tcm QName
- Agda.TypeChecking.Datatypes: getDatatypeInfo :: (MonadTCM tcm) => Type -> tcm (Maybe DatatypeInfo)
+ Agda.TypeChecking.Datatypes: getDatatypeInfo :: MonadTCM tcm => Type -> tcm (Maybe DatatypeInfo)
- Agda.TypeChecking.Datatypes: isDatatype :: (MonadTCM tcm) => QName -> tcm Bool
+ Agda.TypeChecking.Datatypes: isDatatype :: MonadTCM tcm => QName -> tcm Bool
- Agda.TypeChecking.DisplayForm: match :: (Match a) => Nat -> a -> a -> Maybe [Term]
+ Agda.TypeChecking.DisplayForm: match :: Match a => Nat -> a -> a -> Maybe [Term]
- Agda.TypeChecking.Empty: isEmptyType :: (MonadTCM tcm) => Type -> tcm ()
+ Agda.TypeChecking.Empty: isEmptyType :: MonadTCM tcm => Type -> tcm ()
- Agda.TypeChecking.Empty: isEmptyTypeC :: (MonadTCM tcm) => Type -> tcm Constraints
+ Agda.TypeChecking.Empty: isEmptyTypeC :: MonadTCM tcm => Type -> tcm Constraints
- Agda.TypeChecking.Errors: prettyError :: (MonadTCM tcm) => TCErr -> tcm String
+ Agda.TypeChecking.Errors: prettyError :: MonadTCM tcm => TCErr -> tcm String
- Agda.TypeChecking.EtaContract: etaOnce :: (MonadTCM tcm) => Term -> tcm Term
+ Agda.TypeChecking.EtaContract: etaOnce :: MonadTCM tcm => Term -> tcm Term
- Agda.TypeChecking.Free: freeIn :: (Free a) => Nat -> a -> Bool
+ Agda.TypeChecking.Free: freeIn :: Free a => Nat -> a -> Bool
- Agda.TypeChecking.Free: freeInIgnoringSorts :: (Free a) => Nat -> a -> Bool
+ Agda.TypeChecking.Free: freeInIgnoringSorts :: Free a => Nat -> a -> Bool
- Agda.TypeChecking.Free: freeVars :: (Free a) => a -> FreeVars
+ Agda.TypeChecking.Free: freeVars :: Free a => a -> FreeVars
- Agda.TypeChecking.Level: builtinLevelKit :: (MonadTCM tcm) => tcm (Maybe LevelKit)
+ Agda.TypeChecking.Level: builtinLevelKit :: MonadTCM tcm => tcm (Maybe LevelKit)
- Agda.TypeChecking.Level: levelSucFunction :: (MonadTCM tcm) => tcm (Term -> Term)
+ Agda.TypeChecking.Level: levelSucFunction :: MonadTCM tcm => tcm (Term -> Term)
- Agda.TypeChecking.Level: levelView :: (MonadTCM tcm) => Term -> tcm LevelView
+ Agda.TypeChecking.Level: levelView :: MonadTCM tcm => Term -> tcm LevelView
- Agda.TypeChecking.Level: maybePrimCon :: (MonadTCM tcm) => TCM Term -> tcm (Maybe QName)
+ Agda.TypeChecking.Level: maybePrimCon :: MonadTCM tcm => TCM Term -> tcm (Maybe QName)
- Agda.TypeChecking.Level: maybePrimDef :: (MonadTCM tcm) => TCM Term -> tcm (Maybe QName)
+ Agda.TypeChecking.Level: maybePrimDef :: MonadTCM tcm => TCM Term -> tcm (Maybe QName)
- Agda.TypeChecking.Level: unLevelView :: (MonadTCM tcm) => LevelView -> tcm Term
+ Agda.TypeChecking.Level: unLevelView :: MonadTCM tcm => LevelView -> tcm Term
- Agda.TypeChecking.MetaVars: (=:=) :: (MonadTCM tcm) => MetaId -> Term -> tcm ()
+ Agda.TypeChecking.MetaVars: (=:=) :: MonadTCM tcm => MetaId -> Term -> tcm ()
- Agda.TypeChecking.MetaVars: abortAssign :: (MonadTCM tcm) => tcm a
+ Agda.TypeChecking.MetaVars: abortAssign :: MonadTCM tcm => tcm a
- Agda.TypeChecking.MetaVars: assignS :: (MonadTCM tcm) => MetaId -> Args -> Sort -> tcm Constraints
+ Agda.TypeChecking.MetaVars: assignS :: MonadTCM tcm => MetaId -> Args -> Sort -> tcm Constraints
- Agda.TypeChecking.MetaVars: assignSort :: (MonadTCM tcm) => MetaId -> Sort -> tcm ()
+ Agda.TypeChecking.MetaVars: assignSort :: MonadTCM tcm => MetaId -> Sort -> tcm ()
- Agda.TypeChecking.MetaVars: assignTerm :: (MonadTCM tcm) => MetaId -> Term -> tcm ()
+ Agda.TypeChecking.MetaVars: assignTerm :: MonadTCM tcm => MetaId -> Term -> tcm ()
- Agda.TypeChecking.MetaVars: assignV :: (MonadTCM tcm) => Type -> MetaId -> Args -> Term -> tcm Constraints
+ Agda.TypeChecking.MetaVars: assignV :: MonadTCM tcm => Type -> MetaId -> Args -> Term -> tcm Constraints
- Agda.TypeChecking.MetaVars: blockTerm :: (MonadTCM tcm) => Type -> Term -> tcm Constraints -> tcm Term
+ Agda.TypeChecking.MetaVars: blockTerm :: MonadTCM tcm => Type -> Term -> tcm Constraints -> tcm Term
- Agda.TypeChecking.MetaVars: checkArgs :: (MonadTCM tcm) => MetaId -> Args -> FVs -> tcm [Arg Nat]
+ Agda.TypeChecking.MetaVars: checkArgs :: MonadTCM tcm => MetaId -> Args -> FVs -> tcm [Arg Nat]
- Agda.TypeChecking.MetaVars: etaExpandListeners :: (MonadTCM tcm) => MetaId -> tcm ()
+ Agda.TypeChecking.MetaVars: etaExpandListeners :: MonadTCM tcm => MetaId -> tcm ()
- Agda.TypeChecking.MetaVars: etaExpandMeta :: (MonadTCM tcm) => [MetaKind] -> MetaId -> tcm ()
+ Agda.TypeChecking.MetaVars: etaExpandMeta :: MonadTCM tcm => [MetaKind] -> MetaId -> tcm ()
- Agda.TypeChecking.MetaVars: findIdx :: (Eq a) => [a] -> a -> Maybe Int
+ Agda.TypeChecking.MetaVars: findIdx :: Eq a => [a] -> a -> Maybe Int
- Agda.TypeChecking.MetaVars: handleAbort :: (MonadTCM tcm) => TCM a -> TCM a -> tcm a
+ Agda.TypeChecking.MetaVars: handleAbort :: MonadTCM tcm => TCM a -> TCM a -> tcm a
- Agda.TypeChecking.MetaVars: isBlockedTerm :: (MonadTCM tcm) => MetaId -> tcm Bool
+ Agda.TypeChecking.MetaVars: isBlockedTerm :: MonadTCM tcm => MetaId -> tcm Bool
- Agda.TypeChecking.MetaVars: isEtaExpandable :: (MonadTCM tcm) => MetaId -> tcm Bool
+ Agda.TypeChecking.MetaVars: isEtaExpandable :: MonadTCM tcm => MetaId -> tcm Bool
- Agda.TypeChecking.MetaVars: metaVariable :: (HasMeta t) => MetaId -> Args -> t
+ Agda.TypeChecking.MetaVars: metaVariable :: HasMeta t => MetaId -> Args -> t
- Agda.TypeChecking.MetaVars: newArgsMeta :: (MonadTCM tcm) => Type -> tcm Args
+ Agda.TypeChecking.MetaVars: newArgsMeta :: MonadTCM tcm => Type -> tcm Args
- Agda.TypeChecking.MetaVars: newArgsMetaCtx :: (MonadTCM tcm) => Type -> Telescope -> Args -> tcm Args
+ Agda.TypeChecking.MetaVars: newArgsMetaCtx :: MonadTCM tcm => Type -> Telescope -> Args -> tcm Args
- Agda.TypeChecking.MetaVars: newQuestionMark :: (MonadTCM tcm) => Type -> tcm Term
+ Agda.TypeChecking.MetaVars: newQuestionMark :: MonadTCM tcm => Type -> tcm Term
- Agda.TypeChecking.MetaVars: newRecordMeta :: (MonadTCM tcm) => QName -> Args -> tcm Term
+ Agda.TypeChecking.MetaVars: newRecordMeta :: MonadTCM tcm => QName -> Args -> tcm Term
- Agda.TypeChecking.MetaVars: newRecordMetaCtx :: (MonadTCM tcm) => QName -> Args -> Telescope -> Args -> tcm Term
+ Agda.TypeChecking.MetaVars: newRecordMetaCtx :: MonadTCM tcm => QName -> Args -> Telescope -> Args -> tcm Term
- Agda.TypeChecking.MetaVars: newSortMeta :: (MonadTCM tcm) => tcm Sort
+ Agda.TypeChecking.MetaVars: newSortMeta :: MonadTCM tcm => tcm Sort
- Agda.TypeChecking.MetaVars: newSortMetaCtx :: (MonadTCM tcm) => Args -> tcm Sort
+ Agda.TypeChecking.MetaVars: newSortMetaCtx :: MonadTCM tcm => Args -> tcm Sort
- Agda.TypeChecking.MetaVars: newTelMeta :: (MonadTCM tcm) => Telescope -> tcm Args
+ Agda.TypeChecking.MetaVars: newTelMeta :: MonadTCM tcm => Telescope -> tcm Args
- Agda.TypeChecking.MetaVars: newTypeMeta :: (MonadTCM tcm) => Sort -> tcm Type
+ Agda.TypeChecking.MetaVars: newTypeMeta :: MonadTCM tcm => Sort -> tcm Type
- Agda.TypeChecking.MetaVars: newTypeMeta_ :: (MonadTCM tcm) => tcm Type
+ Agda.TypeChecking.MetaVars: newTypeMeta_ :: MonadTCM tcm => tcm Type
- Agda.TypeChecking.MetaVars: newValueMeta :: (MonadTCM tcm) => Type -> tcm Term
+ Agda.TypeChecking.MetaVars: newValueMeta :: MonadTCM tcm => Type -> tcm Term
- Agda.TypeChecking.MetaVars: newValueMeta' :: (MonadTCM tcm) => Type -> tcm Term
+ Agda.TypeChecking.MetaVars: newValueMeta' :: MonadTCM tcm => Type -> tcm Term
- Agda.TypeChecking.MetaVars: newValueMetaCtx :: (MonadTCM tcm) => Type -> Args -> tcm Term
+ Agda.TypeChecking.MetaVars: newValueMetaCtx :: MonadTCM tcm => Type -> Args -> tcm Term
- Agda.TypeChecking.MetaVars: newValueMetaCtx' :: (MonadTCM tcm) => Type -> Args -> tcm Term
+ Agda.TypeChecking.MetaVars: newValueMetaCtx' :: MonadTCM tcm => Type -> Args -> tcm Term
- Agda.TypeChecking.MetaVars: postponeTypeCheckingProblem :: (MonadTCM tcm) => Expr -> Type -> TCM Bool -> tcm Term
+ Agda.TypeChecking.MetaVars: postponeTypeCheckingProblem :: MonadTCM tcm => Expr -> Type -> TCM Bool -> tcm Term
- Agda.TypeChecking.MetaVars: postponeTypeCheckingProblem_ :: (MonadTCM tcm) => Expr -> Type -> tcm Term
+ Agda.TypeChecking.MetaVars: postponeTypeCheckingProblem_ :: MonadTCM tcm => Expr -> Type -> tcm Term
- Agda.TypeChecking.MetaVars: validParameters :: (Monad m) => Args -> FVs -> m [Arg Nat]
+ Agda.TypeChecking.MetaVars: validParameters :: Monad m => Args -> FVs -> m [Arg Nat]
- Agda.TypeChecking.MetaVars.Occurs: occurs :: (Occurs t) => OccursCtx -> MetaId -> [Nat] -> t -> TCM t
+ Agda.TypeChecking.MetaVars.Occurs: occurs :: Occurs t => OccursCtx -> MetaId -> [Nat] -> t -> TCM t
- Agda.TypeChecking.MetaVars.Occurs: occursCheck :: (MonadTCM tcm) => MetaId -> [Nat] -> Term -> tcm Term
+ Agda.TypeChecking.MetaVars.Occurs: occursCheck :: MonadTCM tcm => MetaId -> [Nat] -> Term -> tcm Term
- Agda.TypeChecking.Monad.Base: Axiom :: Maybe HaskellRepresentation -> Defn
+ Agda.TypeChecking.Monad.Base: Axiom :: Maybe HaskellRepresentation -> Maybe EpicCode -> Defn
- Agda.TypeChecking.Monad.Base: Defn :: QName -> Type -> [Open DisplayForm] -> MutualId -> Defn -> Definition
+ Agda.TypeChecking.Monad.Base: Defn :: Relevance -> QName -> Type -> [Open DisplayForm] -> MutualId -> Defn -> Definition
- Agda.TypeChecking.Monad.Base: Function :: [Clauses] -> CompiledClauses -> FunctionInverse -> [Polarity] -> [Occurrence] -> IsAbstract -> Delayed -> Defn
+ Agda.TypeChecking.Monad.Base: Function :: [Clauses] -> CompiledClauses -> FunctionInverse -> [Polarity] -> [Occurrence] -> IsAbstract -> Delayed -> Maybe Int -> Defn
- Agda.TypeChecking.Monad.Base: PrimFun :: QName -> Arity -> (forall tcm. (MonadTCM tcm) => [Arg Term] -> tcm (Reduced [Arg Term] Term)) -> PrimFun
+ Agda.TypeChecking.Monad.Base: PrimFun :: QName -> Arity -> (forall tcm. MonadTCM tcm => [Arg Term] -> tcm (Reduced MaybeReducedArgs Term)) -> PrimFun
- Agda.TypeChecking.Monad.Base: Primitive :: IsAbstract -> String -> Maybe [Clauses] -> Defn
+ Agda.TypeChecking.Monad.Base: Primitive :: IsAbstract -> String -> Maybe [Clauses] -> Maybe CompiledClauses -> Defn
- Agda.TypeChecking.Monad.Base: TCEnv :: Context -> LetBindings -> ModuleName -> [(ModuleName, Nat)] -> [TopLevelModuleName] -> Maybe MutualId -> AbstractMode -> Bool -> Bool -> Bool -> Bool -> Range -> Maybe (Closure Call) -> TCEnv
+ Agda.TypeChecking.Monad.Base: TCEnv :: Context -> LetBindings -> ModuleName -> [(ModuleName, Nat)] -> [TopLevelModuleName] -> Maybe MutualId -> AbstractMode -> Bool -> Bool -> Bool -> Bool -> Bool -> Range -> Maybe (Closure Call) -> TCEnv
- Agda.TypeChecking.Monad.Base: buildClosure :: (MonadTCM tcm) => a -> tcm (Closure a)
+ Agda.TypeChecking.Monad.Base: buildClosure :: MonadTCM tcm => a -> tcm (Closure a)
- Agda.TypeChecking.Monad.Base: internalError :: (MonadTCM tcm) => String -> tcm a
+ Agda.TypeChecking.Monad.Base: internalError :: MonadTCM tcm => String -> tcm a
- Agda.TypeChecking.Monad.Base: liftTCM :: (MonadTCM tcm) => TCM a -> tcm a
+ Agda.TypeChecking.Monad.Base: liftTCM :: MonadTCM tcm => TCM a -> tcm a
- Agda.TypeChecking.Monad.Base: patternViolation :: (MonadTCM tcm) => tcm a
+ Agda.TypeChecking.Monad.Base: patternViolation :: MonadTCM tcm => tcm a
- Agda.TypeChecking.Monad.Base: primFunImplementation :: PrimFun -> forall tcm. (MonadTCM tcm) => [Arg Term] -> tcm (Reduced [Arg Term] Term)
+ Agda.TypeChecking.Monad.Base: primFunImplementation :: PrimFun -> forall tcm. MonadTCM tcm => [Arg Term] -> tcm (Reduced MaybeReducedArgs Term)
- Agda.TypeChecking.Monad.Base: pureTCM :: (Monad m) => (TCState -> TCEnv -> a) -> TCMT m a
+ Agda.TypeChecking.Monad.Base: pureTCM :: Monad m => (TCState -> TCEnv -> a) -> TCMT m a
- Agda.TypeChecking.Monad.Base: runTCM' :: (Monad m) => TCMT m a -> m a
+ Agda.TypeChecking.Monad.Base: runTCM' :: Monad m => TCMT m a -> m a
- Agda.TypeChecking.Monad.Base: typeError :: (MonadTCM tcm) => TypeError -> tcm a
+ Agda.TypeChecking.Monad.Base: typeError :: MonadTCM tcm => TypeError -> tcm a
- Agda.TypeChecking.Monad.Builtin: bindBuiltinName :: (MonadTCM tcm) => String -> Term -> tcm ()
+ Agda.TypeChecking.Monad.Builtin: bindBuiltinName :: MonadTCM tcm => String -> Term -> tcm ()
- Agda.TypeChecking.Monad.Builtin: bindPrimitive :: (MonadTCM tcm) => String -> PrimFun -> tcm ()
+ Agda.TypeChecking.Monad.Builtin: bindPrimitive :: MonadTCM tcm => String -> PrimFun -> tcm ()
- Agda.TypeChecking.Monad.Builtin: getBuiltin :: (MonadTCM tcm) => String -> tcm Term
+ Agda.TypeChecking.Monad.Builtin: getBuiltin :: MonadTCM tcm => String -> tcm Term
- Agda.TypeChecking.Monad.Builtin: getBuiltin' :: (MonadTCM tcm) => String -> tcm (Maybe Term)
+ Agda.TypeChecking.Monad.Builtin: getBuiltin' :: MonadTCM tcm => String -> tcm (Maybe Term)
- Agda.TypeChecking.Monad.Builtin: getBuiltinThings :: (MonadTCM tcm) => tcm (BuiltinThings PrimFun)
+ Agda.TypeChecking.Monad.Builtin: getBuiltinThings :: MonadTCM tcm => tcm (BuiltinThings PrimFun)
- Agda.TypeChecking.Monad.Builtin: getPrimitive :: (MonadTCM tcm) => String -> tcm PrimFun
+ Agda.TypeChecking.Monad.Builtin: getPrimitive :: MonadTCM tcm => String -> tcm PrimFun
- Agda.TypeChecking.Monad.Builtin: primAgdaTerm :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTerm :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermCon :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermCon :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermDef :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermDef :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermLam :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermLam :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermPi :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermPi :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermSort :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermSort :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermUnsupported :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermUnsupported :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primAgdaTermVar :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primAgdaTermVar :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primArg :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primArg :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primArgArg :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primArgArg :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primBool :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primBool :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primChar :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primChar :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primCons :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primCons :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primEquality :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primEquality :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primFalse :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primFalse :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primFlat :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primFlat :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primFloat :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primFloat :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primIO :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primIO :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primInf :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primInf :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primInteger :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primInteger :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primLevel :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primLevel :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primLevelMax :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primLevelMax :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primLevelSuc :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primLevelSuc :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primLevelZero :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primLevelZero :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primList :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primList :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNat :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNat :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatDivSucAux :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatDivSucAux :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatEquality :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatEquality :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatLess :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatLess :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatMinus :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatMinus :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatModSucAux :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatModSucAux :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatPlus :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatPlus :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNatTimes :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNatTimes :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primNil :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primNil :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primQName :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primQName :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primRefl :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primRefl :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primSharp :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primSharp :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primSize :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primSize :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primSizeInf :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primSizeInf :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primSizeSuc :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primSizeSuc :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primString :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primString :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primSuc :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primSuc :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primTrue :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primTrue :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: primZero :: (MonadTCM tcm) => tcm Term
+ Agda.TypeChecking.Monad.Builtin: primZero :: MonadTCM tcm => tcm Term
- Agda.TypeChecking.Monad.Builtin: setBuiltinThings :: (MonadTCM tcm) => BuiltinThings PrimFun -> tcm ()
+ Agda.TypeChecking.Monad.Builtin: setBuiltinThings :: MonadTCM tcm => BuiltinThings PrimFun -> tcm ()
- Agda.TypeChecking.Monad.Closure: enterClosure :: (MonadTCM tcm) => Closure a -> (a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Closure: enterClosure :: MonadTCM tcm => Closure a -> (a -> tcm b) -> tcm b
- Agda.TypeChecking.Monad.Constraints: addConstraints :: (MonadTCM tcm) => Constraints -> tcm ()
+ Agda.TypeChecking.Monad.Constraints: addConstraints :: MonadTCM tcm => Constraints -> tcm ()
- Agda.TypeChecking.Monad.Constraints: buildConstraint :: (MonadTCM tcm) => Constraint -> tcm Constraints
+ Agda.TypeChecking.Monad.Constraints: buildConstraint :: MonadTCM tcm => Constraint -> tcm Constraints
- Agda.TypeChecking.Monad.Constraints: getConstraints :: (MonadTCM tcm) => tcm Constraints
+ Agda.TypeChecking.Monad.Constraints: getConstraints :: MonadTCM tcm => tcm Constraints
- Agda.TypeChecking.Monad.Constraints: lookupConstraint :: (MonadTCM tcm) => Int -> tcm ConstraintClosure
+ Agda.TypeChecking.Monad.Constraints: lookupConstraint :: MonadTCM tcm => Int -> tcm ConstraintClosure
- Agda.TypeChecking.Monad.Constraints: takeConstraints :: (MonadTCM tcm) => tcm Constraints
+ Agda.TypeChecking.Monad.Constraints: takeConstraints :: MonadTCM tcm => tcm Constraints
- Agda.TypeChecking.Monad.Constraints: withConstraint :: (MonadTCM tcm) => (Constraint -> tcm a) -> ConstraintClosure -> tcm a
+ Agda.TypeChecking.Monad.Constraints: withConstraint :: MonadTCM tcm => (Constraint -> tcm a) -> ConstraintClosure -> tcm a
- Agda.TypeChecking.Monad.Context: addCtx :: (MonadTCM tcm) => Name -> Arg Type -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: addCtx :: MonadTCM tcm => Name -> Arg Type -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: addCtxTel :: (MonadTCM tcm) => Telescope -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: addCtxTel :: MonadTCM tcm => Telescope -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: addCtxs :: (MonadTCM tcm) => [Name] -> Arg Type -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: addCtxs :: MonadTCM tcm => [Name] -> Arg Type -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: addLetBinding :: (MonadTCM tcm) => Name -> Term -> Type -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: addLetBinding :: MonadTCM tcm => Relevance -> Name -> Term -> Type -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: applyRelevanceToContext :: (MonadTCM tcm) => Relevance -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: applyRelevanceToContext :: MonadTCM tcm => Relevance -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: escapeContext :: (MonadTCM tcm) => Int -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: escapeContext :: MonadTCM tcm => Int -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: getContext :: (MonadTCM tcm) => tcm [Arg (Name, Type)]
+ Agda.TypeChecking.Monad.Context: getContext :: MonadTCM tcm => tcm [Arg (Name, Type)]
- Agda.TypeChecking.Monad.Context: getContextArgs :: (MonadTCM tcm) => tcm Args
+ Agda.TypeChecking.Monad.Context: getContextArgs :: MonadTCM tcm => tcm Args
- Agda.TypeChecking.Monad.Context: getContextId :: (MonadTCM tcm) => tcm [CtxId]
+ Agda.TypeChecking.Monad.Context: getContextId :: MonadTCM tcm => tcm [CtxId]
- Agda.TypeChecking.Monad.Context: getContextTelescope :: (MonadTCM tcm) => tcm Telescope
+ Agda.TypeChecking.Monad.Context: getContextTelescope :: MonadTCM tcm => tcm Telescope
- Agda.TypeChecking.Monad.Context: getContextTerms :: (MonadTCM tcm) => tcm [Term]
+ Agda.TypeChecking.Monad.Context: getContextTerms :: MonadTCM tcm => tcm [Term]
- Agda.TypeChecking.Monad.Context: getVarInfo :: (MonadTCM tcm) => Name -> tcm (Term, Arg Type)
+ Agda.TypeChecking.Monad.Context: getVarInfo :: MonadTCM tcm => Name -> tcm (Term, Arg Type)
- Agda.TypeChecking.Monad.Context: inContext :: (MonadTCM tcm) => [Arg (Name, Type)] -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: inContext :: MonadTCM tcm => [Arg (Name, Type)] -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Context: mkContextEntry :: (MonadTCM tcm) => Arg (Name, Type) -> tcm ContextEntry
+ Agda.TypeChecking.Monad.Context: mkContextEntry :: MonadTCM tcm => Arg (Name, Type) -> tcm ContextEntry
- Agda.TypeChecking.Monad.Context: nameOfBV :: (MonadTCM tcm) => Nat -> tcm Name
+ Agda.TypeChecking.Monad.Context: nameOfBV :: MonadTCM tcm => Nat -> tcm Name
- Agda.TypeChecking.Monad.Context: typeOfBV :: (MonadTCM tcm) => Nat -> tcm Type
+ Agda.TypeChecking.Monad.Context: typeOfBV :: MonadTCM tcm => Nat -> tcm Type
- Agda.TypeChecking.Monad.Context: typeOfBV' :: (MonadTCM tcm) => Nat -> tcm (Arg Type)
+ Agda.TypeChecking.Monad.Context: typeOfBV' :: MonadTCM tcm => Nat -> tcm (Arg Type)
- Agda.TypeChecking.Monad.Context: underAbstraction :: (MonadTCM tcm) => Arg Type -> Abs a -> (a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Context: underAbstraction :: MonadTCM tcm => Arg Type -> Abs a -> (a -> tcm b) -> tcm b
- Agda.TypeChecking.Monad.Context: underAbstraction_ :: (MonadTCM tcm) => Abs a -> (a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Context: underAbstraction_ :: MonadTCM tcm => Abs a -> (a -> tcm b) -> tcm b
- Agda.TypeChecking.Monad.Context: wakeIrrelevantVars :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Context: wakeIrrelevantVars :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Debug: debug :: (MonadIO m) => String -> m ()
+ Agda.TypeChecking.Monad.Debug: debug :: MonadIO m => String -> m ()
- Agda.TypeChecking.Monad.Env: currentModule :: (MonadTCM tcm) => tcm ModuleName
+ Agda.TypeChecking.Monad.Env: currentModule :: MonadTCM tcm => tcm ModuleName
- Agda.TypeChecking.Monad.Env: getAnonymousVariables :: (MonadTCM tcm) => ModuleName -> tcm Nat
+ Agda.TypeChecking.Monad.Env: getAnonymousVariables :: MonadTCM tcm => ModuleName -> tcm Nat
- Agda.TypeChecking.Monad.Env: getEnv :: (MonadTCM tcm) => tcm TCEnv
+ Agda.TypeChecking.Monad.Env: getEnv :: MonadTCM tcm => tcm TCEnv
- Agda.TypeChecking.Monad.Env: withAnonymousModule :: (MonadTCM tcm) => ModuleName -> Nat -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Env: withAnonymousModule :: MonadTCM tcm => ModuleName -> Nat -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Env: withCurrentModule :: (MonadTCM tcm) => ModuleName -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Env: withCurrentModule :: MonadTCM tcm => ModuleName -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Env: withEnv :: (MonadTCM tcm) => TCEnv -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Env: withEnv :: MonadTCM tcm => TCEnv -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Exception: catchException :: (MonadException err m) => m a -> (err -> m a) -> m a
+ Agda.TypeChecking.Monad.Exception: catchException :: MonadException err m => m a -> (err -> m a) -> m a
- Agda.TypeChecking.Monad.Exception: class (Error err) => MonadException err m | m -> err
+ Agda.TypeChecking.Monad.Exception: class Error err => MonadException err m | m -> err
- Agda.TypeChecking.Monad.Exception: throwException :: (MonadException err m) => err -> m a
+ Agda.TypeChecking.Monad.Exception: throwException :: MonadException err m => err -> m a
- Agda.TypeChecking.Monad.MetaVars: addInteractionPoint :: (MonadTCM tcm) => InteractionId -> MetaId -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: addInteractionPoint :: MonadTCM tcm => InteractionId -> MetaId -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: clearMetaListeners :: (MonadTCM tcm) => MetaId -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: clearMetaListeners :: MonadTCM tcm => MetaId -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: createMetaInfo :: (MonadTCM tcm) => tcm MetaInfo
+ Agda.TypeChecking.Monad.MetaVars: createMetaInfo :: MonadTCM tcm => tcm MetaInfo
- Agda.TypeChecking.Monad.MetaVars: getInstantiatedMetas :: (MonadTCM tcm) => tcm [MetaId]
+ Agda.TypeChecking.Monad.MetaVars: getInstantiatedMetas :: MonadTCM tcm => tcm [MetaId]
- Agda.TypeChecking.Monad.MetaVars: getInteractionMetas :: (MonadTCM tcm) => tcm [MetaId]
+ Agda.TypeChecking.Monad.MetaVars: getInteractionMetas :: MonadTCM tcm => tcm [MetaId]
- Agda.TypeChecking.Monad.MetaVars: getInteractionPoints :: (MonadTCM tcm) => tcm [InteractionId]
+ Agda.TypeChecking.Monad.MetaVars: getInteractionPoints :: MonadTCM tcm => tcm [InteractionId]
- Agda.TypeChecking.Monad.MetaVars: getInteractionRange :: (MonadTCM tcm) => InteractionId -> tcm Range
+ Agda.TypeChecking.Monad.MetaVars: getInteractionRange :: MonadTCM tcm => InteractionId -> tcm Range
- Agda.TypeChecking.Monad.MetaVars: getInteractionScope :: (MonadTCM tcm) => InteractionId -> tcm ScopeInfo
+ Agda.TypeChecking.Monad.MetaVars: getInteractionScope :: MonadTCM tcm => InteractionId -> tcm ScopeInfo
- Agda.TypeChecking.Monad.MetaVars: getMetaListeners :: (MonadTCM tcm) => MetaId -> tcm [MetaId]
+ Agda.TypeChecking.Monad.MetaVars: getMetaListeners :: MonadTCM tcm => MetaId -> tcm [MetaId]
- Agda.TypeChecking.Monad.MetaVars: getMetaPriority :: (MonadTCM tcm) => MetaId -> tcm MetaPriority
+ Agda.TypeChecking.Monad.MetaVars: getMetaPriority :: MonadTCM tcm => MetaId -> tcm MetaPriority
- Agda.TypeChecking.Monad.MetaVars: getMetaRange :: (MonadTCM tcm) => MetaId -> tcm Range
+ Agda.TypeChecking.Monad.MetaVars: getMetaRange :: MonadTCM tcm => MetaId -> tcm Range
- Agda.TypeChecking.Monad.MetaVars: getMetaStore :: (MonadTCM tcm) => tcm MetaStore
+ Agda.TypeChecking.Monad.MetaVars: getMetaStore :: MonadTCM tcm => tcm MetaStore
- Agda.TypeChecking.Monad.MetaVars: getOpenMetas :: (MonadTCM tcm) => tcm [MetaId]
+ Agda.TypeChecking.Monad.MetaVars: getOpenMetas :: MonadTCM tcm => tcm [MetaId]
- Agda.TypeChecking.Monad.MetaVars: isInstantiatedMeta :: (MonadTCM tcm) => MetaId -> tcm Bool
+ Agda.TypeChecking.Monad.MetaVars: isInstantiatedMeta :: MonadTCM tcm => MetaId -> tcm Bool
- Agda.TypeChecking.Monad.MetaVars: isInteractionMeta :: (MonadTCM tcm) => MetaId -> tcm Bool
+ Agda.TypeChecking.Monad.MetaVars: isInteractionMeta :: MonadTCM tcm => MetaId -> tcm Bool
- Agda.TypeChecking.Monad.MetaVars: isSortMeta :: (MonadTCM tcm) => MetaId -> tcm Bool
+ Agda.TypeChecking.Monad.MetaVars: isSortMeta :: MonadTCM tcm => MetaId -> tcm Bool
- Agda.TypeChecking.Monad.MetaVars: judgementInteractionId :: (MonadTCM tcm) => InteractionId -> tcm (Judgement Type MetaId)
+ Agda.TypeChecking.Monad.MetaVars: judgementInteractionId :: MonadTCM tcm => InteractionId -> tcm (Judgement Type MetaId)
- Agda.TypeChecking.Monad.MetaVars: listenToMeta :: (MonadTCM tcm) => MetaId -> MetaId -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: listenToMeta :: MonadTCM tcm => MetaId -> MetaId -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: lookupInteractionId :: (MonadTCM tcm) => InteractionId -> tcm MetaId
+ Agda.TypeChecking.Monad.MetaVars: lookupInteractionId :: MonadTCM tcm => InteractionId -> tcm MetaId
- Agda.TypeChecking.Monad.MetaVars: lookupMeta :: (MonadTCM tcm) => MetaId -> tcm MetaVariable
+ Agda.TypeChecking.Monad.MetaVars: lookupMeta :: MonadTCM tcm => MetaId -> tcm MetaVariable
- Agda.TypeChecking.Monad.MetaVars: newMeta :: (MonadTCM tcm) => MetaInfo -> MetaPriority -> Permutation -> Judgement Type a -> tcm MetaId
+ Agda.TypeChecking.Monad.MetaVars: newMeta :: MonadTCM tcm => MetaInfo -> MetaPriority -> Permutation -> Judgement Type a -> tcm MetaId
- Agda.TypeChecking.Monad.MetaVars: newMeta' :: (MonadTCM tcm) => MetaInstantiation -> MetaInfo -> MetaPriority -> Permutation -> Judgement Type a -> tcm MetaId
+ Agda.TypeChecking.Monad.MetaVars: newMeta' :: MonadTCM tcm => MetaInstantiation -> MetaInfo -> MetaPriority -> Permutation -> Judgement Type a -> tcm MetaId
- Agda.TypeChecking.Monad.MetaVars: removeInteractionPoint :: (MonadTCM tcm) => InteractionId -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: removeInteractionPoint :: MonadTCM tcm => InteractionId -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: unlistenToMeta :: (MonadTCM tcm) => MetaId -> MetaId -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: unlistenToMeta :: MonadTCM tcm => MetaId -> MetaId -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: updateMetaVar :: (MonadTCM tcm) => MetaId -> (MetaVariable -> MetaVariable) -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: updateMetaVar :: MonadTCM tcm => MetaId -> (MetaVariable -> MetaVariable) -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: updateMetaVarRange :: (MonadTCM tcm) => MetaId -> Range -> tcm ()
+ Agda.TypeChecking.Monad.MetaVars: updateMetaVarRange :: MonadTCM tcm => MetaId -> Range -> tcm ()
- Agda.TypeChecking.Monad.MetaVars: withMetaInfo :: (MonadTCM tcm) => MetaInfo -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.MetaVars: withMetaInfo :: MonadTCM tcm => MetaInfo -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Mutual: currentMutualBlock :: (MonadTCM tcm) => tcm MutualId
+ Agda.TypeChecking.Monad.Mutual: currentMutualBlock :: MonadTCM tcm => tcm MutualId
- Agda.TypeChecking.Monad.Mutual: findMutualBlock :: (MonadTCM tcm) => QName -> tcm (Set QName)
+ Agda.TypeChecking.Monad.Mutual: findMutualBlock :: MonadTCM tcm => QName -> tcm (Set QName)
- Agda.TypeChecking.Monad.Mutual: getMutualBlocks :: (MonadTCM tcm) => tcm [Set QName]
+ Agda.TypeChecking.Monad.Mutual: getMutualBlocks :: MonadTCM tcm => tcm [Set QName]
- Agda.TypeChecking.Monad.Mutual: inMutualBlock :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Mutual: inMutualBlock :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Mutual: lookupMutualBlock :: (MonadTCM tcm) => MutualId -> tcm (Set QName)
+ Agda.TypeChecking.Monad.Mutual: lookupMutualBlock :: MonadTCM tcm => MutualId -> tcm (Set QName)
- Agda.TypeChecking.Monad.Mutual: noMutualBlock :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Mutual: noMutualBlock :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Mutual: setMutualBlock :: (MonadTCM tcm) => MutualId -> QName -> tcm ()
+ Agda.TypeChecking.Monad.Mutual: setMutualBlock :: MonadTCM tcm => MutualId -> QName -> tcm ()
- Agda.TypeChecking.Monad.Open: makeOpen :: (MonadTCM tcm) => a -> tcm (Open a)
+ Agda.TypeChecking.Monad.Open: makeOpen :: MonadTCM tcm => a -> tcm (Open a)
- Agda.TypeChecking.Monad.Options: commandLineOptions :: (MonadTCM tcm) => tcm CommandLineOptions
+ Agda.TypeChecking.Monad.Options: commandLineOptions :: MonadTCM tcm => tcm CommandLineOptions
- Agda.TypeChecking.Monad.Options: disableDisplayForms :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: disableDisplayForms :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: displayFormsEnabled :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: displayFormsEnabled :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: doEtaContractImplicit :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: doEtaContractImplicit :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: dontEtaContractImplicit :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: dontEtaContractImplicit :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: dontReifyInteractionPoints :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: dontReifyInteractionPoints :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: enableDisplayForms :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: enableDisplayForms :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: getIncludeDirs :: (MonadTCM tcm) => tcm [AbsolutePath]
+ Agda.TypeChecking.Monad.Options: getIncludeDirs :: MonadTCM tcm => tcm [AbsolutePath]
- Agda.TypeChecking.Monad.Options: getInputFile :: (MonadTCM tcm) => tcm AbsolutePath
+ Agda.TypeChecking.Monad.Options: getInputFile :: MonadTCM tcm => tcm AbsolutePath
- Agda.TypeChecking.Monad.Options: getVerbosity :: (MonadTCM tcm) => tcm (Trie String Int)
+ Agda.TypeChecking.Monad.Options: getVerbosity :: MonadTCM tcm => tcm (Trie String Int)
- Agda.TypeChecking.Monad.Options: hasInputFile :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: hasInputFile :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: hasUniversePolymorphism :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: hasUniversePolymorphism :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: hasVerbosity :: (MonadTCM tcm) => VerboseKey -> Int -> tcm Bool
+ Agda.TypeChecking.Monad.Options: hasVerbosity :: MonadTCM tcm => VerboseKey -> Int -> tcm Bool
- Agda.TypeChecking.Monad.Options: ignoreInterfaces :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: ignoreInterfaces :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: positivityCheckEnabled :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: positivityCheckEnabled :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: pragmaOptions :: (MonadTCM tcm) => tcm PragmaOptions
+ Agda.TypeChecking.Monad.Options: pragmaOptions :: MonadTCM tcm => tcm PragmaOptions
- Agda.TypeChecking.Monad.Options: proofIrrelevance :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: proofIrrelevance :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: reportS :: (MonadTCM tcm) => VerboseKey -> Int -> String -> tcm ()
+ Agda.TypeChecking.Monad.Options: reportS :: MonadTCM tcm => VerboseKey -> Int -> String -> tcm ()
- Agda.TypeChecking.Monad.Options: reportSDoc :: (MonadTCM tcm) => VerboseKey -> Int -> tcm Doc -> tcm ()
+ Agda.TypeChecking.Monad.Options: reportSDoc :: MonadTCM tcm => VerboseKey -> Int -> tcm Doc -> tcm ()
- Agda.TypeChecking.Monad.Options: reportSLn :: (MonadTCM tcm) => VerboseKey -> Int -> String -> tcm ()
+ Agda.TypeChecking.Monad.Options: reportSLn :: MonadTCM tcm => VerboseKey -> Int -> String -> tcm ()
- Agda.TypeChecking.Monad.Options: setCommandLineOptions :: (MonadTCM tcm) => CommandLineOptions -> tcm ()
+ Agda.TypeChecking.Monad.Options: setCommandLineOptions :: MonadTCM tcm => CommandLineOptions -> tcm ()
- Agda.TypeChecking.Monad.Options: setIncludeDirs :: (MonadTCM tcm) => [FilePath] -> RelativeTo -> tcm ()
+ Agda.TypeChecking.Monad.Options: setIncludeDirs :: MonadTCM tcm => [FilePath] -> RelativeTo -> tcm ()
- Agda.TypeChecking.Monad.Options: setInputFile :: (MonadTCM tcm) => FilePath -> tcm ()
+ Agda.TypeChecking.Monad.Options: setInputFile :: MonadTCM tcm => FilePath -> tcm ()
- Agda.TypeChecking.Monad.Options: setOptionsFromPragma :: (MonadTCM tcm) => OptionsPragma -> tcm ()
+ Agda.TypeChecking.Monad.Options: setOptionsFromPragma :: MonadTCM tcm => OptionsPragma -> tcm ()
- Agda.TypeChecking.Monad.Options: setPragmaOptions :: (MonadTCM tcm) => PragmaOptions -> tcm ()
+ Agda.TypeChecking.Monad.Options: setPragmaOptions :: MonadTCM tcm => PragmaOptions -> tcm ()
- Agda.TypeChecking.Monad.Options: setShowImplicitArguments :: (MonadTCM tcm) => Bool -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: setShowImplicitArguments :: MonadTCM tcm => Bool -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: shouldEtaContractImplicit :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: shouldEtaContractImplicit :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: shouldReifyInteractionPoints :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: shouldReifyInteractionPoints :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: showImplicitArguments :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: showImplicitArguments :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: typeInType :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.Monad.Options: typeInType :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.Monad.Options: verboseBracket :: (MonadTCM tcm) => VerboseKey -> Int -> String -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Options: verboseBracket :: MonadTCM tcm => VerboseKey -> Int -> String -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Options: verboseS :: (MonadTCM tcm) => VerboseKey -> Int -> tcm () -> tcm ()
+ Agda.TypeChecking.Monad.Options: verboseS :: MonadTCM tcm => VerboseKey -> Int -> tcm () -> tcm ()
- Agda.TypeChecking.Monad.Signature: addConstant :: (MonadTCM tcm) => QName -> Definition -> tcm ()
+ Agda.TypeChecking.Monad.Signature: addConstant :: MonadTCM tcm => QName -> Definition -> tcm ()
- Agda.TypeChecking.Monad.Signature: addDisplayForm :: (MonadTCM tcm) => QName -> DisplayForm -> tcm ()
+ Agda.TypeChecking.Monad.Signature: addDisplayForm :: MonadTCM tcm => QName -> DisplayForm -> tcm ()
- Agda.TypeChecking.Monad.Signature: addHaskellCode :: (MonadTCM tcm) => QName -> HaskellType -> HaskellCode -> tcm ()
+ Agda.TypeChecking.Monad.Signature: addHaskellCode :: MonadTCM tcm => QName -> HaskellType -> HaskellCode -> tcm ()
- Agda.TypeChecking.Monad.Signature: addHaskellType :: (MonadTCM tcm) => QName -> HaskellType -> tcm ()
+ Agda.TypeChecking.Monad.Signature: addHaskellType :: MonadTCM tcm => QName -> HaskellType -> tcm ()
- Agda.TypeChecking.Monad.Signature: addSection :: (MonadTCM tcm) => ModuleName -> Nat -> tcm ()
+ Agda.TypeChecking.Monad.Signature: addSection :: MonadTCM tcm => ModuleName -> Nat -> tcm ()
- Agda.TypeChecking.Monad.Signature: applySection :: (MonadTCM tcm) => ModuleName -> Telescope -> ModuleName -> Args -> Map QName QName -> Map ModuleName ModuleName -> tcm ()
+ Agda.TypeChecking.Monad.Signature: applySection :: MonadTCM tcm => ModuleName -> Telescope -> ModuleName -> Args -> Map QName QName -> Map ModuleName ModuleName -> tcm ()
- Agda.TypeChecking.Monad.Signature: canonicalName :: (MonadTCM tcm) => QName -> tcm QName
+ Agda.TypeChecking.Monad.Signature: canonicalName :: MonadTCM tcm => QName -> tcm QName
- Agda.TypeChecking.Monad.Signature: freeVarsToApply :: (MonadTCM tcm) => QName -> tcm Args
+ Agda.TypeChecking.Monad.Signature: freeVarsToApply :: MonadTCM tcm => QName -> tcm Args
- Agda.TypeChecking.Monad.Signature: getArgOccurrence :: (MonadTCM tcm) => QName -> Nat -> tcm Occurrence
+ Agda.TypeChecking.Monad.Signature: getArgOccurrence :: MonadTCM tcm => QName -> Nat -> tcm Occurrence
- Agda.TypeChecking.Monad.Signature: getConstInfo :: (MonadTCM tcm) => QName -> tcm Definition
+ Agda.TypeChecking.Monad.Signature: getConstInfo :: MonadTCM tcm => QName -> tcm Definition
- Agda.TypeChecking.Monad.Signature: getDefFreeVars :: (MonadTCM tcm) => QName -> tcm Nat
+ Agda.TypeChecking.Monad.Signature: getDefFreeVars :: MonadTCM tcm => QName -> tcm Nat
- Agda.TypeChecking.Monad.Signature: getImportedSignature :: (MonadTCM tcm) => tcm Signature
+ Agda.TypeChecking.Monad.Signature: getImportedSignature :: MonadTCM tcm => tcm Signature
- Agda.TypeChecking.Monad.Signature: getModuleFreeVars :: (MonadTCM tcm) => ModuleName -> tcm Nat
+ Agda.TypeChecking.Monad.Signature: getModuleFreeVars :: MonadTCM tcm => ModuleName -> tcm Nat
- Agda.TypeChecking.Monad.Signature: getPolarity :: (MonadTCM tcm) => QName -> tcm [Polarity]
+ Agda.TypeChecking.Monad.Signature: getPolarity :: MonadTCM tcm => QName -> tcm [Polarity]
- Agda.TypeChecking.Monad.Signature: getPolarity' :: (MonadTCM tcm) => Comparison -> QName -> tcm [Polarity]
+ Agda.TypeChecking.Monad.Signature: getPolarity' :: MonadTCM tcm => Comparison -> QName -> tcm [Polarity]
- Agda.TypeChecking.Monad.Signature: getSecFreeVars :: (MonadTCM tcm) => ModuleName -> tcm Nat
+ Agda.TypeChecking.Monad.Signature: getSecFreeVars :: MonadTCM tcm => ModuleName -> tcm Nat
- Agda.TypeChecking.Monad.Signature: getSignature :: (MonadTCM tcm) => tcm Signature
+ Agda.TypeChecking.Monad.Signature: getSignature :: MonadTCM tcm => tcm Signature
- Agda.TypeChecking.Monad.Signature: ignoreAbstractMode :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Signature: ignoreAbstractMode :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Signature: inAbstractMode :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Signature: inAbstractMode :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Signature: inConcreteMode :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.Signature: inConcreteMode :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.Signature: instantiateDef :: (MonadTCM tcm) => Definition -> tcm Definition
+ Agda.TypeChecking.Monad.Signature: instantiateDef :: MonadTCM tcm => Definition -> tcm Definition
- Agda.TypeChecking.Monad.Signature: lookupSection :: (MonadTCM tcm) => ModuleName -> tcm Telescope
+ Agda.TypeChecking.Monad.Signature: lookupSection :: MonadTCM tcm => ModuleName -> tcm Telescope
- Agda.TypeChecking.Monad.Signature: modifyImportedSignature :: (MonadTCM tcm) => (Signature -> Signature) -> tcm ()
+ Agda.TypeChecking.Monad.Signature: modifyImportedSignature :: MonadTCM tcm => (Signature -> Signature) -> tcm ()
- Agda.TypeChecking.Monad.Signature: modifySignature :: (MonadTCM tcm) => (Signature -> Signature) -> tcm ()
+ Agda.TypeChecking.Monad.Signature: modifySignature :: MonadTCM tcm => (Signature -> Signature) -> tcm ()
- Agda.TypeChecking.Monad.Signature: setArgOccurrences :: (MonadTCM tcm) => QName -> [Occurrence] -> tcm ()
+ Agda.TypeChecking.Monad.Signature: setArgOccurrences :: MonadTCM tcm => QName -> [Occurrence] -> tcm ()
- Agda.TypeChecking.Monad.Signature: setImportedSignature :: (MonadTCM tcm) => Signature -> tcm ()
+ Agda.TypeChecking.Monad.Signature: setImportedSignature :: MonadTCM tcm => Signature -> tcm ()
- Agda.TypeChecking.Monad.Signature: setPolarity :: (MonadTCM tcm) => QName -> [Polarity] -> tcm ()
+ Agda.TypeChecking.Monad.Signature: setPolarity :: MonadTCM tcm => QName -> [Polarity] -> tcm ()
- Agda.TypeChecking.Monad.Signature: setSignature :: (MonadTCM tcm) => Signature -> tcm ()
+ Agda.TypeChecking.Monad.Signature: setSignature :: MonadTCM tcm => Signature -> tcm ()
- Agda.TypeChecking.Monad.Signature: sortOfConst :: (MonadTCM tcm) => QName -> tcm Sort
+ Agda.TypeChecking.Monad.Signature: sortOfConst :: MonadTCM tcm => QName -> tcm Sort
- Agda.TypeChecking.Monad.Signature: treatAbstractly :: (MonadTCM tcm) => QName -> tcm Bool
+ Agda.TypeChecking.Monad.Signature: treatAbstractly :: MonadTCM tcm => QName -> tcm Bool
- Agda.TypeChecking.Monad.Signature: typeOfConst :: (MonadTCM tcm) => QName -> tcm Type
+ Agda.TypeChecking.Monad.Signature: typeOfConst :: MonadTCM tcm => QName -> tcm Type
- Agda.TypeChecking.Monad.Signature: whatInduction :: (MonadTCM tcm) => QName -> tcm Induction
+ Agda.TypeChecking.Monad.Signature: whatInduction :: MonadTCM tcm => QName -> tcm Induction
- Agda.TypeChecking.Monad.Signature: withSignature :: (MonadTCM tcm) => Signature -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Signature: withSignature :: MonadTCM tcm => Signature -> tcm a -> tcm a
- Agda.TypeChecking.Monad.SizedTypes: isSizeType :: (MonadTCM tcm) => Type -> tcm Bool
+ Agda.TypeChecking.Monad.SizedTypes: isSizeType :: MonadTCM tcm => Type -> tcm Bool
- Agda.TypeChecking.Monad.SizedTypes: sizeSuc :: (MonadTCM tcm) => tcm (Maybe QName)
+ Agda.TypeChecking.Monad.SizedTypes: sizeSuc :: MonadTCM tcm => tcm (Maybe QName)
- Agda.TypeChecking.Monad.SizedTypes: sizeType :: (MonadTCM tcm) => tcm Type
+ Agda.TypeChecking.Monad.SizedTypes: sizeType :: MonadTCM tcm => tcm Type
- Agda.TypeChecking.Monad.SizedTypes: sizeView :: (MonadTCM tcm) => Term -> tcm SizeView
+ Agda.TypeChecking.Monad.SizedTypes: sizeView :: MonadTCM tcm => Term -> tcm SizeView
- Agda.TypeChecking.Monad.SizedTypes: unSizeView :: (MonadTCM tcm) => SizeView -> tcm Term
+ Agda.TypeChecking.Monad.SizedTypes: unSizeView :: MonadTCM tcm => SizeView -> tcm Term
- Agda.TypeChecking.Monad.State: addHaskellImport :: (MonadTCM tcm) => String -> tcm ()
+ Agda.TypeChecking.Monad.State: addHaskellImport :: MonadTCM tcm => String -> tcm ()
- Agda.TypeChecking.Monad.State: getHaskellImports :: (MonadTCM tcm) => tcm (Set String)
+ Agda.TypeChecking.Monad.State: getHaskellImports :: MonadTCM tcm => tcm (Set String)
- Agda.TypeChecking.Monad.State: getScope :: (MonadTCM tcm) => tcm ScopeInfo
+ Agda.TypeChecking.Monad.State: getScope :: MonadTCM tcm => tcm ScopeInfo
- Agda.TypeChecking.Monad.State: localScope :: (MonadTCM tcm) => tcm a -> tcm a
+ Agda.TypeChecking.Monad.State: localScope :: MonadTCM tcm => tcm a -> tcm a
- Agda.TypeChecking.Monad.State: modifyScope :: (MonadTCM tcm) => (ScopeInfo -> ScopeInfo) -> tcm ()
+ Agda.TypeChecking.Monad.State: modifyScope :: MonadTCM tcm => (ScopeInfo -> ScopeInfo) -> tcm ()
- Agda.TypeChecking.Monad.State: resetState :: (MonadTCM tcm) => tcm ()
+ Agda.TypeChecking.Monad.State: resetState :: MonadTCM tcm => tcm ()
- Agda.TypeChecking.Monad.State: setScope :: (MonadTCM tcm) => ScopeInfo -> tcm ()
+ Agda.TypeChecking.Monad.State: setScope :: MonadTCM tcm => ScopeInfo -> tcm ()
- Agda.TypeChecking.Monad.State: setTopLevelModule :: (MonadTCM tcm) => QName -> tcm ()
+ Agda.TypeChecking.Monad.State: setTopLevelModule :: MonadTCM tcm => QName -> tcm ()
- Agda.TypeChecking.Monad.State: withScope :: (MonadTCM tcm) => ScopeInfo -> tcm a -> tcm (a, ScopeInfo)
+ Agda.TypeChecking.Monad.State: withScope :: MonadTCM tcm => ScopeInfo -> tcm a -> tcm (a, ScopeInfo)
- Agda.TypeChecking.Monad.State: withScope_ :: (MonadTCM tcm) => ScopeInfo -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.State: withScope_ :: MonadTCM tcm => ScopeInfo -> tcm a -> tcm a
- Agda.TypeChecking.Monad.State: withTopLevelModule :: (MonadTCM tcm) => QName -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.State: withTopLevelModule :: MonadTCM tcm => QName -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Trace: getCurrentRange :: (MonadTCM tcm) => tcm Range
+ Agda.TypeChecking.Monad.Trace: getCurrentRange :: MonadTCM tcm => tcm Range
- Agda.TypeChecking.Monad.Trace: setCurrentRange :: (MonadTCM tcm) => Range -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Trace: setCurrentRange :: MonadTCM tcm => Range -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Trace: traceCall :: (MonadTCM tcm) => (Maybe r -> Call) -> tcm a -> tcm a
+ Agda.TypeChecking.Monad.Trace: traceCall :: MonadTCM tcm => (Maybe r -> Call) -> tcm a -> tcm a
- Agda.TypeChecking.Monad.Trace: traceCallCPS :: (MonadTCM tcm) => (Maybe r -> Call) -> (r -> tcm a) -> ((r -> tcm a) -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Trace: traceCallCPS :: MonadTCM tcm => (Maybe r -> Call) -> (r -> tcm a) -> ((r -> tcm a) -> tcm b) -> tcm b
- Agda.TypeChecking.Monad.Trace: traceCallCPS_ :: (MonadTCM tcm) => (Maybe () -> Call) -> tcm a -> (tcm a -> tcm b) -> tcm b
+ Agda.TypeChecking.Monad.Trace: traceCallCPS_ :: MonadTCM tcm => (Maybe () -> Call) -> tcm a -> (tcm a -> tcm b) -> tcm b
- Agda.TypeChecking.Monad.Trace: traceCall_ :: (MonadTCM tcm) => (Maybe () -> Call) -> tcm r -> tcm r
+ Agda.TypeChecking.Monad.Trace: traceCall_ :: MonadTCM tcm => (Maybe () -> Call) -> tcm r -> tcm r
- Agda.TypeChecking.Patterns.Match: matchPattern :: (MonadTCM tcm) => Arg Pattern -> Arg Term -> tcm (Match, Arg Term)
+ Agda.TypeChecking.Patterns.Match: matchPattern :: MonadTCM tcm => Arg Pattern -> Arg Term -> tcm (Match, Arg Term)
- Agda.TypeChecking.Patterns.Match: matchPatterns :: (MonadTCM tcm) => [Arg Pattern] -> [Arg Term] -> tcm (Match, [Arg Term])
+ Agda.TypeChecking.Patterns.Match: matchPatterns :: MonadTCM tcm => [Arg Pattern] -> [Arg Term] -> tcm (Match, [Arg Term])
- Agda.TypeChecking.Polarity: polarities :: (HasPolarity a) => Nat -> a -> TCM [Polarity]
+ Agda.TypeChecking.Polarity: polarities :: HasPolarity a => Nat -> a -> TCM [Polarity]
- Agda.TypeChecking.Polarity: polarity :: (HasPolarity a) => Nat -> a -> TCM Polarity
+ Agda.TypeChecking.Polarity: polarity :: HasPolarity a => Nat -> a -> TCM Polarity
- Agda.TypeChecking.Positivity: occurrences :: (ComputeOccurrences a) => [Maybe Item] -> a -> Occurrences
+ Agda.TypeChecking.Positivity: occurrences :: ComputeOccurrences a => [Maybe Item] -> a -> Occurrences
- Agda.TypeChecking.Pretty: comma :: (MonadTCM tcm) => tcm Doc
+ Agda.TypeChecking.Pretty: comma :: MonadTCM tcm => tcm Doc
- Agda.TypeChecking.Pretty: empty :: (MonadTCM tcm) => tcm Doc
+ Agda.TypeChecking.Pretty: empty :: MonadTCM tcm => tcm Doc
- Agda.TypeChecking.Primitive: (-->) :: (MonadTCM tcm) => tcm Type -> tcm Type -> tcm Type
+ Agda.TypeChecking.Primitive: (-->) :: MonadTCM tcm => tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: (<#>) :: (MonadTCM tcm) => tcm Term -> tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: (<#>) :: MonadTCM tcm => tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: (<@>) :: (MonadTCM tcm) => tcm Term -> tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: (<@>) :: MonadTCM tcm => tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: buildList :: (MonadTCM tcm) => tcm ([Term] -> Term)
+ Agda.TypeChecking.Primitive: buildList :: MonadTCM tcm => tcm ([Term] -> Term)
- Agda.TypeChecking.Primitive: constructorForm :: (MonadTCM tcm) => Term -> tcm Term
+ Agda.TypeChecking.Primitive: constructorForm :: MonadTCM tcm => Term -> tcm Term
- Agda.TypeChecking.Primitive: el :: (MonadTCM tcm) => tcm Term -> tcm Type
+ Agda.TypeChecking.Primitive: el :: MonadTCM tcm => tcm Term -> tcm Type
- Agda.TypeChecking.Primitive: fromLiteral :: (MonadTCM tcm) => (Literal -> Maybe a) -> tcm (FromTermFunction a)
+ Agda.TypeChecking.Primitive: fromLiteral :: MonadTCM tcm => (Literal -> Maybe a) -> tcm (FromTermFunction a)
- Agda.TypeChecking.Primitive: fromReducedTerm :: (MonadTCM tcm) => (Term -> Maybe a) -> tcm (FromTermFunction a)
+ Agda.TypeChecking.Primitive: fromReducedTerm :: MonadTCM tcm => (Term -> Maybe a) -> tcm (FromTermFunction a)
- Agda.TypeChecking.Primitive: gApply :: (MonadTCM tcm) => Hiding -> tcm Term -> tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: gApply :: MonadTCM tcm => Hiding -> tcm Term -> tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: gpi :: (MonadTCM tcm) => Hiding -> Relevance -> String -> tcm Type -> tcm Type -> tcm Type
+ Agda.TypeChecking.Primitive: gpi :: MonadTCM tcm => Hiding -> Relevance -> String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: hPi :: (MonadTCM tcm) => String -> tcm Type -> tcm Type -> tcm Type
+ Agda.TypeChecking.Primitive: hPi :: MonadTCM tcm => String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: io :: (MonadTCM tcm) => tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: io :: MonadTCM tcm => tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: list :: (MonadTCM tcm) => tcm Term -> tcm Term
+ Agda.TypeChecking.Primitive: list :: MonadTCM tcm => tcm Term -> tcm Term
- Agda.TypeChecking.Primitive: lookupPrimitiveFunction :: (MonadTCM tcm) => String -> tcm PrimitiveImpl
+ Agda.TypeChecking.Primitive: lookupPrimitiveFunction :: MonadTCM tcm => String -> tcm PrimitiveImpl
- Agda.TypeChecking.Primitive: nPi :: (MonadTCM tcm) => String -> tcm Type -> tcm Type -> tcm Type
+ Agda.TypeChecking.Primitive: nPi :: MonadTCM tcm => String -> tcm Type -> tcm Type -> tcm Type
- Agda.TypeChecking.Primitive: primTrustMe :: (MonadTCM tcm) => tcm PrimitiveImpl
+ Agda.TypeChecking.Primitive: primTrustMe :: MonadTCM tcm => tcm PrimitiveImpl
- Agda.TypeChecking.Primitive: rebindPrimitive :: (MonadTCM tcm) => String -> tcm PrimFun
+ Agda.TypeChecking.Primitive: rebindPrimitive :: MonadTCM tcm => String -> tcm PrimFun
- Agda.TypeChecking.Primitive: redBind :: (MonadTCM tcm) => tcm (Reduced a a') -> (a -> b) -> (a' -> tcm (Reduced b b')) -> tcm (Reduced b b')
+ Agda.TypeChecking.Primitive: redBind :: MonadTCM tcm => tcm (Reduced a a') -> (a -> b) -> (a' -> tcm (Reduced b b')) -> tcm (Reduced b b')
- Agda.TypeChecking.Primitive: redReturn :: (MonadTCM tcm) => a -> tcm (Reduced a' a)
+ Agda.TypeChecking.Primitive: redReturn :: MonadTCM tcm => a -> tcm (Reduced a' a)
- Agda.TypeChecking.Primitive: tset :: (MonadTCM tcm) => tcm Type
+ Agda.TypeChecking.Primitive: tset :: MonadTCM tcm => tcm Type
- Agda.TypeChecking.Primitive: type FromTermFunction a = Arg Term -> TCM (Reduced (Arg Term) a)
+ Agda.TypeChecking.Primitive: type FromTermFunction a = Arg Term -> TCM (Reduced (MaybeReduced (Arg Term)) a)
- Agda.TypeChecking.Primitive: var :: (MonadTCM tcm) => Integer -> tcm Term
+ Agda.TypeChecking.Primitive: var :: MonadTCM tcm => Integer -> tcm Term
- Agda.TypeChecking.RecordPatterns: translateRecordPatterns :: (MonadTCM tcm) => Clause -> tcm Clauses
+ Agda.TypeChecking.RecordPatterns: translateRecordPatterns :: MonadTCM tcm => Clause -> tcm Clauses
- Agda.TypeChecking.Records: etaContractRecord :: (MonadTCM tcm) => QName -> QName -> Args -> tcm Term
+ Agda.TypeChecking.Records: etaContractRecord :: MonadTCM tcm => QName -> QName -> Args -> tcm Term
- Agda.TypeChecking.Records: etaExpandRecord :: (MonadTCM tcm) => QName -> Args -> Term -> tcm (Telescope, Args)
+ Agda.TypeChecking.Records: etaExpandRecord :: MonadTCM tcm => QName -> Args -> Term -> tcm (Telescope, Args)
- Agda.TypeChecking.Records: getRecordConstructor :: (MonadTCM tcm) => QName -> tcm QName
+ Agda.TypeChecking.Records: getRecordConstructor :: MonadTCM tcm => QName -> tcm QName
- Agda.TypeChecking.Records: getRecordConstructorType :: (MonadTCM tcm) => QName -> tcm Type
+ Agda.TypeChecking.Records: getRecordConstructorType :: MonadTCM tcm => QName -> tcm Type
- Agda.TypeChecking.Records: getRecordDef :: (MonadTCM tcm) => QName -> tcm Defn
+ Agda.TypeChecking.Records: getRecordDef :: MonadTCM tcm => QName -> tcm Defn
- Agda.TypeChecking.Records: getRecordFieldNames :: (MonadTCM tcm) => QName -> tcm [Arg Name]
+ Agda.TypeChecking.Records: getRecordFieldNames :: MonadTCM tcm => QName -> tcm [Arg Name]
- Agda.TypeChecking.Records: getRecordFieldTypes :: (MonadTCM tcm) => QName -> tcm Telescope
+ Agda.TypeChecking.Records: getRecordFieldTypes :: MonadTCM tcm => QName -> tcm Telescope
- Agda.TypeChecking.Records: isEtaRecord :: (MonadTCM tcm) => QName -> tcm Bool
+ Agda.TypeChecking.Records: isEtaRecord :: MonadTCM tcm => QName -> tcm Bool
- Agda.TypeChecking.Records: isGeneratedRecordConstructor :: (MonadTCM tcm) => QName -> tcm Bool
+ Agda.TypeChecking.Records: isGeneratedRecordConstructor :: MonadTCM tcm => QName -> tcm Bool
- Agda.TypeChecking.Records: isRecord :: (MonadTCM tcm) => QName -> tcm Bool
+ Agda.TypeChecking.Records: isRecord :: MonadTCM tcm => QName -> tcm Bool
- Agda.TypeChecking.Records: isSingletonRecord :: (MonadTCM tcm) => QName -> Args -> tcm (Either MetaId Bool)
+ Agda.TypeChecking.Records: isSingletonRecord :: MonadTCM tcm => QName -> Args -> tcm (Either MetaId Bool)
- Agda.TypeChecking.Records: orderFields :: (MonadTCM tcm) => QName -> a -> [Name] -> [(Name, a)] -> tcm [a]
+ Agda.TypeChecking.Records: orderFields :: MonadTCM tcm => QName -> a -> [Name] -> [(Name, a)] -> tcm [a]
- Agda.TypeChecking.Reduce: telViewM :: (MonadTCM tcm) => Type -> tcm TelView
+ Agda.TypeChecking.Reduce: telViewM :: MonadTCM tcm => Type -> tcm TelView
- Agda.TypeChecking.Reduce: traceFun :: (MonadTCM tcm) => String -> tcm a -> tcm a
+ Agda.TypeChecking.Reduce: traceFun :: MonadTCM tcm => String -> tcm a -> tcm a
- Agda.TypeChecking.Reduce: unfoldDefinition :: (MonadTCM tcm) => Bool -> (Term -> tcm (Blocked Term)) -> Term -> QName -> Args -> tcm (Blocked Term)
+ Agda.TypeChecking.Reduce: unfoldDefinition :: MonadTCM tcm => Bool -> (Term -> tcm (Blocked Term)) -> Term -> QName -> Args -> tcm (Blocked Term)
- Agda.TypeChecking.Rules.Data: forceData :: (MonadTCM tcm) => QName -> Type -> tcm Type
+ Agda.TypeChecking.Rules.Data: forceData :: MonadTCM tcm => QName -> Type -> tcm Type
- Agda.TypeChecking.Rules.Data: isCoinductive :: (MonadTCM tcm) => Type -> tcm (Maybe Bool)
+ Agda.TypeChecking.Rules.Data: isCoinductive :: MonadTCM tcm => Type -> tcm (Maybe Bool)
- Agda.TypeChecking.Rules.Decl: checkAxiom :: DefInfo -> QName -> Expr -> TCM ()
+ Agda.TypeChecking.Rules.Decl: checkAxiom :: DefInfo -> Relevance -> QName -> Expr -> TCM ()
- Agda.TypeChecking.Rules.Def: actualConstructor :: (MonadTCM tcm) => QName -> tcm QName
+ Agda.TypeChecking.Rules.Def: actualConstructor :: MonadTCM tcm => QName -> tcm QName
- Agda.TypeChecking.Rules.LHS: noPatternMatchingOnCodata :: (MonadTCM tcm) => [Arg Pattern] -> tcm ()
+ Agda.TypeChecking.Rules.LHS: noPatternMatchingOnCodata :: MonadTCM tcm => [Arg Pattern] -> tcm ()
- Agda.TypeChecking.Rules.LHS.Instantiate: instantiateTel :: (MonadTCM tcm) => Substitution -> Telescope -> tcm (Telescope, Permutation, [Term], [Type])
+ Agda.TypeChecking.Rules.LHS.Instantiate: instantiateTel :: MonadTCM tcm => Substitution -> Telescope -> tcm (Telescope, Permutation, [Term], [Type])
- Agda.TypeChecking.Rules.LHS.Unify: dataOrRecordType :: (MonadTCM tcm) => QName -> Type -> tcm Type
+ Agda.TypeChecking.Rules.LHS.Unify: dataOrRecordType :: MonadTCM tcm => QName -> Type -> tcm Type
- Agda.TypeChecking.Rules.LHS.Unify: unifyIndices :: (MonadTCM tcm) => FlexibleVars -> Type -> [Arg Term] -> [Arg Term] -> tcm UnificationResult
+ Agda.TypeChecking.Rules.LHS.Unify: unifyIndices :: MonadTCM tcm => FlexibleVars -> Type -> [Arg Term] -> [Arg Term] -> tcm UnificationResult
- Agda.TypeChecking.Rules.LHS.Unify: unifyIndices_ :: (MonadTCM tcm) => FlexibleVars -> Type -> [Arg Term] -> [Arg Term] -> tcm Substitution
+ Agda.TypeChecking.Rules.LHS.Unify: unifyIndices_ :: MonadTCM tcm => FlexibleVars -> Type -> [Arg Term] -> [Arg Term] -> tcm Substitution
- Agda.TypeChecking.Rules.Term: reduceCon :: (MonadTCM tcm) => QName -> tcm QName
+ Agda.TypeChecking.Rules.Term: reduceCon :: MonadTCM tcm => QName -> tcm QName
- Agda.TypeChecking.Rules.Term: traceCallE :: (Error e) => (Maybe r -> Call) -> ErrorT e TCM r -> ErrorT e TCM r
+ Agda.TypeChecking.Rules.Term: traceCallE :: Error e => (Maybe r -> Call) -> ErrorT e TCM r -> ErrorT e TCM r
- Agda.TypeChecking.Serialise: class (Typeable a) => EmbPrj a
+ Agda.TypeChecking.Serialise: class Typeable a => EmbPrj a
- Agda.TypeChecking.Serialise: decode :: (EmbPrj a) => ByteString -> TCM (Maybe a)
+ Agda.TypeChecking.Serialise: decode :: EmbPrj a => ByteString -> TCM (Maybe a)
- Agda.TypeChecking.Serialise: decodeFile :: (EmbPrj a) => FilePath -> TCM (Maybe a)
+ Agda.TypeChecking.Serialise: decodeFile :: EmbPrj a => FilePath -> TCM (Maybe a)
- Agda.TypeChecking.Serialise: encode :: (EmbPrj a) => a -> TCM ByteString
+ Agda.TypeChecking.Serialise: encode :: EmbPrj a => a -> TCM ByteString
- Agda.TypeChecking.Serialise: encodeFile :: (EmbPrj a) => FilePath -> a -> TCM ()
+ Agda.TypeChecking.Serialise: encodeFile :: EmbPrj a => FilePath -> a -> TCM ()
- Agda.TypeChecking.SizedTypes: compareSizes :: (MonadTCM tcm) => Comparison -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.SizedTypes: compareSizes :: MonadTCM tcm => Comparison -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.SizedTypes: computeSizeConstraint :: (MonadTCM tcm) => ConstraintClosure -> tcm (Maybe SizeConstraint)
+ Agda.TypeChecking.SizedTypes: computeSizeConstraint :: MonadTCM tcm => ConstraintClosure -> tcm (Maybe SizeConstraint)
- Agda.TypeChecking.SizedTypes: getSizeConstraints :: (MonadTCM tcm) => tcm [SizeConstraint]
+ Agda.TypeChecking.SizedTypes: getSizeConstraints :: MonadTCM tcm => tcm [SizeConstraint]
- Agda.TypeChecking.SizedTypes: getSizeMetas :: (MonadTCM tcm) => tcm [(MetaId, Int)]
+ Agda.TypeChecking.SizedTypes: getSizeMetas :: MonadTCM tcm => tcm [(MetaId, Int)]
- Agda.TypeChecking.SizedTypes: haveSizedTypes :: (MonadTCM tcm) => tcm Bool
+ Agda.TypeChecking.SizedTypes: haveSizedTypes :: MonadTCM tcm => tcm Bool
- Agda.TypeChecking.SizedTypes: sizeExpr :: (MonadTCM tcm) => Term -> tcm (SizeExpr, Int)
+ Agda.TypeChecking.SizedTypes: sizeExpr :: MonadTCM tcm => Term -> tcm (SizeExpr, Int)
- Agda.TypeChecking.SizedTypes: solveSizeConstraints :: (MonadTCM tcm) => tcm ()
+ Agda.TypeChecking.SizedTypes: solveSizeConstraints :: MonadTCM tcm => tcm ()
- Agda.TypeChecking.SizedTypes: trivial :: (MonadTCM tcm) => Term -> Term -> tcm Bool
+ Agda.TypeChecking.SizedTypes: trivial :: MonadTCM tcm => Term -> Term -> tcm Bool
- Agda.TypeChecking.Substitute: absApp :: (Subst t) => Abs t -> Term -> t
+ Agda.TypeChecking.Substitute: absApp :: Subst t => Abs t -> Term -> t
- Agda.TypeChecking.Substitute: abstract :: (Abstract t) => Telescope -> t -> t
+ Agda.TypeChecking.Substitute: abstract :: Abstract t => Telescope -> t -> t
- Agda.TypeChecking.Substitute: abstractArgs :: (Abstract a) => Args -> a -> a
+ Agda.TypeChecking.Substitute: abstractArgs :: Abstract a => Args -> a -> a
- Agda.TypeChecking.Substitute: apply :: (Apply t) => t -> Args -> t
+ Agda.TypeChecking.Substitute: apply :: Apply t => t -> Args -> t
- Agda.TypeChecking.Substitute: raise :: (Raise t) => Nat -> t -> t
+ Agda.TypeChecking.Substitute: raise :: Raise t => Nat -> t -> t
- Agda.TypeChecking.Substitute: raiseFrom :: (Raise t) => Nat -> Nat -> t -> t
+ Agda.TypeChecking.Substitute: raiseFrom :: Raise t => Nat -> Nat -> t -> t
- Agda.TypeChecking.Substitute: subst :: (Subst t) => Term -> t -> t
+ Agda.TypeChecking.Substitute: subst :: Subst t => Term -> t -> t
- Agda.TypeChecking.Substitute: substUnder :: (Subst t) => Nat -> Term -> t -> t
+ Agda.TypeChecking.Substitute: substUnder :: Subst t => Nat -> Term -> t -> t
- Agda.TypeChecking.Substitute: substs :: (Subst t) => Substitution -> t -> t
+ Agda.TypeChecking.Substitute: substs :: Subst t => Substitution -> t -> t
- Agda.TypeChecking.Telescope: piApplyM :: (MonadTCM tcm) => Type -> Args -> tcm Type
+ Agda.TypeChecking.Telescope: piApplyM :: MonadTCM tcm => Type -> Args -> tcm Type
- Agda.TypeChecking.Telescope: rename :: (Subst t) => Permutation -> t -> t
+ Agda.TypeChecking.Telescope: rename :: Subst t => Permutation -> t -> t
- Agda.TypeChecking.Telescope: telView :: (MonadTCM tcm) => Type -> tcm TelView
+ Agda.TypeChecking.Telescope: telView :: MonadTCM tcm => Type -> tcm TelView
- Agda.TypeChecking.Test.Generators: genC :: (GenC a) => TermConfiguration -> Gen a
+ Agda.TypeChecking.Test.Generators: genC :: GenC a => TermConfiguration -> Gen a
- Agda.TypeChecking.Test.Generators: isWellScoped :: (Free a) => TermConfiguration -> a -> Bool
+ Agda.TypeChecking.Test.Generators: isWellScoped :: Free a => TermConfiguration -> a -> Bool
- Agda.TypeChecking.Test.Generators: killAbs :: (KillVar a) => Abs a -> a
+ Agda.TypeChecking.Test.Generators: killAbs :: KillVar a => Abs a -> a
- Agda.TypeChecking.Test.Generators: killVar :: (KillVar a) => Nat -> a -> a
+ Agda.TypeChecking.Test.Generators: killVar :: KillVar a => Nat -> a -> a
- Agda.TypeChecking.Test.Generators: noShrink :: (ShrinkC a b) => a -> b
+ Agda.TypeChecking.Test.Generators: noShrink :: ShrinkC a b => a -> b
- Agda.TypeChecking.Test.Generators: shrinkC :: (ShrinkC a b) => TermConfiguration -> a -> [b]
+ Agda.TypeChecking.Test.Generators: shrinkC :: ShrinkC a b => TermConfiguration -> a -> [b]
- Agda.TypeChecking.UniversePolymorphism: compareLevel :: (MonadTCM tcm) => Comparison -> Term -> Term -> tcm Constraints
+ Agda.TypeChecking.UniversePolymorphism: compareLevel :: MonadTCM tcm => Comparison -> Term -> Term -> tcm Constraints
- Agda.TypeChecking.UniversePolymorphism: mlevel :: (MonadTCM tcm) => tcm (Maybe Term)
+ Agda.TypeChecking.UniversePolymorphism: mlevel :: MonadTCM tcm => tcm (Maybe Term)
- Agda.Utils.Fresh: nextFresh :: (HasFresh i a) => a -> (i, a)
+ Agda.Utils.Fresh: nextFresh :: HasFresh i a => a -> (i, a)
- Agda.Utils.Function: iterate' :: (Integral i) => i -> (a -> a) -> a -> a
+ Agda.Utils.Function: iterate' :: Integral i => i -> (a -> a) -> a -> a
- Agda.Utils.Generics: everywhereButM' :: (Monad m) => GenericQ Bool -> GenericM m -> GenericM m
+ Agda.Utils.Generics: everywhereButM' :: Monad m => GenericQ Bool -> GenericM m -> GenericM m
- Agda.Utils.Graph: edges :: (Ord n) => Graph n e -> [(n, n, e)]
+ Agda.Utils.Graph: edges :: Ord n => Graph n e -> [(n, n, e)]
- Agda.Utils.Graph: lookup :: (Ord n) => n -> n -> Graph n e -> Maybe e
+ Agda.Utils.Graph: lookup :: Ord n => n -> n -> Graph n e -> Maybe e
- Agda.Utils.Graph: neighbours :: (Ord n) => n -> Graph n e -> [(n, e)]
+ Agda.Utils.Graph: neighbours :: Ord n => n -> Graph n e -> [(n, e)]
- Agda.Utils.Graph: nodes :: (Ord n) => Graph n e -> Set n
+ Agda.Utils.Graph: nodes :: Ord n => Graph n e -> Set n
- Agda.Utils.IO.Locale: print :: (Show a) => a -> IO ()
+ Agda.Utils.IO.Locale: print :: Show a => a -> IO ()
- Agda.Utils.List: allEqual :: (Eq a) => [a] -> Bool
+ Agda.Utils.List: allEqual :: Eq a => [a] -> Bool
- Agda.Utils.List: distinct :: (Eq a) => [a] -> Bool
+ Agda.Utils.List: distinct :: Eq a => [a] -> Bool
- Agda.Utils.List: extractNthElement :: (Integral i) => i -> [a] -> (a, [a])
+ Agda.Utils.List: extractNthElement :: Integral i => i -> [a] -> (a, [a])
- Agda.Utils.List: extractNthElement' :: (Integral i) => i -> [a] -> ([a], a, [a])
+ Agda.Utils.List: extractNthElement' :: Integral i => i -> [a] -> ([a], a, [a])
- Agda.Utils.List: groupOn :: (Ord b) => (a -> b) -> [a] -> [[a]]
+ Agda.Utils.List: groupOn :: Ord b => (a -> b) -> [a] -> [[a]]
- Agda.Utils.List: maybePrefixMatch :: (Eq a) => Prefix a -> [a] -> Maybe (Suffix a)
+ Agda.Utils.List: maybePrefixMatch :: Eq a => Prefix a -> [a] -> Maybe (Suffix a)
- Agda.Utils.Map: filterKeys :: (Ord k) => (k -> Bool) -> Map k a -> Map k a
+ Agda.Utils.Map: filterKeys :: Ord k => (k -> Bool) -> Map k a -> Map k a
- Agda.Utils.Maybe: fromMaybeM :: (Monad m) => m a -> m (Maybe a) -> m a
+ Agda.Utils.Maybe: fromMaybeM :: Monad m => m a -> m (Maybe a) -> m a
- Agda.Utils.Monad: (<$>) :: (Functor f) => (a -> b) -> f a -> f b
+ Agda.Utils.Monad: (<$>) :: Functor f => (a -> b) -> f a -> f b
- Agda.Utils.Monad: (<*>) :: (Applicative f) => forall a b. f (a -> b) -> f a -> f b
+ Agda.Utils.Monad: (<*>) :: Applicative f => forall a b. f (a -> b) -> f a -> f b
- Agda.Utils.Monad: (<.>) :: (Monad m) => (b -> m c) -> (a -> m b) -> a -> m c
+ Agda.Utils.Monad: (<.>) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
- Agda.Utils.Monad: concatMapM :: (Applicative m) => (a -> m [b]) -> [a] -> m [b]
+ Agda.Utils.Monad: concatMapM :: Applicative m => (a -> m [b]) -> [a] -> m [b]
- Agda.Utils.Monad: forceM :: (Monad m) => [a] -> m ()
+ Agda.Utils.Monad: forceM :: Monad m => [a] -> m ()
- Agda.Utils.Monad: forgetM :: (Applicative m) => m a -> m ()
+ Agda.Utils.Monad: forgetM :: Applicative m => m a -> m ()
- Agda.Utils.Monad: ifM :: (Monad m) => m Bool -> m a -> m a -> m a
+ Agda.Utils.Monad: ifM :: Monad m => m Bool -> m a -> m a -> m a
- Agda.Utils.Monad: liftEither :: (MonadError e m) => Either e a -> m a
+ Agda.Utils.Monad: liftEither :: MonadError e m => Either e a -> m a
- Agda.Utils.Monad: mapMaybeM :: (Applicative m) => (a -> m b) -> Maybe a -> m (Maybe b)
+ Agda.Utils.Monad: mapMaybeM :: Applicative m => (a -> m b) -> Maybe a -> m (Maybe b)
- Agda.Utils.Monad: readM :: (Monad m, Read a) => String -> m a
+ Agda.Utils.Monad: readM :: (Error e, MonadError e m, Read a) => String -> m a
- Agda.Utils.Monad: unlessM :: (Monad m) => m Bool -> m () -> m ()
+ Agda.Utils.Monad: unlessM :: Monad m => m Bool -> m () -> m ()
- Agda.Utils.Monad: whenM :: (Monad m) => m Bool -> m () -> m ()
+ Agda.Utils.Monad: whenM :: Monad m => m Bool -> m () -> m ()
- Agda.Utils.Monad: zipWithM' :: (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m [c]
+ Agda.Utils.Monad: zipWithM' :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]
- Agda.Utils.Pointer: alloc :: (MonadIO io) => a -> io (Ptr a)
+ Agda.Utils.Pointer: alloc :: MonadIO io => a -> io (Ptr a)
- Agda.Utils.Pointer: deref :: (MonadIO io) => Ptr a -> io a
+ Agda.Utils.Pointer: deref :: MonadIO io => Ptr a -> io a
- Agda.Utils.Pointer: store :: (MonadIO io) => Ptr a -> a -> io ()
+ Agda.Utils.Pointer: store :: MonadIO io => Ptr a -> a -> io ()
- Agda.Utils.Pointer: updatePtr :: (MonadIO io) => Ptr a -> (a -> io a) -> io a
+ Agda.Utils.Pointer: updatePtr :: MonadIO io => Ptr a -> (a -> io a) -> io a
- Agda.Utils.Pretty: pretty :: (Pretty a) => a -> Doc
+ Agda.Utils.Pretty: pretty :: Pretty a => a -> Doc
- Agda.Utils.Pretty: prettyPrec :: (Pretty a) => Int -> a -> Doc
+ Agda.Utils.Pretty: prettyPrec :: Pretty a => Int -> a -> Doc
- Agda.Utils.QuickCheck: quickCheck' :: (Testable prop) => prop -> IO Bool
+ Agda.Utils.QuickCheck: quickCheck' :: Testable prop => prop -> IO Bool
- Agda.Utils.QuickCheck: quickCheckWith' :: (Testable prop) => Args -> prop -> IO Bool
+ Agda.Utils.QuickCheck: quickCheckWith' :: Testable prop => Args -> prop -> IO Bool
- Agda.Utils.ReadP: char :: (Eq t) => t -> ReadP t t
+ Agda.Utils.ReadP: char :: Eq t => t -> ReadP t t
- Agda.Utils.ReadP: string :: (Eq t) => [t] -> ReadP t [t]
+ Agda.Utils.ReadP: string :: Eq t => [t] -> ReadP t [t]
- Agda.Utils.SemiRing: oplus :: (SemiRing a) => a -> a -> a
+ Agda.Utils.SemiRing: oplus :: SemiRing a => a -> a -> a
- Agda.Utils.SemiRing: otimes :: (SemiRing a) => a -> a -> a
+ Agda.Utils.SemiRing: otimes :: SemiRing a => a -> a -> a
- Agda.Utils.String: indent :: (Integral i) => i -> String -> String
+ Agda.Utils.String: indent :: Integral i => i -> String -> String
- Agda.Utils.String: showIndex :: (Integral i) => i -> String
+ Agda.Utils.String: showIndex :: Integral i => i -> String
- Agda.Utils.TestHelpers: natural :: (Integral i) => Gen i
+ Agda.Utils.TestHelpers: natural :: Integral i => Gen i
- Agda.Utils.TestHelpers: positive :: (Integral i) => Gen i
+ Agda.Utils.TestHelpers: positive :: Integral i => Gen i
- Agda.Utils.Trie: insert :: (Ord k) => [k] -> v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: insert :: Ord k => [k] -> v -> Trie k v -> Trie k v
- Agda.Utils.Trie: lookupPath :: (Ord k) => [k] -> Trie k v -> [v]
+ Agda.Utils.Trie: lookupPath :: Ord k => [k] -> Trie k v -> [v]
- Agda.Utils.Trie: union :: (Ord k) => Trie k v -> Trie k v -> Trie k v
+ Agda.Utils.Trie: union :: Ord k => Trie k v -> Trie k v -> Trie k v
- Agda.Utils.Warshall: edges :: (Ord n) => AdjList n e -> [(n, n, e)]
+ Agda.Utils.Warshall: edges :: Ord n => AdjList n e -> [(n, n, e)]
- Agda.Utils.Warshall: genGraph :: (Ord node) => Float -> Gen edge -> [node] -> Gen (AdjList node edge)
+ Agda.Utils.Warshall: genGraph :: Ord node => Float -> Gen edge -> [node] -> Gen (AdjList node edge)
- Agda.Utils.Warshall: lookupEdge :: (Ord n) => n -> n -> AdjList n e -> Maybe e
+ Agda.Utils.Warshall: lookupEdge :: Ord n => n -> n -> AdjList n e -> Maybe e
- Agda.Utils.Warshall: warshall :: (SemiRing a) => Matrix a -> Matrix a
+ Agda.Utils.Warshall: warshall :: SemiRing a => Matrix a -> Matrix a
Files
- Agda.cabal +33/−11
- LICENSE +1/−1
- README +50/−0
- dist/build/Agda/Syntax/Parser/Lexer.hs +88/−86
- dist/build/Agda/Syntax/Parser/Parser.hs +4204/−4103
- doc/release-notes/2-2-10.txt +214/−0
- src/data/EpicInclude/AgdaPrelude.e +117/−0
- src/data/EpicInclude/stdagda.c +44/−0
- src/data/EpicInclude/stdagda.h +21/−0
- src/data/emacs-mode/agda2-mode.el +47/−72
- src/data/emacs-mode/annotation.el +1/−1
- src/data/emacs-mode/eri.el +83/−63
- src/full/Agda/Auto/Auto.hs +2/−1
- src/full/Agda/Auto/Convert.hs +12/−6
- src/full/Agda/Auto/NarrowingSearch.hs +1/−1
- src/full/Agda/Auto/Typecheck.hs +1/−2
- src/full/Agda/Compiler/Epic/AuxAST.hs +117/−0
- src/full/Agda/Compiler/Epic/CompileState.hs +134/−0
- src/full/Agda/Compiler/Epic/Compiler.hs +146/−0
- src/full/Agda/Compiler/Epic/ConstructorIrrelevancy.hs +67/−0
- src/full/Agda/Compiler/Epic/Epic.hs +79/−0
- src/full/Agda/Compiler/Epic/Erasure.hs +133/−0
- src/full/Agda/Compiler/Epic/Forcing.hs +398/−0
- src/full/Agda/Compiler/Epic/FromAgda.hs +233/−0
- src/full/Agda/Compiler/Epic/LambdaLift.hs +60/−0
- src/full/Agda/Compiler/Epic/NatDetection.hs +64/−0
- src/full/Agda/Compiler/Epic/Primitive.hs +201/−0
- src/full/Agda/Compiler/MAlonzo/Compiler.hs +199/−137
- src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot +2/−2
- src/full/Agda/Compiler/MAlonzo/Encode.hs +13/−9
- src/full/Agda/Compiler/MAlonzo/Misc.hs +43/−39
- src/full/Agda/Compiler/MAlonzo/Pretty.hs +1/−8
- src/full/Agda/Compiler/MAlonzo/Primitives.hs +244/−240
- src/full/Agda/ImpossibleTest.hs +8/−0
- src/full/Agda/Interaction/BasicOps.hs +4/−4
- src/full/Agda/Interaction/CommandLine/CommandLine.hs +0/−1
- src/full/Agda/Interaction/Exceptions.hs +0/−1
- src/full/Agda/Interaction/GhciTop.hs +87/−53
- src/full/Agda/Interaction/Highlighting/Generate.hs +37/−20
- src/full/Agda/Interaction/Highlighting/HTML.hs +4/−2
- src/full/Agda/Interaction/Imports.hs +127/−102
- src/full/Agda/Interaction/MakeCase.hs +6/−28
- src/full/Agda/Interaction/Options.hs +35/−12
- src/full/Agda/Main.hs +3/−1
- src/full/Agda/Packaging/Monad.hs +1/−1
- src/full/Agda/Syntax/Abstract.hs +13/−8
- src/full/Agda/Syntax/Abstract/Name.hs +0/−1
- src/full/Agda/Syntax/Abstract/Views.hs +4/−4
- src/full/Agda/Syntax/Common.hs +5/−0
- src/full/Agda/Syntax/Concrete.hs +22/−21
- src/full/Agda/Syntax/Concrete/Definitions.hs +21/−21
- src/full/Agda/Syntax/Concrete/Operators.hs +8/−9
- src/full/Agda/Syntax/Concrete/Operators/Parser.hs +1/−2
- src/full/Agda/Syntax/Concrete/Pretty.hs +11/−9
- src/full/Agda/Syntax/Fixity.hs +2/−3
- src/full/Agda/Syntax/Info.hs +1/−2
- src/full/Agda/Syntax/Internal.hs +0/−1
- src/full/Agda/Syntax/Internal/Generic.hs +0/−1
- src/full/Agda/Syntax/Literal.hs +0/−1
- src/full/Agda/Syntax/Notation.hs +10/−11
- src/full/Agda/Syntax/Parser/Comments.hs +0/−2
- src/full/Agda/Syntax/Parser/Layout.hs +0/−1
- src/full/Agda/Syntax/Parser/LexActions.hs +0/−1
- src/full/Agda/Syntax/Parser/Lexer.x +2/−0
- src/full/Agda/Syntax/Parser/LookAhead.hs +0/−1
- src/full/Agda/Syntax/Parser/Monad.hs +0/−1
- src/full/Agda/Syntax/Parser/Parser.y +43/−18
- src/full/Agda/Syntax/Parser/StringLiterals.hs +0/−1
- src/full/Agda/Syntax/Parser/Tokens.hs +1/−1
- src/full/Agda/Syntax/Position.hs +14/−1
- src/full/Agda/Syntax/Scope/Base.hs +15/−3
- src/full/Agda/Syntax/Scope/Monad.hs +1/−2
- src/full/Agda/Syntax/Strict.hs +0/−1
- src/full/Agda/Syntax/Translation/AbstractToConcrete.hs +26/−17
- src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs +69/−58
- src/full/Agda/Syntax/Translation/InternalToAbstract.hs +2/−4
- src/full/Agda/Termination/CallGraph.hs +10/−10
- src/full/Agda/Termination/Lexicographic.hs +4/−5
- src/full/Agda/Termination/Matrix.hs +2/−2
- src/full/Agda/Termination/Semiring.hs +2/−2
- src/full/Agda/Termination/SparseMatrix.hs +21/−21
- src/full/Agda/Termination/TermCheck.hs +61/−15
- src/full/Agda/TypeChecker.hs +0/−1
- src/full/Agda/TypeChecking/Abstract.hs +0/−1
- src/full/Agda/TypeChecking/CompiledClause.hs +0/−1
- src/full/Agda/TypeChecking/CompiledClause/Match.hs +20/−17
- src/full/Agda/TypeChecking/CompiledClause/Match.hs-boot +2/−1
- src/full/Agda/TypeChecking/Constraints.hs +0/−1
- src/full/Agda/TypeChecking/Conversion.hs +9/−3
- src/full/Agda/TypeChecking/Coverage.hs +68/−24
- src/full/Agda/TypeChecking/Coverage/Match.hs +0/−1
- src/full/Agda/TypeChecking/Datatypes.hs +0/−2
- src/full/Agda/TypeChecking/DisplayForm.hs +0/−1
- src/full/Agda/TypeChecking/Empty.hs +1/−2
- src/full/Agda/TypeChecking/Errors.hs +20/−5
- src/full/Agda/TypeChecking/EtaContract.hs +0/−1
- src/full/Agda/TypeChecking/Forcing.hs +0/−1
- src/full/Agda/TypeChecking/Free.hs +0/−1
- src/full/Agda/TypeChecking/Implicit.hs +0/−1
- src/full/Agda/TypeChecking/Injectivity.hs +0/−1
- src/full/Agda/TypeChecking/Level.hs +0/−1
- src/full/Agda/TypeChecking/MetaVars.hs +39/−23
- src/full/Agda/TypeChecking/MetaVars.hs-boot +1/−0
- src/full/Agda/TypeChecking/MetaVars/Occurs.hs +10/−3
- src/full/Agda/TypeChecking/Monad.hs +0/−2
- src/full/Agda/TypeChecking/Monad/Base.hs +44/−8
- src/full/Agda/TypeChecking/Monad/Builtin.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Closure.hs +0/−2
- src/full/Agda/TypeChecking/Monad/Constraints.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Context.hs +7/−5
- src/full/Agda/TypeChecking/Monad/Env.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Exception.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Imports.hs +0/−1
- src/full/Agda/TypeChecking/Monad/MetaVars.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Mutual.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Open.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Options.hs +3/−5
- src/full/Agda/TypeChecking/Monad/Signature.hs +43/−3
- src/full/Agda/TypeChecking/Monad/SizedTypes.hs +0/−1
- src/full/Agda/TypeChecking/Monad/State.hs +0/−1
- src/full/Agda/TypeChecking/Monad/Statistics.hs +6/−4
- src/full/Agda/TypeChecking/Monad/Trace.hs +0/−1
- src/full/Agda/TypeChecking/Patterns/Match.hs +2/−3
- src/full/Agda/TypeChecking/Polarity.hs +0/−1
- src/full/Agda/TypeChecking/Positivity.hs +3/−2
- src/full/Agda/TypeChecking/Pretty.hs +11/−4
- src/full/Agda/TypeChecking/Primitive.hs +80/−72
- src/full/Agda/TypeChecking/Quote.hs +2/−3
- src/full/Agda/TypeChecking/Rebind.hs +0/−1
- src/full/Agda/TypeChecking/Records.hs +30/−11
- src/full/Agda/TypeChecking/Reduce.hs +32/−25
- src/full/Agda/TypeChecking/Rules/Builtin.hs +2/−1
- src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs +4/−0
- src/full/Agda/TypeChecking/Rules/Data.hs +17/−7
- src/full/Agda/TypeChecking/Rules/Decl.hs +18/−11
- src/full/Agda/TypeChecking/Rules/Def.hs +31/−5
- src/full/Agda/TypeChecking/Rules/LHS.hs +3/−5
- src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs +0/−1
- src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs +11/−9
- src/full/Agda/TypeChecking/Rules/LHS/Problem.hs +0/−1
- src/full/Agda/TypeChecking/Rules/LHS/Split.hs +44/−1
- src/full/Agda/TypeChecking/Rules/Record.hs +23/−11
- src/full/Agda/TypeChecking/Rules/Term.hs +54/−34
- src/full/Agda/TypeChecking/Serialise.hs +10/−10
- src/full/Agda/TypeChecking/SizedTypes.hs +10/−7
- src/full/Agda/TypeChecking/Substitute.hs +16/−10
- src/full/Agda/TypeChecking/Telescope.hs +18/−0
- src/full/Agda/TypeChecking/Test/Generators.hs +0/−1
- src/full/Agda/TypeChecking/UniversePolymorphism.hs +0/−1
- src/full/Agda/TypeChecking/With.hs +1/−4
- src/full/Agda/Utils/Char.hs +0/−1
- src/full/Agda/Utils/Either.hs +9/−1
- src/full/Agda/Utils/Fresh.hs +0/−1
- src/full/Agda/Utils/Hash.hs +0/−1
- src/full/Agda/Utils/IO/Locale.hs +5/−1
- src/full/Agda/Utils/List.hs +14/−2
- src/full/Agda/Utils/Map.hs +0/−1
- src/full/Agda/Utils/Maybe.hs +0/−1
- src/full/Agda/Utils/Monad.hs +4/−34
- src/full/Agda/Utils/Permutation.hs +2/−3
- src/full/Agda/Utils/Pointer.hs +0/−1
- src/full/Agda/Utils/ReadP.hs +1/−1
- src/full/Agda/Utils/SemiRing.hs +0/−1
- src/full/Agda/Utils/Size.hs +0/−1
- src/full/Agda/Utils/Suffix.hs +0/−1
- src/full/Agda/Utils/TestHelpers.hs +15/−1
- src/full/Agda/Utils/Trie.hs +0/−1
- src/full/Agda/Utils/Tuple.hs +0/−1
- src/full/Agda/Utils/Warshall.hs +2/−2
Agda.cabal view
@@ -1,5 +1,5 @@ name: Agda-version: 2.2.8+version: 2.2.10 cabal-version: >= 1.8 && < 2 build-type: Simple license: OtherLicense@@ -34,13 +34,16 @@ Note also that this library does not follow the package versioning policy, because the library is only intended to be used by the Emacs mode and the Agda-executable package.-tested-with: GHC == 6.12.1, GHC == 6.12.3+tested-with: GHC == 6.12.1, GHC == 6.12.3, GHC == 7.0.1 extra-source-files: src/full/Agda/undefined.h README doc/release-notes/*.txt data-dir: src/data data-files: Agda.css emacs-mode/*.el+ EpicInclude/AgdaPrelude.e+ EpicInclude/stdagda.c+ EpicInclude/stdagda.h source-repository head type: darcs@@ -49,7 +52,7 @@ source-repository this type: darcs location: http://code.haskell.org/Agda/- tag: 2.2.8+ tag: 2.2.10 flag use-locale description:@@ -57,16 +60,24 @@ of the IO going to/from stdin and stdout. (Note that source files must always be encoded using UTF8.) +flag epic+ default: False+ manual: True+ description:+ Install the Epic compiler.+ library hs-source-dirs: src/full if flag(use-locale)- build-depends: base == 4.2.*+ build-depends: base >= 4.2 && < 4.4 else build-depends: base == 4.1.*, utf8-string == 0.3.*- build-depends: mtl >= 1.1 && < 2,- QuickCheck >= 2.1.0.2 && < 2.2,- haskell-src >= 1.0.1.1 && < 2,+ if flag(epic)+ build-depends: epic >= 0.1.7 && < 0.2+ build-depends: mtl == 2.0.*,+ QuickCheck >= 2.3 && < 2.5,+ haskell-src-exts >= 1.9.6 && < 1.10, containers >= 0.1.0 && < 1, pretty >= 1 && < 2, directory >= 1.0 && < 1.2,@@ -77,17 +88,28 @@ zlib >= 0.4.0.1 && < 1, filepath >= 1.1 && < 2, process >= 1.0.1.0 && < 2,- haskeline >= 0.3 && < 0.7,+ haskeline >= 0.6.3.2 && < 0.7, xhtml == 3000.2.*,- syb == 0.1.*,- Cabal >= 1.8.0.2 && < 1.9+ syb >= 0.1 && < 0.3 build-tools: happy >= 1.15 && < 2, alex >= 2.0.1 && < 3 extensions: CPP exposed-modules: Agda.Main+ Agda.ImpossibleTest Agda.Interaction.BasicOps Agda.Interaction.GhciTop Agda.Compiler.HaskellTypes+ Agda.Compiler.Epic.AuxAST+ Agda.Compiler.Epic.Compiler+ Agda.Compiler.Epic.CompileState+ Agda.Compiler.Epic.ConstructorIrrelevancy+ Agda.Compiler.Epic.Erasure+ Agda.Compiler.Epic.Epic+ Agda.Compiler.Epic.Forcing+ Agda.Compiler.Epic.FromAgda+ Agda.Compiler.Epic.LambdaLift+ Agda.Compiler.Epic.NatDetection+ Agda.Compiler.Epic.Primitive Agda.Compiler.MAlonzo.Compiler Agda.Compiler.MAlonzo.Encode Agda.Compiler.MAlonzo.Misc@@ -285,7 +307,7 @@ main-is: Main.hs other-modules: Paths_Agda if flag(use-locale)- build-depends: base == 4.2.*+ build-depends: base >= 4.2 && < 4.4 else build-depends: base == 4.1.*, utf8-string == 0.3.*
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2005-2010 Ulf Norell, Nils Anders Danielsson, Catarina+Copyright (c) 2005-2011 Ulf Norell, Nils Anders Danielsson, Catarina Coquand, Makoto Takeyama, Andreas Abel, Karl Mehltretter, Marcin Benke, Darin Morrison.
README view
@@ -7,6 +7,7 @@ * Installing Agda * Configuring the Emacs mode * Prerequisites+* Installing the Epic backend's dependencies * Installing a suitable version of Emacs under Windows ------------------------------------------------------------------------@@ -131,6 +132,55 @@ apt-get install zlib1g-dev libncurses5-dev as root to get the correct files installed.++------------------------------------------------------------------------+Installing the Epic backend's dependencies+------------------------------------------------------------------------++The Epic backend is experimental and requires that the Epic program is+installed. You can install this program by giving the epic flag to+cabal:++* When installing from Hackage:++ cabal update+ cabal install Agda -fepic+ cabal install Agda-executable+ agda-mode setup++* When installing using a source tar ball, following the instructions+ in 2a) above:++ cabal update+ cabal install -fepic+ agda-mode setup+ cd src/main+ cabal install++* When installing using a source tar ball, following the instructions+ in 2b) above:++ make CABAL_OPTIONS="--global -fepic" install++ (The Makefile specifies CABAL_OPTIONS=--global by default; feel free+ to omit --global.)++You can also install Epic directly:++ cabal install epic++Note that Epic depends on other software:++ The Boehm garbage collector:+ http://www.hpl.hp.com/personal/Hans_Boehm/gc/+ The GNU Multiple Precision Arithmetic Library:+ http://gmplib.org/+ GCC, the GNU Compiler Collection:+ http://gcc.gnu.org/++For more information about Epic:++ http://www.cs.st-andrews.ac.uk/~eb/epic.php ------------------------------------------------------------------------ Installing a suitable version of Emacs under Windows
dist/build/Agda/Syntax/Parser/Lexer.hs view
@@ -1,6 +1,7 @@ {-# OPTIONS -fglasgow-exts -cpp #-} {-# LINE 1 "src/full/Agda/Syntax/Parser/Lexer.x" #-} +{-# OPTIONS_GHC -fno-warn-deprecated-flags #-} {-| The lexer is generated by Alex (<http://www.haskell.org/alex>) and is an adaptation of GHC's lexer. The main lexing function 'lexer' is called by the "Agda.Syntax.Parser.Parser" to get the next token from the input.@@ -48,19 +49,19 @@ import GlaExts #endif alex_base :: AlexAddr-alex_base = AlexA# "\xf7\xff\xff\xff\x6c\x00\x00\x00\xc8\x00\x00\x00\x3c\x01\x00\x00\x40\x01\x00\x00\x44\x01\x00\x00\x4b\x01\x00\x00\x70\x00\x00\x00\x73\x00\x00\x00\x76\x00\x00\x00\x7a\x00\x00\x00\x7d\x00\x00\x00\x94\x00\x00\x00\xa3\xff\xff\xff\x81\x00\x00\x00\x82\x00\x00\x00\x68\x01\x00\x00\xa1\xff\xff\xff\x48\x01\x00\x00\xa0\xff\xff\xff\x49\x01\x00\x00\x9f\xff\xff\xff\x4f\x01\x00\x00\x9b\xff\xff\xff\x50\x01\x00\x00\x8f\xff\xff\xff\x51\x01\x00\x00\xa8\xff\xff\xff\x53\x01\x00\x00\x9d\xff\xff\xff\x54\x01\x00\x00\xa9\xff\xff\xff\x55\x01\x00\x00\xaa\xff\xff\xff\x57\x01\x00\x00\x91\xff\xff\xff\x58\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xff\xff\xff\xa6\xff\xff\xff\xb1\xff\xff\xff\x16\x00\x00\x00\xb3\xff\xff\xff\x23\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x18\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x75\x00\x00\x00\xa0\x00\x00\x00\xb0\x00\x00\x00\xa6\x00\x00\x00\xb8\x00\x00\x00\x6f\x01\x00\x00\x75\x01\x00\x00\x9a\x01\x00\x00\xbe\x01\x00\x00\xc4\x01\x00\x00\xcd\x01\x00\x00\xd6\x01\x00\x00\xdc\x01\x00\x00\xf4\x01\x00\x00\xf9\x01\x00\x00\xfe\x01\x00\x00\x06\x02\x00\x00\x16\x02\x00\x00\x22\x02\x00\x00\x28\x02\x00\x00\x2e\x02\x00\x00\x34\x02\x00\x00\x40\x02\x00\x00\x4c\x02\x00\x00\x52\x02\x00\x00\x5a\x02\x00\x00\x74\x02\x00\x00\x7a\x02\x00\x00\x7f\x02\x00\x00\x9b\x02\x00\x00\xa1\x02\x00\x00\xa6\x02\x00\x00\xab\x02\x00\x00\xc3\x02\x00\x00\xc8\x02\x00\x00\xcd\x02\x00\x00\xd2\x02\x00\x00\xfc\x02\x00\x00\x01\x03\x00\x00\x07\x03\x00\x00\x0c\x03\x00\x00\x24\x03\x00\x00\x29\x03\x00\x00\x2e\x03\x00\x00\x33\x03\x00\x00\x4c\x03\x00\x00\x54\x03\x00\x00\x59\x03\x00\x00\x5e\x03\x00\x00\x64\x03\x00\x00\x7c\x03\x00\x00\x81\x03\x00\x00\x86\x03\x00\x00\x8b\x03\x00\x00\xa3\x03\x00\x00\xa8\x03\x00\x00\xad\x03\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x9c\x00\x00\x00\xd4\x03\x00\x00\x9d\x00\x00\x00\x45\x04\x00\x00\xb6\x04\x00\x00\x27\x05\x00\x00\x98\x05\x00\x00\x09\x06\x00\x00\x65\x06\x00\x00\x88\x00\x00\x00\xc1\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x07\x00\x00\x79\x07\x00\x00\xd5\x07\x00\x00\x31\x08\x00\x00\x8d\x08\x00\x00\xe9\x08\x00\x00\x45\x09\x00\x00\xa1\x09\x00\x00\xfd\x09\x00\x00\x59\x0a\x00\x00\xb5\x0a\x00\x00\x11\x0b\x00\x00\x6d\x0b\x00\x00\xc9\x0b\x00\x00\x25\x0c\x00\x00\x81\x0c\x00\x00\xdd\x0c\x00\x00\x39\x0d\x00\x00\x95\x0d\x00\x00\xf1\x0d\x00\x00\x4d\x0e\x00\x00\xa9\x0e\x00\x00\x05\x0f\x00\x00\x61\x0f\x00\x00\xbd\x0f\x00\x00\x19\x10\x00\x00\x75\x10\x00\x00\xd1\x10\x00\x00\x2d\x11\x00\x00\x89\x11\x00\x00\xe5\x11\x00\x00\x41\x12\x00\x00\x9d\x12\x00\x00\xf9\x12\x00\x00\x55\x13\x00\x00\xb1\x13\x00\x00\x0d\x14\x00\x00\x69\x14\x00\x00\xc5\x14\x00\x00\x21\x15\x00\x00\x7d\x15\x00\x00\xd9\x15\x00\x00\x35\x16\x00\x00\x91\x16\x00\x00\xed\x16\x00\x00\x49\x17\x00\x00\xa5\x17\x00\x00\x01\x18\x00\x00\x5d\x18\x00\x00\xb9\x18\x00\x00\x15\x19\x00\x00\x71\x19\x00\x00\xcd\x19\x00\x00\x29\x1a\x00\x00\x85\x1a\x00\x00\xe1\x1a\x00\x00\x3d\x1b\x00\x00\x99\x1b\x00\x00\xf5\x1b\x00\x00\x51\x1c\x00\x00\xad\x1c\x00\x00\x09\x1d\x00\x00\x65\x1d\x00\x00\xc1\x1d\x00\x00\x1d\x1e\x00\x00\x79\x1e\x00\x00\xd5\x1e\x00\x00\x31\x1f\x00\x00\x8d\x1f\x00\x00\xe9\x1f\x00\x00\x45\x20\x00\x00\xa1\x20\x00\x00\xfd\x20\x00\x00\x59\x21\x00\x00\xb5\x21\x00\x00\x11\x22\x00\x00\x6d\x22\x00\x00\xc9\x22\x00\x00\x25\x23\x00\x00\x81\x23\x00\x00\xdd\x23\x00\x00\x39\x24\x00\x00\x95\x24\x00\x00\xf1\x24\x00\x00\x4d\x25\x00\x00\xa9\x25\x00\x00\x05\x26\x00\x00\x61\x26\x00\x00\xbd\x26\x00\x00\x19\x27\x00\x00\x75\x27\x00\x00\xd1\x27\x00\x00\x2d\x28\x00\x00\x89\x28\x00\x00\xe5\x28\x00\x00\x41\x29\x00\x00\x9d\x29\x00\x00\xf9\x29\x00\x00\x55\x2a\x00\x00\xb1\x2a\x00\x00\x0d\x2b\x00\x00\x69\x2b\x00\x00\xc5\x2b\x00\x00\x21\x2c\x00\x00\x7d\x2c\x00\x00\xd9\x2c\x00\x00\x35\x2d\x00\x00\x91\x2d\x00\x00\xed\x2d\x00\x00\x49\x2e\x00\x00\xa5\x2e\x00\x00\x01\x2f\x00\x00\x5d\x2f\x00\x00\xb9\x2f\x00\x00\x15\x30\x00\x00\x71\x30\x00\x00\xcd\x30\x00\x00\x29\x31\x00\x00\x85\x31\x00\x00\xe1\x31\x00\x00\x3d\x32\x00\x00\x99\x32\x00\x00\xf5\x32\x00\x00\x51\x33\x00\x00\xad\x33\x00\x00\x09\x34\x00\x00\x65\x34\x00\x00\xc1\x34\x00\x00\x1d\x35\x00\x00\x79\x35\x00\x00\xd5\x35\x00\x00\x31\x36\x00\x00\x8d\x36\x00\x00\xe9\x36\x00\x00\x45\x37\x00\x00\xa1\x37\x00\x00\xfd\x37\x00\x00\x59\x38\x00\x00\xb5\x38\x00\x00\x11\x39\x00\x00\x6d\x39\x00\x00\xc9\x39\x00\x00\x25\x3a\x00\x00\x81\x3a\x00\x00\xdd\x3a\x00\x00\x39\x3b\x00\x00\x95\x3b\x00\x00\xf1\x3b\x00\x00\x4d\x3c\x00\x00\xa9\x3c\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x05\x3d\x00\x00\x61\x3d\x00\x00\xbd\x3d\x00\x00\x19\x3e\x00\x00\x75\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\xd1\x3e\x00\x00\x2d\x3f\x00\x00\x89\x3f\x00\x00\xe5\x3f\x00\x00\x41\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x40\x00\x00\xf9\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x41\x00\x00\xb1\x41\x00\x00\x0d\x42\x00\x00\x69\x42\x00\x00\xc5\x42\x00\x00\x21\x43\x00\x00\x7d\x43\x00\x00\xd9\x43\x00\x00\x35\x44\x00\x00\x91\x44\x00\x00\xed\x44\x00\x00\x49\x45\x00\x00\xa5\x45\x00\x00\x01\x46\x00\x00\x5d\x46\x00\x00\xb9\x46\x00\x00\x15\x47\x00\x00\x71\x47\x00\x00\xcd\x47\x00\x00\x29\x48\x00\x00\x85\x48\x00\x00\xe1\x48\x00\x00\x3d\x49\x00\x00\x99\x49\x00\x00\xf5\x49\x00\x00\x51\x4a\x00\x00\xad\x4a\x00\x00\x09\x4b\x00\x00\x65\x4b\x00\x00\xc1\x4b\x00\x00\x1d\x4c\x00\x00\x79\x4c\x00\x00\xd5\x4c\x00\x00\x31\x4d\x00\x00\x8d\x4d\x00\x00"#+alex_base = AlexA# "\xf7\xff\xff\xff\x6c\x00\x00\x00\xc8\x00\x00\x00\x3c\x01\x00\x00\x40\x01\x00\x00\x44\x01\x00\x00\x4b\x01\x00\x00\x70\x00\x00\x00\x74\x00\x00\x00\x78\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x81\x00\x00\x00\x48\x01\x00\x00\x49\x01\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x53\x01\x00\x00\x51\x01\x00\x00\x54\x01\x00\x00\x55\x01\x00\x00\x57\x01\x00\x00\xfb\xff\xff\xff\x00\x00\x00\x00\xfc\xff\xff\xff\xfd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\x9b\xff\xff\xff\xa6\xff\xff\xff\x90\xff\xff\xff\xa9\xff\xff\xff\x9e\xff\xff\xff\xaa\xff\xff\xff\xab\xff\xff\xff\x92\xff\xff\xff\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\xee\xff\xff\xff\x9a\x00\x00\x00\xa0\x00\x00\x00\xa6\x00\x00\x00\xab\x00\x00\x00\xb8\x00\x00\x00\x69\x01\x00\x00\x6f\x01\x00\x00\x75\x01\x00\x00\x7b\x01\x00\x00\x99\x01\x00\x00\x9e\x01\x00\x00\xcc\x01\x00\x00\xd1\x01\x00\x00\xde\x01\x00\x00\xe9\x01\x00\x00\xee\x01\x00\x00\xf6\x01\x00\x00\xfb\x01\x00\x00\x07\x02\x00\x00\x13\x02\x00\x00\x1f\x02\x00\x00\x24\x02\x00\x00\x3c\x02\x00\x00\x48\x02\x00\x00\x4d\x02\x00\x00\x59\x02\x00\x00\x65\x02\x00\x00\x6b\x02\x00\x00\x71\x02\x00\x00\x77\x02\x00\x00\x83\x02\x00\x00\x90\x02\x00\x00\x95\x02\x00\x00\xad\x02\x00\x00\xb4\x02\x00\x00\xbc\x02\x00\x00\xce\x02\x00\x00\xd4\x02\x00\x00\xdc\x02\x00\x00\xe6\x02\x00\x00\xee\x02\x00\x00\xf4\x02\x00\x00\xfe\x02\x00\x00\x0d\x03\x00\x00\x16\x03\x00\x00\x1b\x03\x00\x00\x33\x03\x00\x00\x38\x03\x00\x00\x43\x03\x00\x00\x55\x03\x00\x00\x5d\x03\x00\x00\x66\x03\x00\x00\x6e\x03\x00\x00\x75\x03\x00\x00\x80\x03\x00\x00\x86\x03\x00\x00\x8e\x03\x00\x00\x98\x03\x00\x00\x9e\x03\x00\x00\xb0\x03\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\xe5\xff\xff\xff\x09\x00\x00\x00\xcd\x03\x00\x00\x0a\x00\x00\x00\x3e\x04\x00\x00\xaf\x04\x00\x00\x20\x05\x00\x00\x91\x05\x00\x00\x02\x06\x00\x00\x5e\x06\x00\x00\xe8\xff\xff\xff\xba\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x07\x00\x00\x72\x07\x00\x00\xce\x07\x00\x00\x2a\x08\x00\x00\x86\x08\x00\x00\xe2\x08\x00\x00\x3e\x09\x00\x00\x9a\x09\x00\x00\xf6\x09\x00\x00\x52\x0a\x00\x00\xae\x0a\x00\x00\x0a\x0b\x00\x00\x66\x0b\x00\x00\xc2\x0b\x00\x00\x1e\x0c\x00\x00\x7a\x0c\x00\x00\xd6\x0c\x00\x00\x32\x0d\x00\x00\x8e\x0d\x00\x00\xea\x0d\x00\x00\x46\x0e\x00\x00\xa2\x0e\x00\x00\xfe\x0e\x00\x00\x5a\x0f\x00\x00\xb6\x0f\x00\x00\x12\x10\x00\x00\x6e\x10\x00\x00\xca\x10\x00\x00\x26\x11\x00\x00\x82\x11\x00\x00\xde\x11\x00\x00\x3a\x12\x00\x00\x96\x12\x00\x00\xf2\x12\x00\x00\x4e\x13\x00\x00\xaa\x13\x00\x00\x06\x14\x00\x00\x62\x14\x00\x00\xbe\x14\x00\x00\x1a\x15\x00\x00\x76\x15\x00\x00\xd2\x15\x00\x00\x2e\x16\x00\x00\x8a\x16\x00\x00\xe6\x16\x00\x00\x42\x17\x00\x00\x9e\x17\x00\x00\xfa\x17\x00\x00\x56\x18\x00\x00\xb2\x18\x00\x00\x0e\x19\x00\x00\x6a\x19\x00\x00\xc6\x19\x00\x00\x22\x1a\x00\x00\x7e\x1a\x00\x00\xda\x1a\x00\x00\x36\x1b\x00\x00\x92\x1b\x00\x00\xee\x1b\x00\x00\x4a\x1c\x00\x00\xa6\x1c\x00\x00\x02\x1d\x00\x00\x5e\x1d\x00\x00\xba\x1d\x00\x00\x16\x1e\x00\x00\x72\x1e\x00\x00\xce\x1e\x00\x00\x2a\x1f\x00\x00\x86\x1f\x00\x00\xe2\x1f\x00\x00\x3e\x20\x00\x00\x9a\x20\x00\x00\xf6\x20\x00\x00\x52\x21\x00\x00\xae\x21\x00\x00\x0a\x22\x00\x00\x66\x22\x00\x00\xc2\x22\x00\x00\x1e\x23\x00\x00\x7a\x23\x00\x00\xd6\x23\x00\x00\x32\x24\x00\x00\x8e\x24\x00\x00\xea\x24\x00\x00\x46\x25\x00\x00\xa2\x25\x00\x00\xfe\x25\x00\x00\x5a\x26\x00\x00\xb6\x26\x00\x00\x12\x27\x00\x00\x6e\x27\x00\x00\xca\x27\x00\x00\x26\x28\x00\x00\x82\x28\x00\x00\xde\x28\x00\x00\x3a\x29\x00\x00\x96\x29\x00\x00\xf2\x29\x00\x00\x4e\x2a\x00\x00\xaa\x2a\x00\x00\x06\x2b\x00\x00\x62\x2b\x00\x00\xbe\x2b\x00\x00\x1a\x2c\x00\x00\x76\x2c\x00\x00\xd2\x2c\x00\x00\x2e\x2d\x00\x00\x8a\x2d\x00\x00\xe6\x2d\x00\x00\x42\x2e\x00\x00\x9e\x2e\x00\x00\xfa\x2e\x00\x00\x56\x2f\x00\x00\xb2\x2f\x00\x00\x0e\x30\x00\x00\x6a\x30\x00\x00\xc6\x30\x00\x00\x22\x31\x00\x00\x7e\x31\x00\x00\xda\x31\x00\x00\x36\x32\x00\x00\x92\x32\x00\x00\xee\x32\x00\x00\x4a\x33\x00\x00\xa6\x33\x00\x00\x02\x34\x00\x00\x5e\x34\x00\x00\xba\x34\x00\x00\x16\x35\x00\x00\x72\x35\x00\x00\xce\x35\x00\x00\x2a\x36\x00\x00\x86\x36\x00\x00\xe2\x36\x00\x00\x3e\x37\x00\x00\x9a\x37\x00\x00\xf6\x37\x00\x00\x52\x38\x00\x00\xae\x38\x00\x00\x0a\x39\x00\x00\x66\x39\x00\x00\xc2\x39\x00\x00\x1e\x3a\x00\x00\x7a\x3a\x00\x00\xd6\x3a\x00\x00\x32\x3b\x00\x00\x8e\x3b\x00\x00\xea\x3b\x00\x00\x46\x3c\x00\x00\xa2\x3c\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\xfe\x3c\x00\x00\x5a\x3d\x00\x00\xb6\x3d\x00\x00\x12\x3e\x00\x00\x6e\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\xca\x3e\x00\x00\x26\x3f\x00\x00\x82\x3f\x00\x00\xde\x3f\x00\x00\x3a\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x40\x00\x00\xf2\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x41\x00\x00\xaa\x41\x00\x00\x06\x42\x00\x00\x62\x42\x00\x00\xbe\x42\x00\x00\x1a\x43\x00\x00\x76\x43\x00\x00\xd2\x43\x00\x00\x2e\x44\x00\x00\x8a\x44\x00\x00\xe6\x44\x00\x00\x42\x45\x00\x00\x9e\x45\x00\x00\xfa\x45\x00\x00\x56\x46\x00\x00\xb2\x46\x00\x00\x0e\x47\x00\x00\x6a\x47\x00\x00\xc6\x47\x00\x00\x22\x48\x00\x00\x7e\x48\x00\x00\xda\x48\x00\x00\x36\x49\x00\x00\x92\x49\x00\x00\xee\x49\x00\x00\x4a\x4a\x00\x00\xa6\x4a\x00\x00\x02\x4b\x00\x00\x5e\x4b\x00\x00\xba\x4b\x00\x00\x16\x4c\x00\x00\x72\x4c\x00\x00\xce\x4c\x00\x00\x2a\x4d\x00\x00\x86\x4d\x00\x00"# alex_table :: AlexAddr-alex_table = AlexA# "\x00\x00\x80\x00\x35\x00\x35\x00\x35\x00\x11\x00\x13\x00\x15\x00\x17\x00\x19\x00\x1b\x00\x1d\x00\x1f\x00\x21\x00\x09\x00\x23\x00\x26\x00\xff\xff\x29\x00\x2d\x00\x2e\x00\x2f\x00\x31\x00\x35\x00\x4f\x01\x31\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x30\x01\x2a\x01\x2b\x01\x4f\x01\x4f\x01\x4f\x01\x7f\x00\x22\x01\x4f\x01\x32\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x25\x01\x24\x01\x4f\x01\x26\x01\x4f\x01\x28\x01\x2e\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\xef\x00\x4f\x01\x4f\x01\xeb\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x2d\x01\x4f\x01\x4f\x01\x27\x01\x4f\x01\xe4\x00\x4f\x01\xc5\x00\xbf\x00\x4f\x01\x91\x00\x4f\x01\x12\x01\x87\x00\x4f\x01\x4f\x01\x85\x00\xbb\x00\x4f\x01\xb0\x00\xa4\x00\x01\x01\x9b\x00\x07\x01\x4f\x01\x0c\x01\x4f\x01\x8c\x00\x4f\x01\x4f\x01\x4f\x01\x38\x00\x29\x01\x2f\x01\x4f\x01\x81\x00\x35\x00\x35\x00\x35\x00\x2a\x00\x10\x00\x10\x00\x10\x00\x0f\x00\x0f\x00\x0f\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\x0c\x00\x0c\x00\x0c\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\x35\x00\x0f\x00\x0f\x00\x0f\x00\x10\x00\x30\x00\x32\x00\x0f\x00\x33\x00\x2b\x00\x0b\x00\x34\x00\x37\x00\x7e\x00\x0c\x00\x73\x00\x20\x01\x0b\x00\xff\xff\x0c\x00\x0c\x00\x0c\x00\x0f\x00\x35\x00\x35\x00\x35\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x75\x00\x00\x00\x23\x01\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x2c\x00\x3a\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0d\x00\xff\xff\x00\x00\x80\x00\x35\x00\x35\x00\x35\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x74\x00\x35\x00\x4f\x01\x31\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x30\x01\x2a\x01\x2b\x01\x4f\x01\x4f\x01\x4f\x01\x7f\x00\x22\x01\x4f\x01\x32\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x33\x01\x25\x01\x24\x01\x4f\x01\x26\x01\x4f\x01\x28\x01\x2e\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\xef\x00\x4f\x01\x4f\x01\xeb\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x2d\x01\x4f\x01\x4f\x01\x27\x01\x4f\x01\xe4\x00\x4f\x01\xc5\x00\xbf\x00\x4f\x01\x91\x00\x4f\x01\x12\x01\x87\x00\x4f\x01\x4f\x01\x85\x00\xbb\x00\x4f\x01\xb0\x00\xa4\x00\x01\x01\x9b\x00\x07\x01\x4f\x01\x0c\x01\x4f\x01\x8c\x00\x4f\x01\x4f\x01\x4f\x01\x38\x00\x29\x01\x2f\x01\x4f\x01\x35\x00\x35\x00\x35\x00\x80\x00\x35\x00\x35\x00\x35\x00\x82\x00\x35\x00\x35\x00\x35\x00\xff\xff\xff\xff\xff\xff\x36\x00\x36\x00\x36\x00\x36\x00\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x36\x00\x00\x00\x7e\x00\x3e\x00\x00\x00\x00\x00\x7e\x00\xff\xff\x10\x00\x10\x00\x10\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x4f\x00\xff\xff\x6c\x00\x00\x00\x00\x00\x00\x00\x60\x00\xff\xff\x00\x00\x6f\x00\x00\x00\x00\x00\x41\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x1e\x00\x74\x00\x18\x00\x22\x00\xff\xff\x74\x00\x24\x00\x00\x00\x1a\x00\x74\x00\x00\x00\x00\x00\x00\x00\x20\x00\x0e\x00\x00\x00\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x44\x00\x00\x00\x43\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x45\x00\xff\xff\x00\x00\x00\x00\x00\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x00\x00\x00\x00\x00\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\xff\xff\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x51\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x55\x00\x54\x00\xff\xff\x00\x00\x56\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x58\x00\x00\x00\x59\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x5e\x00\x00\x00\x00\x00\x00\x00\x5d\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\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\x5b\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x62\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\x00\x00\x63\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x64\x00\x66\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x5f\x00\x00\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\x00\x00\x00\x00\x69\x00\xff\xff\x68\x00\x00\x00\x67\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x65\x00\x6a\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\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x6b\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\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\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x79\x00\x71\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x7b\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\xff\xff\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x7b\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\xff\xff\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x7b\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x00\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\xff\xff\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7b\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\xff\xff\x7a\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x00\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x7c\x00\x78\x00\x78\x00\x7d\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\xff\xff\x78\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x78\x00\x78\x00\x78\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x7a\x00\x78\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x00\x00\x7a\x00\x50\x01\x7a\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x76\x00\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x2c\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x83\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x84\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd5\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb5\x00\x86\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x88\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x89\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x8a\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x8b\x00\x94\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x8d\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x8e\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x8f\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x90\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf4\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x92\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x93\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x95\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x96\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x97\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x98\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x18\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x99\x00\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x9a\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x9c\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x9d\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x9e\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x9f\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa0\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa3\x00\x50\x01\x50\x01\xac\x00\x50\x01\x50\x01\x1f\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa5\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa6\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa8\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xa9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xaa\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe8\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xab\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xad\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xae\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xaf\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb3\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb4\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb6\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb8\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xb9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xba\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xdc\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xbc\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xbd\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xbe\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc0\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc3\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc4\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc6\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xc8\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xca\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xcb\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xcc\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xcd\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xce\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xcf\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd0\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd6\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd3\x00\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd4\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd8\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xd9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xda\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xdb\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xdd\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xde\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xdf\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe0\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe3\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe5\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe6\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\xf5\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xe9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xea\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xec\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xed\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xee\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf0\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf1\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf2\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf3\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf8\x00\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\xf6\x00\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\xf7\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xf9\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xfa\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xfb\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xfc\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xfd\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xfe\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\xff\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x02\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x03\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x04\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x05\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x06\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x08\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x09\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x0a\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x0b\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x0d\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x0e\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x0f\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x10\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x11\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x13\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x14\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x15\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x16\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x17\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x1b\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x1c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x1d\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x1e\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x51\x01\x50\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x50\x01\x51\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x4f\x01\x50\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x50\x01\x4f\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x39\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4c\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4e\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x4d\x01\x50\x01\x4d\x01\x47\x01\x50\x01\x35\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x36\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x47\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x37\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x48\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x3c\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x49\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x4a\x01\x50\x01\x4a\x01\x52\x01\x50\x01\x3e\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4b\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x3f\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x3d\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4b\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x4e\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x4f\x01\x50\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x3a\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x53\x01\x4f\x01\x4f\x01\x54\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x50\x01\x4f\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x40\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x4a\x01\x50\x01\x4a\x01\x52\x01\x50\x01\x41\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x41\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x42\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x43\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x4d\x01\x50\x01\x4d\x01\x52\x01\x50\x01\x44\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x44\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x52\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x50\x01\x00\x00\x50\x01\x51\x01\x50\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x52\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x4f\x01\x51\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x53\x01\x4f\x01\x4f\x01\x54\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x00\x00\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x51\x01\x4f\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x51\x01\x00\x00\x51\x01\x00\x00\x51\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x75\x00\x26\x00\x26\x00\x26\x00\x17\x00\xff\xff\x1a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x1c\x00\x25\x00\x28\x00\x68\x00\xff\xff\xff\xff\x6a\x00\x0e\x01\x26\x00\x44\x01\x26\x01\x44\x01\x44\x01\x44\x01\x44\x01\x25\x01\x1f\x01\x20\x01\x44\x01\x44\x01\x44\x01\x74\x00\x17\x01\x44\x01\x27\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x1a\x01\x19\x01\x44\x01\x1b\x01\x44\x01\x1d\x01\x23\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\xe4\x00\x44\x01\x44\x01\xe0\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x22\x01\x44\x01\x44\x01\x1c\x01\x44\x01\xd9\x00\x44\x01\xba\x00\xb4\x00\x44\x01\x86\x00\x44\x01\x07\x01\x7c\x00\x44\x01\x44\x01\x7a\x00\xb0\x00\x44\x01\xa5\x00\x99\x00\xf6\x00\x90\x00\xfc\x00\x44\x01\x01\x01\x44\x01\x81\x00\x44\x01\x44\x01\x44\x01\x29\x00\x1e\x01\x24\x01\x44\x01\x76\x00\x26\x00\x26\x00\x26\x00\x1b\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\x09\x00\x09\x00\x09\x00\xff\xff\x09\x00\x09\x00\x09\x00\xff\xff\xff\xff\x0b\x00\x0b\x00\x0b\x00\xff\xff\x26\x00\x26\x00\x26\x00\x26\x00\x0b\x00\x18\x01\x15\x01\x16\x01\x09\x00\x00\x00\x00\x00\x00\x00\x09\x00\x73\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x1d\x00\x2b\x00\x00\x00\xff\xff\x0a\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x26\x00\x26\x00\x26\x00\x00\x00\x00\x00\xff\xff\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x0d\x00\x69\x00\x26\x00\x44\x01\x26\x01\x44\x01\x44\x01\x44\x01\x44\x01\x25\x01\x1f\x01\x20\x01\x44\x01\x44\x01\x44\x01\x74\x00\x17\x01\x44\x01\x27\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x28\x01\x1a\x01\x19\x01\x44\x01\x1b\x01\x44\x01\x1d\x01\x23\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\xe4\x00\x44\x01\x44\x01\xe0\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x22\x01\x44\x01\x44\x01\x1c\x01\x44\x01\xd9\x00\x44\x01\xba\x00\xb4\x00\x44\x01\x86\x00\x44\x01\x07\x01\x7c\x00\x44\x01\x44\x01\x7a\x00\xb0\x00\x44\x01\xa5\x00\x99\x00\xf6\x00\x90\x00\xfc\x00\x44\x01\x01\x01\x44\x01\x81\x00\x44\x01\x44\x01\x44\x01\x29\x00\x1e\x01\x24\x01\x44\x01\x26\x00\x26\x00\x26\x00\x75\x00\x26\x00\x26\x00\x26\x00\x77\x00\x26\x00\x26\x00\x26\x00\xff\xff\xff\xff\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\x26\x00\xff\xff\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x27\x00\x00\x00\x73\x00\x2f\x00\x00\x00\x00\x00\x73\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x39\x00\x40\x00\xff\xff\x61\x00\x00\x00\x00\x00\x00\x00\x55\x00\xff\xff\x00\x00\x64\x00\x00\x00\x00\x00\x32\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x0f\x01\x00\x00\x12\x00\x69\x00\x14\x00\xff\xff\x15\x00\x69\x00\x00\x00\x10\x00\xff\xff\x69\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\xff\xff\x00\x00\x00\x00\x3c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x4d\x00\x00\x00\xff\xff\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x4e\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x52\x00\xff\xff\x00\x00\x53\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x59\x00\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\x54\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x5d\x00\x5e\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x5f\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x63\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x70\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\xff\xff\x6e\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x70\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\xff\xff\x6e\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x70\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x00\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\xff\xff\x6e\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x70\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\xff\xff\x6f\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x71\x00\x6d\x00\x6d\x00\x72\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\xff\xff\x6d\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6f\x00\x6d\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x45\x01\x6f\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x6b\x00\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x21\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x78\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x79\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xca\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xaa\x00\x7b\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x7d\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x7e\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x7f\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x80\x00\x89\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x82\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x83\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x84\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x85\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe9\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x87\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x88\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8a\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8b\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8c\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8d\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xbe\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x0d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8e\x00\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x8f\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x91\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x92\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x93\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x94\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x95\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x96\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x97\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x98\x00\x45\x01\x45\x01\xa1\x00\x45\x01\x45\x01\x14\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9a\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9b\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9c\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9d\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9e\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x9f\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xdd\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa0\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa4\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa6\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa7\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa8\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xa9\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xab\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xac\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xad\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xae\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xaf\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd1\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb1\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb5\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb6\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb7\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb8\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc7\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xb9\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xbb\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xbc\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xbd\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xbf\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc0\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc1\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc4\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc5\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc6\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xcb\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xcc\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc8\x00\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xc9\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xcd\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xce\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xcf\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd0\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd4\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd5\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd6\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd7\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xd8\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xda\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xdb\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xdc\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\xea\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xde\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xdf\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe1\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe5\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe6\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe7\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xe8\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xed\x00\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\xec\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xee\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xef\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf0\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf1\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf2\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf3\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf4\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf5\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf7\x00\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf8\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xf9\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xfa\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xfb\x00\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xfd\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xfe\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\xff\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x02\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x03\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x04\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x05\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x06\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x08\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x09\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x0a\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x0b\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x0c\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x10\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x11\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x12\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x13\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x46\x01\x45\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x45\x01\x46\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x44\x01\x45\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x45\x01\x44\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2e\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x41\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x43\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x42\x01\x45\x01\x42\x01\x3c\x01\x45\x01\x2a\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3c\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2c\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3d\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x31\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3e\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x3f\x01\x45\x01\x3f\x01\x47\x01\x45\x01\x33\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x40\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x34\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x32\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x40\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x43\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x44\x01\x45\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x2f\x01\x30\x01\x30\x01\x30\x01\x30\x01\x30\x01\x30\x01\x30\x01\x30\x01\x30\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x48\x01\x44\x01\x44\x01\x49\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x45\x01\x44\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x35\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x3f\x01\x45\x01\x3f\x01\x47\x01\x45\x01\x36\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x36\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x37\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x38\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x42\x01\x45\x01\x42\x01\x47\x01\x45\x01\x39\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x39\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x3a\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x3b\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x47\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x45\x01\x00\x00\x45\x01\x46\x01\x45\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x47\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x44\x01\x46\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x48\x01\x44\x01\x44\x01\x49\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x44\x01\x44\x01\x44\x01\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x46\x01\x44\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x46\x01\x00\x00\x46\x01\x00\x00\x46\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x62\x00\x65\x00\x67\x00\x69\x00\x6e\x00\x7b\x00\x63\x00\x6f\x00\x64\x00\x7d\x00\x65\x00\x0a\x00\x0a\x00\x0a\x00\x65\x00\x6e\x00\x64\x00\x63\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\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0b\x00\x0c\x00\x0d\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x7b\x00\x6f\x00\x20\x00\x64\x00\x7d\x00\x20\x00\x65\x00\x23\x00\x2d\x00\x20\x00\x2d\x00\x21\x00\x20\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x2d\x00\xff\xff\x2e\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2e\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x5c\x00\x23\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x5c\x00\x20\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x7b\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\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x0a\x00\x20\x00\x0a\x00\x0a\x00\x0a\x00\x20\x00\x0a\x00\x0a\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x20\x00\xff\xff\x2d\x00\x23\x00\xff\xff\xff\xff\x2d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x20\x00\x45\x00\xff\xff\xff\xff\xff\xff\x49\x00\x20\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x4f\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\xff\xff\xff\xff\x67\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x63\x00\x7b\x00\x69\x00\x64\x00\x20\x00\x7b\x00\x65\x00\xff\xff\x6e\x00\x7b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x5c\x00\xff\xff\x7b\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7b\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x50\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x49\x00\xff\xff\x54\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x4f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x49\x00\xff\xff\xff\xff\xff\xff\x55\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x4c\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x20\x00\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x4e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x50\x00\x49\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x45\x00\x4c\x00\x20\x00\xff\xff\x44\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x44\x00\xff\xff\x41\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x50\x00\xff\xff\xff\xff\xff\xff\x59\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x45\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x4d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x50\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x4f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x52\x00\x53\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x42\x00\x20\x00\x49\x00\xff\xff\x53\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x45\x00\x4c\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x41\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\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\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\x21\x00\x4e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\xff\xff\x7e\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"#+alex_check = AlexA# "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x0a\x00\x65\x00\x6e\x00\x64\x00\x7b\x00\x63\x00\x6f\x00\x64\x00\x7d\x00\x65\x00\x23\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x6f\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\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x2e\x00\x21\x00\x2e\x00\x20\x00\xff\xff\xff\xff\xff\xff\x20\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x5c\x00\x23\x00\xff\xff\x20\x00\x5c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x65\x00\x7b\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\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x0a\x00\x20\x00\x0a\x00\x0a\x00\x0a\x00\x20\x00\x0a\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x20\x00\xff\xff\x2d\x00\x23\x00\xff\xff\xff\xff\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x20\x00\x45\x00\xff\xff\xff\xff\xff\xff\x49\x00\x20\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x4f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x67\x00\xff\xff\xff\xff\x69\x00\xff\xff\x74\x00\xff\xff\x63\x00\x7b\x00\x64\x00\x20\x00\x65\x00\x7b\x00\xff\xff\x6e\x00\x20\x00\x7b\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x4f\x00\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x20\x00\xff\xff\xff\xff\x4c\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x49\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x20\x00\x50\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x44\x00\x45\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x41\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x54\x00\xff\xff\x20\x00\xff\xff\xff\xff\x5f\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x41\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x54\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x50\x00\x59\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x20\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x50\x00\x20\x00\xff\xff\x49\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\x4f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x52\x00\x53\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x54\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\x53\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x49\x00\x42\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\x20\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x45\x00\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\x0a\x00\x7c\x00\xff\xff\x7e\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x7c\x00\xff\xff\x7e\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"# alex_deflt :: AlexAddr-alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x27\x00\xff\xff\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\xff\xff\x27\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\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\xff\xff\xff\xff\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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 = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x67\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\xff\xff\xff\xff\x18\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\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\xff\xff\xff\xff\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,340) [[],[(AlexAccPred (alex_action_25) ( not' eof ))],[],[(AlexAcc (alex_action_28))],[],[(AlexAcc (alex_action_27))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40))],[],[(AlexAccPred (alex_action_0) (alexRightContext 37))],[(AlexAccPred (alex_action_0) (alexRightContext 37)),(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_0) (alexRightContext 37))],[(AlexAccPred (alex_action_0) (alexRightContext 37)),(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccPred (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccPred (alex_action_4) ( inState code ))],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_76))],[(AlexAccPred (alex_action_20) ( not' (followedBy '#') ))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_19))],[(AlexAccPred (alex_action_20) ( not' (followedBy '#') ))],[],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_82))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_82))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_82))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_82))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_21) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_23))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_60))],[],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_77))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[],[],[]]-{-# LINE 191 "src/full/Agda/Syntax/Parser/Lexer.x" #-}+alex_accept = listArray (0::Int,329) [[],[(AlexAccPred (alex_action_26) ( not' eof ))],[],[(AlexAcc (alex_action_29))],[],[(AlexAcc (alex_action_28))],[],[(AlexAccPred (alex_action_1) (alexRightContext 25))],[(AlexAccPred (alex_action_0) (alexRightContext 22)),(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_0) (alexRightContext 22)),(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccPred (alex_action_1) (alexRightContext 25)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccPred (alex_action_4) ( inState code ))],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_77))],[(AlexAccPred (alex_action_21) ( not' (followedBy '#') ))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_20))],[(AlexAccPred (alex_action_21) ( not' (followedBy '#') ))],[],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_83))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_83))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_83))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_83))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_22) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_24))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_61))],[],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_76))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_82))],[],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_83))],[],[],[]]+{-# LINE 193 "src/full/Agda/Syntax/Parser/Lexer.x" #-} -- | This is the initial state for parsing a literate file. Code blocks@@ -156,71 +157,72 @@ alex_action_12 = keyword KwCOMPILED_DATA alex_action_13 = keyword KwCOMPILED_TYPE alex_action_14 = keyword KwCOMPILED -alex_action_15 = keyword KwIMPORT -alex_action_16 = keyword KwIMPOSSIBLE -alex_action_17 = keyword KwETA -alex_action_18 = keyword KwLINE -alex_action_19 = withInterval $ TokString -alex_action_20 = nestedComment -alex_action_21 = withInterval TokComment -alex_action_23 = begin bol_ -alex_action_25 = offsideRule -alex_action_27 = endWith newLayoutContext -alex_action_28 = emptyLayout -alex_action_29 = keyword KwLet -alex_action_30 = keyword KwIn -alex_action_31 = keyword KwWhere -alex_action_32 = keyword KwField -alex_action_33 = keyword KwWith -alex_action_34 = keyword KwRewrite -alex_action_35 = keyword KwPostulate -alex_action_36 = keyword KwPrimitive -alex_action_37 = keyword KwOpen -alex_action_38 = keyword KwImport -alex_action_39 = keyword KwModule -alex_action_40 = keyword KwData -alex_action_41 = keyword KwCoData -alex_action_42 = keyword KwRecord -alex_action_43 = keyword KwConstructor -alex_action_44 = keyword KwInfix -alex_action_45 = keyword KwInfixL -alex_action_46 = keyword KwInfixR -alex_action_47 = keyword KwMutual -alex_action_48 = keyword KwAbstract -alex_action_49 = keyword KwPrivate -alex_action_50 = keyword KwSet -alex_action_51 = keyword KwProp -alex_action_52 = keyword KwForall -alex_action_53 = withInterval' (read . drop 3) TokSetN -alex_action_54 = keyword KwQuoteGoal -alex_action_55 = keyword KwQuote -alex_action_56 = keyword KwSyntax -alex_action_57 = keyword KwUsing -alex_action_58 = keyword KwHiding -alex_action_59 = keyword KwRenaming -alex_action_60 = endWith $ keyword KwTo -alex_action_61 = keyword KwPublic -alex_action_62 = hole -alex_action_63 = symbol SymEllipsis -alex_action_64 = symbol SymDot -alex_action_65 = symbol SymSemi -alex_action_66 = symbol SymColon -alex_action_67 = symbol SymEqual -alex_action_68 = symbol SymUnderscore -alex_action_69 = symbol SymQuestionMark -alex_action_70 = symbol SymBar -alex_action_71 = symbol SymOpenParen -alex_action_72 = symbol SymCloseParen -alex_action_73 = symbol SymArrow -alex_action_74 = symbol SymLambda -alex_action_75 = symbol SymAs -alex_action_76 = symbol SymOpenBrace -alex_action_77 = symbol SymCloseBrace -alex_action_78 = litChar -alex_action_79 = litString -alex_action_80 = literal LitInt -alex_action_81 = literal LitFloat -alex_action_82 = identifier +alex_action_15 = keyword KwCOMPILED_EPIC +alex_action_16 = keyword KwIMPORT +alex_action_17 = keyword KwIMPOSSIBLE +alex_action_18 = keyword KwETA +alex_action_19 = keyword KwLINE +alex_action_20 = withInterval $ TokString +alex_action_21 = nestedComment +alex_action_22 = withInterval TokComment +alex_action_24 = begin bol_ +alex_action_26 = offsideRule +alex_action_28 = endWith newLayoutContext +alex_action_29 = emptyLayout +alex_action_30 = keyword KwLet +alex_action_31 = keyword KwIn +alex_action_32 = keyword KwWhere +alex_action_33 = keyword KwField +alex_action_34 = keyword KwWith +alex_action_35 = keyword KwRewrite +alex_action_36 = keyword KwPostulate +alex_action_37 = keyword KwPrimitive +alex_action_38 = keyword KwOpen +alex_action_39 = keyword KwImport +alex_action_40 = keyword KwModule +alex_action_41 = keyword KwData +alex_action_42 = keyword KwCoData +alex_action_43 = keyword KwRecord +alex_action_44 = keyword KwConstructor +alex_action_45 = keyword KwInfix +alex_action_46 = keyword KwInfixL +alex_action_47 = keyword KwInfixR +alex_action_48 = keyword KwMutual +alex_action_49 = keyword KwAbstract +alex_action_50 = keyword KwPrivate +alex_action_51 = keyword KwSet +alex_action_52 = keyword KwProp +alex_action_53 = keyword KwForall +alex_action_54 = withInterval' (read . drop 3) TokSetN +alex_action_55 = keyword KwQuoteGoal +alex_action_56 = keyword KwQuote +alex_action_57 = keyword KwSyntax +alex_action_58 = keyword KwUsing +alex_action_59 = keyword KwHiding +alex_action_60 = keyword KwRenaming +alex_action_61 = endWith $ keyword KwTo +alex_action_62 = keyword KwPublic +alex_action_63 = hole +alex_action_64 = symbol SymEllipsis +alex_action_65 = symbol SymDot +alex_action_66 = symbol SymSemi +alex_action_67 = symbol SymColon +alex_action_68 = symbol SymEqual +alex_action_69 = symbol SymUnderscore +alex_action_70 = symbol SymQuestionMark +alex_action_71 = symbol SymBar +alex_action_72 = symbol SymOpenParen +alex_action_73 = symbol SymCloseParen +alex_action_74 = symbol SymArrow +alex_action_75 = symbol SymLambda +alex_action_76 = symbol SymAs +alex_action_77 = symbol SymOpenBrace +alex_action_78 = symbol SymCloseBrace +alex_action_79 = litChar +alex_action_80 = litString +alex_action_81 = literal LitInt +alex_action_82 = literal LitFloat +alex_action_83 = identifier {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "<built-in>" #-}@@ -235,9 +237,9 @@ -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine -{-# LINE 35 "templates/GenericTemplate.hs" #-}+{-# LINE 37 "templates/GenericTemplate.hs" #-} -{-# LINE 45 "templates/GenericTemplate.hs" #-}+{-# LINE 47 "templates/GenericTemplate.hs" #-} data AlexAddr = AlexA# Addr#@@ -322,17 +324,17 @@ AlexError input' - (AlexLastSkip input len, _) ->+ (AlexLastSkip input'' len, _) -> - AlexSkip input len+ AlexSkip input'' len - (AlexLastAcc k input len, _) ->+ (AlexLastAcc k input''' len, _) -> - AlexToken input len k+ AlexToken input''' len k -- Push the input through the DFA, remembering the most recent accepting@@ -351,12 +353,12 @@ let- base = alexIndexInt32OffAddr alex_base s- (I# (ord_c)) = ord c- offset = (base +# ord_c)- check = alexIndexInt16OffAddr alex_check offset+ !(base) = alexIndexInt32OffAddr alex_base s+ !((I# (ord_c))) = ord c+ !(offset) = (base +# ord_c)+ !(check) = alexIndexInt16OffAddr alex_check offset - new_s = if (offset >=# 0#) && (check ==# ord_c)+ !(new_s) = if (offset >=# 0#) && (check ==# ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in@@ -371,11 +373,11 @@ check_accs [] = last_acc check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len)) check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))- check_accs (AlexAccPred a pred : rest)- | pred user orig_input (I# (len)) input+ check_accs (AlexAccPred a predx : rest)+ | predx user orig_input (I# (len)) input = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkipPred pred : rest)- | pred user orig_input (I# (len)) input+ check_accs (AlexAccSkipPred predx : rest)+ | predx user orig_input (I# (len)) input = AlexLastSkip input (I# (len)) check_accs (_ : rest) = check_accs rest
dist/build/Agda/Syntax/Parser/Parser.hs view
@@ -1,4106 +1,4207 @@-{-# OPTIONS -fglasgow-exts -cpp #-}-{-# OPTIONS -fno-warn-incomplete-patterns #-}-{-| The parser is generated by Happy (<http://www.haskell.org/happy>).--}-module Agda.Syntax.Parser.Parser (- moduleParser- , exprParser- , tokensParser- , tests- ) where--import Control.Arrow-import Control.Monad-import Control.Monad.State-import Data.Char-import Data.List-import Data.Maybe-import qualified Data.Traversable as T--import Agda.Syntax.Position hiding (tests)-import Agda.Syntax.Parser.Monad-import Agda.Syntax.Parser.Lexer-import Agda.Syntax.Parser.Tokens-import Agda.Syntax.Concrete-import Agda.Syntax.Concrete.Name-import Agda.Syntax.Concrete.Pretty-import Agda.Syntax.Common-import Agda.Syntax.Fixity-import Agda.Syntax.Notation-import Agda.Syntax.Literal--import Agda.Utils.Monad-import Agda.Utils.QuickCheck-import Agda.Utils.TestHelpers-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-#else-import Array-#endif-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#endif---- parser produced by Happy Version 1.17--newtype HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63 = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = GHC.Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn6 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn6 x = unsafeCoerce# x-{-# INLINE happyIn6 #-}-happyOut6 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Token])-happyOut6 x = unsafeCoerce# x-{-# INLINE happyOut6 #-}-happyIn7 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn7 x = unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Token])-happyOut7 x = unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: (Token) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn8 x = unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Token)-happyOut8 x = unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: (()) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn9 x = unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (())-happyOut9 x = unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn10 x = unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([Pragma], [Declaration]))-happyOut10 x = unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: t11 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn11 x = unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t11-happyOut11 x = unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: t12 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn12 x = unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t12-happyOut12 x = unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: t13 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn13 x = unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t13-happyOut13 x = unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (()) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn14 x = unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (())-happyOut14 x = unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (Integer) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn15 x = unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Integer)-happyOut15 x = unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn16 x = unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)-happyOut16 x = unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn17 x = unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])-happyOut17 x = unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (Arg Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn18 x = unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Arg Name)-happyOut18 x = unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: ([Arg Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn19 x = unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Name])-happyOut19 x = unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: ([Arg Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn20 x = unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Name])-happyOut20 x = unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn21 x = unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)-happyOut21 x = unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn22 x = unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)-happyOut22 x = unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn23 x = unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)-happyOut23 x = unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn24 x = unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])-happyOut24 x = unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn25 x = unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])-happyOut25 x = unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: ([String]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn26 x = unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([String])-happyOut26 x = unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn27 x = unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)-happyOut27 x = unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: (Expr) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn28 x = unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Expr)-happyOut28 x = unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: t29 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn29 x = unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t29-happyOut29 x = unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn30 x = unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut30 x = unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn31 x = unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut31 x = unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: t32 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn32 x = unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t32-happyOut32 x = unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn33 x = unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut33 x = unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: t34 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn34 x = unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t34-happyOut34 x = unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn35 x = unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([(Name, Expr)])-happyOut35 x = unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn36 x = unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([(Name, Expr)])-happyOut36 x = unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: ((Name, Expr)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn37 x = unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Name, Expr))-happyOut37 x = unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: t38 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn38 x = unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t38-happyOut38 x = unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: t39 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn39 x = unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t39-happyOut39 x = unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: ([TypedBindings]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn40 x = unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBindings])-happyOut40 x = unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: (TypedBindings) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn41 x = unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (TypedBindings)-happyOut41 x = unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn42 x = unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBinding])-happyOut42 x = unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn43 x = unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBinding])-happyOut43 x = unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: (TypedBinding) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn44 x = unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (TypedBinding)-happyOut44 x = unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn45 x = unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])-happyOut45 x = unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: (([LamBinding], Hiding)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn46 x = unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([LamBinding], Hiding))-happyOut46 x = unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn47 x = unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Either Hiding LamBinding])-happyOut47 x = unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn48 x = unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])-happyOut48 x = unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn49 x = unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])-happyOut49 x = unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn50 x = unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])-happyOut50 x = unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn51 x = unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])-happyOut51 x = unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: ((Maybe AsName, ImportDirective)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn52 x = unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Maybe AsName, ImportDirective))-happyOut52 x = unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn53 x = unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)-happyOut53 x = unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn54 x = unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)-happyOut54 x = unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn55 x = unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)-happyOut55 x = unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: ((UsingOrHiding , Range)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn56 x = unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((UsingOrHiding , Range))-happyOut56 x = unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: (([Renaming] , Range)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn57 x = unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([Renaming] , Range))-happyOut57 x = unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: ([Renaming]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn58 x = unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Renaming])-happyOut58 x = unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: (Renaming) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn59 x = unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Renaming)-happyOut59 x = unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn60 x = unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportedName)-happyOut60 x = unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn61 x = unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportedName)-happyOut61 x = unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: ([ImportedName]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn62 x = unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([ImportedName])-happyOut62 x = unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: t63 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn63 x = unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t63-happyOut63 x = unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (LHS) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn64 x = unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (LHS)-happyOut64 x = unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: ([Pattern]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn65 x = unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Pattern])-happyOut65 x = unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn66 x = unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut66 x = unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn67 x = unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut67 x = unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (WhereClause) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn68 x = unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (WhereClause)-happyOut68 x = unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn69 x = unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut69 x = unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn70 x = unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut70 x = unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn71 x = unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut71 x = unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: ([Arg Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn72 x = unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Declaration])-happyOut72 x = unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn73 x = unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut73 x = unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (RHS) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn74 x = unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (RHS)-happyOut74 x = unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn75 x = unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut75 x = unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn76 x = unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut76 x = unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn77 x = unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)-happyOut77 x = unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn78 x = unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut78 x = unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn79 x = unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut79 x = unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn80 x = unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut80 x = unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn81 x = unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut81 x = unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn82 x = unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut82 x = unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn83 x = unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut83 x = unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn84 x = unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut84 x = unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn85 x = unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut85 x = unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: ([String]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn86 x = unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([String])-happyOut86 x = unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: ([HoleName]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn87 x = unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([HoleName])-happyOut87 x = unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (HoleName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn88 x = unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (HoleName)-happyOut88 x = unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (String) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn89 x = unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (String)-happyOut89 x = unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn90 x = unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut90 x = unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn91 x = unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])-happyOut91 x = unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn92 x = unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut92 x = unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn93 x = unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut93 x = unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn94 x = unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut94 x = unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn95 x = unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut95 x = unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn96 x = unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut96 x = unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn97 x = unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)-happyOut97 x = unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn98 x = unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut98 x = unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn99 x = unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut99 x = unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn100 x = unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut100 x = unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn101 x = unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut101 x = unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn102 x = unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut102 x = unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn103 x = unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut103 x = unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn104 x = unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut104 x = unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn105 x = unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut105 x = unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn106 x = unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut106 x = unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn107 x = unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)-happyOut107 x = unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn108 x = unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])-happyOut108 x = unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn109 x = unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])-happyOut109 x = unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: ([Arg TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn110 x = unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg TypeSignature])-happyOut110 x = unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: ([Arg TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn111 x = unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg TypeSignature])-happyOut111 x = unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: ([Constructor]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn112 x = unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Constructor])-happyOut112 x = unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: ((Maybe Name, [Declaration])) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn113 x = unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Maybe Name, [Declaration]))-happyOut113 x = unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn114 x = unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut114 x = unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn115 x = unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut115 x = unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyIn116 x = unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])-happyOut116 x = unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyInTok :: Token -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)-happyInTok x = unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> Token-happyOutTok x = unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\xac\x03\x17\x04\x00\x00\x24\x02\xb5\x00\xfc\x03\x0b\x04\x00\x00\x0b\x04\x03\x04\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x56\x01\x1e\x03\xac\x03\xf8\x03\x00\x00\xfd\xff\x00\x04\xfb\x03\x00\x00\x00\x00\x30\x01\xef\x03\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\xea\x00\xfb\x02\xda\x02\x00\x00\x00\x00\x00\x00\xea\x03\xee\xff\xf7\x03\xf2\x03\xf6\x03\xee\x03\xf1\x03\x00\x00\xec\x03\xeb\x03\x00\x00\x00\x00\x00\x00\xea\x00\xac\x03\x00\x00\xe9\x03\xea\x00\x00\x00\x8b\x03\x68\x03\x00\x00\xb1\x02\x90\x02\x19\x04\x88\x00\x47\x03\xe7\x03\x88\x00\xcf\x03\xcf\x03\xd7\x03\xda\x03\x0f\x04\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\xcf\x03\xf0\x03\x00\x00\x00\x00\xe4\x03\xe4\x03\x00\x00\xe4\x03\x00\x00\xfa\xff\x70\x02\x70\x02\xe6\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x88\x00\xac\x00\xf0\x03\x70\x02\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\xcf\x03\x47\x03\xd5\x03\xce\x03\xc3\x03\x00\x00\xcd\x03\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\x00\x00\x00\x00\x47\x03\x47\x03\xc0\x03\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x47\x03\x67\x02\x85\x02\x00\x00\xac\x00\xf0\x03\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\xb7\x03\xb1\x03\xaf\x03\x1b\x03\xa4\x03\x88\x00\xdc\x03\x88\x00\x9d\x03\x99\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x06\x01\x00\x00\xc8\x03\x2a\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\xae\x03\x00\x00\xa8\x00\xd1\x03\xa1\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x03\xa5\x03\xc5\x00\x92\x03\x92\x03\x92\x03\x22\x01\xa3\x03\x87\x03\x87\x03\x87\x03\x97\x03\x97\x03\x97\x03\x86\x03\x8f\x03\x93\x06\x00\x00\x00\x00\x47\x03\x00\x00\x00\x00\x7e\x03\x78\x03\x7c\x03\x77\x03\x77\x03\x77\x03\x77\x03\xb2\x03\xf0\x03\x96\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x95\x00\x95\x00\x7b\x03\x00\x00\x88\x00\x88\x00\x88\x00\x88\x00\x70\x03\x7a\x03\x00\x00\x00\x00\x29\x00\x47\x03\xad\x03\x47\x03\x47\x03\x67\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x03\x74\x03\x00\x00\x6e\x03\x72\x03\x64\x03\x6d\x03\x75\x03\x91\x03\x00\x00\x00\x00\x65\x03\x00\x00\x00\x00\x71\x03\x58\x03\x58\x03\x88\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\x00\x00\x00\x00\x6c\x03\x54\x03\x69\x03\x88\x00\x28\x00\x63\x03\x5f\x03\x5e\x03\x61\x03\x95\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x55\x03\x00\x00\x4c\x03\xf0\x03\x6f\x03\x44\x03\x00\x00\x3d\x03\x3b\x03\x46\x03\x00\x00\x42\x03\x3a\x03\x38\x03\x00\x00\x00\x00\x36\x03\x34\x03\x33\x03\x00\x00\x00\x00\x31\x03\x00\x00\x31\x03\x00\x00\xde\x00\x85\x02\x47\x03\x47\x03\x47\x03\x43\x03\x47\x03\x3c\x03\x2b\x03\x85\x02\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x3e\x03\x21\x00\x3e\x03\x27\x03\x37\x03\x00\x00\x47\x03\x06\x01\x00\x00\x62\x03\x5d\x03\x5a\x03\x21\x00\x32\x03\x00\x00\xde\x00\x2c\x03\x00\x00\xec\x00\xe8\xff\x1a\x03\x00\x00\x20\x03\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\xe8\xff\x14\x03\x09\x03\x00\x00\x09\x03\x47\x03\x00\x00\xde\x00\x00\x00\x13\x03\x13\x03\x13\x03\x00\x00\x06\x01\x47\x03\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\xfd\x02\xde\x00\x00\x00\xf9\x02\x00\x00\x00\x00\xde\x00\xf4\x02\xf4\x02\x1b\x00\x9d\x01\x85\x02\x00\x00\x21\x00\x00\x00\x85\x02\xd9\x02\x00\x00\x00\x00\x21\x00\xe8\x02\x00\x00\x85\x02\x00\x00\x21\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x74\x02\x8f\x06\x0f\x00\xf2\x02\x0e\x03\x79\x01\x00\x00\x07\x03\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x01\x7a\x06\x00\x00\x00\x00\xc3\x01\x0e\x00\x00\x00\x00\x00\x00\x00\xc1\x01\xe6\x02\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x31\x01\x78\x04\x5d\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\x93\x02\x65\x06\x00\x00\x00\x00\x4b\x01\x00\x00\xb5\x04\xa1\x04\x00\x00\x50\x06\x3b\x06\x00\x00\x0b\x03\x26\x06\x00\x00\xfe\x02\x93\x04\xfa\x03\x34\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x11\x06\xd8\x03\x23\x00\x00\x00\x00\x00\x2d\x00\x2c\x00\x00\x00\x06\x00\x00\x00\xf0\x02\x7a\x02\x62\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x00\x00\x00\x00\xcc\x02\xb8\x04\x33\x00\x07\x02\x00\x00\xef\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x01\xfc\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x04\x00\x00\x00\x00\xd2\x05\xbd\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\xa8\x05\x37\x01\x84\x02\x00\x00\x11\x03\x32\x00\xf6\x04\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x02\xdc\x02\xc1\x02\x00\x00\x92\x02\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\xe1\x04\x00\x00\xd8\x00\x93\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x02\xd2\x02\x00\x00\x00\x00\x8b\x02\x9b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1c\x00\xf4\x01\xbc\x02\xbb\x02\xaa\x02\x9c\x02\x19\x00\x98\x02\x96\x02\x91\x02\x0d\x00\x0c\x00\x0b\x00\x8d\x02\x57\x02\x00\x00\x00\x00\x00\x00\x23\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x02\x73\x02\x71\x02\x0e\x02\xde\x01\xc5\x02\x18\x02\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\xb0\x01\x0e\x01\x00\x00\x00\x00\x69\x02\xe3\x01\x5b\x01\x33\x01\x0f\x02\x00\x00\x00\x00\x00\x00\xd6\x01\x93\x05\xd0\x01\x7e\x05\x69\x05\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xc2\x01\x89\x01\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x0a\x00\x87\x01\x17\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x36\x00\x00\x00\x00\x00\x00\x00\x6c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x9f\x02\x3f\x01\x65\x01\x00\x00\x00\x00\x50\x01\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x26\x01\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x3b\x00\x00\x00\x27\x00\x04\x02\x3f\x05\x2a\x05\x15\x05\x05\x00\x00\x05\x00\x00\x90\x00\xfe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x09\x00\x23\x01\x12\x01\xb8\x00\x00\x00\x00\x00\xeb\x04\xcc\x04\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\xf2\x00\x00\x00\x12\x02\x00\x00\x00\x00\xdf\x00\x40\x03\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\xf1\x02\x00\x00\x9a\x00\x00\x00\x3a\x00\xd6\x04\x00\x00\x18\x00\x00\x00\x03\x00\x16\x00\x15\x00\x00\x00\x78\x01\xbc\x04\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\x00\x00\x61\x01\xff\xff\x04\x00\x1f\x00\x4a\x00\xdc\x01\x00\x00\x61\x00\x00\x00\x63\x01\x52\x00\x00\x00\x00\x00\x47\x00\xfe\xff\x00\x00\xe7\x00\x00\x00\x10\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xfa\xff\x00\x00\xb6\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xb6\xff\xb3\xff\xb6\xff\x9d\xff\x83\xff\x00\x00\x90\xff\x8f\xff\x8d\xff\x8c\xff\x00\x00\x87\xff\x00\x00\x00\x00\x6d\xff\x6b\xff\xb6\xff\x00\x00\x7f\xff\x7e\xff\x00\x00\x00\x00\x7d\xff\x7c\xff\x00\x00\x80\xff\x81\xff\x00\x00\x00\x00\x00\x00\xab\xff\x9e\xff\x82\xff\x00\x00\x9d\xff\x00\x00\x00\x00\x8d\xff\x00\x00\x68\xff\x78\xff\x00\x00\x00\x00\x77\xff\x9b\xff\x52\xff\x5d\xff\x00\x00\x89\xff\x61\xff\x5e\xff\x9a\xff\x00\x00\x00\x00\x75\xff\x00\x00\x00\x00\x00\x00\x56\xff\x00\x00\x00\x00\x57\xff\x00\x00\x00\x00\x73\xff\x00\x00\x00\x00\x6c\xff\x00\x00\x6e\xff\x93\xff\x8b\xff\x84\xff\x00\x00\x00\x00\x00\x00\xb5\xff\xb4\xff\xb6\xff\xb6\xff\xfa\xfe\xb6\xff\xf5\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd5\xff\xd4\xff\xd8\xff\xd7\xff\xd6\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\x96\xff\x9d\xff\x9c\xff\x53\xff\x48\xff\x01\xff\x00\x00\xb2\xff\x00\x00\xf9\xfe\xf8\xfe\x76\xff\x8e\xff\x00\x00\x91\xff\x97\xff\x87\xff\x00\x00\xb6\xff\x00\x00\x00\x00\x72\xff\x71\xff\x00\x00\x59\xff\x5a\xff\x92\xff\x58\xff\x00\x00\x5b\xff\x5c\xff\x60\xff\x62\xff\x8a\xff\x5f\xff\x6a\xff\x79\xff\x00\x00\x69\xff\x7b\xff\x00\x00\x00\x00\x00\x00\x63\xff\x64\xff\x66\xff\x67\xff\x86\xff\x51\xff\x00\x00\x74\xff\x00\x00\x00\x00\xb6\xff\x88\xff\x48\xff\x01\xff\x48\xff\xfd\xfe\x50\xff\x4e\xff\x4c\xff\x49\xff\x4a\xff\x00\x00\x00\x00\x00\x00\x48\xff\x00\x00\x53\xff\x00\x00\x53\xff\x00\x00\x96\xff\x95\xff\xed\xfe\x55\xff\xb6\xff\x54\xff\x48\xff\x4d\xff\xad\xff\x00\x00\x3d\xff\x4b\xff\x02\xff\x00\xff\xfc\xfe\x00\x00\xb6\xff\xaf\xff\x9d\xff\x33\xff\x18\xff\xd5\xfe\x2e\xff\x2c\xff\x2b\xff\x2a\xff\x29\xff\x2d\xff\x28\xff\x27\xff\x26\xff\x25\xff\x24\xff\x1e\xff\x23\xff\x21\xff\x22\xff\x20\xff\x1f\xff\xf6\xfe\xf4\xfe\xf3\xfe\xf1\xfe\xf2\xfe\xee\xfe\xf0\xfe\xef\xfe\xb6\xff\xb6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\x00\x00\x00\x00\x00\x00\xb6\xff\xb6\xff\xb6\xff\x00\x00\x37\xff\x00\x00\x6f\xff\x70\xff\x00\x00\x7a\xff\x65\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\xff\x00\x00\x00\x00\x0d\xff\x0e\xff\x0f\xff\x00\x00\xac\xff\x00\x00\x00\x00\x00\x00\x10\xff\x53\xff\x53\xff\x53\xff\x53\xff\x00\x00\x00\x00\x0b\xff\x0c\xff\x31\xff\x00\x00\x35\xff\x00\x00\x00\x00\x00\x00\xd9\xfe\xb0\xff\xb1\xff\xae\xff\x3f\xff\x3b\xff\x00\x00\x3c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x43\xff\x00\x00\xad\xff\x4f\xff\x00\x00\xd7\xfe\xf7\xfe\xb6\xff\x00\x00\x00\x00\xad\xff\x45\xff\x41\xff\x46\xff\x3e\xff\x47\xff\x00\x00\xd6\xfe\x1d\xff\x32\xff\x39\xff\x00\x00\x19\xff\x1a\xff\xb6\xff\x00\x00\xb6\xff\x53\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\x98\xff\x13\xff\x12\xff\x11\xff\x00\x00\x07\xff\x05\xff\x00\x00\x03\xff\x37\xff\x85\xff\x35\xff\x96\xff\x94\xff\x00\x00\x96\xff\x00\x00\xe6\xfe\x00\x00\x00\x00\x00\x00\xe7\xfe\xe8\xfe\x00\x00\x96\xff\x00\x00\x38\xff\x36\xff\x00\x00\x06\xff\x00\x00\x99\xff\x00\x00\xb6\xff\x00\x00\x00\x00\x00\x00\xb6\xff\x00\x00\x00\x00\x00\x00\xb6\xff\x00\x00\x30\xff\x34\xff\x3a\xff\x44\xff\x42\xff\x40\xff\x00\x00\xd8\xfe\xb6\xff\x00\x00\xb6\xff\xa9\xff\x00\x00\xe3\xfe\x00\x00\x48\xff\xfb\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xa7\xff\xa3\xff\x00\x00\xe0\xfe\x00\x00\x00\x00\x0a\xff\x09\xff\x00\x00\xea\xfe\x00\x00\xeb\xfe\xec\xfe\xe9\xfe\x00\x00\x08\xff\xa5\xff\x00\x00\x00\x00\xa8\xff\x00\x00\x00\x00\xa4\xff\x00\x00\xe2\xfe\xb6\xff\xb6\xff\xb6\xff\xff\xfe\x48\xff\x00\x00\xaa\xff\x00\x00\xe5\xfe\x2f\xff\xe4\xfe\x1c\xff\xfe\xfe\x00\x00\xde\xfe\x17\xff\x16\xff\x00\x00\x15\xff\xe1\xfe\x1b\xff\x00\x00\xa1\xff\xa6\xff\x00\x00\x04\xff\xa2\xff\x9f\xff\xb6\xff\xb6\xff\x00\x00\x00\x00\xb6\xff\xa0\xff\x00\x00\xdd\xfe\xb6\xff\x00\x00\xdf\xfe\x14\xff\x00\x00\xb6\xff\xda\xfe\xb6\xff\xdc\xfe\x00\x00\xdb\xfe"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x03\x00\x03\x00\x09\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x05\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x04\x00\x05\x00\x2d\x00\x06\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x0a\x00\x30\x00\x03\x00\x03\x00\x00\x00\x0a\x00\x35\x00\x0c\x00\x06\x00\x0e\x00\x30\x00\x40\x00\x0a\x00\x0b\x00\x03\x00\x03\x00\x0a\x00\x37\x00\x03\x00\x03\x00\x0a\x00\x0f\x00\x0c\x00\x37\x00\x0e\x00\x39\x00\x40\x00\x0f\x00\x0f\x00\x40\x00\x41\x00\x0a\x00\x0a\x00\x0a\x00\x1c\x00\x0a\x00\x0f\x00\x0f\x00\x54\x00\x0a\x00\x0b\x00\x57\x00\x11\x00\x12\x00\x5a\x00\x37\x00\x38\x00\x39\x00\x06\x00\x1c\x00\x1c\x00\x06\x00\x1d\x00\x1e\x00\x1f\x00\x0a\x00\x0a\x00\x0b\x00\x3c\x00\x30\x00\x0f\x00\x42\x00\x40\x00\x0a\x00\x3c\x00\x3d\x00\x59\x00\x41\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x06\x00\x59\x00\x42\x00\x40\x00\x67\x00\x6e\x00\x6e\x00\x6b\x00\x6e\x00\x6e\x00\x6c\x00\x6d\x00\x6c\x00\x6d\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x6c\x00\x66\x00\x66\x00\x69\x00\x67\x00\x6a\x00\x6a\x00\x68\x00\x66\x00\x66\x00\x3a\x00\x59\x00\x59\x00\x55\x00\x55\x00\x3f\x00\x40\x00\x50\x00\x41\x00\x43\x00\x53\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0a\x00\x0b\x00\x0a\x00\x0a\x00\x54\x00\x06\x00\x56\x00\x57\x00\x58\x00\x0a\x00\x0a\x00\x5b\x00\x53\x00\x5d\x00\x0f\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x0b\x00\x0c\x00\x31\x00\x0e\x00\x0a\x00\x2f\x00\x08\x00\x09\x00\x37\x00\x0a\x00\x39\x00\x0a\x00\x0b\x00\x0f\x00\x0f\x00\x31\x00\x3a\x00\x40\x00\x37\x00\x37\x00\x39\x00\x39\x00\x37\x00\x09\x00\x1e\x00\x1f\x00\x41\x00\x1c\x00\x3a\x00\x0f\x00\x40\x00\x40\x00\x2f\x00\x3f\x00\x40\x00\x53\x00\x08\x00\x43\x00\x35\x00\x45\x00\x46\x00\x08\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0a\x00\x03\x00\x06\x00\x40\x00\x54\x00\x07\x00\x56\x00\x57\x00\x58\x00\x0a\x00\x3e\x00\x5b\x00\x03\x00\x5d\x00\x0f\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x40\x00\x41\x00\x34\x00\x35\x00\x36\x00\x0a\x00\x2d\x00\x34\x00\x35\x00\x36\x00\x0f\x00\x0a\x00\x0b\x00\x0c\x00\x13\x00\x0e\x00\x03\x00\x0a\x00\x39\x00\x0a\x00\x19\x00\x1a\x00\x31\x00\x1c\x00\x11\x00\x40\x00\x11\x00\x12\x00\x37\x00\x3a\x00\x39\x00\x24\x00\x39\x00\x26\x00\x3f\x00\x40\x00\x06\x00\x40\x00\x43\x00\x40\x00\x45\x00\x46\x00\x23\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x2c\x00\x2d\x00\x14\x00\x0a\x00\x54\x00\x0a\x00\x56\x00\x57\x00\x58\x00\x0a\x00\x11\x00\x5b\x00\x11\x00\x5d\x00\x0f\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x23\x00\x0a\x00\x23\x00\x53\x00\x27\x00\x28\x00\x29\x00\x39\x00\x11\x00\x15\x00\x2d\x00\x2c\x00\x2d\x00\x31\x00\x40\x00\x0a\x00\x14\x00\x0a\x00\x03\x00\x37\x00\x0f\x00\x39\x00\x07\x00\x0a\x00\x11\x00\x0c\x00\x23\x00\x0e\x00\x40\x00\x3a\x00\x19\x00\x1a\x00\x29\x00\x1c\x00\x3f\x00\x40\x00\x2d\x00\x14\x00\x43\x00\x3c\x00\x45\x00\x46\x00\x23\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x2c\x00\x2d\x00\x33\x00\x3b\x00\x54\x00\x36\x00\x56\x00\x57\x00\x58\x00\x0a\x00\x0a\x00\x5b\x00\x0a\x00\x5d\x00\x0f\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x00\x00\x01\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\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\x0a\x00\x1e\x00\x08\x00\x09\x00\x52\x00\x53\x00\x0a\x00\x11\x00\x12\x00\x0f\x00\x27\x00\x28\x00\x29\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x0a\x00\x0a\x00\x54\x00\x31\x00\x32\x00\x57\x00\x34\x00\x11\x00\x5a\x00\x37\x00\x5c\x00\x39\x00\x5e\x00\x0a\x00\x3c\x00\x0c\x00\x3e\x00\x0e\x00\x40\x00\x41\x00\x03\x00\x43\x00\x00\x00\x01\x00\x07\x00\x23\x00\x22\x00\x23\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2a\x00\x2b\x00\x0a\x00\x2d\x00\x08\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x1e\x00\x0a\x00\x03\x00\x0a\x00\x0f\x00\x10\x00\x07\x00\x23\x00\x03\x00\x27\x00\x28\x00\x29\x00\x07\x00\x3c\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x0a\x00\x31\x00\x32\x00\x3e\x00\x34\x00\x0f\x00\x10\x00\x37\x00\x0a\x00\x39\x00\x3d\x00\x0a\x00\x3c\x00\x0c\x00\x3e\x00\x0e\x00\x40\x00\x41\x00\x15\x00\x43\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\x41\x00\x42\x00\x43\x00\x01\x00\x51\x00\x52\x00\x53\x00\x0a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0f\x00\x10\x00\x0a\x00\x00\x00\x01\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x1e\x00\x15\x00\x03\x00\x15\x00\x0f\x00\x10\x00\x07\x00\x23\x00\x15\x00\x27\x00\x28\x00\x29\x00\x01\x00\x3b\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x0a\x00\x31\x00\x32\x00\x09\x00\x34\x00\x0a\x00\x0a\x00\x37\x00\x09\x00\x39\x00\x09\x00\x12\x00\x11\x00\x11\x00\x3e\x00\x0a\x00\x40\x00\x41\x00\x0a\x00\x43\x00\x1b\x00\x1c\x00\x1d\x00\x0f\x00\x2a\x00\x40\x00\x41\x00\x01\x00\x2e\x00\x0a\x00\x23\x00\x23\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x1c\x00\x29\x00\x2d\x00\x2c\x00\x2d\x00\x2d\x00\x31\x00\x32\x00\x12\x00\x34\x00\x0a\x00\x0a\x00\x37\x00\x3d\x00\x39\x00\x3a\x00\x0a\x00\x1b\x00\x1c\x00\x1d\x00\x0a\x00\x40\x00\x41\x00\x11\x00\x43\x00\x0f\x00\x03\x00\x0a\x00\x06\x00\x27\x00\x28\x00\x29\x00\x01\x00\x14\x00\x11\x00\x2d\x00\x44\x00\x1b\x00\x1c\x00\x31\x00\x32\x00\x23\x00\x34\x00\x0a\x00\x33\x00\x37\x00\x38\x00\x39\x00\x14\x00\x12\x00\x2c\x00\x2d\x00\x23\x00\x0a\x00\x40\x00\x41\x00\x01\x00\x43\x00\x1b\x00\x1c\x00\x1d\x00\x2c\x00\x2d\x00\x0a\x00\x0a\x00\x01\x00\x0c\x00\x0d\x00\x0f\x00\x10\x00\x27\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x2d\x00\x0a\x00\x03\x00\x03\x00\x31\x00\x32\x00\x12\x00\x34\x00\x11\x00\x02\x00\x37\x00\x2a\x00\x39\x00\x3a\x00\x0a\x00\x1b\x00\x1c\x00\x1d\x00\x40\x00\x40\x00\x41\x00\x11\x00\x43\x00\x2a\x00\x01\x00\x3b\x00\x23\x00\x27\x00\x28\x00\x29\x00\x0a\x00\x0b\x00\x0c\x00\x2d\x00\x2b\x00\x3b\x00\x2d\x00\x31\x00\x32\x00\x23\x00\x34\x00\x12\x00\x38\x00\x37\x00\x38\x00\x39\x00\x40\x00\x2b\x00\x3a\x00\x2d\x00\x1b\x00\x1c\x00\x40\x00\x41\x00\x2a\x00\x43\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x27\x00\x28\x00\x29\x00\x01\x00\x40\x00\x0a\x00\x2d\x00\x0c\x00\x0d\x00\x3a\x00\x31\x00\x32\x00\x33\x00\x34\x00\x33\x00\x36\x00\x37\x00\x40\x00\x39\x00\x3f\x00\x12\x00\x40\x00\x2f\x00\x2a\x00\x03\x00\x40\x00\x41\x00\x03\x00\x43\x00\x1b\x00\x1c\x00\x1d\x00\x03\x00\x2f\x00\x40\x00\x2a\x00\x01\x00\x03\x00\x40\x00\x30\x00\x2a\x00\x27\x00\x28\x00\x29\x00\x40\x00\x3f\x00\x04\x00\x2d\x00\x3f\x00\x42\x00\x3f\x00\x31\x00\x32\x00\x12\x00\x34\x00\x42\x00\x42\x00\x37\x00\x42\x00\x39\x00\x3f\x00\x36\x00\x1b\x00\x1c\x00\x3f\x00\x42\x00\x40\x00\x41\x00\x34\x00\x43\x00\x2a\x00\x01\x00\x2f\x00\x2f\x00\x27\x00\x28\x00\x29\x00\x2f\x00\x2a\x00\x40\x00\x2d\x00\x2a\x00\x0f\x00\x40\x00\x31\x00\x32\x00\x2a\x00\x34\x00\x12\x00\x0d\x00\x37\x00\x3b\x00\x39\x00\x3a\x00\x2e\x00\x40\x00\x38\x00\x1b\x00\x1c\x00\x40\x00\x41\x00\x38\x00\x43\x00\x38\x00\x01\x00\x40\x00\x2e\x00\x40\x00\x04\x00\x27\x00\x28\x00\x29\x00\x3b\x00\x3b\x00\x05\x00\x2d\x00\x42\x00\x42\x00\x3f\x00\x31\x00\x32\x00\x12\x00\x34\x00\x42\x00\x2a\x00\x37\x00\x38\x00\x39\x00\x36\x00\x40\x00\x1b\x00\x1c\x00\x1d\x00\x43\x00\x40\x00\x41\x00\x2a\x00\x43\x00\x2a\x00\x01\x00\x30\x00\x40\x00\x27\x00\x28\x00\x29\x00\x05\x00\x0f\x00\x2a\x00\x2d\x00\x2a\x00\x42\x00\x3f\x00\x31\x00\x32\x00\x03\x00\x34\x00\x12\x00\x0a\x00\x37\x00\x40\x00\x39\x00\x37\x00\x0f\x00\x37\x00\x0c\x00\x1b\x00\x1c\x00\x40\x00\x41\x00\x37\x00\x43\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x40\x00\x27\x00\x28\x00\x29\x00\x2e\x00\x3a\x00\x2e\x00\x2d\x00\x3a\x00\x30\x00\x2a\x00\x31\x00\x32\x00\x12\x00\x34\x00\x0a\x00\x1f\x00\x37\x00\x42\x00\x39\x00\x0f\x00\x36\x00\x1b\x00\x1c\x00\x13\x00\x2a\x00\x40\x00\x41\x00\x02\x00\x43\x00\x19\x00\x1a\x00\x3b\x00\x1c\x00\x40\x00\x28\x00\x29\x00\x33\x00\x02\x00\x33\x00\x2d\x00\x24\x00\x2e\x00\x26\x00\x31\x00\x32\x00\x38\x00\x38\x00\x2f\x00\x2f\x00\x37\x00\x3a\x00\x39\x00\x2a\x00\x33\x00\x3a\x00\x0a\x00\x44\x00\x40\x00\x40\x00\x41\x00\x0f\x00\x43\x00\x39\x00\x2a\x00\x13\x00\x44\x00\x35\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x44\x00\x2a\x00\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x26\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x26\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\x19\x00\x1a\x00\xff\xff\x1c\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x19\x00\x1a\x00\xff\xff\x1c\x00\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x24\x00\x0a\x00\x26\x00\x13\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\x19\x00\x1a\x00\xff\xff\x1c\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x24\x00\xff\xff\x26\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\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"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\xd6\x00\xf7\x01\xa9\x00\xaf\x01\xd6\x00\xe9\x01\xf6\x01\x61\x01\x05\x00\x61\x01\xa9\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x05\x00\x06\x00\x07\x00\xd2\x01\x06\x02\x9e\x01\xe5\x01\xe5\x01\xa6\x01\x53\x01\x41\x01\x55\x01\xcc\x00\x48\x01\x48\x01\x53\x01\xbf\x01\x53\x00\xc0\x01\xfe\x01\xc1\x01\x9d\x01\x26\x00\xb4\x01\xb5\x01\xa4\x01\x76\x01\x0a\x00\x86\x01\xaa\x00\xaa\x00\xbf\x01\x0b\x00\xc0\x01\x46\x00\xc1\x01\x4c\x00\x87\x01\x77\x01\x5a\x01\x26\x00\x27\x00\x0a\x00\x0a\x00\xb5\x00\xad\x00\x33\x00\x0b\x00\x0b\x00\x55\x00\xb4\x01\xed\x01\x56\x00\x7e\x01\x9d\x01\x57\x00\x56\x01\x57\x01\x58\x01\x04\x02\xda\x00\xda\x00\xfb\x01\xb6\x00\xb7\x00\xb8\x00\xfd\x00\xb4\x01\xb5\x01\x54\x01\xa5\x01\x0b\x00\xeb\x01\x26\x00\xff\x01\x54\x01\x55\x01\x08\x00\xb6\x01\xfe\x00\x0e\x00\x0f\x00\x10\x00\xaf\x00\x12\x00\x02\x02\x08\x00\xc2\x01\x26\x00\xa7\x01\x03\x02\xf8\x01\xea\x01\xd7\x00\xd7\x00\x62\x01\xb9\x01\x62\x01\x63\x01\xe1\x01\xa9\x01\x3a\x01\x3b\x01\x3c\x01\x49\x00\xe6\x01\xe6\x01\x9f\x01\xa7\x01\xe7\x01\xe8\x01\x42\x01\x49\x01\x4a\x01\xff\x00\xab\x00\xac\x00\xf8\x00\xdb\x00\x00\x01\x01\x01\xc5\x01\xe2\x01\x02\x01\xc6\x01\x03\x01\x04\x01\xfc\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\xb4\x01\xb5\x01\x55\x01\x55\x01\x0d\x01\xb0\x01\x0e\x01\x0f\x01\x10\x01\xfd\x00\xd2\x01\x11\x01\xf0\x01\x12\x01\x0b\x00\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\xfe\x00\x0e\x00\x0f\x00\x10\x00\xaf\x00\x12\x00\xe3\x00\xe4\x00\xe5\x00\x3b\x00\xe6\x00\xb5\x00\xcb\x00\x5b\x00\x5c\x00\x46\x00\x0a\x00\x47\x00\xb4\x01\xde\x01\x5d\x00\x0b\x00\x3b\x00\xd3\x00\x26\x00\x56\x01\x56\x01\xab\x01\x5a\x01\x86\x01\xa9\x00\x2c\x01\xb8\x00\xb6\x01\x3d\x00\xff\x00\x48\x01\x26\x00\x87\x01\x50\x01\x00\x01\x01\x01\xce\x01\x5b\x01\x02\x01\x53\x00\x03\x01\x04\x01\x5b\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\xd2\x01\x05\x02\xd7\x01\xe7\x00\x0d\x01\xfb\x00\x0e\x01\x0f\x01\x10\x01\xfd\x00\x5e\x00\x11\x01\xd6\x01\x12\x01\x0b\x00\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\xfe\x00\x0e\x00\x0f\x00\x10\x00\xaf\x00\x12\x00\x26\x00\x27\x00\xac\x01\x5d\x01\x5e\x01\x0a\x00\xc4\x01\x5c\x01\x5d\x01\x5e\x01\x0b\x00\xe3\x00\xe4\x00\xe5\x00\x2a\x00\xe6\x00\xdf\x01\x33\x00\xc5\x01\x33\x00\xb1\x00\x10\x00\x3b\x00\xb2\x00\x34\x00\x26\x00\x7e\x01\x7f\x01\x3c\x00\xff\x00\x3d\x00\x2d\x00\xd4\x01\x2e\x00\x6e\x01\x01\x01\xe0\x01\x26\x00\x02\x01\x26\x00\x03\x01\x04\x01\xe7\x00\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\xa5\x01\xe9\x00\xc9\x01\x33\x00\x0d\x01\x33\x00\x0e\x01\x0f\x01\x10\x01\xfd\x00\x34\x00\x11\x01\x34\x00\x12\x01\x0b\x00\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\xfe\x00\x0e\x00\x0f\x00\x10\x00\xaf\x00\x12\x00\x35\x00\x33\x00\xe7\x00\xc7\x01\x36\x00\x37\x00\x38\x00\x48\x00\x34\x00\x92\x01\x39\x00\x79\x01\xe9\x00\x3b\x00\x26\x00\x0a\x00\x95\x01\x33\x00\x00\x02\x46\x00\x0b\x00\x47\x00\x01\x02\xbf\x01\x34\x00\xc0\x01\x35\x00\xf9\x01\x26\x00\xff\x00\x4e\x00\x10\x00\xc1\x00\xb2\x00\x00\x01\x01\x01\x39\x00\x97\x01\x02\x01\x98\x01\x03\x01\x04\x01\xe7\x00\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x7a\x01\xe9\x00\x51\x00\x99\x01\x0d\x01\x52\x00\x0e\x01\x0f\x01\x10\x01\x0a\x00\xa8\x01\x11\x01\xad\x01\x12\x01\x0b\x00\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x53\x01\x18\x00\x4e\x00\x10\x00\x4f\x00\x12\x00\x1b\x01\x1c\x01\x1d\x01\x5c\x00\xe4\x01\xde\x00\xdf\x00\xe0\x00\xe1\x00\x1e\x01\x1f\x01\x20\x01\x21\x01\xfe\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x1a\x00\x1b\x00\x33\x00\x29\x01\x5b\x00\x5c\x00\x9b\x01\x84\x01\x33\x00\x7e\x01\x80\x01\x5d\x00\x1d\x00\x1e\x00\x1f\x00\x7e\x01\x81\x01\x2a\x01\x20\x00\x33\x00\xae\x01\x55\x00\x21\x00\x22\x00\x56\x00\x23\x00\x34\x00\x57\x00\x3f\x00\x58\x00\x40\x00\x59\x00\xbf\x01\x54\x01\xc0\x01\x2b\x01\xf2\x01\x26\x00\x27\x00\xfa\x01\x28\x00\x53\x01\x18\x00\xfb\x00\x41\x00\x4a\x00\x16\x00\x1b\x01\x1c\x01\x1d\x01\x5c\x00\x42\x00\x43\x00\x33\x00\x44\x00\x65\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x34\x00\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x1a\x00\x1b\x00\xa3\x00\x29\x01\x69\x01\xb2\x01\x6b\x01\xa4\x00\xa7\x00\xb3\x01\xe7\x00\xbd\x01\x1d\x00\x1e\x00\x1f\x00\xbe\x01\x71\x01\x2a\x01\x20\x00\x7b\x01\xe9\x00\xa3\x00\x21\x00\x22\x00\x74\x01\x23\x00\xa4\x00\xd9\x00\x3f\x00\x78\x01\x40\x00\x89\x01\xbf\x01\x54\x01\xc0\x01\x2b\x01\xd5\x01\x26\x00\x27\x00\x8a\x01\x28\x00\x60\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\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\x18\x00\x82\x01\x83\x01\x84\x01\xa3\x00\x1b\x01\x1c\x01\x1d\x01\x5c\x00\xa4\x00\xa5\x00\x33\x00\x28\x00\x04\x00\x1e\x01\x1f\x01\x20\x01\x21\x01\x34\x00\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x1a\x00\x1b\x00\xa3\x00\x29\x01\x8c\x01\xfa\x00\x8d\x01\xa4\x00\xa6\x00\xfb\x00\xe7\x00\x8e\x01\x1d\x00\x1e\x00\x1f\x00\x18\x00\x37\x01\x2a\x01\x20\x00\x7c\x01\xe9\x00\x39\x01\x21\x00\x22\x00\x3d\x01\x23\x00\x33\x00\x33\x00\x3f\x00\x3f\x01\x40\x00\x40\x01\x19\x00\x34\x00\x34\x00\x2b\x01\x43\x01\x26\x00\x27\x00\x0a\x00\x28\x00\x1a\x00\x1b\x00\x1c\x00\x0b\x00\x0a\x00\x26\x00\x27\x00\x18\x00\xfd\x00\x44\x01\xe7\x00\x35\x00\x1d\x00\x1e\x00\x1f\x00\x4f\x00\x88\x01\xc4\x00\x20\x00\xee\x00\xe9\x00\x39\x00\x21\x00\x22\x00\x19\x00\x23\x00\x45\x01\x46\x01\x24\x00\x4d\x01\x25\x00\x30\x00\x33\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x26\x00\x27\x00\x34\x00\x28\x00\x0b\x00\x50\x01\x33\x00\x51\x01\x1d\x00\x1e\x00\x1f\x00\x18\x00\xec\x00\x34\x00\x20\x00\x4b\x01\x87\x01\x88\x01\x21\x00\x22\x00\xe7\x00\x23\x00\xf1\x00\xf6\x00\x24\x00\x33\x00\x25\x00\xea\x00\x19\x00\xf0\x00\xe9\x00\xe7\x00\x40\x00\x26\x00\x27\x00\x04\x00\x28\x00\x1a\x00\x1b\x00\x1c\x00\xe8\x00\xe9\x00\xa3\x00\xbf\x01\x18\x00\xcf\x01\xef\x01\xa4\x00\xa7\x00\x1d\x00\x1e\x00\x1f\x00\xf2\x00\xe0\x00\xe1\x00\x20\x00\x33\x00\x53\x00\x54\x00\x21\x00\x22\x00\x19\x00\x23\x00\x34\x00\x5e\x00\x24\x00\x0a\x00\x25\x00\x30\x00\x33\x00\x1a\x00\x1b\x00\x1c\x00\x26\x00\x26\x00\x27\x00\x34\x00\x28\x00\x0a\x00\x18\x00\xf5\x01\x41\x00\x1d\x00\x1e\x00\x1f\x00\xe3\x00\xe4\x00\xe5\x00\x20\x00\xba\x00\xf6\x01\x44\x00\x21\x00\x22\x00\x41\x00\x23\x00\x19\x00\xf2\x01\x24\x00\x33\x00\x25\x00\x26\x00\xbd\x00\xf4\x01\x44\x00\x1a\x00\x1b\x00\x26\x00\x27\x00\x0a\x00\x28\x00\xf9\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x26\x00\xbf\x01\x20\x00\xcf\x01\xd0\x01\xef\x01\x21\x00\x22\x00\x85\xff\x23\x00\xce\x01\x85\xff\x3f\x00\x87\x01\x40\x00\xcd\x01\x19\x00\x87\x01\xd5\x01\x0a\x00\xd9\x01\x26\x00\x27\x00\xda\x01\x28\x00\x1a\x00\x1b\x00\x1c\x00\xdb\x01\xde\x01\x26\x00\x0a\x00\x18\x00\xb2\x01\x26\x00\xb8\x01\x0a\x00\x1d\x00\x1e\x00\x1f\x00\x87\x01\xc9\x01\x73\x01\x20\x00\xcb\x01\xec\x00\xcc\x01\x21\x00\x22\x00\x19\x00\x23\x00\x8c\x01\xec\x00\x24\x00\x97\x01\x25\x00\x94\x01\x39\x01\x1a\x00\x1b\x00\x95\x01\xec\x00\x26\x00\x27\x00\x9b\x01\x28\x00\x0a\x00\x18\x00\xa1\x01\xa2\x01\x1d\x00\x1e\x00\x1f\x00\xa3\x01\x0a\x00\x26\x00\x20\x00\x0a\x00\x60\x01\x26\x00\x21\x00\x22\x00\x0a\x00\x23\x00\x19\x00\x67\x01\x3f\x00\x65\x01\x40\x00\xc0\x00\x68\x01\x26\x00\x69\x01\x1a\x00\x1b\x00\x26\x00\x27\x00\x6b\x01\x28\x00\x6d\x01\x18\x00\x26\x00\x6e\x01\x26\x00\x73\x01\x1d\x00\x1e\x00\x1f\x00\x78\x01\x7e\x01\x4f\x01\x20\x00\x8c\x01\x91\x01\x90\x01\x21\x00\x22\x00\x19\x00\x23\x00\x92\x01\x0a\x00\x3f\x00\xc1\x00\x40\x00\x39\x01\x26\x00\x1a\x00\x1b\x00\x1c\x00\x3f\x01\x26\x00\x27\x00\x0a\x00\x28\x00\x0a\x00\x18\x00\x4d\x01\x26\x00\x1d\x00\x1e\x00\x1f\x00\x4f\x01\x60\x01\x0a\x00\x20\x00\x0a\x00\xec\x00\xee\x00\x21\x00\x22\x00\xf0\x00\x23\x00\x19\x00\x0a\x00\x24\x00\x26\x00\x25\x00\xf4\x00\x0b\x00\xf5\x00\xe5\x00\x1a\x00\x1b\x00\x26\x00\x27\x00\xf6\x00\x28\x00\xae\x00\x0f\x00\x10\x00\xaf\x00\x12\x00\x26\x00\x1d\x00\x1e\x00\x1f\x00\x2e\x01\x2f\x01\xd4\x00\x20\x00\xd5\x00\xd6\x00\x0a\x00\x21\x00\x22\x00\x19\x00\x23\x00\x0a\x00\xa3\x00\x3f\x00\xec\x00\x40\x00\x0b\x00\x52\x00\x1a\x00\x1b\x00\xb9\x00\x0a\x00\x26\x00\x27\x00\xb4\x00\x28\x00\xb1\x00\x10\x00\xb5\x00\xb2\x00\x26\x00\x1e\x00\x1f\x00\xbc\x00\xbf\x00\xc3\x00\x20\x00\x2d\x00\xc8\x00\x2e\x00\x21\x00\x22\x00\xc6\x00\xc7\x00\x97\xff\xcb\x00\x3f\x00\xc9\x00\x40\x00\x0a\x00\x4d\x00\xca\x00\x0a\x00\xff\xff\x26\x00\x26\x00\x27\x00\x0b\x00\x28\x00\x48\x00\x0a\x00\x2a\x00\xff\xff\x53\x00\xce\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\xff\xff\x0a\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\xcf\x00\x2f\x01\x2e\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xce\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\xcf\x00\xd0\x00\x2e\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x2d\x00\x0a\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x30\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x31\x00\x0a\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\xb1\x00\x10\x00\x00\x00\xb2\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x31\x00\x00\x00\x2e\x00\xb1\x00\x10\x00\x00\x00\xb2\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x2d\x00\x0a\x00\x2e\x00\x2a\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\xb1\x00\x10\x00\x00\x00\xb2\x00\xe3\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x31\x00\x00\x00\x2e\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xec\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\xdb\x01\xde\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xdc\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x60\x01\xde\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xb8\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\xf7\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\x00\x00\xba\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x29\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyReduceArr = array (3, 298) [- (3 , happyReduce_3),- (4 , happyReduce_4),- (5 , happyReduce_5),- (6 , happyReduce_6),- (7 , happyReduce_7),- (8 , happyReduce_8),- (9 , happyReduce_9),- (10 , happyReduce_10),- (11 , happyReduce_11),- (12 , happyReduce_12),- (13 , happyReduce_13),- (14 , happyReduce_14),- (15 , happyReduce_15),- (16 , happyReduce_16),- (17 , happyReduce_17),- (18 , happyReduce_18),- (19 , happyReduce_19),- (20 , happyReduce_20),- (21 , happyReduce_21),- (22 , happyReduce_22),- (23 , happyReduce_23),- (24 , happyReduce_24),- (25 , happyReduce_25),- (26 , happyReduce_26),- (27 , happyReduce_27),- (28 , happyReduce_28),- (29 , happyReduce_29),- (30 , happyReduce_30),- (31 , happyReduce_31),- (32 , happyReduce_32),- (33 , happyReduce_33),- (34 , happyReduce_34),- (35 , happyReduce_35),- (36 , happyReduce_36),- (37 , happyReduce_37),- (38 , happyReduce_38),- (39 , happyReduce_39),- (40 , happyReduce_40),- (41 , happyReduce_41),- (42 , happyReduce_42),- (43 , happyReduce_43),- (44 , happyReduce_44),- (45 , happyReduce_45),- (46 , happyReduce_46),- (47 , happyReduce_47),- (48 , happyReduce_48),- (49 , happyReduce_49),- (50 , happyReduce_50),- (51 , happyReduce_51),- (52 , happyReduce_52),- (53 , happyReduce_53),- (54 , happyReduce_54),- (55 , happyReduce_55),- (56 , happyReduce_56),- (57 , happyReduce_57),- (58 , happyReduce_58),- (59 , happyReduce_59),- (60 , happyReduce_60),- (61 , happyReduce_61),- (62 , happyReduce_62),- (63 , happyReduce_63),- (64 , happyReduce_64),- (65 , happyReduce_65),- (66 , happyReduce_66),- (67 , happyReduce_67),- (68 , happyReduce_68),- (69 , happyReduce_69),- (70 , happyReduce_70),- (71 , happyReduce_71),- (72 , happyReduce_72),- (73 , happyReduce_73),- (74 , happyReduce_74),- (75 , happyReduce_75),- (76 , happyReduce_76),- (77 , happyReduce_77),- (78 , happyReduce_78),- (79 , happyReduce_79),- (80 , happyReduce_80),- (81 , happyReduce_81),- (82 , happyReduce_82),- (83 , happyReduce_83),- (84 , happyReduce_84),- (85 , happyReduce_85),- (86 , happyReduce_86),- (87 , happyReduce_87),- (88 , happyReduce_88),- (89 , happyReduce_89),- (90 , happyReduce_90),- (91 , happyReduce_91),- (92 , happyReduce_92),- (93 , happyReduce_93),- (94 , happyReduce_94),- (95 , happyReduce_95),- (96 , happyReduce_96),- (97 , happyReduce_97),- (98 , happyReduce_98),- (99 , happyReduce_99),- (100 , happyReduce_100),- (101 , happyReduce_101),- (102 , happyReduce_102),- (103 , happyReduce_103),- (104 , happyReduce_104),- (105 , happyReduce_105),- (106 , happyReduce_106),- (107 , happyReduce_107),- (108 , happyReduce_108),- (109 , happyReduce_109),- (110 , happyReduce_110),- (111 , happyReduce_111),- (112 , happyReduce_112),- (113 , happyReduce_113),- (114 , happyReduce_114),- (115 , happyReduce_115),- (116 , happyReduce_116),- (117 , happyReduce_117),- (118 , happyReduce_118),- (119 , happyReduce_119),- (120 , happyReduce_120),- (121 , happyReduce_121),- (122 , happyReduce_122),- (123 , happyReduce_123),- (124 , happyReduce_124),- (125 , happyReduce_125),- (126 , happyReduce_126),- (127 , happyReduce_127),- (128 , happyReduce_128),- (129 , happyReduce_129),- (130 , happyReduce_130),- (131 , happyReduce_131),- (132 , happyReduce_132),- (133 , happyReduce_133),- (134 , happyReduce_134),- (135 , happyReduce_135),- (136 , happyReduce_136),- (137 , happyReduce_137),- (138 , happyReduce_138),- (139 , happyReduce_139),- (140 , happyReduce_140),- (141 , happyReduce_141),- (142 , happyReduce_142),- (143 , happyReduce_143),- (144 , happyReduce_144),- (145 , happyReduce_145),- (146 , happyReduce_146),- (147 , happyReduce_147),- (148 , happyReduce_148),- (149 , happyReduce_149),- (150 , happyReduce_150),- (151 , happyReduce_151),- (152 , happyReduce_152),- (153 , happyReduce_153),- (154 , happyReduce_154),- (155 , happyReduce_155),- (156 , happyReduce_156),- (157 , happyReduce_157),- (158 , happyReduce_158),- (159 , happyReduce_159),- (160 , happyReduce_160),- (161 , happyReduce_161),- (162 , happyReduce_162),- (163 , happyReduce_163),- (164 , happyReduce_164),- (165 , happyReduce_165),- (166 , happyReduce_166),- (167 , happyReduce_167),- (168 , happyReduce_168),- (169 , happyReduce_169),- (170 , happyReduce_170),- (171 , happyReduce_171),- (172 , happyReduce_172),- (173 , happyReduce_173),- (174 , happyReduce_174),- (175 , happyReduce_175),- (176 , happyReduce_176),- (177 , happyReduce_177),- (178 , happyReduce_178),- (179 , happyReduce_179),- (180 , happyReduce_180),- (181 , happyReduce_181),- (182 , happyReduce_182),- (183 , happyReduce_183),- (184 , happyReduce_184),- (185 , happyReduce_185),- (186 , happyReduce_186),- (187 , happyReduce_187),- (188 , happyReduce_188),- (189 , happyReduce_189),- (190 , happyReduce_190),- (191 , happyReduce_191),- (192 , happyReduce_192),- (193 , happyReduce_193),- (194 , happyReduce_194),- (195 , happyReduce_195),- (196 , happyReduce_196),- (197 , happyReduce_197),- (198 , happyReduce_198),- (199 , happyReduce_199),- (200 , happyReduce_200),- (201 , happyReduce_201),- (202 , happyReduce_202),- (203 , happyReduce_203),- (204 , happyReduce_204),- (205 , happyReduce_205),- (206 , happyReduce_206),- (207 , happyReduce_207),- (208 , happyReduce_208),- (209 , happyReduce_209),- (210 , happyReduce_210),- (211 , happyReduce_211),- (212 , happyReduce_212),- (213 , happyReduce_213),- (214 , happyReduce_214),- (215 , happyReduce_215),- (216 , happyReduce_216),- (217 , happyReduce_217),- (218 , happyReduce_218),- (219 , happyReduce_219),- (220 , happyReduce_220),- (221 , happyReduce_221),- (222 , happyReduce_222),- (223 , happyReduce_223),- (224 , happyReduce_224),- (225 , happyReduce_225),- (226 , happyReduce_226),- (227 , happyReduce_227),- (228 , happyReduce_228),- (229 , happyReduce_229),- (230 , happyReduce_230),- (231 , happyReduce_231),- (232 , happyReduce_232),- (233 , happyReduce_233),- (234 , happyReduce_234),- (235 , happyReduce_235),- (236 , happyReduce_236),- (237 , happyReduce_237),- (238 , happyReduce_238),- (239 , happyReduce_239),- (240 , happyReduce_240),- (241 , happyReduce_241),- (242 , happyReduce_242),- (243 , happyReduce_243),- (244 , happyReduce_244),- (245 , happyReduce_245),- (246 , happyReduce_246),- (247 , happyReduce_247),- (248 , happyReduce_248),- (249 , happyReduce_249),- (250 , happyReduce_250),- (251 , happyReduce_251),- (252 , happyReduce_252),- (253 , happyReduce_253),- (254 , happyReduce_254),- (255 , happyReduce_255),- (256 , happyReduce_256),- (257 , happyReduce_257),- (258 , happyReduce_258),- (259 , happyReduce_259),- (260 , happyReduce_260),- (261 , happyReduce_261),- (262 , happyReduce_262),- (263 , happyReduce_263),- (264 , happyReduce_264),- (265 , happyReduce_265),- (266 , happyReduce_266),- (267 , happyReduce_267),- (268 , happyReduce_268),- (269 , happyReduce_269),- (270 , happyReduce_270),- (271 , happyReduce_271),- (272 , happyReduce_272),- (273 , happyReduce_273),- (274 , happyReduce_274),- (275 , happyReduce_275),- (276 , happyReduce_276),- (277 , happyReduce_277),- (278 , happyReduce_278),- (279 , happyReduce_279),- (280 , happyReduce_280),- (281 , happyReduce_281),- (282 , happyReduce_282),- (283 , happyReduce_283),- (284 , happyReduce_284),- (285 , happyReduce_285),- (286 , happyReduce_286),- (287 , happyReduce_287),- (288 , happyReduce_288),- (289 , happyReduce_289),- (290 , happyReduce_290),- (291 , happyReduce_291),- (292 , happyReduce_292),- (293 , happyReduce_293),- (294 , happyReduce_294),- (295 , happyReduce_295),- (296 , happyReduce_296),- (297 , happyReduce_297),- (298 , happyReduce_298)- ]--happy_n_terms = 69 :: Int-happy_n_nonterms = 111 :: Int--happyReduce_3 = happySpecReduce_1 0# happyReduction_3-happyReduction_3 happy_x_1- = case happyOut7 happy_x_1 of { happy_var_1 -> - happyIn6- (reverse happy_var_1- )}--happyReduce_4 = happySpecReduce_2 1# happyReduction_4-happyReduction_4 happy_x_2- happy_x_1- = case happyOut7 happy_x_1 of { happy_var_1 -> - case happyOut8 happy_x_2 of { happy_var_2 -> - happyIn7- (happy_var_2 : happy_var_1- )}}--happyReduce_5 = happySpecReduce_0 1# happyReduction_5-happyReduction_5 = happyIn7- ([]- )--happyReduce_6 = happySpecReduce_1 2# happyReduction_6-happyReduction_6 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> - happyIn8- (TokKeyword KwLet happy_var_1- )}--happyReduce_7 = happySpecReduce_1 2# happyReduction_7-happyReduction_7 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> - happyIn8- (TokKeyword KwIn happy_var_1- )}--happyReduce_8 = happySpecReduce_1 2# happyReduction_8-happyReduction_8 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> - happyIn8- (TokKeyword KwWhere happy_var_1- )}--happyReduce_9 = happySpecReduce_1 2# happyReduction_9-happyReduction_9 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> - happyIn8- (TokKeyword KwWith happy_var_1- )}--happyReduce_10 = happySpecReduce_1 2# happyReduction_10-happyReduction_10 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> - happyIn8- (TokKeyword KwRewrite happy_var_1- )}--happyReduce_11 = happySpecReduce_1 2# happyReduction_11-happyReduction_11 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> - happyIn8- (TokKeyword KwPostulate happy_var_1- )}--happyReduce_12 = happySpecReduce_1 2# happyReduction_12-happyReduction_12 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> - happyIn8- (TokKeyword KwPrimitive happy_var_1- )}--happyReduce_13 = happySpecReduce_1 2# happyReduction_13-happyReduction_13 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> - happyIn8- (TokKeyword KwOpen happy_var_1- )}--happyReduce_14 = happySpecReduce_1 2# happyReduction_14-happyReduction_14 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> - happyIn8- (TokKeyword KwImport happy_var_1- )}--happyReduce_15 = happySpecReduce_1 2# happyReduction_15-happyReduction_15 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> - happyIn8- (TokKeyword KwUsing happy_var_1- )}--happyReduce_16 = happySpecReduce_1 2# happyReduction_16-happyReduction_16 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> - happyIn8- (TokKeyword KwHiding happy_var_1- )}--happyReduce_17 = happySpecReduce_1 2# happyReduction_17-happyReduction_17 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> - happyIn8- (TokKeyword KwRenaming happy_var_1- )}--happyReduce_18 = happySpecReduce_1 2# happyReduction_18-happyReduction_18 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> - happyIn8- (TokKeyword KwTo happy_var_1- )}--happyReduce_19 = happySpecReduce_1 2# happyReduction_19-happyReduction_19 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> - happyIn8- (TokKeyword KwPublic happy_var_1- )}--happyReduce_20 = happySpecReduce_1 2# happyReduction_20-happyReduction_20 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> - happyIn8- (TokKeyword KwModule happy_var_1- )}--happyReduce_21 = happySpecReduce_1 2# happyReduction_21-happyReduction_21 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> - happyIn8- (TokKeyword KwData happy_var_1- )}--happyReduce_22 = happySpecReduce_1 2# happyReduction_22-happyReduction_22 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> - happyIn8- (TokKeyword KwCoData happy_var_1- )}--happyReduce_23 = happySpecReduce_1 2# happyReduction_23-happyReduction_23 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> - happyIn8- (TokKeyword KwRecord happy_var_1- )}--happyReduce_24 = happySpecReduce_1 2# happyReduction_24-happyReduction_24 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> - happyIn8- (TokKeyword KwConstructor happy_var_1- )}--happyReduce_25 = happySpecReduce_1 2# happyReduction_25-happyReduction_25 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> - happyIn8- (TokKeyword KwField happy_var_1- )}--happyReduce_26 = happySpecReduce_1 2# happyReduction_26-happyReduction_26 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> - happyIn8- (TokKeyword KwInfix happy_var_1- )}--happyReduce_27 = happySpecReduce_1 2# happyReduction_27-happyReduction_27 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> - happyIn8- (TokKeyword KwInfixL happy_var_1- )}--happyReduce_28 = happySpecReduce_1 2# happyReduction_28-happyReduction_28 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> - happyIn8- (TokKeyword KwInfixR happy_var_1- )}--happyReduce_29 = happySpecReduce_1 2# happyReduction_29-happyReduction_29 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> - happyIn8- (TokKeyword KwMutual happy_var_1- )}--happyReduce_30 = happySpecReduce_1 2# happyReduction_30-happyReduction_30 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> - happyIn8- (TokKeyword KwAbstract happy_var_1- )}--happyReduce_31 = happySpecReduce_1 2# happyReduction_31-happyReduction_31 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> - happyIn8- (TokKeyword KwPrivate happy_var_1- )}--happyReduce_32 = happySpecReduce_1 2# happyReduction_32-happyReduction_32 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> - happyIn8- (TokKeyword KwProp happy_var_1- )}--happyReduce_33 = happySpecReduce_1 2# happyReduction_33-happyReduction_33 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> - happyIn8- (TokKeyword KwSet happy_var_1- )}--happyReduce_34 = happySpecReduce_1 2# happyReduction_34-happyReduction_34 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> - happyIn8- (TokKeyword KwForall happy_var_1- )}--happyReduce_35 = happySpecReduce_1 2# happyReduction_35-happyReduction_35 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> - happyIn8- (TokKeyword KwSyntax happy_var_1- )}--happyReduce_36 = happySpecReduce_1 2# happyReduction_36-happyReduction_36 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> - happyIn8- (TokKeyword KwOPTIONS happy_var_1- )}--happyReduce_37 = happySpecReduce_1 2# happyReduction_37-happyReduction_37 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> - happyIn8- (TokKeyword KwBUILTIN happy_var_1- )}--happyReduce_38 = happySpecReduce_1 2# happyReduction_38-happyReduction_38 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> - happyIn8- (TokKeyword KwIMPORT happy_var_1- )}--happyReduce_39 = happySpecReduce_1 2# happyReduction_39-happyReduction_39 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> - happyIn8- (TokKeyword KwCOMPILED happy_var_1- )}--happyReduce_40 = happySpecReduce_1 2# happyReduction_40-happyReduction_40 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> - happyIn8- (TokKeyword KwCOMPILED_DATA happy_var_1- )}--happyReduce_41 = happySpecReduce_1 2# happyReduction_41-happyReduction_41 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> - happyIn8- (TokKeyword KwCOMPILED_TYPE happy_var_1- )}--happyReduce_42 = happySpecReduce_1 2# happyReduction_42-happyReduction_42 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> - happyIn8- (TokKeyword KwIMPOSSIBLE happy_var_1- )}--happyReduce_43 = happySpecReduce_1 2# happyReduction_43-happyReduction_43 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwETA happy_var_1) -> - happyIn8- (TokKeyword KwETA happy_var_1- )}--happyReduce_44 = happySpecReduce_1 2# happyReduction_44-happyReduction_44 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> - happyIn8- (TokKeyword KwQuoteGoal happy_var_1- )}--happyReduce_45 = happySpecReduce_1 2# happyReduction_45-happyReduction_45 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> - happyIn8- (TokKeyword KwQuote happy_var_1- )}--happyReduce_46 = happySpecReduce_1 2# happyReduction_46-happyReduction_46 happy_x_1- = case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> - happyIn8- (TokSetN happy_var_1- )}--happyReduce_47 = happySpecReduce_1 2# happyReduction_47-happyReduction_47 happy_x_1- = case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> - happyIn8- (TokTeX happy_var_1- )}--happyReduce_48 = happySpecReduce_1 2# happyReduction_48-happyReduction_48 happy_x_1- = case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> - happyIn8- (TokComment happy_var_1- )}--happyReduce_49 = happySpecReduce_1 2# happyReduction_49-happyReduction_49 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> - happyIn8- (TokSymbol SymEllipsis happy_var_1- )}--happyReduce_50 = happySpecReduce_1 2# happyReduction_50-happyReduction_50 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> - happyIn8- (TokSymbol SymDot happy_var_1- )}--happyReduce_51 = happySpecReduce_1 2# happyReduction_51-happyReduction_51 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> - happyIn8- (TokSymbol SymSemi happy_var_1- )}--happyReduce_52 = happySpecReduce_1 2# happyReduction_52-happyReduction_52 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> - happyIn8- (TokSymbol SymColon happy_var_1- )}--happyReduce_53 = happySpecReduce_1 2# happyReduction_53-happyReduction_53 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> - happyIn8- (TokSymbol SymEqual happy_var_1- )}--happyReduce_54 = happySpecReduce_1 2# happyReduction_54-happyReduction_54 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> - happyIn8- (TokSymbol SymUnderscore happy_var_1- )}--happyReduce_55 = happySpecReduce_1 2# happyReduction_55-happyReduction_55 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> - happyIn8- (TokSymbol SymQuestionMark happy_var_1- )}--happyReduce_56 = happySpecReduce_1 2# happyReduction_56-happyReduction_56 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> - happyIn8- (TokSymbol SymArrow happy_var_1- )}--happyReduce_57 = happySpecReduce_1 2# happyReduction_57-happyReduction_57 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> - happyIn8- (TokSymbol SymLambda happy_var_1- )}--happyReduce_58 = happySpecReduce_1 2# happyReduction_58-happyReduction_58 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> - happyIn8- (TokSymbol SymAs happy_var_1- )}--happyReduce_59 = happySpecReduce_1 2# happyReduction_59-happyReduction_59 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> - happyIn8- (TokSymbol SymBar happy_var_1- )}--happyReduce_60 = happySpecReduce_1 2# happyReduction_60-happyReduction_60 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> - happyIn8- (TokSymbol SymOpenParen happy_var_1- )}--happyReduce_61 = happySpecReduce_1 2# happyReduction_61-happyReduction_61 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> - happyIn8- (TokSymbol SymCloseParen happy_var_1- )}--happyReduce_62 = happySpecReduce_1 2# happyReduction_62-happyReduction_62 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> - happyIn8- (TokSymbol SymOpenBrace happy_var_1- )}--happyReduce_63 = happySpecReduce_1 2# happyReduction_63-happyReduction_63 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> - happyIn8- (TokSymbol SymCloseBrace happy_var_1- )}--happyReduce_64 = happySpecReduce_1 2# happyReduction_64-happyReduction_64 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> - happyIn8- (TokSymbol SymOpenVirtualBrace happy_var_1- )}--happyReduce_65 = happySpecReduce_1 2# happyReduction_65-happyReduction_65 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> - happyIn8- (TokSymbol SymCloseVirtualBrace happy_var_1- )}--happyReduce_66 = happySpecReduce_1 2# happyReduction_66-happyReduction_66 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> - happyIn8- (TokSymbol SymVirtualSemi happy_var_1- )}--happyReduce_67 = happySpecReduce_1 2# happyReduction_67-happyReduction_67 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - happyIn8- (TokSymbol SymOpenPragma happy_var_1- )}--happyReduce_68 = happySpecReduce_1 2# happyReduction_68-happyReduction_68 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> - happyIn8- (TokSymbol SymClosePragma happy_var_1- )}--happyReduce_69 = happySpecReduce_1 2# happyReduction_69-happyReduction_69 happy_x_1- = case happyOutTok happy_x_1 of { (TokId happy_var_1) -> - happyIn8- (TokId happy_var_1- )}--happyReduce_70 = happySpecReduce_1 2# happyReduction_70-happyReduction_70 happy_x_1- = case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> - happyIn8- (TokQId happy_var_1- )}--happyReduce_71 = happySpecReduce_1 2# happyReduction_71-happyReduction_71 happy_x_1- = case happyOutTok happy_x_1 of { (TokString happy_var_1) -> - happyIn8- (TokString happy_var_1- )}--happyReduce_72 = happySpecReduce_1 2# happyReduction_72-happyReduction_72 happy_x_1- = case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> - happyIn8- (TokLiteral happy_var_1- )}--happyReduce_73 = happySpecReduce_0 3# happyReduction_73-happyReduction_73 = happyIn9- (()- )--happyReduce_74 = happySpecReduce_2 3# happyReduction_74-happyReduction_74 happy_x_2- happy_x_1- = happyIn9- (()- )--happyReduce_75 = happySpecReduce_2 4# happyReduction_75-happyReduction_75 happy_x_2- happy_x_1- = case happyOut11 happy_x_1 of { happy_var_1 -> - happyIn10- (happy_var_1- )}--happyReduce_76 = happySpecReduce_1 5# happyReduction_76-happyReduction_76 happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 -> - happyIn11- (([], happy_var_1)- )}--happyReduce_77 = happySpecReduce_3 5# happyReduction_77-happyReduction_77 happy_x_3- happy_x_2- happy_x_1- = case happyOut98 happy_x_2 of { happy_var_2 -> - case happyOut11 happy_x_3 of { happy_var_3 -> - happyIn11- (let (ps,m) = happy_var_3 in (happy_var_2 : ps, m)- )}}--happyReduce_78 = happySpecReduce_1 6# happyReduction_78-happyReduction_78 happy_x_1- = happyIn12- (()- )--happyReduce_79 = happyMonadReduce 1# 6# happyReduction_79-happyReduction_79 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (( popContext)- ) (\r -> happyReturn (happyIn12 r))--happyReduce_80 = happySpecReduce_1 7# happyReduction_80-happyReduction_80 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> - happyIn13- (happy_var_1- )}--happyReduce_81 = happySpecReduce_2 7# happyReduction_81-happyReduction_81 happy_x_2- happy_x_1- = case happyOutTok happy_x_2 of { (TokSymbol SymVirtualSemi happy_var_2) -> - happyIn13- (happy_var_2- )}--happyReduce_82 = happyMonadReduce 0# 8# happyReduction_82-happyReduction_82 (happyRest) tk- = happyThen (( pushLexState imp_dir)- ) (\r -> happyReturn (happyIn14 r))--happyReduce_83 = happyMonadReduce 1# 9# happyReduction_83-happyReduction_83 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> - ( case happy_var_1 of {- LitInt _ n -> return $ fromIntegral n;- _ -> fail $ "Expected integer"- })}- ) (\r -> happyReturn (happyIn15 r))--happyReduce_84 = happyMonadReduce 1# 10# happyReduction_84-happyReduction_84 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> - ( mkName happy_var_1)}- ) (\r -> happyReturn (happyIn16 r))--happyReduce_85 = happySpecReduce_2 11# happyReduction_85-happyReduction_85 happy_x_2- happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_2 of { happy_var_2 -> - happyIn17- (happy_var_1 : happy_var_2- )}}--happyReduce_86 = happySpecReduce_1 11# happyReduction_86-happyReduction_86 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn17- ([happy_var_1]- )}--happyReduce_87 = happySpecReduce_2 12# happyReduction_87-happyReduction_87 happy_x_2- happy_x_1- = case happyOut16 happy_x_2 of { happy_var_2 -> - happyIn18- (Arg NotHidden Irrelevant happy_var_2- )}--happyReduce_88 = happySpecReduce_1 12# happyReduction_88-happyReduction_88 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn18- (defaultArg happy_var_1- )}--happyReduce_89 = happySpecReduce_2 13# happyReduction_89-happyReduction_89 happy_x_2- happy_x_1- = case happyOut18 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn19- (happy_var_1 : happy_var_2- )}}--happyReduce_90 = happySpecReduce_1 13# happyReduction_90-happyReduction_90 happy_x_1- = case happyOut18 happy_x_1 of { happy_var_1 -> - happyIn19- ([happy_var_1]- )}--happyReduce_91 = happySpecReduce_2 14# happyReduction_91-happyReduction_91 happy_x_2- happy_x_1- = case happyOut18 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - happyIn20- (happy_var_1 : happy_var_2- )}}--happyReduce_92 = happySpecReduce_1 14# happyReduction_92-happyReduction_92 happy_x_1- = case happyOut18 happy_x_1 of { happy_var_1 -> - happyIn20- ([happy_var_1]- )}--happyReduce_93 = happyReduce 4# 14# happyReduction_93-happyReduction_93 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut19 happy_x_2 of { happy_var_2 -> - case happyOut20 happy_x_4 of { happy_var_4 -> - happyIn20- (map hide happy_var_2 ++ happy_var_4- ) `HappyStk` happyRest}}--happyReduce_94 = happySpecReduce_3 14# happyReduction_94-happyReduction_94 happy_x_3- happy_x_2- happy_x_1- = case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn20- (map hide happy_var_2- )}--happyReduce_95 = happyReduce 5# 14# happyReduction_95-happyReduction_95 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut17 happy_x_3 of { happy_var_3 -> - case happyOut20 happy_x_5 of { happy_var_5 -> - happyIn20- (map (Arg Hidden Irrelevant) happy_var_3 ++ happy_var_5- ) `HappyStk` happyRest}}--happyReduce_96 = happyReduce 4# 14# happyReduction_96-happyReduction_96 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut17 happy_x_3 of { happy_var_3 -> - happyIn20- (map (Arg Hidden Irrelevant) happy_var_3- ) `HappyStk` happyRest}--happyReduce_97 = happyMonadReduce 1# 15# happyReduction_97-happyReduction_97 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> - ( mkQName happy_var_1)}- ) (\r -> happyReturn (happyIn21 r))--happyReduce_98 = happySpecReduce_1 15# happyReduction_98-happyReduction_98 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn21- (QName happy_var_1- )}--happyReduce_99 = happySpecReduce_1 16# happyReduction_99-happyReduction_99 happy_x_1- = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn22- (happy_var_1- )}--happyReduce_100 = happySpecReduce_1 17# happyReduction_100-happyReduction_100 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1- )}--happyReduce_101 = happySpecReduce_1 17# happyReduction_101-happyReduction_101 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> - happyIn23- (Name (getRange happy_var_1) [Hole]- )}--happyReduce_102 = happySpecReduce_2 18# happyReduction_102-happyReduction_102 happy_x_2- happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - happyIn24- (happy_var_1 : happy_var_2- )}}--happyReduce_103 = happySpecReduce_1 18# happyReduction_103-happyReduction_103 happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn24- ([happy_var_1]- )}--happyReduce_104 = happyMonadReduce 1# 19# happyReduction_104-happyReduction_104 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut31 happy_x_1 of { happy_var_1 -> - (- let getName (Ident (QName x)) = Just x- getName (Underscore r _) = Just (Name r [Hole])- getName _ = Nothing- in- case partition isJust $ map getName happy_var_1 of- (good, []) -> return $ map fromJust good- _ -> fail $ "expected sequence of bound identifiers")}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_105 = happySpecReduce_0 20# happyReduction_105-happyReduction_105 = happyIn26- ([]- )--happyReduce_106 = happySpecReduce_2 20# happyReduction_106-happyReduction_106 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokString happy_var_1) -> - case happyOut26 happy_x_2 of { happy_var_2 -> - happyIn26- (snd happy_var_1 : happy_var_2- )}}--happyReduce_107 = happyMonadReduce 1# 21# happyReduction_107-happyReduction_107 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> - ( fmap QName (mkName happy_var_1))}- ) (\r -> happyReturn (happyIn27 r))--happyReduce_108 = happySpecReduce_2 22# happyReduction_108-happyReduction_108 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn28- (Pi happy_var_1 happy_var_2- )}}--happyReduce_109 = happySpecReduce_3 22# happyReduction_109-happyReduction_109 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn28- (forallPi happy_var_2 happy_var_3- )}}--happyReduce_110 = happySpecReduce_3 22# happyReduction_110-happyReduction_110 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn28- (Fun (fuseRange happy_var_1 happy_var_3) (RawApp (getRange happy_var_1) happy_var_1) happy_var_3- )}}--happyReduce_111 = happySpecReduce_1 22# happyReduction_111-happyReduction_111 happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - happyIn28- (happy_var_1- )}--happyReduce_112 = happyMonadReduce 1# 23# happyReduction_112-happyReduction_112 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut30 happy_x_1 of { happy_var_1 -> - ( case happy_var_1 of- { [e] -> return e- ; e : es -> return $ WithApp (fuseRange e es) e es- ; [] -> fail "impossible: empty with expressions"- })}- ) (\r -> happyReturn (happyIn29 r))--happyReduce_113 = happySpecReduce_3 24# happyReduction_113-happyReduction_113 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn30- (RawApp (getRange happy_var_1) happy_var_1 : happy_var_3- )}}--happyReduce_114 = happySpecReduce_1 24# happyReduction_114-happyReduction_114 happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - happyIn30- ([RawApp (getRange happy_var_1) happy_var_1]- )}--happyReduce_115 = happySpecReduce_1 25# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn31- ([happy_var_1]- )}--happyReduce_116 = happySpecReduce_2 25# happyReduction_116-happyReduction_116 happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_2 of { happy_var_2 -> - happyIn31- (happy_var_1 : happy_var_2- )}}--happyReduce_117 = happySpecReduce_3 26# happyReduction_117-happyReduction_117 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> - case happyOut45 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn32- (Lam (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3- )}}}--happyReduce_118 = happySpecReduce_2 26# happyReduction_118-happyReduction_118 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> - case happyOut46 happy_x_2 of { happy_var_2 -> - happyIn32- (let (bs, h) = happy_var_2; r = fuseRange happy_var_1 bs in- if null bs then AbsurdLam r h else- Lam r bs (AbsurdLam r h)- )}}--happyReduce_119 = happyReduce 4# 26# happyReduction_119-happyReduction_119 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> - case happyOut114 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_4 of { happy_var_4 -> - happyIn32- (Let (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}--happyReduce_120 = happySpecReduce_1 26# happyReduction_120-happyReduction_120 happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn32- (happy_var_1- )}--happyReduce_121 = happyReduce 4# 26# happyReduction_121-happyReduction_121 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_4 of { happy_var_4 -> - happyIn32- (QuoteGoal (getRange (happy_var_1,happy_var_4)) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}--happyReduce_122 = happySpecReduce_1 27# happyReduction_122-happyReduction_122 happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn33- ([happy_var_1]- )}--happyReduce_123 = happySpecReduce_2 27# happyReduction_123-happyReduction_123 happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_2 of { happy_var_2 -> - happyIn33- (happy_var_1 : happy_var_2- )}}--happyReduce_124 = happySpecReduce_1 28# happyReduction_124-happyReduction_124 happy_x_1- = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn34- (Ident happy_var_1- )}--happyReduce_125 = happySpecReduce_1 28# happyReduction_125-happyReduction_125 happy_x_1- = case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> - happyIn34- (Lit happy_var_1- )}--happyReduce_126 = happySpecReduce_1 28# happyReduction_126-happyReduction_126 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> - happyIn34- (QuestionMark (getRange happy_var_1) Nothing- )}--happyReduce_127 = happySpecReduce_1 28# happyReduction_127-happyReduction_127 happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> - happyIn34- (Underscore (getRange happy_var_1) Nothing- )}--happyReduce_128 = happySpecReduce_1 28# happyReduction_128-happyReduction_128 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> - happyIn34- (Prop (getRange happy_var_1)- )}--happyReduce_129 = happySpecReduce_1 28# happyReduction_129-happyReduction_129 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> - happyIn34- (Set (getRange happy_var_1)- )}--happyReduce_130 = happySpecReduce_1 28# happyReduction_130-happyReduction_130 happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> - happyIn34- (Quote (getRange happy_var_1)- )}--happyReduce_131 = happySpecReduce_1 28# happyReduction_131-happyReduction_131 happy_x_1- = case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> - happyIn34- (SetN (getRange (fst happy_var_1)) (snd happy_var_1)- )}--happyReduce_132 = happySpecReduce_3 28# happyReduction_132-happyReduction_132 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> - case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> - happyIn34- (HiddenArg (fuseRange happy_var_1 happy_var_3) (unnamed happy_var_2)- )}}}--happyReduce_133 = happyReduce 5# 28# happyReduction_133-happyReduction_133 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> - happyIn34- (HiddenArg (fuseRange happy_var_1 happy_var_5) (named (show happy_var_2) happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_134 = happySpecReduce_3 28# happyReduction_134-happyReduction_134 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> - case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> - happyIn34- (Paren (fuseRange happy_var_1 happy_var_3) happy_var_2- )}}}--happyReduce_135 = happySpecReduce_2 28# happyReduction_135-happyReduction_135 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> - case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> - happyIn34- (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r- )}}--happyReduce_136 = happySpecReduce_2 28# happyReduction_136-happyReduction_136 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> - case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) -> - happyIn34- (Absurd (fuseRange happy_var_1 happy_var_2)- )}}--happyReduce_137 = happySpecReduce_3 28# happyReduction_137-happyReduction_137 happy_x_3- happy_x_2- happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - happyIn34- (As (fuseRange happy_var_1 happy_var_3) happy_var_1 happy_var_3- )}}--happyReduce_138 = happySpecReduce_2 28# happyReduction_138-happyReduction_138 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> - case happyOut34 happy_x_2 of { happy_var_2 -> - happyIn34- (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_139 = happyReduce 4# 28# happyReduction_139-happyReduction_139 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> - happyIn34- (Rec (getRange (happy_var_1,happy_var_4)) happy_var_3- ) `HappyStk` happyRest}}}--happyReduce_140 = happySpecReduce_0 29# happyReduction_140-happyReduction_140 = happyIn35- ([]- )--happyReduce_141 = happySpecReduce_1 29# happyReduction_141-happyReduction_141 happy_x_1- = case happyOut36 happy_x_1 of { happy_var_1 -> - happyIn35- (happy_var_1- )}--happyReduce_142 = happySpecReduce_1 30# happyReduction_142-happyReduction_142 happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - happyIn36- ([happy_var_1]- )}--happyReduce_143 = happySpecReduce_3 30# happyReduction_143-happyReduction_143 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn36- (happy_var_1 : happy_var_3- )}}--happyReduce_144 = happySpecReduce_3 31# happyReduction_144-happyReduction_144 happy_x_3- happy_x_2- happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn37- ((happy_var_1, happy_var_3)- )}}--happyReduce_145 = happySpecReduce_2 32# happyReduction_145-happyReduction_145 happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn38- (happy_var_1- )}--happyReduce_146 = happySpecReduce_1 33# happyReduction_146-happyReduction_146 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn39- ({-TeleBind-} happy_var_1- )}--happyReduce_147 = happySpecReduce_2 34# happyReduction_147-happyReduction_147 happy_x_2- happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_2 of { happy_var_2 -> - happyIn40- (happy_var_1 : happy_var_2- )}}--happyReduce_148 = happySpecReduce_1 34# happyReduction_148-happyReduction_148 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn40- ([happy_var_1]- )}--happyReduce_149 = happySpecReduce_3 35# happyReduction_149-happyReduction_149 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> - case happyOut42 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> - happyIn41- (TypedBindings (fuseRange happy_var_1 happy_var_3) (Arg NotHidden Relevant happy_var_2)- )}}}--happyReduce_150 = happySpecReduce_3 35# happyReduction_150-happyReduction_150 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> - case happyOut42 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> - happyIn41- (TypedBindings (fuseRange happy_var_1 happy_var_3) (Arg Hidden Relevant happy_var_2)- )}}}--happyReduce_151 = happySpecReduce_1 36# happyReduction_151-happyReduction_151 happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn42- ([happy_var_1]- )}--happyReduce_152 = happySpecReduce_3 36# happyReduction_152-happyReduction_152 happy_x_3- happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn42- (happy_var_1 : happy_var_3- )}}--happyReduce_153 = happySpecReduce_1 37# happyReduction_153-happyReduction_153 happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - happyIn43- (happy_var_1- )}--happyReduce_154 = happySpecReduce_3 37# happyReduction_154-happyReduction_154 happy_x_3- happy_x_2- happy_x_1- = case happyOut28 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn43- (TNoBind happy_var_1 : happy_var_3- )}}--happyReduce_155 = happySpecReduce_1 37# happyReduction_155-happyReduction_155 happy_x_1- = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn43- ([TNoBind happy_var_1]- )}--happyReduce_156 = happySpecReduce_3 38# happyReduction_156-happyReduction_156 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn44- (TBind (fuseRange happy_var_1 happy_var_3) (map mkBoundName_ happy_var_1) happy_var_3- )}}--happyReduce_157 = happyMonadReduce 2# 39# happyReduction_157-happyReduction_157 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - (- case last happy_var_1 of- Left _ -> parseError "Absurd lambda cannot have a body."- _ -> return [ b | Right b <- happy_var_1 ])}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_158 = happyMonadReduce 1# 40# happyReduction_158-happyReduction_158 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - (- case last happy_var_1 of- Right _ -> parseError "Missing body for lambda"- Left h -> return ([ b | Right b <- init happy_var_1], h))}- ) (\r -> happyReturn (happyIn46 r))--happyReduce_159 = happySpecReduce_2 41# happyReduction_159-happyReduction_159 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn47- (map Right happy_var_1 ++ happy_var_2- )}}--happyReduce_160 = happySpecReduce_2 41# happyReduction_160-happyReduction_160 happy_x_2- happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn47- (Right (DomainFull happy_var_1) : happy_var_2- )}}--happyReduce_161 = happySpecReduce_1 41# happyReduction_161-happyReduction_161 happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn47- (map Right happy_var_1- )}--happyReduce_162 = happySpecReduce_1 41# happyReduction_162-happyReduction_162 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn47- ([Right $ DomainFull happy_var_1]- )}--happyReduce_163 = happySpecReduce_2 41# happyReduction_163-happyReduction_163 happy_x_2- happy_x_1- = happyIn47- ([Left NotHidden]- )--happyReduce_164 = happySpecReduce_2 41# happyReduction_164-happyReduction_164 happy_x_2- happy_x_1- = happyIn47- ([Left Hidden]- )--happyReduce_165 = happySpecReduce_2 42# happyReduction_165-happyReduction_165 happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - happyIn48- (happy_var_1- )}--happyReduce_166 = happySpecReduce_2 43# happyReduction_166-happyReduction_166 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { happy_var_2 -> - happyIn49- (happy_var_1 ++ happy_var_2- )}}--happyReduce_167 = happySpecReduce_2 43# happyReduction_167-happyReduction_167 happy_x_2- happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { happy_var_2 -> - happyIn49- (DomainFull happy_var_1 : happy_var_2- )}}--happyReduce_168 = happySpecReduce_1 43# happyReduction_168-happyReduction_168 happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn49- (happy_var_1- )}--happyReduce_169 = happySpecReduce_1 43# happyReduction_169-happyReduction_169 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn49- ([DomainFull happy_var_1]- )}--happyReduce_170 = happySpecReduce_2 44# happyReduction_170-happyReduction_170 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn50- (happy_var_1 ++ happy_var_2- )}}--happyReduce_171 = happySpecReduce_2 44# happyReduction_171-happyReduction_171 happy_x_2- happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn50- (DomainFull happy_var_1 : happy_var_2- )}}--happyReduce_172 = happySpecReduce_0 44# happyReduction_172-happyReduction_172 = happyIn50- ([]- )--happyReduce_173 = happySpecReduce_1 45# happyReduction_173-happyReduction_173 happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn51- ([DomainFree NotHidden $ mkBoundName_ happy_var_1]- )}--happyReduce_174 = happySpecReduce_3 45# happyReduction_174-happyReduction_174 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn51- (map (DomainFree Hidden . mkBoundName_) happy_var_2- )}--happyReduce_175 = happySpecReduce_1 46# happyReduction_175-happyReduction_175 happy_x_1- = case happyOut53 happy_x_1 of { happy_var_1 -> - happyIn52- ((Nothing, happy_var_1)- )}--happyReduce_176 = happyMonadReduce 3# 46# happyReduction_176-happyReduction_176 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - ( isName "as" happy_var_1 >>- return (Just (AsName happy_var_2 (getRange (fst happy_var_1))), happy_var_3))}}}- ) (\r -> happyReturn (happyIn52 r))--happyReduce_177 = happyMonadReduce 1# 47# happyReduction_177-happyReduction_177 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut54 happy_x_1 of { happy_var_1 -> - ( verifyImportDirective happy_var_1)}- ) (\r -> happyReturn (happyIn53 r))--happyReduce_178 = happySpecReduce_2 48# happyReduction_178-happyReduction_178 happy_x_2- happy_x_1- = case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn54- (happy_var_2 { publicOpen = True }- )}--happyReduce_179 = happySpecReduce_1 48# happyReduction_179-happyReduction_179 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn54- (happy_var_1- )}--happyReduce_180 = happySpecReduce_2 49# happyReduction_180-happyReduction_180 happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_2 of { happy_var_2 -> - happyIn55- (ImportDirective (fuseRange (snd happy_var_1) (snd happy_var_2)) (fst happy_var_1) (fst happy_var_2) False- )}}--happyReduce_181 = happySpecReduce_1 49# happyReduction_181-happyReduction_181 happy_x_1- = case happyOut57 happy_x_1 of { happy_var_1 -> - happyIn55- (ImportDirective (getRange (snd happy_var_1)) (Hiding []) (fst happy_var_1) False- )}--happyReduce_182 = happySpecReduce_1 49# happyReduction_182-happyReduction_182 happy_x_1- = case happyOut56 happy_x_1 of { happy_var_1 -> - happyIn55- (ImportDirective (getRange (snd happy_var_1)) (fst happy_var_1) [] False- )}--happyReduce_183 = happySpecReduce_0 49# happyReduction_183-happyReduction_183 = happyIn55- (ImportDirective noRange (Hiding []) [] False- )--happyReduce_184 = happyReduce 4# 50# happyReduction_184-happyReduction_184 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> - happyIn56- ((Using happy_var_3 , fuseRange happy_var_1 happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_185 = happyReduce 4# 50# happyReduction_185-happyReduction_185 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> - happyIn56- ((Hiding happy_var_3 , fuseRange happy_var_1 happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_186 = happyReduce 4# 51# happyReduction_186-happyReduction_186 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> - case happyOut58 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> - happyIn57- ((happy_var_3 , fuseRange happy_var_1 happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_187 = happySpecReduce_3 52# happyReduction_187-happyReduction_187 happy_x_3- happy_x_2- happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut58 happy_x_3 of { happy_var_3 -> - happyIn58- (happy_var_1 : happy_var_3- )}}--happyReduce_188 = happySpecReduce_1 52# happyReduction_188-happyReduction_188 happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn58- ([happy_var_1]- )}--happyReduce_189 = happySpecReduce_3 53# happyReduction_189-happyReduction_189 happy_x_3- happy_x_2- happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn59- (Renaming happy_var_1 happy_var_3 (getRange happy_var_2)- )}}}--happyReduce_190 = happySpecReduce_2 54# happyReduction_190-happyReduction_190 happy_x_2- happy_x_1- = case happyOut16 happy_x_2 of { happy_var_2 -> - happyIn60- (ImportedName happy_var_2- )}--happyReduce_191 = happySpecReduce_3 54# happyReduction_191-happyReduction_191 happy_x_3- happy_x_2- happy_x_1- = case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn60- (ImportedModule happy_var_3- )}--happyReduce_192 = happySpecReduce_1 55# happyReduction_192-happyReduction_192 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn61- (ImportedName happy_var_1- )}--happyReduce_193 = happySpecReduce_2 55# happyReduction_193-happyReduction_193 happy_x_2- happy_x_1- = case happyOut16 happy_x_2 of { happy_var_2 -> - happyIn61- (ImportedModule happy_var_2- )}--happyReduce_194 = happySpecReduce_0 56# happyReduction_194-happyReduction_194 = happyIn62- ([]- )--happyReduce_195 = happySpecReduce_1 56# happyReduction_195-happyReduction_195 happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn62- (happy_var_1- )}--happyReduce_196 = happySpecReduce_1 57# happyReduction_196-happyReduction_196 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn63- ([happy_var_1]- )}--happyReduce_197 = happySpecReduce_3 57# happyReduction_197-happyReduction_197 happy_x_3- happy_x_2- happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - happyIn63- (happy_var_1 : happy_var_3- )}}--happyReduce_198 = happyMonadReduce 3# 58# happyReduction_198-happyReduction_198 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_2 of { happy_var_2 -> - case happyOut66 happy_x_3 of { happy_var_3 -> - ( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_199 = happyReduce 4# 58# happyReduction_199-happyReduction_199 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - case happyOut66 happy_x_4 of { happy_var_4 -> - happyIn64- (Ellipsis (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3 happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_200 = happySpecReduce_0 59# happyReduction_200-happyReduction_200 = happyIn65- ([]- )--happyReduce_201 = happyMonadReduce 3# 59# happyReduction_201-happyReduction_201 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut65 happy_x_3 of { happy_var_3 -> - ( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->- return (p : happy_var_3))}}- ) (\r -> happyReturn (happyIn65 r))--happyReduce_202 = happySpecReduce_0 60# happyReduction_202-happyReduction_202 = happyIn66- ([]- )--happyReduce_203 = happySpecReduce_2 60# happyReduction_203-happyReduction_203 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn66- (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }- )}--happyReduce_204 = happySpecReduce_0 61# happyReduction_204-happyReduction_204 = happyIn67- ([]- )--happyReduce_205 = happySpecReduce_2 61# happyReduction_205-happyReduction_205 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn67- (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }- )}--happyReduce_206 = happySpecReduce_0 62# happyReduction_206-happyReduction_206 = happyIn68- (NoWhere- )--happyReduce_207 = happySpecReduce_2 62# happyReduction_207-happyReduction_207 happy_x_2- happy_x_1- = case happyOut114 happy_x_2 of { happy_var_2 -> - happyIn68- (AnyWhere happy_var_2- )}--happyReduce_208 = happyReduce 4# 62# happyReduction_208-happyReduction_208 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut114 happy_x_4 of { happy_var_4 -> - happyIn68- (SomeWhere happy_var_2 happy_var_4- ) `HappyStk` happyRest}}--happyReduce_209 = happySpecReduce_1 63# happyReduction_209-happyReduction_209 happy_x_1- = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_210 = happySpecReduce_1 63# happyReduction_210-happyReduction_210 happy_x_1- = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn69- (happy_var_1- )}--happyReduce_211 = happySpecReduce_1 63# happyReduction_211-happyReduction_211 happy_x_1- = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_212 = happySpecReduce_1 63# happyReduction_212-happyReduction_212 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_213 = happySpecReduce_1 63# happyReduction_213-happyReduction_213 happy_x_1- = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_214 = happySpecReduce_1 63# happyReduction_214-happyReduction_214 happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_215 = happySpecReduce_1 63# happyReduction_215-happyReduction_215 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_216 = happySpecReduce_1 63# happyReduction_216-happyReduction_216 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_217 = happySpecReduce_1 63# happyReduction_217-happyReduction_217 happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_218 = happySpecReduce_1 63# happyReduction_218-happyReduction_218 happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_219 = happySpecReduce_1 63# happyReduction_219-happyReduction_219 happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_220 = happySpecReduce_1 63# happyReduction_220-happyReduction_220 happy_x_1- = case happyOut90 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_221 = happySpecReduce_1 63# happyReduction_221-happyReduction_221 happy_x_1- = case happyOut93 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_222 = happySpecReduce_1 63# happyReduction_222-happyReduction_222 happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_223 = happySpecReduce_1 63# happyReduction_223-happyReduction_223 happy_x_1- = case happyOut94 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_224 = happySpecReduce_1 63# happyReduction_224-happyReduction_224 happy_x_1- = case happyOut97 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_225 = happySpecReduce_1 63# happyReduction_225-happyReduction_225 happy_x_1- = case happyOut85 happy_x_1 of { happy_var_1 -> - happyIn69- ([happy_var_1]- )}--happyReduce_226 = happySpecReduce_3 64# happyReduction_226-happyReduction_226 happy_x_3- happy_x_2- happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn70- (TypeSig happy_var_1 happy_var_3- )}}--happyReduce_227 = happySpecReduce_3 65# happyReduction_227-happyReduction_227 happy_x_3- happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn71- (map (flip TypeSig happy_var_3) happy_var_1- )}}--happyReduce_228 = happySpecReduce_3 66# happyReduction_228-happyReduction_228 happy_x_3- happy_x_2- happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn72- (map (fmap (flip TypeSig happy_var_3)) happy_var_1- )}}--happyReduce_229 = happySpecReduce_3 67# happyReduction_229-happyReduction_229 happy_x_3- happy_x_2- happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_2 of { happy_var_2 -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn73- (FunClause happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_230 = happySpecReduce_2 68# happyReduction_230-happyReduction_230 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn74- (RHS happy_var_2- )}--happyReduce_231 = happySpecReduce_0 68# happyReduction_231-happyReduction_231 = happyIn74- (AbsurdRHS- )--happyReduce_232 = happyReduce 7# 69# happyReduction_232-happyReduction_232 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> - case happyOut112 happy_x_7 of { happy_var_7 -> - happyIn75- (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) Inductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7- ) `HappyStk` happyRest}}}}}}--happyReduce_233 = happyReduce 7# 69# happyReduction_233-happyReduction_233 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> - case happyOut112 happy_x_7 of { happy_var_7 -> - happyIn75- (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) CoInductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7- ) `HappyStk` happyRest}}}}}}--happyReduce_234 = happyReduce 7# 70# happyReduction_234-happyReduction_234 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> - case happyOut113 happy_x_7 of { happy_var_7 -> - happyIn76- (Record (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_2 (fst happy_var_7) (map addType happy_var_3) happy_var_5 (snd happy_var_7)- ) `HappyStk` happyRest}}}}}}--happyReduce_235 = happySpecReduce_2 71# happyReduction_235-happyReduction_235 happy_x_2- happy_x_1- = case happyOut16 happy_x_2 of { happy_var_2 -> - happyIn77- (happy_var_2- )}--happyReduce_236 = happySpecReduce_3 72# happyReduction_236-happyReduction_236 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> - case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - happyIn78- (Infix (NonAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3- )}}}--happyReduce_237 = happySpecReduce_3 72# happyReduction_237-happyReduction_237 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> - case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - happyIn78- (Infix (LeftAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3- )}}}--happyReduce_238 = happySpecReduce_3 72# happyReduction_238-happyReduction_238 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> - case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - happyIn78- (Infix (RightAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3- )}}}--happyReduce_239 = happySpecReduce_2 73# happyReduction_239-happyReduction_239 happy_x_2- happy_x_1- = case happyOut110 happy_x_2 of { happy_var_2 -> - happyIn79- (let toField (Arg h rel (TypeSig x t)) = Field x (Arg h rel t) in map toField happy_var_2- )}--happyReduce_240 = happySpecReduce_2 74# happyReduction_240-happyReduction_240 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> - case happyOut114 happy_x_2 of { happy_var_2 -> - happyIn80- (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_241 = happySpecReduce_2 75# happyReduction_241-happyReduction_241 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> - case happyOut114 happy_x_2 of { happy_var_2 -> - happyIn81- (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_242 = happySpecReduce_2 76# happyReduction_242-happyReduction_242 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> - case happyOut114 happy_x_2 of { happy_var_2 -> - happyIn82- (Private (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_243 = happySpecReduce_2 77# happyReduction_243-happyReduction_243 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> - case happyOut108 happy_x_2 of { happy_var_2 -> - happyIn83- (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_244 = happySpecReduce_2 78# happyReduction_244-happyReduction_244 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> - case happyOut108 happy_x_2 of { happy_var_2 -> - happyIn84- (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2- )}}--happyReduce_245 = happyMonadReduce 5# 79# happyReduction_245-happyReduction_245 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut87 happy_x_3 of { happy_var_3 -> - case happyOut86 happy_x_5 of { happy_var_5 -> - (- case happy_var_2 of - Name _ [_] -> case mkNotation happy_var_3 happy_var_5 of- Left err -> parseError $ "malformed syntax declaration: " ++ err- Right n -> return $ Syntax happy_var_2 n- _ -> parseError "syntax declarations are allowed only for simple names (without holes)")}}}- ) (\r -> happyReturn (happyIn85 r))--happyReduce_246 = happySpecReduce_1 80# happyReduction_246-happyReduction_246 happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - happyIn86- ([happy_var_1]- )}--happyReduce_247 = happySpecReduce_2 80# happyReduction_247-happyReduction_247 happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn86- (happy_var_1 ++ [happy_var_2]- )}}--happyReduce_248 = happySpecReduce_1 81# happyReduction_248-happyReduction_248 happy_x_1- = case happyOut88 happy_x_1 of { happy_var_1 -> - happyIn87- ([happy_var_1]- )}--happyReduce_249 = happySpecReduce_2 81# happyReduction_249-happyReduction_249 happy_x_2- happy_x_1- = case happyOut87 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn87- (happy_var_1 ++ [happy_var_2]- )}}--happyReduce_250 = happySpecReduce_1 82# happyReduction_250-happyReduction_250 happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - happyIn88- (ExprHole happy_var_1- )}--happyReduce_251 = happyReduce 6# 82# happyReduction_251-happyReduction_251 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOut89 happy_x_5 of { happy_var_5 -> - happyIn88- (LambdaHole happy_var_3 happy_var_5- ) `HappyStk` happyRest}}--happyReduce_252 = happySpecReduce_1 83# happyReduction_252-happyReduction_252 happy_x_1- = case happyOutTok happy_x_1 of { (TokId happy_var_1) -> - happyIn89- (snd happy_var_1- )}--happyReduce_253 = happyReduce 4# 84# happyReduction_253-happyReduction_253 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> - case happyOut22 happy_x_2 of { happy_var_2 -> - case happyOut91 happy_x_3 of { happy_var_3 -> - case happyOut53 happy_x_4 of { happy_var_4 -> - happyIn90- (let- { m = happy_var_2- ; es = happy_var_3- ; dir = happy_var_4- ; r = getRange (happy_var_1, m, es, dir)- } in- case es of- { [] -> Open r m dir- ; _ -> Private r [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) []- (RawApp (fuseRange m es) (Ident m : es)) DoOpen dir- ]- }- ) `HappyStk` happyRest}}}}--happyReduce_254 = happySpecReduce_0 85# happyReduction_254-happyReduction_254 = happyIn91- ([]- )--happyReduce_255 = happySpecReduce_2 85# happyReduction_255-happyReduction_255 happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { happy_var_2 -> - happyIn91- (happy_var_1 : happy_var_2- )}}--happyReduce_256 = happyReduce 6# 86# happyReduction_256-happyReduction_256 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_5 of { happy_var_5 -> - case happyOut53 happy_x_6 of { happy_var_6 -> - happyIn92- (ModuleMacro (getRange (happy_var_1, happy_var_5, happy_var_6)) happy_var_2 (map addType happy_var_3) happy_var_5 DontOpen happy_var_6- ) `HappyStk` happyRest}}}}}--happyReduce_257 = happyReduce 7# 86# happyReduction_257-happyReduction_257 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> - case happyOut16 happy_x_3 of { happy_var_3 -> - case happyOut50 happy_x_4 of { happy_var_4 -> - case happyOut28 happy_x_6 of { happy_var_6 -> - case happyOut53 happy_x_7 of { happy_var_7 -> - happyIn92- (ModuleMacro (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_3 (map addType happy_var_4) happy_var_6 DoOpen happy_var_7- ) `HappyStk` happyRest}}}}}--happyReduce_258 = happySpecReduce_3 87# happyReduction_258-happyReduction_258 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> - case happyOut22 happy_x_2 of { happy_var_2 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn93- (Import (getRange (happy_var_1,happy_var_2,snd happy_var_3)) happy_var_2 (fst happy_var_3) DontOpen (snd happy_var_3)- )}}}--happyReduce_259 = happyReduce 4# 87# happyReduction_259-happyReduction_259 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> - case happyOut22 happy_x_3 of { happy_var_3 -> - case happyOut52 happy_x_4 of { happy_var_4 -> - happyIn93- (Import (getRange (happy_var_1,happy_var_3,snd happy_var_4)) happy_var_3 (fst happy_var_4) DoOpen (snd happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_260 = happyReduce 5# 88# happyReduction_260-happyReduction_260 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> - case happyOut115 happy_x_5 of { happy_var_5 -> - happyIn94- (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5- ) `HappyStk` happyRest}}}}}--happyReduce_261 = happySpecReduce_2 89# happyReduction_261-happyReduction_261 happy_x_2- happy_x_1- = case happyOut96 happy_x_2 of { happy_var_2 -> - happyIn95- ([happy_var_2]- )}--happyReduce_262 = happySpecReduce_3 89# happyReduction_262-happyReduction_262 happy_x_3- happy_x_2- happy_x_1- = case happyOut93 happy_x_2 of { happy_var_2 -> - case happyOut95 happy_x_3 of { happy_var_3 -> - happyIn95- (happy_var_2 : happy_var_3- )}}--happyReduce_263 = happySpecReduce_3 89# happyReduction_263-happyReduction_263 happy_x_3- happy_x_2- happy_x_1- = case happyOut90 happy_x_2 of { happy_var_2 -> - case happyOut95 happy_x_3 of { happy_var_3 -> - happyIn95- (happy_var_2 : happy_var_3- )}}--happyReduce_264 = happyReduce 5# 90# happyReduction_264-happyReduction_264 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> - case happyOut22 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> - case happyOut115 happy_x_5 of { happy_var_5 -> - happyIn96- (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5- ) `HappyStk` happyRest}}}}}--happyReduce_265 = happySpecReduce_1 91# happyReduction_265-happyReduction_265 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn97- (Pragma happy_var_1- )}--happyReduce_266 = happySpecReduce_1 92# happyReduction_266-happyReduction_266 happy_x_1- = case happyOut100 happy_x_1 of { happy_var_1 -> - happyIn98- (happy_var_1- )}--happyReduce_267 = happySpecReduce_1 93# happyReduction_267-happyReduction_267 happy_x_1- = case happyOut101 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_268 = happySpecReduce_1 93# happyReduction_268-happyReduction_268 happy_x_1- = case happyOut102 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_269 = happySpecReduce_1 93# happyReduction_269-happyReduction_269 happy_x_1- = case happyOut104 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_270 = happySpecReduce_1 93# happyReduction_270-happyReduction_270 happy_x_1- = case happyOut103 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_271 = happySpecReduce_1 93# happyReduction_271-happyReduction_271 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_272 = happySpecReduce_1 93# happyReduction_272-happyReduction_272 happy_x_1- = case happyOut107 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_273 = happySpecReduce_1 93# happyReduction_273-happyReduction_273 happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 -> - happyIn99- (happy_var_1- )}--happyReduce_274 = happyReduce 4# 94# happyReduction_274-happyReduction_274 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOut26 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> - happyIn100- (OptionsPragma (fuseRange happy_var_1 happy_var_4) happy_var_3- ) `HappyStk` happyRest}}}--happyReduce_275 = happyReduce 5# 95# happyReduction_275-happyReduction_275 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOutTok happy_x_3 of { (TokString happy_var_3) -> - case happyOut27 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> - happyIn101- (BuiltinPragma (fuseRange happy_var_1 happy_var_5) (snd happy_var_3) (Ident happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_276 = happyReduce 5# 96# happyReduction_276-happyReduction_276 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut26 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> - happyIn102- (CompiledPragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_277 = happyReduce 5# 97# happyReduction_277-happyReduction_277 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut26 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> - happyIn103- (CompiledTypePragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_278 = happyReduce 6# 98# happyReduction_278-happyReduction_278 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokString happy_var_4) -> - case happyOut26 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> - happyIn104- (CompiledDataPragma (fuseRange happy_var_1 happy_var_6) happy_var_3 (snd happy_var_4) happy_var_5- ) `HappyStk` happyRest}}}}}--happyReduce_279 = happyReduce 4# 99# happyReduction_279-happyReduction_279 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> - happyIn105- (EtaPragma (fuseRange happy_var_1 happy_var_4) happy_var_3- ) `HappyStk` happyRest}}}--happyReduce_280 = happyMonadReduce 4# 100# happyReduction_280-happyReduction_280 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOutTok happy_x_3 of { (TokString happy_var_3) -> - case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> - ( let s = snd happy_var_3 in- if validHaskellModuleName s- then return $ ImportPragma (fuseRange happy_var_1 happy_var_4) s- else parseError $ "Malformed module name: " ++ s ++ ".")}}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_281 = happySpecReduce_3 101# happyReduction_281-happyReduction_281 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> - case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> - happyIn107- (ImpossiblePragma (fuseRange happy_var_1 happy_var_3)- )}}--happyReduce_282 = happyReduce 5# 102# happyReduction_282-happyReduction_282 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut109 happy_x_3 of { happy_var_3 -> - happyIn108- (reverse happy_var_3- ) `HappyStk` happyRest}--happyReduce_283 = happyReduce 4# 103# happyReduction_283-happyReduction_283 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut109 happy_x_1 of { happy_var_1 -> - case happyOut71 happy_x_4 of { happy_var_4 -> - happyIn109- (reverse happy_var_4 ++ happy_var_1- ) `HappyStk` happyRest}}--happyReduce_284 = happySpecReduce_2 103# happyReduction_284-happyReduction_284 happy_x_2- happy_x_1- = case happyOut71 happy_x_2 of { happy_var_2 -> - happyIn109- (reverse happy_var_2- )}--happyReduce_285 = happyReduce 5# 104# happyReduction_285-happyReduction_285 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut111 happy_x_3 of { happy_var_3 -> - happyIn110- (reverse happy_var_3- ) `HappyStk` happyRest}--happyReduce_286 = happyReduce 4# 105# happyReduction_286-happyReduction_286 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut111 happy_x_1 of { happy_var_1 -> - case happyOut72 happy_x_4 of { happy_var_4 -> - happyIn111- (reverse happy_var_4 ++ happy_var_1- ) `HappyStk` happyRest}}--happyReduce_287 = happySpecReduce_2 105# happyReduction_287-happyReduction_287 happy_x_2- happy_x_1- = case happyOut72 happy_x_2 of { happy_var_2 -> - happyIn111- (reverse happy_var_2- )}--happyReduce_288 = happyReduce 4# 106# happyReduction_288-happyReduction_288 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = happyIn112- ([]- ) `HappyStk` happyRest--happyReduce_289 = happySpecReduce_1 106# happyReduction_289-happyReduction_289 happy_x_1- = case happyOut108 happy_x_1 of { happy_var_1 -> - happyIn112- (happy_var_1- )}--happyReduce_290 = happyReduce 4# 107# happyReduction_290-happyReduction_290 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = happyIn113- ((Nothing, [])- ) `HappyStk` happyRest--happyReduce_291 = happyReduce 6# 107# happyReduction_291-happyReduction_291 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn113- ((Just happy_var_4, [])- ) `HappyStk` happyRest}--happyReduce_292 = happyReduce 8# 107# happyReduction_292-happyReduction_292 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut77 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_6 of { happy_var_6 -> - happyIn113- ((Just happy_var_4, reverse happy_var_6)- ) `HappyStk` happyRest}}--happyReduce_293 = happyReduce 5# 107# happyReduction_293-happyReduction_293 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut116 happy_x_3 of { happy_var_3 -> - happyIn113- ((Nothing, reverse happy_var_3)- ) `HappyStk` happyRest}--happyReduce_294 = happyReduce 5# 108# happyReduction_294-happyReduction_294 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut116 happy_x_3 of { happy_var_3 -> - happyIn114- (reverse happy_var_3- ) `HappyStk` happyRest}--happyReduce_295 = happyReduce 4# 109# happyReduction_295-happyReduction_295 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = happyIn115- ([]- ) `HappyStk` happyRest--happyReduce_296 = happySpecReduce_1 109# happyReduction_296-happyReduction_296 happy_x_1- = case happyOut114 happy_x_1 of { happy_var_1 -> - happyIn115- (happy_var_1- )}--happyReduce_297 = happyReduce 4# 110# happyReduction_297-happyReduction_297 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut116 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_4 of { happy_var_4 -> - happyIn116- (reverse happy_var_4 ++ happy_var_1- ) `HappyStk` happyRest}}--happyReduce_298 = happySpecReduce_2 110# happyReduction_298-happyReduction_298 happy_x_2- happy_x_1- = case happyOut69 happy_x_2 of { happy_var_2 -> - happyIn116- (reverse happy_var_2- )}--happyNewToken action sts stk- = lexer(\tk -> - let cont i = happyDoAction i tk action sts stk in- case tk of {- TokEOF -> happyDoAction 68# tk action sts stk;- TokKeyword KwLet happy_dollar_dollar -> cont 1#;- TokKeyword KwIn happy_dollar_dollar -> cont 2#;- TokKeyword KwWhere happy_dollar_dollar -> cont 3#;- TokKeyword KwWith happy_dollar_dollar -> cont 4#;- TokKeyword KwRewrite happy_dollar_dollar -> cont 5#;- TokKeyword KwPostulate happy_dollar_dollar -> cont 6#;- TokKeyword KwPrimitive happy_dollar_dollar -> cont 7#;- TokKeyword KwOpen happy_dollar_dollar -> cont 8#;- TokKeyword KwImport happy_dollar_dollar -> cont 9#;- TokKeyword KwUsing happy_dollar_dollar -> cont 10#;- TokKeyword KwHiding happy_dollar_dollar -> cont 11#;- TokKeyword KwRenaming happy_dollar_dollar -> cont 12#;- TokKeyword KwTo happy_dollar_dollar -> cont 13#;- TokKeyword KwPublic happy_dollar_dollar -> cont 14#;- TokKeyword KwModule happy_dollar_dollar -> cont 15#;- TokKeyword KwData happy_dollar_dollar -> cont 16#;- TokKeyword KwCoData happy_dollar_dollar -> cont 17#;- TokKeyword KwRecord happy_dollar_dollar -> cont 18#;- TokKeyword KwConstructor happy_dollar_dollar -> cont 19#;- TokKeyword KwField happy_dollar_dollar -> cont 20#;- TokKeyword KwInfix happy_dollar_dollar -> cont 21#;- TokKeyword KwInfixL happy_dollar_dollar -> cont 22#;- TokKeyword KwInfixR happy_dollar_dollar -> cont 23#;- TokKeyword KwMutual happy_dollar_dollar -> cont 24#;- TokKeyword KwAbstract happy_dollar_dollar -> cont 25#;- TokKeyword KwPrivate happy_dollar_dollar -> cont 26#;- TokKeyword KwProp happy_dollar_dollar -> cont 27#;- TokKeyword KwSet happy_dollar_dollar -> cont 28#;- TokKeyword KwForall happy_dollar_dollar -> cont 29#;- TokKeyword KwSyntax happy_dollar_dollar -> cont 30#;- TokKeyword KwOPTIONS happy_dollar_dollar -> cont 31#;- TokKeyword KwBUILTIN happy_dollar_dollar -> cont 32#;- TokKeyword KwIMPORT happy_dollar_dollar -> cont 33#;- TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 34#;- TokKeyword KwETA happy_dollar_dollar -> cont 35#;- TokKeyword KwCOMPILED happy_dollar_dollar -> cont 36#;- TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 37#;- TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 38#;- TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 39#;- TokKeyword KwQuote happy_dollar_dollar -> cont 40#;- TokSetN happy_dollar_dollar -> cont 41#;- TokTeX happy_dollar_dollar -> cont 42#;- TokComment happy_dollar_dollar -> cont 43#;- TokSymbol SymEllipsis happy_dollar_dollar -> cont 44#;- TokSymbol SymDot happy_dollar_dollar -> cont 45#;- TokSymbol SymSemi happy_dollar_dollar -> cont 46#;- TokSymbol SymColon happy_dollar_dollar -> cont 47#;- TokSymbol SymEqual happy_dollar_dollar -> cont 48#;- TokSymbol SymUnderscore happy_dollar_dollar -> cont 49#;- TokSymbol SymQuestionMark happy_dollar_dollar -> cont 50#;- TokSymbol SymArrow happy_dollar_dollar -> cont 51#;- TokSymbol SymLambda happy_dollar_dollar -> cont 52#;- TokSymbol SymAs happy_dollar_dollar -> cont 53#;- TokSymbol SymBar happy_dollar_dollar -> cont 54#;- TokSymbol SymOpenParen happy_dollar_dollar -> cont 55#;- TokSymbol SymCloseParen happy_dollar_dollar -> cont 56#;- TokSymbol SymOpenBrace happy_dollar_dollar -> cont 57#;- TokSymbol SymCloseBrace happy_dollar_dollar -> cont 58#;- TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 59#;- TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 60#;- TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 61#;- TokSymbol SymOpenPragma happy_dollar_dollar -> cont 62#;- TokSymbol SymClosePragma happy_dollar_dollar -> cont 63#;- TokId happy_dollar_dollar -> cont 64#;- TokQId happy_dollar_dollar -> cont 65#;- TokString happy_dollar_dollar -> cont 66#;- TokLiteral happy_dollar_dollar -> cont 67#;- _ -> happyError' tk- })--happyError_ tk = happyError' tk--happyThen :: () => Parser a -> (a -> Parser b) -> Parser b-happyThen = (>>=)-happyReturn :: () => a -> Parser a-happyReturn = (return)-happyThen1 = happyThen-happyReturn1 :: () => a -> Parser a-happyReturn1 = happyReturn-happyError' :: () => Token -> Parser a-happyError' tk = (\token -> happyError) tk--tokensParser = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))--exprParser = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut28 x))--moduleParser = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut10 x))--happySeq = happyDontSeq---{--------------------------------------------------------------------------- Parsers- --------------------------------------------------------------------------}---- | Parse the token stream. Used by the TeX compiler.-tokensParser :: Parser [Token]---- | Parse an expression. Could be used in interactions.-exprParser :: Parser Expr---- | Parse a module.-moduleParser :: Parser Module---{--------------------------------------------------------------------------- Happy stuff- --------------------------------------------------------------------------}---- | Required by Happy.-happyError :: Parser a-happyError = parseError "Parse error"---{--------------------------------------------------------------------------- Utility functions- --------------------------------------------------------------------------}---- | Create a name from a string.--mkName :: (Interval, String) -> Parser Name-mkName (i, s) = do- let xs = parts s- mapM_ isValidId xs- unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"- return $ Name (getRange i) xs- where- parts :: String -> [NamePart]- parts "" = []- parts ('_' : s) = Hole : parts s- parts s = Id x : parts s'- where (x, s') = break (== '_') s-- isValidId Hole = return ()- isValidId (Id x) = case parse defaultParseFlags [0] (lexer return) x of- ParseOk _ (TokId _) -> return ()- _ -> fail $ "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"-- -- we know that there are no two Ids in a row- alternating (Hole : Hole : _) = False- alternating (_ : xs) = alternating xs- alternating [] = True---- | Create a qualified name from a list of strings-mkQName :: [(Interval, String)] -> Parser QName-mkQName ss = do- xs <- mapM mkName ss- return $ foldr Qual (QName $ last xs) (init xs)---- | Match a particular name.-isName :: String -> (Interval, String) -> Parser ()-isName s (_,s')- | s == s' = return ()- | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'---- | Build a forall pi (forall x y z -> ...)-forallPi :: [LamBinding] -> Expr -> Expr-forallPi bs e = Pi (map addType bs) e---- | Converts lambda bindings to typed bindings.-addType :: LamBinding -> TypedBindings-addType (DomainFull b) = b-addType (DomainFree h x) = TypedBindings r $ Arg h Relevant [TBind r [x] $ Underscore r Nothing]- where r = getRange x---- | Check that an import directive doesn't contain repeated names-verifyImportDirective :: ImportDirective -> Parser ImportDirective-verifyImportDirective i =- case filter ((>1) . length)- $ group- $ sort xs- of- [] -> return i- yss -> let Just pos = rStart $ getRange $ head $ concat yss in- parseErrorAt pos $- "repeated name" ++ s ++ " in import directive: " ++- concat (intersperse ", " $ map (show . head) yss)- where- s = case yss of- [_] -> ""- _ -> "s"- where- xs = names (usingOrHiding i) ++ map renFrom (renaming i)- names (Using xs) = xs- names (Hiding xs) = xs---- | Breaks up a string into substrings. Returns every maximal--- subsequence of zero or more characters distinct from @'.'@.------ > splitOnDots "" == [""]--- > splitOnDots "foo.bar" == ["foo", "bar"]--- > splitOnDots ".foo.bar" == ["", "foo", "bar"]--- > splitOnDots "foo.bar." == ["foo", "bar", ""]--- > splitOnDots "foo..bar" == ["foo", "", "bar"]-splitOnDots :: String -> [String]-splitOnDots "" = [""]-splitOnDots ('.' : s) = [] : splitOnDots s-splitOnDots (c : s) = case splitOnDots s of- p : ps -> (c : p) : ps--prop_splitOnDots = and- [ splitOnDots "" == [""]- , splitOnDots "foo.bar" == ["foo", "bar"]- , splitOnDots ".foo.bar" == ["", "foo", "bar"]- , splitOnDots "foo.bar." == ["foo", "bar", ""]- , splitOnDots "foo..bar" == ["foo", "", "bar"]- ]---- | Returns 'True' iff the name is a valid Haskell (hierarchical)--- module name.-validHaskellModuleName :: String -> Bool-validHaskellModuleName = all ok . splitOnDots- where- -- Checks if a dot-less module name is well-formed.- ok :: String -> Bool- ok [] = False- ok (c : s) =- isUpper c &&- all (\c -> isLower c || c == '_' ||- isUpper c ||- generalCategory c == DecimalNumber ||- c == '\'')- s--{--------------------------------------------------------------------------- Patterns- --------------------------------------------------------------------------}---- | Turn an expression into a left hand side.-exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)-exprToLHS e = case e of- WithApp r e es -> LHS <$> exprToPattern e <*> mapM exprToPattern es- _ -> LHS <$> exprToPattern e <*> return []---- | Turn an expression into a pattern. Fails if the expression is not a--- valid pattern.-exprToPattern :: Expr -> Parser Pattern-exprToPattern e =- case e of- Ident x -> return $ IdentP x- App _ e1 e2 -> AppP <$> exprToPattern e1- <*> T.mapM (T.mapM exprToPattern) e2- Paren r e -> ParenP r- <$> exprToPattern e- Underscore r _ -> return $ WildP r- Absurd r -> return $ AbsurdP r- As r x e -> AsP r x <$> exprToPattern e- Dot r (HiddenArg _ e) -> return $ HiddenP r $ fmap (DotP r) e- Dot r e -> return $ DotP r e- Lit l -> return $ LitP l- HiddenArg r e -> HiddenP r <$> T.mapM exprToPattern e- RawApp r es -> RawAppP r <$> mapM exprToPattern es- OpApp r x es -> OpAppP r x <$> mapM exprToPattern es- _ ->- let Just pos = rStart $ getRange e in- parseErrorAt pos $ "Not a valid pattern: " ++ show e--{--------------------------------------------------------------------------- Tests- --------------------------------------------------------------------------}---- | Test suite.-tests :: IO Bool-tests = runTests "Agda.Syntax.Parser.Parser"- [ quickCheck' prop_splitOnDots- ]-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp --{-# LINE 28 "templates/GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Int# Happy_IntList------{-# LINE 49 "templates/GenericTemplate.hs" #-}--{-# LINE 59 "templates/GenericTemplate.hs" #-}--{-# LINE 68 "templates/GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}--- case action of- 0# -> {- nothing -}- happyFail i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | (n <# (0# :: Int#)) -> {- nothing -}-- (happyReduceArr ! rule) i tk st- where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))- n -> {- nothing -}--- happyShift new_state i tk st- where new_state = (n -# (1# :: Int#))- where off = indexShortOffAddr happyActOffsets st- off_i = (off +# i)- check = if (off_i >=# (0# :: Int#))- then (indexShortOffAddr happyCheck off_i ==# i)- else False- action | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st--{-# LINE 127 "templates/GenericTemplate.hs" #-}---indexShortOffAddr (HappyA# arr) off =-#if __GLASGOW_HASKELL__ > 500- narrow16Int# i-#elif __GLASGOW_HASKELL__ == 500- intToInt16# i-#else- (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#------data HappyAddr = HappyA# Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 170 "templates/GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k -# (1# :: Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk-- off = indexShortOffAddr happyGotoOffsets st1- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i-----happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where off = indexShortOffAddr happyGotoOffsets st- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail 0# tk old_st _ stk =--- trace "failing" $ - happyError_ tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Int# -> a -> a+{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}+{-# OPTIONS -fglasgow-exts -cpp #-}+{-# OPTIONS_GHC -fno-warn-incomplete-patterns+ -fno-warn-deprecated-flags #-}+{-| The parser is generated by Happy (<http://www.haskell.org/happy>).+-}+module Agda.Syntax.Parser.Parser (+ moduleParser+ , exprParser+ , tokensParser+ , tests+ ) where++import Control.Arrow+import Control.Monad+import Control.Monad.State+import Data.Char+import Data.List+import Data.Maybe+import qualified Data.Traversable as T++import Agda.Syntax.Position hiding (tests)+import Agda.Syntax.Parser.Monad+import Agda.Syntax.Parser.Lexer+import Agda.Syntax.Parser.Tokens+import Agda.Syntax.Concrete+import Agda.Syntax.Concrete.Name+import Agda.Syntax.Concrete.Pretty+import Agda.Syntax.Common+import Agda.Syntax.Fixity+import Agda.Syntax.Notation+import Agda.Syntax.Literal++import Agda.Utils.Monad+import Agda.Utils.QuickCheck+import Agda.Utils.TestHelpers+import qualified Data.Array as Happy_Data_Array+import qualified GHC.Exts as Happy_GHC_Exts++-- parser produced by Happy Version 1.18.5++newtype HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63 = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+happyIn6 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn6 #-}+happyOut6 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Token])+happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut6 #-}+happyIn7 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn7 #-}+happyOut7 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Token])+happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut7 #-}+happyIn8 :: (Token) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn8 #-}+happyOut8 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Token)+happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut8 #-}+happyIn9 :: (()) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn9 #-}+happyOut9 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (())+happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut9 #-}+happyIn10 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn10 #-}+happyOut10 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([Pragma], [Declaration]))+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut10 #-}+happyIn11 :: t11 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn11 #-}+happyOut11 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t11+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut11 #-}+happyIn12 :: t12 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn12 #-}+happyOut12 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t12+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut12 #-}+happyIn13 :: t13 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn13 #-}+happyOut13 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t13+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut13 #-}+happyIn14 :: (()) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn14 #-}+happyOut14 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (())+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut14 #-}+happyIn15 :: (Integer) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn15 #-}+happyOut15 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Integer)+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut15 #-}+happyIn16 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn16 #-}+happyOut16 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut16 #-}+happyIn17 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn17 #-}+happyOut17 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut17 #-}+happyIn18 :: (Arg Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn18 #-}+happyOut18 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Arg Name)+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut18 #-}+happyIn19 :: ([Arg Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn19 #-}+happyOut19 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Name])+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut19 #-}+happyIn20 :: ([Arg Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn20 #-}+happyOut20 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Name])+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut20 #-}+happyIn21 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn21 #-}+happyOut21 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut21 #-}+happyIn22 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn22 #-}+happyOut22 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut22 #-}+happyIn23 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn23 #-}+happyOut23 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut23 #-}+happyIn24 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn24 #-}+happyOut24 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut24 #-}+happyIn25 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn25 #-}+happyOut25 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Name])+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut25 #-}+happyIn26 :: ([String]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn26 #-}+happyOut26 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([String])+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut26 #-}+happyIn27 :: (QName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn27 #-}+happyOut27 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (QName)+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut27 #-}+happyIn28 :: (Expr) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn28 #-}+happyOut28 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Expr)+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut28 #-}+happyIn29 :: t29 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn29 #-}+happyOut29 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t29+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut29 #-}+happyIn30 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn30 #-}+happyOut30 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut30 #-}+happyIn31 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn31 #-}+happyOut31 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut31 #-}+happyIn32 :: t32 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn32 #-}+happyOut32 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t32+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut32 #-}+happyIn33 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn33 #-}+happyOut33 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut33 #-}+happyIn34 :: t34 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn34 #-}+happyOut34 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t34+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut34 #-}+happyIn35 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn35 #-}+happyOut35 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([(Name, Expr)])+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut35 #-}+happyIn36 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn36 #-}+happyOut36 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([(Name, Expr)])+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut36 #-}+happyIn37 :: ((Name, Expr)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn37 #-}+happyOut37 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Name, Expr))+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut37 #-}+happyIn38 :: t38 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn38 #-}+happyOut38 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t38+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut38 #-}+happyIn39 :: t39 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn39 #-}+happyOut39 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t39+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut39 #-}+happyIn40 :: ([TypedBindings]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn40 #-}+happyOut40 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBindings])+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut40 #-}+happyIn41 :: (TypedBindings) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn41 #-}+happyOut41 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (TypedBindings)+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut41 #-}+happyIn42 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn42 #-}+happyOut42 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBinding])+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut42 #-}+happyIn43 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn43 #-}+happyOut43 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypedBinding])+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut43 #-}+happyIn44 :: (TypedBinding) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn44 #-}+happyOut44 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (TypedBinding)+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut44 #-}+happyIn45 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn45 #-}+happyOut45 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut45 #-}+happyIn46 :: (([LamBinding], Hiding)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn46 #-}+happyOut46 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([LamBinding], Hiding))+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut46 #-}+happyIn47 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn47 #-}+happyOut47 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Either Hiding LamBinding])+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut47 #-}+happyIn48 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+happyIn49 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+happyIn50 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+happyIn51 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([LamBinding])+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+happyIn52 :: ((Maybe AsName, ImportDirective)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Maybe AsName, ImportDirective))+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+happyIn53 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+happyIn54 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+happyIn55 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportDirective)+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+happyIn56 :: ((UsingOrHiding , Range)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((UsingOrHiding , Range))+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+happyIn57 :: (([Renaming] , Range)) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (([Renaming] , Range))+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+happyIn58 :: ([Renaming]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Renaming])+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+happyIn59 :: (Renaming) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Renaming)+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+happyIn60 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportedName)+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+happyIn61 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (ImportedName)+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+happyIn62 :: ([ImportedName]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([ImportedName])+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+happyIn63 :: t63 -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> t63+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+happyIn64 :: (LHS) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (LHS)+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+happyIn65 :: ([Pattern]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Pattern])+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+happyIn66 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+happyIn67 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+happyIn68 :: (WhereClause) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (WhereClause)+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+happyIn69 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+happyIn70 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+happyIn71 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+happyIn72 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+happyIn73 :: ([Arg Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn73 #-}+happyOut73 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg Declaration])+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut73 #-}+happyIn74 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn74 #-}+happyOut74 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut74 #-}+happyIn75 :: (RHS) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn75 #-}+happyOut75 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (RHS)+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut75 #-}+happyIn76 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn76 #-}+happyOut76 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut76 #-}+happyIn77 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn77 #-}+happyOut77 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut77 #-}+happyIn78 :: (Name) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn78 #-}+happyOut78 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Name)+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut78 #-}+happyIn79 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn79 #-}+happyOut79 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut79 #-}+happyIn80 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn80 #-}+happyOut80 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut80 #-}+happyIn81 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn81 #-}+happyOut81 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut81 #-}+happyIn82 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn82 #-}+happyOut82 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut82 #-}+happyIn83 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn83 #-}+happyOut83 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut83 #-}+happyIn84 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn84 #-}+happyOut84 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut84 #-}+happyIn85 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn85 #-}+happyOut85 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut85 #-}+happyIn86 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn86 #-}+happyOut86 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut86 #-}+happyIn87 :: ([String]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn87 #-}+happyOut87 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([String])+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut87 #-}+happyIn88 :: ([HoleName]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn88 #-}+happyOut88 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([HoleName])+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut88 #-}+happyIn89 :: (HoleName) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn89 #-}+happyOut89 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (HoleName)+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut89 #-}+happyIn90 :: (String) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn90 #-}+happyOut90 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (String)+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut90 #-}+happyIn91 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn91 #-}+happyOut91 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut91 #-}+happyIn92 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn92 #-}+happyOut92 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Expr])+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut92 #-}+happyIn93 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn93 #-}+happyOut93 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut93 #-}+happyIn94 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn94 #-}+happyOut94 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut94 #-}+happyIn95 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn95 #-}+happyOut95 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut95 #-}+happyIn96 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn96 #-}+happyOut96 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut96 #-}+happyIn97 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn97 #-}+happyOut97 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut97 #-}+happyIn98 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn98 #-}+happyOut98 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Declaration)+happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut98 #-}+happyIn99 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn99 #-}+happyOut99 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut99 #-}+happyIn100 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn100 #-}+happyOut100 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut100 #-}+happyIn101 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn101 #-}+happyOut101 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut101 #-}+happyIn102 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn102 #-}+happyOut102 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut102 #-}+happyIn103 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn103 #-}+happyOut103 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut103 #-}+happyIn104 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn104 #-}+happyOut104 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut104 #-}+happyIn105 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn105 #-}+happyOut105 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut105 #-}+happyIn106 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn106 #-}+happyOut106 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut106 #-}+happyIn107 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn107 #-}+happyOut107 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut107 #-}+happyIn108 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn108 #-}+happyOut108 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut108 #-}+happyIn109 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn109 #-}+happyOut109 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Pragma)+happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut109 #-}+happyIn110 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn110 #-}+happyOut110 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])+happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut110 #-}+happyIn111 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn111 #-}+happyOut111 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])+happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut111 #-}+happyIn112 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn112 #-}+happyOut112 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])+happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut112 #-}+happyIn113 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn113 #-}+happyOut113 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([TypeSignature])+happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut113 #-}+happyIn114 :: ([Arg TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn114 #-}+happyOut114 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg TypeSignature])+happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut114 #-}+happyIn115 :: ([Arg TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn115 #-}+happyOut115 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Arg TypeSignature])+happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut115 #-}+happyIn116 :: ([Constructor]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn116 #-}+happyOut116 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Constructor])+happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut116 #-}+happyIn117 :: ((Maybe Name, [Declaration])) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn117 #-}+happyOut117 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ((Maybe Name, [Declaration]))+happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut117 #-}+happyIn118 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn118 #-}+happyOut118 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut118 #-}+happyIn119 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn119 #-}+happyOut119 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut119 #-}+happyIn120 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn120 #-}+happyOut120 :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> ([Declaration])+happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut120 #-}+happyInTok :: (Token) -> (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63)+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyInTok #-}+happyOutTok :: (HappyAbsSyn t11 t12 t13 t29 t32 t34 t38 t39 t63) -> (Token)+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOutTok #-}+++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\x00\x00\xaf\x03\xe9\x04\x00\x00\x5d\x02\xaf\x00\xd7\x04\xe7\x04\x00\x00\xe7\x04\xdd\x04\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x31\x03\xaf\x03\xdc\x04\x00\x00\x91\x01\xe4\x04\xce\x04\x00\x00\x00\x00\x42\x04\xc6\x04\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\xc3\x03\x0f\x03\xed\x02\x00\x00\x00\x00\x00\x00\x99\x04\x7b\x01\xcf\x04\xb8\x04\xc2\x04\xaf\x04\xae\x04\x00\x00\x90\x04\x8f\x04\x00\x00\x00\x00\x00\x00\xc3\x03\xaf\x03\x00\x00\x84\x04\xc3\x03\x00\x00\x85\x03\x70\x03\x00\x00\xcb\x02\xa7\x00\xb7\x04\xfb\x02\x5b\x03\x83\x04\xfb\x02\xc4\x03\xc4\x03\x75\x04\x73\x04\xa3\x04\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\xc4\x03\x08\x01\x00\x00\x00\x00\x77\x04\x77\x04\x00\x00\x77\x04\x00\x00\xfa\xff\xf9\x02\xf9\x02\x82\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x04\x00\x00\x00\x00\xfb\x02\x96\x00\x08\x01\xf9\x02\x00\x00\x3c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x61\x04\x00\x00\x00\x00\xc4\x03\x5b\x03\x6c\x04\x6d\x04\x5b\x04\x00\x00\x66\x04\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\x00\x00\x00\x00\x5b\x03\x5b\x03\x58\x04\x00\x00\x62\x04\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x04\x00\x00\x5b\x03\xa1\x02\xf9\xff\x00\x00\x96\x00\x08\x01\xd0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x04\x00\x00\x53\x04\x50\x04\x4f\x04\x0e\x03\x45\x04\xfb\x02\x7c\x04\xfb\x02\x3e\x04\x35\x04\x00\x00\x00\x00\x00\x00\x52\x04\x00\x00\xd0\x03\x00\x00\x67\x04\x52\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x4e\x04\x00\x00\xc5\x01\x70\x04\x3b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x04\x40\x04\xc9\x00\x29\x04\x29\x04\x29\x04\x86\x01\x37\x04\x1d\x04\x1d\x04\x1d\x04\x34\x04\x34\x04\x34\x04\x10\x04\x26\x04\x08\x01\x7d\x06\x00\x00\x00\x00\x5b\x03\x00\x00\x00\x00\x1b\x04\x18\x04\x1a\x04\x16\x04\x16\x04\x16\x04\x16\x04\x16\x04\xfd\x00\x4b\x04\x08\x01\x8d\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc3\x00\xc3\x00\x0b\x04\x00\x00\xfb\x02\xfb\x02\xfb\x02\xfb\x02\x0e\x04\x0a\x04\x00\x00\x08\x04\x00\x00\x4a\x00\x5b\x03\x3f\x04\x5b\x03\x5b\x03\xa1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x04\x06\x04\x00\x00\x01\x04\x05\x04\xfc\x03\xfb\x03\x04\x04\x25\x04\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\xfe\x03\xe6\x03\xe6\x03\x17\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\x00\x00\x00\x00\xfa\x03\xe2\x03\xf5\x03\xf5\x03\xfb\x02\x10\x00\xf2\x03\xf1\x03\xe7\x03\xeb\x03\xc3\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\xe0\x03\x00\x00\xd6\x03\x08\x01\xff\x03\x5b\x03\xbe\x03\x00\x00\xbe\x03\xbd\x03\xb5\x03\xb4\x03\x00\x00\xab\x03\xac\x03\xaa\x03\x00\x00\x00\x00\xa8\x03\xa0\x03\xa6\x03\xa5\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x83\x03\x00\x00\xfe\x00\xf9\xff\x5b\x03\x5b\x03\x5b\x03\x97\x03\x5b\x03\x8f\x03\x7b\x03\xf9\xff\x0f\x00\xf9\xff\xb8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x8e\x03\x1d\x00\x8e\x03\x00\x00\x0f\x00\x86\x03\x00\x00\x74\x03\x1d\x00\x81\x03\x68\x03\x77\x03\x00\x00\x5b\x03\xd0\x03\x00\x00\xa3\x03\xa1\x03\x98\x03\x1d\x00\x6b\x03\xfe\x00\x64\x03\x00\x00\x2a\x01\x0f\x00\x4e\x03\x00\x00\x5e\x03\x00\x00\x00\x00\x51\x03\x00\x00\x00\x00\x00\x00\x49\x03\x00\x00\x4d\x03\x00\x00\x39\x03\x5b\x03\x00\x00\xfe\x00\x00\x00\x5c\x03\x5c\x03\x5c\x03\x00\x00\xd0\x03\x5b\x03\x00\x00\x2d\x03\x00\x00\x5b\x03\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x03\x00\x00\x00\x00\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x2c\x03\xfe\x00\x28\x03\x00\x00\x00\x00\xfe\x00\x3f\x03\x3f\x03\x12\x00\xd4\x01\xf9\xff\x00\x00\x1d\x00\x00\x00\xf9\xff\x1d\x03\x00\x00\x00\x00\x1d\x00\x32\x03\x00\x00\xf9\xff\x00\x00\x1d\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\xef\x02\x79\x06\x11\x00\x56\x03\x52\x03\xf5\x01\x00\x00\x4f\x03\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x03\x64\x06\x00\x00\x00\x00\x8b\x02\x0e\x00\x00\x00\x00\x00\x00\x00\x6d\x01\x3b\x03\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x1f\x00\x4d\x04\x32\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\x1b\x02\x4f\x06\x00\x00\x00\x00\xe7\x01\x00\x00\x8a\x04\x76\x04\x00\x00\x3a\x06\x25\x06\x00\x00\x13\x03\x10\x06\x00\x00\x2c\x02\x68\x04\x3c\x03\x2c\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x05\x65\x03\xd4\x00\x00\x00\x00\x00\x30\x00\x08\x00\x00\x00\x2f\x00\x00\x00\xb6\x02\x30\x02\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x03\x00\x00\x00\x00\xce\x02\xa2\x04\x36\x00\xcf\x01\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x03\xe6\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\xbc\x05\xa7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x01\x00\x00\x92\x05\x6c\x01\xa8\x02\x00\x00\x8d\x04\x35\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x02\x35\x03\x9b\x02\x00\x00\xfa\x01\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\xb6\x04\x00\x00\xfa\x00\xd6\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x03\x23\x03\x00\x00\x00\x00\xd6\x02\xde\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x06\x00\x37\x01\x04\x03\xfc\x02\xf7\x02\xf2\x02\x16\x00\xe9\x02\xdb\x02\xd8\x02\x0d\x00\x0c\x00\x0b\x00\xcd\x02\x9a\x02\xb1\x00\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\xad\x02\x9f\x02\x91\x02\x47\x02\x00\x00\x18\x02\x6e\x01\x7e\x02\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x70\x01\x57\x01\x00\x00\x00\x00\xef\x01\xb5\x01\x82\x01\x6f\x01\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x7d\x05\xdb\x01\x68\x05\x53\x05\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xfb\x01\xec\x01\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x05\x00\x00\x00\x00\x0a\x00\xe9\x01\x04\x00\x1e\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x44\x01\x81\x01\x29\x05\xa0\x01\x00\x00\x90\x01\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x93\x00\x00\x00\x21\x00\x42\x02\x14\x05\xff\x04\xea\x04\x05\x00\xd5\x04\x00\x00\xb2\x00\x35\x02\x84\x00\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x09\x00\x50\x01\x40\x01\x00\x00\x6f\x03\x00\x00\x00\x00\x12\x01\x00\x01\xf5\x00\xcc\x01\x00\x00\x00\x00\xc0\x04\x9e\x03\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\xd0\x00\xd0\x02\x00\x00\x00\x00\xb7\x00\xb7\x02\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\x00\x00\x4c\x00\xab\x04\x00\x00\x20\x00\x00\x00\x03\x00\x18\x00\x17\x00\x00\x00\xba\x02\x91\x04\x00\x00\x15\x00\x00\x00\x87\x01\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x9f\x00\xff\xff\x1b\x00\x1c\x00\x4e\x00\xbb\x01\x00\x00\x66\x00\x00\x00\x88\x01\x44\x00\x00\x00\x00\x00\x3d\x00\xfe\xff\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x00\x00"#++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\xfa\xff\x00\x00\xb5\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xb5\xff\xb2\xff\xb5\xff\x9c\xff\x82\xff\x00\x00\x8f\xff\x8e\xff\x8c\xff\x8b\xff\x00\x00\x86\xff\x00\x00\x00\x00\x6c\xff\x6a\xff\xb5\xff\x00\x00\x7e\xff\x7d\xff\x00\x00\x00\x00\x7c\xff\x7b\xff\x00\x00\x7f\xff\x80\xff\x00\x00\x00\x00\x00\x00\xaa\xff\x9d\xff\x81\xff\x00\x00\x9c\xff\x00\x00\x00\x00\x8c\xff\x00\x00\x67\xff\x77\xff\x00\x00\x00\x00\x76\xff\x9a\xff\x51\xff\x5c\xff\x00\x00\x88\xff\x60\xff\x5d\xff\x99\xff\x00\x00\x00\x00\x74\xff\x00\x00\x00\x00\x00\x00\x55\xff\x00\x00\x00\x00\x56\xff\x00\x00\x00\x00\x72\xff\x00\x00\x00\x00\x6b\xff\x00\x00\x6d\xff\x92\xff\x8a\xff\x83\xff\x00\x00\x00\x00\x00\x00\xb4\xff\xb3\xff\xb5\xff\xb5\xff\xf7\xfe\xb5\xff\xf2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd4\xff\xd3\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\x95\xff\x9c\xff\x9b\xff\x52\xff\x47\xff\xfe\xfe\x00\x00\xb1\xff\x00\x00\xf6\xfe\xf5\xfe\x75\xff\x8d\xff\x00\x00\x90\xff\x96\xff\x86\xff\x00\x00\xb5\xff\x00\x00\x00\x00\x71\xff\x70\xff\x00\x00\x58\xff\x59\xff\x91\xff\x57\xff\x00\x00\x5a\xff\x5b\xff\x5f\xff\x61\xff\x89\xff\x5e\xff\x69\xff\x78\xff\x00\x00\x68\xff\x7a\xff\x00\x00\x00\x00\x00\x00\x62\xff\x63\xff\x65\xff\x66\xff\x85\xff\x50\xff\x00\x00\x73\xff\x00\x00\x00\x00\xb5\xff\x87\xff\x47\xff\xfe\xfe\x47\xff\xfa\xfe\x4f\xff\x4d\xff\x4b\xff\x48\xff\x49\xff\x00\x00\x00\x00\x00\x00\x47\xff\x00\x00\x52\xff\x00\x00\x52\xff\x00\x00\x95\xff\x94\xff\xe9\xfe\x54\xff\xb5\xff\x53\xff\x47\xff\x4c\xff\xac\xff\x00\x00\x3c\xff\x4a\xff\xff\xfe\xfd\xfe\xf9\xfe\x00\x00\xb5\xff\xae\xff\x9c\xff\x32\xff\x15\xff\xcd\xfe\x2d\xff\x2b\xff\x2a\xff\x29\xff\x28\xff\x2c\xff\x27\xff\x26\xff\x25\xff\x24\xff\x23\xff\x1d\xff\x22\xff\x20\xff\x21\xff\x1f\xff\x1e\xff\xf3\xfe\xf1\xfe\xf0\xfe\xee\xfe\xef\xfe\xed\xfe\xea\xfe\xec\xfe\xeb\xfe\xb5\xff\xb5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\x00\x00\xb5\xff\xb5\xff\xb5\xff\x00\x00\x36\xff\x00\x00\x00\x00\x6e\xff\x6f\xff\x00\x00\x79\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\x32\xff\x00\x00\x00\x00\x0a\xff\x0b\xff\x0c\xff\x00\x00\xab\xff\x00\x00\x00\x00\x00\x00\x0d\xff\x52\xff\x52\xff\x52\xff\x52\xff\x00\x00\x00\x00\x08\xff\x00\x00\x09\xff\x30\xff\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\xd1\xfe\xaf\xff\xb0\xff\xad\xff\x3e\xff\x3a\xff\x00\x00\x3b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x42\xff\x00\x00\xac\xff\x4e\xff\x00\x00\xcf\xfe\xf4\xfe\xb5\xff\x00\x00\x00\x00\xac\xff\x44\xff\x40\xff\x45\xff\x3d\xff\x46\xff\x00\x00\xce\xfe\x1a\xff\x31\xff\x38\xff\x00\x00\x16\xff\x17\xff\xb5\xff\x00\x00\xb5\xff\xb5\xff\x52\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\x97\xff\x10\xff\x0f\xff\x0e\xff\x00\x00\x04\xff\x02\xff\x00\x00\x00\xff\x36\xff\x84\xff\x34\xff\x00\x00\x95\xff\x93\xff\x95\xff\x00\x00\x95\xff\x00\x00\xe1\xfe\x00\x00\x00\x00\x00\x00\xe2\xfe\xe3\xfe\x00\x00\x95\xff\x00\x00\x00\x00\x1b\xff\x37\xff\x35\xff\x00\x00\x03\xff\x00\x00\x98\xff\x00\x00\xb5\xff\x00\x00\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\x00\x00\xb5\xff\x00\x00\xb5\xff\x00\x00\x2f\xff\x33\xff\x39\xff\x43\xff\x41\xff\x3f\xff\x00\x00\xd0\xfe\xb5\xff\x00\x00\xb5\xff\xa6\xff\xa4\xff\x00\x00\xdb\xfe\x00\x00\x00\x00\xb5\xff\xa8\xff\x00\x00\xde\xfe\x00\x00\x47\xff\xf8\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\xa2\xff\x00\x00\xd8\xfe\x00\x00\x00\x00\x07\xff\x06\xff\x00\x00\xe4\xfe\xe6\xfe\x00\x00\xe7\xfe\xe8\xfe\xe5\xfe\x00\x00\x05\xff\x00\x00\xa7\xff\x00\x00\x00\x00\xa3\xff\x00\x00\xda\xfe\xb5\xff\xb5\xff\xb5\xff\xfc\xfe\x47\xff\x00\x00\xa9\xff\x00\x00\xe0\xfe\x00\x00\xa5\xff\x00\x00\xdd\xfe\x2e\xff\xdc\xfe\x19\xff\xdf\xfe\x1c\xff\xfb\xfe\x00\x00\xd6\xfe\x14\xff\x13\xff\x00\x00\x12\xff\xd9\xfe\x18\xff\x00\x00\xa0\xff\x00\x00\x01\xff\xa1\xff\x9e\xff\xb5\xff\xb5\xff\x00\x00\x00\x00\xb5\xff\x9f\xff\x00\x00\xd5\xfe\xb5\xff\x00\x00\xd7\xfe\x11\xff\x00\x00\xb5\xff\xd2\xfe\xb5\xff\xd4\xfe\x00\x00\xd3\xfe"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\x03\x00\x03\x00\x09\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x04\x00\x05\x00\x03\x00\x30\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x0a\x00\x0b\x00\x03\x00\x06\x00\x3b\x00\x2b\x00\x54\x00\x0a\x00\x0b\x00\x2f\x00\x0a\x00\x0a\x00\x0a\x00\x0c\x00\x0c\x00\x0e\x00\x0e\x00\x11\x00\x0a\x00\x03\x00\x03\x00\x05\x00\x0a\x00\x0a\x00\x0c\x00\x0d\x00\x06\x00\x03\x00\x41\x00\x42\x00\x2e\x00\x07\x00\x0a\x00\x0a\x00\x31\x00\x23\x00\x06\x00\x0f\x00\x0f\x00\x27\x00\x28\x00\x29\x00\x1d\x00\x1e\x00\x1f\x00\x2d\x00\x03\x00\x0a\x00\x3d\x00\x41\x00\x1c\x00\x1c\x00\x41\x00\x06\x00\x40\x00\x0a\x00\x0b\x00\x0a\x00\x0f\x00\x3d\x00\x3e\x00\x40\x00\x0f\x00\x37\x00\x38\x00\x39\x00\x0f\x00\x5a\x00\x43\x00\x43\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x5a\x00\x06\x00\x42\x00\x68\x00\x6b\x00\x72\x00\x72\x00\x6f\x00\x72\x00\x72\x00\x70\x00\x71\x00\x70\x00\x71\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x68\x00\x68\x00\x6d\x00\x6c\x00\x6a\x00\x69\x00\x6e\x00\x6e\x00\x69\x00\x3a\x00\x5a\x00\x5a\x00\x56\x00\x56\x00\x3f\x00\x0a\x00\x41\x00\x0c\x00\x0d\x00\x44\x00\x41\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x54\x00\x0a\x00\x0b\x00\x0c\x00\x55\x00\x0e\x00\x57\x00\x58\x00\x59\x00\x01\x00\x0a\x00\x5c\x00\x0c\x00\x5e\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x06\x00\x08\x00\x09\x00\x12\x00\x0a\x00\x0a\x00\x0a\x00\x0b\x00\x0f\x00\x0f\x00\x0f\x00\x0a\x00\x1b\x00\x1c\x00\x1d\x00\x38\x00\x42\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1c\x00\x41\x00\x28\x00\x29\x00\x2a\x00\x09\x00\x03\x00\x0a\x00\x2e\x00\x31\x00\x41\x00\x0f\x00\x32\x00\x33\x00\x06\x00\x35\x00\x38\x00\x0a\x00\x38\x00\x0a\x00\x3a\x00\x3b\x00\x0f\x00\x51\x00\x0a\x00\x41\x00\x54\x00\x41\x00\x42\x00\x3a\x00\x44\x00\x11\x00\x12\x00\x3f\x00\x3f\x00\x1c\x00\x41\x00\x40\x00\x08\x00\x44\x00\x32\x00\x46\x00\x47\x00\x03\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x37\x00\x08\x00\x39\x00\x41\x00\x55\x00\x06\x00\x57\x00\x58\x00\x59\x00\x41\x00\x42\x00\x5c\x00\x37\x00\x5e\x00\x39\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0a\x00\x0a\x00\x12\x00\x0a\x00\x0a\x00\x0f\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x11\x00\x1b\x00\x1c\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1c\x00\x2e\x00\x30\x00\x34\x00\x35\x00\x36\x00\x29\x00\x2a\x00\x36\x00\x23\x00\x0a\x00\x2e\x00\x0c\x00\x3a\x00\x0e\x00\x32\x00\x33\x00\x0a\x00\x2c\x00\x2d\x00\x41\x00\x38\x00\x0a\x00\x3a\x00\x03\x00\x08\x00\x09\x00\x0f\x00\x10\x00\x3a\x00\x41\x00\x42\x00\x0f\x00\x44\x00\x3f\x00\x0a\x00\x41\x00\x1e\x00\x1f\x00\x44\x00\x0f\x00\x46\x00\x47\x00\x06\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1b\x00\x1c\x00\x0a\x00\x14\x00\x55\x00\x3a\x00\x57\x00\x58\x00\x59\x00\x11\x00\x12\x00\x5c\x00\x41\x00\x5e\x00\x54\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0f\x00\x34\x00\x0f\x00\x11\x00\x37\x00\x11\x00\x11\x00\x12\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1b\x00\x1c\x00\x03\x00\x0a\x00\x0a\x00\x15\x00\x07\x00\x23\x00\x0a\x00\x23\x00\x11\x00\x11\x00\x12\x00\x0f\x00\x2a\x00\x2b\x00\x14\x00\x2d\x00\x2c\x00\x2d\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x14\x00\x23\x00\x3a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3f\x00\x31\x00\x41\x00\x2c\x00\x2d\x00\x44\x00\x36\x00\x46\x00\x47\x00\x14\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x3c\x00\x03\x00\x0a\x00\x3a\x00\x55\x00\x07\x00\x57\x00\x58\x00\x59\x00\x11\x00\x41\x00\x5c\x00\x38\x00\x5e\x00\x3a\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x00\x00\x01\x00\x0a\x00\x0b\x00\x23\x00\x0a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0f\x00\x10\x00\x3b\x00\x2c\x00\x2d\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\x0a\x00\x1e\x00\x0a\x00\x55\x00\x30\x00\x0a\x00\x58\x00\x11\x00\x0a\x00\x5b\x00\x36\x00\x28\x00\x29\x00\x2a\x00\x03\x00\x11\x00\x2d\x00\x2e\x00\x07\x00\x0a\x00\x0a\x00\x32\x00\x33\x00\x08\x00\x35\x00\x23\x00\x11\x00\x38\x00\x0a\x00\x3a\x00\x0a\x00\x29\x00\x3d\x00\x23\x00\x3f\x00\x2d\x00\x41\x00\x42\x00\x3c\x00\x44\x00\x00\x00\x01\x00\x2c\x00\x2d\x00\x23\x00\x0a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0f\x00\x10\x00\x0a\x00\x2c\x00\x2d\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x1e\x00\x03\x00\x0a\x00\x0a\x00\x3e\x00\x07\x00\x11\x00\x23\x00\x0f\x00\x10\x00\x28\x00\x29\x00\x2a\x00\x29\x00\x03\x00\x2d\x00\x2e\x00\x2d\x00\x07\x00\x55\x00\x32\x00\x33\x00\x58\x00\x35\x00\x23\x00\x5b\x00\x38\x00\x5d\x00\x3a\x00\x5f\x00\x3d\x00\x3d\x00\x2b\x00\x3f\x00\x2d\x00\x41\x00\x42\x00\x15\x00\x44\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\x41\x00\x42\x00\x43\x00\x44\x00\x01\x00\x53\x00\x54\x00\x0a\x00\x15\x00\x06\x00\x07\x00\x08\x00\x09\x00\x03\x00\x11\x00\x22\x00\x23\x00\x07\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x15\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x23\x00\x1e\x00\x0a\x00\x0a\x00\x15\x00\x0c\x00\x0d\x00\x0f\x00\x10\x00\x2c\x00\x2d\x00\x28\x00\x29\x00\x2a\x00\x01\x00\x15\x00\x2d\x00\x2e\x00\x52\x00\x53\x00\x54\x00\x32\x00\x33\x00\x3b\x00\x35\x00\x0a\x00\x0a\x00\x38\x00\x0a\x00\x3a\x00\x0c\x00\x12\x00\x0e\x00\x11\x00\x3f\x00\x09\x00\x41\x00\x42\x00\x09\x00\x44\x00\x1b\x00\x1c\x00\x1d\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x01\x00\x00\x00\x01\x00\x23\x00\x09\x00\x28\x00\x29\x00\x2a\x00\x31\x00\x32\x00\x33\x00\x2e\x00\x2c\x00\x2d\x00\x0a\x00\x32\x00\x33\x00\x12\x00\x35\x00\x0a\x00\x0a\x00\x38\x00\x39\x00\x3a\x00\x0a\x00\x0f\x00\x1b\x00\x1c\x00\x1d\x00\x13\x00\x41\x00\x42\x00\x0a\x00\x44\x00\x01\x00\x19\x00\x1a\x00\x3d\x00\x1c\x00\x28\x00\x29\x00\x2a\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x00\x24\x00\x0a\x00\x26\x00\x32\x00\x33\x00\x12\x00\x35\x00\x45\x00\x11\x00\x38\x00\x03\x00\x3a\x00\x3b\x00\x14\x00\x1b\x00\x1c\x00\x1d\x00\x32\x00\x41\x00\x42\x00\x06\x00\x44\x00\x01\x00\x38\x00\x33\x00\x3a\x00\x23\x00\x28\x00\x29\x00\x2a\x00\x41\x00\x42\x00\x41\x00\x2e\x00\x2b\x00\x0a\x00\x2d\x00\x32\x00\x33\x00\x12\x00\x35\x00\x0a\x00\x0a\x00\x38\x00\x39\x00\x3a\x00\x14\x00\x0f\x00\x1b\x00\x1c\x00\x03\x00\x13\x00\x41\x00\x42\x00\x03\x00\x44\x00\x02\x00\x19\x00\x1a\x00\x01\x00\x1c\x00\x28\x00\x29\x00\x2a\x00\x01\x00\x2b\x00\x41\x00\x2e\x00\x24\x00\x39\x00\x26\x00\x32\x00\x33\x00\x34\x00\x35\x00\x3b\x00\x37\x00\x38\x00\x2b\x00\x3a\x00\x3c\x00\x12\x00\x41\x00\x0a\x00\x3c\x00\x01\x00\x41\x00\x42\x00\x0f\x00\x44\x00\x1b\x00\x1c\x00\x1d\x00\x0a\x00\x41\x00\x0c\x00\x0d\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x12\x00\x28\x00\x29\x00\x2a\x00\x01\x00\x2b\x00\x3b\x00\x2e\x00\x41\x00\x1b\x00\x1c\x00\x32\x00\x33\x00\x41\x00\x35\x00\x40\x00\x34\x00\x38\x00\x30\x00\x3a\x00\x2b\x00\x12\x00\x28\x00\x29\x00\x2a\x00\x03\x00\x41\x00\x42\x00\x2e\x00\x44\x00\x1b\x00\x1c\x00\x32\x00\x33\x00\x03\x00\x35\x00\x03\x00\x30\x00\x38\x00\x41\x00\x3a\x00\x3b\x00\x2b\x00\x28\x00\x29\x00\x2a\x00\x01\x00\x41\x00\x42\x00\x2e\x00\x44\x00\x41\x00\x30\x00\x32\x00\x33\x00\x2b\x00\x35\x00\x03\x00\x41\x00\x38\x00\x39\x00\x3a\x00\x31\x00\x12\x00\x2b\x00\x0a\x00\x41\x00\x01\x00\x41\x00\x42\x00\x0f\x00\x44\x00\x1b\x00\x1c\x00\x1d\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x12\x00\x28\x00\x29\x00\x2a\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x00\x0e\x00\x1b\x00\x1c\x00\x32\x00\x33\x00\x43\x00\x35\x00\x40\x00\x40\x00\x38\x00\x40\x00\x3a\x00\x40\x00\x40\x00\x28\x00\x29\x00\x2a\x00\x43\x00\x41\x00\x42\x00\x2e\x00\x44\x00\x40\x00\x32\x00\x32\x00\x33\x00\x43\x00\x35\x00\x0a\x00\x38\x00\x38\x00\x3a\x00\x3a\x00\x0f\x00\x43\x00\x43\x00\x0a\x00\x04\x00\x41\x00\x41\x00\x42\x00\x0f\x00\x44\x00\x19\x00\x1a\x00\x13\x00\x1c\x00\x37\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x35\x00\x2b\x00\x30\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x0a\x00\x2b\x00\x30\x00\x30\x00\x41\x00\x0f\x00\x2b\x00\x0f\x00\x41\x00\x13\x00\x2b\x00\x3c\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x0d\x00\x2f\x00\x39\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x0a\x00\x41\x00\x39\x00\x39\x00\x2f\x00\x0f\x00\x41\x00\x04\x00\x3c\x00\x13\x00\x3c\x00\x3c\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x41\x00\x05\x00\x41\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x26\x00\x43\x00\x40\x00\x43\x00\x0f\x00\x37\x00\x43\x00\x2b\x00\x13\x00\x44\x00\x2b\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x41\x00\x2b\x00\x31\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x26\x00\x32\x00\x05\x00\x0f\x00\x0f\x00\x43\x00\x2b\x00\x38\x00\x13\x00\x3a\x00\x2b\x00\x40\x00\x03\x00\x0a\x00\x19\x00\x1a\x00\x41\x00\x1c\x00\x0f\x00\x41\x00\x38\x00\x38\x00\x13\x00\x0c\x00\x38\x00\x24\x00\x41\x00\x26\x00\x19\x00\x1a\x00\x2f\x00\x1c\x00\x3b\x00\x0a\x00\x2f\x00\x3b\x00\x2b\x00\x37\x00\x0f\x00\x24\x00\x0a\x00\x26\x00\x13\x00\x31\x00\x43\x00\x0f\x00\x1f\x00\x2b\x00\x19\x00\x1a\x00\x02\x00\x1c\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x24\x00\x3c\x00\x26\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\x41\x00\x34\x00\x34\x00\x02\x00\x0f\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x39\x00\x39\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x2f\x00\x45\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x3b\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x30\x00\x3b\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x30\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x41\x00\x3a\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x2b\x00\x34\x00\x45\x00\x2b\x00\x36\x00\x2b\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x45\x00\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\x0a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\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"#++happyTable :: HappyAddr+happyTable = HappyA# "\x00\x00\xd7\x00\x0e\x02\xaa\x00\xbc\x01\xd7\x00\x01\x02\xb3\x01\x67\x01\x4d\x01\x67\x01\xab\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x59\x01\xaf\x01\x05\x00\x06\x00\x07\x00\xa9\x01\xcc\x00\x46\x01\xfd\x01\xfd\x01\x4f\x01\x59\x01\x0d\x02\xc8\x01\xc9\x01\xb1\x01\x15\x02\xd4\x00\x0a\x00\x07\x02\xc8\x01\xc9\x01\xfe\x00\x33\x00\xc1\x01\xc1\x01\xd3\x01\xd3\x01\xd4\x01\xd4\x01\x34\x00\x5b\x01\x05\x00\xab\x00\xaa\x00\xc1\x01\xb6\x00\xc2\x01\xc3\x01\x1d\x02\x1c\x02\x26\x00\x27\x00\xc6\x01\xfc\x00\x0a\x00\x0a\x00\xb0\x01\x35\x00\x1b\x02\x0b\x00\x0b\x00\x36\x00\x37\x00\x38\x00\xb7\x00\xb8\x00\xb9\x00\x39\x00\x7c\x01\x16\x02\x5a\x01\x26\x00\xdb\x00\xdb\x00\x26\x00\x12\x02\xfa\x01\xc8\x01\x05\x02\xfe\x00\x7d\x01\x5a\x01\x5b\x01\xca\x01\x0b\x00\x5c\x01\x5d\x01\x5e\x01\x60\x01\xac\x00\x03\x02\xd5\x01\xff\x00\x0e\x00\x0f\x00\x10\x00\xb0\x00\x12\x00\x08\x00\x19\x02\xf8\x01\x4e\x01\xb4\x01\x1a\x02\x0f\x02\x02\x02\xd8\x00\xd8\x00\x68\x01\xcd\x01\x68\x01\x69\x01\xf7\x01\xb6\x01\x3f\x01\x40\x01\x41\x01\x49\x00\xfe\x01\xfe\x01\xaa\x01\x47\x01\x50\x01\xb2\x01\xff\x01\x00\x02\xb2\x01\x00\x01\x08\x00\xad\x00\xf9\x00\xdc\x00\x01\x01\xc1\x01\x02\x01\xc2\x01\xc3\x01\x03\x01\x26\x00\x04\x01\x05\x01\x13\x02\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\xe2\x01\xe4\x00\xe5\x00\xe6\x00\x0e\x01\xe7\x00\x0f\x01\x10\x01\x11\x01\x18\x00\xc1\x01\x12\x01\xd3\x01\x13\x01\x10\x02\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\xbd\x01\x5b\x00\x5c\x00\x19\x00\xfe\x00\x3b\x01\xc8\x01\xc9\x01\x5d\x00\x0b\x00\x0b\x00\xe4\x01\x1a\x00\x1b\x00\x1c\x00\x8d\x01\xc4\x01\xff\x00\x0e\x00\x0f\x00\x10\x00\xb0\x00\x12\x00\x3d\x00\x8e\x01\x1d\x00\x1e\x00\x1f\x00\xaa\x00\xe8\x01\x5b\x01\x20\x00\xa8\x01\xe8\x00\x4d\x01\x21\x00\x22\x00\xe9\x01\x23\x00\x8d\x01\x0a\x00\x24\x00\x5b\x01\x25\x00\x30\x00\x0b\x00\xd8\x01\x33\x00\x8e\x01\xd9\x01\x26\x00\x27\x00\x00\x01\x28\x00\x85\x01\xa8\x01\x5e\x00\x01\x01\xae\x00\x02\x01\xca\x01\x61\x01\x03\x01\x3b\x00\x04\x01\x05\x01\xf1\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x5c\x01\x61\x01\xb8\x01\x26\x00\x0e\x01\xf2\x01\x0f\x01\x10\x01\x11\x01\x26\x00\x27\x00\x12\x01\x5c\x01\x13\x01\x60\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\xfe\x00\x0a\x00\x19\x00\x33\x00\xe4\x01\x0b\x00\x0b\x00\xb9\x01\x63\x01\x64\x01\x34\x00\x1a\x00\x1b\x00\xff\x00\x0e\x00\x0f\x00\x10\x00\xb0\x00\x12\x00\x3d\x00\xd7\x01\x92\x01\x62\x01\x63\x01\x64\x01\x1e\x00\x1f\x00\x53\x00\xe8\x00\xc1\x01\x20\x00\xd3\x01\xd8\x01\x09\x02\x21\x00\x22\x00\xb6\x00\xb0\x01\xea\x00\x26\x00\x3f\x00\xa4\x00\x40\x00\xf5\x01\x5b\x00\x5c\x00\xa5\x00\xa8\x00\x00\x01\x26\x00\x27\x00\x5d\x00\x28\x00\x74\x01\x0a\x00\x02\x01\x2f\x01\xb9\x00\x03\x01\x0b\x00\x04\x01\x05\x01\xf6\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x4f\x00\x8f\x01\x33\x00\xdd\x01\x0e\x01\xe6\x01\x0f\x01\x10\x01\x11\x01\x85\x01\x86\x01\x12\x01\x26\x00\x13\x01\xda\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\xfe\x00\x33\x00\x0a\x00\x33\x00\x33\x00\x0b\x00\x51\x00\x0b\x00\x34\x00\x52\x00\x34\x00\x85\x01\x87\x01\xff\x00\x0e\x00\x0f\x00\x10\x00\xb0\x00\x12\x00\x8e\x01\x8f\x01\x17\x02\x33\x00\x33\x00\x9b\x01\x18\x02\x41\x00\x0a\x00\xe8\x00\x34\x00\x85\x01\x88\x01\x0b\x00\x42\x00\x43\x00\x9e\x01\x44\x00\x80\x01\xea\x00\xf9\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xa0\x01\xe8\x00\x00\x01\x13\x00\x14\x00\x15\x00\x16\x00\x01\x01\xcd\x00\x02\x01\x81\x01\xea\x00\x03\x01\x53\x00\x04\x01\x05\x01\xa1\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\xa3\x01\x11\x02\x33\x00\x48\x00\x0e\x01\xfc\x00\x0f\x01\x10\x01\x11\x01\x34\x00\x26\x00\x12\x01\x46\x00\x13\x01\x4c\x00\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x59\x01\x18\x00\xc8\x01\xf0\x01\xe8\x00\xa4\x00\x1d\x01\x1e\x01\x1f\x01\x5c\x00\xa5\x00\xda\x00\xa4\x01\x82\x01\xea\x00\x20\x01\x21\x01\x22\x01\x23\x01\x15\x02\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x1a\x00\x1b\x00\x33\x00\x2b\x01\xb5\x01\x55\x00\x56\x01\xba\x01\x56\x00\x34\x00\x33\x00\x57\x00\x53\x00\x1d\x00\x1e\x00\x1f\x00\xbf\x01\x34\x00\x2c\x01\x2d\x01\xc0\x01\x33\x00\xbb\x01\x21\x00\x22\x00\x6b\x01\x23\x00\x35\x00\x34\x00\x3f\x00\x6f\x01\x40\x00\x71\x01\xc2\x00\x5a\x01\xe8\x00\x2e\x01\x39\x00\x26\x00\x27\x00\x77\x01\x28\x00\x59\x01\x18\x00\x83\x01\xea\x00\xe8\x00\xa4\x00\x1d\x01\x1e\x01\x1f\x01\x5c\x00\xa5\x00\xa6\x00\x33\x00\xef\x00\xea\x00\x20\x01\x21\x01\x22\x01\x23\x01\x34\x00\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x1a\x00\x1b\x00\x33\x00\x2b\x01\xc6\x01\x7f\x01\xa4\x00\x7a\x01\xc7\x01\x34\x00\x35\x00\xa5\x00\xa7\x00\x1d\x00\x1e\x00\x1f\x00\xc5\x00\xd1\x01\x2c\x01\x2d\x01\x39\x00\xd2\x01\x55\x00\x21\x00\x22\x00\x56\x00\x23\x00\x41\x00\x57\x00\x3f\x00\x58\x00\x40\x00\x59\x00\x90\x01\x5a\x01\xbb\x00\x2e\x01\x44\x00\x26\x00\x27\x00\x92\x01\x28\x00\x60\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\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\x18\x00\xa6\x01\x8b\x01\x33\x00\x94\x01\x1d\x01\x1e\x01\x1f\x01\x5c\x00\xfb\x00\x34\x00\x4a\x00\x16\x00\xfc\x00\x20\x01\x21\x01\x22\x01\x23\x01\x95\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x1a\x00\x1b\x00\xe8\x00\x2b\x01\xa4\x00\xc1\x01\x96\x01\xc2\x01\xe3\x01\xa5\x00\xa8\x00\xf1\x00\xea\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x97\x01\x2c\x01\x2d\x01\x89\x01\x8a\x01\x8b\x01\x21\x00\x22\x00\x3c\x01\x23\x00\x3e\x01\x33\x00\x3f\x00\xc1\x01\x40\x00\xd3\x01\x19\x00\xe7\x01\x34\x00\x2e\x01\x42\x01\x26\x00\x27\x00\x44\x01\x28\x00\x1a\x00\x1b\x00\x1c\x00\xfc\x01\xdf\x00\xe0\x00\xe1\x00\xe2\x00\x18\x00\x28\x00\x04\x00\xe8\x00\x45\x01\x1d\x00\x1e\x00\x1f\x00\xf3\x00\xe1\x00\xe2\x00\x20\x00\xe9\x00\xea\x00\x48\x01\x21\x00\x22\x00\x19\x00\x23\x00\x49\x01\x0a\x00\x24\x00\x33\x00\x25\x00\x4a\x01\x0b\x00\x1a\x00\x1b\x00\x1c\x00\x2a\x00\x26\x00\x27\x00\x4b\x01\x28\x00\x18\x00\xb2\x00\x10\x00\x53\x01\xb3\x00\x1d\x00\x1e\x00\x1f\x00\xe4\x00\xe5\x00\xe6\x00\x20\x00\x2d\x00\x33\x00\x2e\x00\x21\x00\x22\x00\x19\x00\x23\x00\x51\x01\x34\x00\x24\x00\x56\x01\x25\x00\x30\x00\xed\x00\x1a\x00\x1b\x00\x1c\x00\x3b\x00\x26\x00\x27\x00\x57\x01\x28\x00\x18\x00\x46\x00\xf7\x00\x47\x00\x41\x00\x1d\x00\x1e\x00\x1f\x00\x26\x00\x27\x00\x26\x00\x20\x00\xbe\x00\xf2\x00\x44\x00\x21\x00\x22\x00\x19\x00\x23\x00\x40\x00\x0a\x00\x24\x00\x33\x00\x25\x00\xeb\x00\x0b\x00\x1a\x00\x1b\x00\x53\x00\xba\x00\x26\x00\x27\x00\x54\x00\x28\x00\x5e\x00\xb2\x00\x10\x00\x04\x00\xb3\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x0a\x00\x26\x00\x20\x00\x2d\x00\x09\x02\x2e\x00\x21\x00\x22\x00\x84\xff\x23\x00\x0b\x02\x84\xff\x3f\x00\x0a\x00\x40\x00\x0c\x02\x19\x00\x26\x00\x0a\x00\x0d\x02\x18\x00\x26\x00\x27\x00\x0b\x00\x28\x00\x1a\x00\x1b\x00\x1c\x00\xc1\x01\x26\x00\xc2\x01\xf4\x01\xaf\x00\x0f\x00\x10\x00\xb0\x00\x12\x00\x19\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x0a\x00\x07\x02\x20\x00\x8e\x01\x1a\x00\x1b\x00\x21\x00\x22\x00\x8e\x01\x23\x00\xe1\x01\xe2\x01\x24\x00\xe7\x01\x25\x00\x0a\x00\x19\x00\x1d\x00\x1e\x00\x1f\x00\xeb\x01\x26\x00\x27\x00\x20\x00\x28\x00\x1a\x00\x1b\x00\x21\x00\x22\x00\xec\x01\x23\x00\xed\x01\xf0\x01\x3f\x00\x26\x00\x40\x00\xc1\x00\x0a\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x26\x00\x27\x00\x20\x00\x28\x00\x26\x00\xf4\x01\x21\x00\x22\x00\x0a\x00\x23\x00\xbf\x01\x26\x00\x3f\x00\xc2\x00\x40\x00\xcc\x01\x19\x00\x0a\x00\x0a\x00\x8e\x01\x18\x00\x26\x00\x27\x00\x0b\x00\x28\x00\x1a\x00\x1b\x00\x1c\x00\xed\x01\xdf\x00\xe0\x00\xe1\x00\xe2\x00\x4e\x00\x10\x00\x4f\x00\x12\x00\x19\x00\x1d\x00\x1e\x00\x1f\x00\xe4\x00\xe5\x00\xe6\x00\x20\x00\xe7\x00\x1a\x00\x1b\x00\x21\x00\x22\x00\xed\x00\x23\x00\xdc\x01\xdd\x01\x24\x00\xdf\x01\x25\x00\xe0\x01\x9d\x01\x1d\x00\x1e\x00\x1f\x00\x94\x01\x26\x00\x27\x00\x20\x00\x28\x00\x9e\x01\x3b\x00\x21\x00\x22\x00\xed\x00\x23\x00\x0a\x00\x3c\x00\x3f\x00\x3d\x00\x40\x00\x0b\x00\xa0\x01\xed\x00\x0a\x00\x79\x01\x26\x00\x26\x00\x27\x00\x0b\x00\x28\x00\x4e\x00\x10\x00\x2a\x00\xb3\x00\x3e\x01\xcf\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\xa6\x01\x0a\x00\xac\x01\x13\x00\x14\x00\x15\x00\x16\x00\xd0\x00\x32\x01\x2e\x00\x0a\x00\x0a\x00\xad\x01\xae\x01\x26\x00\x0b\x00\x0a\x00\x66\x01\x26\x00\x2a\x00\x0a\x00\x6b\x01\xcf\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x6d\x01\x6e\x01\x6f\x01\x13\x00\x14\x00\x15\x00\x16\x00\xd0\x00\xd1\x00\x2e\x00\x29\x00\x26\x00\x71\x01\x73\x01\x74\x01\x0b\x00\x26\x00\x79\x01\x7e\x01\x2a\x00\x7f\x01\x85\x01\x2b\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x26\x00\x55\x01\x26\x00\x13\x00\x14\x00\x15\x00\x16\x00\x2d\x00\x0a\x00\x2e\x00\x94\x01\x99\x01\x9a\x01\x0b\x00\x3e\x01\x9b\x01\x0a\x00\x2a\x00\x44\x01\x0a\x00\x30\x00\x0d\x00\x0e\x00\x2c\x00\x10\x00\x11\x00\x12\x00\x26\x00\x0a\x00\x53\x01\x13\x00\x14\x00\x15\x00\x16\x00\x31\x00\x0a\x00\x2e\x00\x3b\x00\x55\x01\x66\x01\x0b\x00\xed\x00\x0a\x00\x46\x00\x2a\x00\x47\x00\x0a\x00\xef\x00\xf1\x00\x0a\x00\xb2\x00\x10\x00\x26\x00\xb3\x00\x0b\x00\x26\x00\xf5\x00\xf6\x00\xba\x00\xe6\x00\xf7\x00\x31\x00\x26\x00\x2e\x00\xb2\x00\x10\x00\x31\x01\xb3\x00\x32\x01\x0a\x00\xd5\x00\xd6\x00\x0a\x00\x52\x00\x0b\x00\x2d\x00\x0a\x00\x2e\x00\x2a\x00\xd7\x00\xed\x00\x0b\x00\xa4\x00\x0a\x00\xb2\x00\x10\x00\xb5\x00\xb3\x00\xfb\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x31\x00\xb6\x00\x2e\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0a\x00\x26\x00\xbd\x00\xc4\x00\xc0\x00\x0b\x00\xfa\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\x04\x02\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xc7\x00\xc8\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xee\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xc9\x00\xff\xff\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x66\x01\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xca\x00\xcc\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x96\xff\xcb\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\xf8\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xcc\x00\xce\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x26\x00\x48\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x0a\x00\x4d\x00\xff\xff\x0a\x00\x53\x00\x0a\x00\xcf\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xff\xff\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x29\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyReduceArr = Happy_Data_Array.array (3, 306) [+ (3 , happyReduce_3),+ (4 , happyReduce_4),+ (5 , happyReduce_5),+ (6 , happyReduce_6),+ (7 , happyReduce_7),+ (8 , happyReduce_8),+ (9 , happyReduce_9),+ (10 , happyReduce_10),+ (11 , happyReduce_11),+ (12 , happyReduce_12),+ (13 , happyReduce_13),+ (14 , happyReduce_14),+ (15 , happyReduce_15),+ (16 , happyReduce_16),+ (17 , happyReduce_17),+ (18 , happyReduce_18),+ (19 , happyReduce_19),+ (20 , happyReduce_20),+ (21 , happyReduce_21),+ (22 , happyReduce_22),+ (23 , happyReduce_23),+ (24 , happyReduce_24),+ (25 , happyReduce_25),+ (26 , happyReduce_26),+ (27 , happyReduce_27),+ (28 , happyReduce_28),+ (29 , happyReduce_29),+ (30 , happyReduce_30),+ (31 , happyReduce_31),+ (32 , happyReduce_32),+ (33 , happyReduce_33),+ (34 , happyReduce_34),+ (35 , happyReduce_35),+ (36 , happyReduce_36),+ (37 , happyReduce_37),+ (38 , happyReduce_38),+ (39 , happyReduce_39),+ (40 , happyReduce_40),+ (41 , happyReduce_41),+ (42 , happyReduce_42),+ (43 , happyReduce_43),+ (44 , happyReduce_44),+ (45 , happyReduce_45),+ (46 , happyReduce_46),+ (47 , happyReduce_47),+ (48 , happyReduce_48),+ (49 , happyReduce_49),+ (50 , happyReduce_50),+ (51 , happyReduce_51),+ (52 , happyReduce_52),+ (53 , happyReduce_53),+ (54 , happyReduce_54),+ (55 , happyReduce_55),+ (56 , happyReduce_56),+ (57 , happyReduce_57),+ (58 , happyReduce_58),+ (59 , happyReduce_59),+ (60 , happyReduce_60),+ (61 , happyReduce_61),+ (62 , happyReduce_62),+ (63 , happyReduce_63),+ (64 , happyReduce_64),+ (65 , happyReduce_65),+ (66 , happyReduce_66),+ (67 , happyReduce_67),+ (68 , happyReduce_68),+ (69 , happyReduce_69),+ (70 , happyReduce_70),+ (71 , happyReduce_71),+ (72 , happyReduce_72),+ (73 , happyReduce_73),+ (74 , happyReduce_74),+ (75 , happyReduce_75),+ (76 , happyReduce_76),+ (77 , happyReduce_77),+ (78 , happyReduce_78),+ (79 , happyReduce_79),+ (80 , happyReduce_80),+ (81 , happyReduce_81),+ (82 , happyReduce_82),+ (83 , happyReduce_83),+ (84 , happyReduce_84),+ (85 , happyReduce_85),+ (86 , happyReduce_86),+ (87 , happyReduce_87),+ (88 , happyReduce_88),+ (89 , happyReduce_89),+ (90 , happyReduce_90),+ (91 , happyReduce_91),+ (92 , happyReduce_92),+ (93 , happyReduce_93),+ (94 , happyReduce_94),+ (95 , happyReduce_95),+ (96 , happyReduce_96),+ (97 , happyReduce_97),+ (98 , happyReduce_98),+ (99 , happyReduce_99),+ (100 , happyReduce_100),+ (101 , happyReduce_101),+ (102 , happyReduce_102),+ (103 , happyReduce_103),+ (104 , happyReduce_104),+ (105 , happyReduce_105),+ (106 , happyReduce_106),+ (107 , happyReduce_107),+ (108 , happyReduce_108),+ (109 , happyReduce_109),+ (110 , happyReduce_110),+ (111 , happyReduce_111),+ (112 , happyReduce_112),+ (113 , happyReduce_113),+ (114 , happyReduce_114),+ (115 , happyReduce_115),+ (116 , happyReduce_116),+ (117 , happyReduce_117),+ (118 , happyReduce_118),+ (119 , happyReduce_119),+ (120 , happyReduce_120),+ (121 , happyReduce_121),+ (122 , happyReduce_122),+ (123 , happyReduce_123),+ (124 , happyReduce_124),+ (125 , happyReduce_125),+ (126 , happyReduce_126),+ (127 , happyReduce_127),+ (128 , happyReduce_128),+ (129 , happyReduce_129),+ (130 , happyReduce_130),+ (131 , happyReduce_131),+ (132 , happyReduce_132),+ (133 , happyReduce_133),+ (134 , happyReduce_134),+ (135 , happyReduce_135),+ (136 , happyReduce_136),+ (137 , happyReduce_137),+ (138 , happyReduce_138),+ (139 , happyReduce_139),+ (140 , happyReduce_140),+ (141 , happyReduce_141),+ (142 , happyReduce_142),+ (143 , happyReduce_143),+ (144 , happyReduce_144),+ (145 , happyReduce_145),+ (146 , happyReduce_146),+ (147 , happyReduce_147),+ (148 , happyReduce_148),+ (149 , happyReduce_149),+ (150 , happyReduce_150),+ (151 , happyReduce_151),+ (152 , happyReduce_152),+ (153 , happyReduce_153),+ (154 , happyReduce_154),+ (155 , happyReduce_155),+ (156 , happyReduce_156),+ (157 , happyReduce_157),+ (158 , happyReduce_158),+ (159 , happyReduce_159),+ (160 , happyReduce_160),+ (161 , happyReduce_161),+ (162 , happyReduce_162),+ (163 , happyReduce_163),+ (164 , happyReduce_164),+ (165 , happyReduce_165),+ (166 , happyReduce_166),+ (167 , happyReduce_167),+ (168 , happyReduce_168),+ (169 , happyReduce_169),+ (170 , happyReduce_170),+ (171 , happyReduce_171),+ (172 , happyReduce_172),+ (173 , happyReduce_173),+ (174 , happyReduce_174),+ (175 , happyReduce_175),+ (176 , happyReduce_176),+ (177 , happyReduce_177),+ (178 , happyReduce_178),+ (179 , happyReduce_179),+ (180 , happyReduce_180),+ (181 , happyReduce_181),+ (182 , happyReduce_182),+ (183 , happyReduce_183),+ (184 , happyReduce_184),+ (185 , happyReduce_185),+ (186 , happyReduce_186),+ (187 , happyReduce_187),+ (188 , happyReduce_188),+ (189 , happyReduce_189),+ (190 , happyReduce_190),+ (191 , happyReduce_191),+ (192 , happyReduce_192),+ (193 , happyReduce_193),+ (194 , happyReduce_194),+ (195 , happyReduce_195),+ (196 , happyReduce_196),+ (197 , happyReduce_197),+ (198 , happyReduce_198),+ (199 , happyReduce_199),+ (200 , happyReduce_200),+ (201 , happyReduce_201),+ (202 , happyReduce_202),+ (203 , happyReduce_203),+ (204 , happyReduce_204),+ (205 , happyReduce_205),+ (206 , happyReduce_206),+ (207 , happyReduce_207),+ (208 , happyReduce_208),+ (209 , happyReduce_209),+ (210 , happyReduce_210),+ (211 , happyReduce_211),+ (212 , happyReduce_212),+ (213 , happyReduce_213),+ (214 , happyReduce_214),+ (215 , happyReduce_215),+ (216 , happyReduce_216),+ (217 , happyReduce_217),+ (218 , happyReduce_218),+ (219 , happyReduce_219),+ (220 , happyReduce_220),+ (221 , happyReduce_221),+ (222 , happyReduce_222),+ (223 , happyReduce_223),+ (224 , happyReduce_224),+ (225 , happyReduce_225),+ (226 , happyReduce_226),+ (227 , happyReduce_227),+ (228 , happyReduce_228),+ (229 , happyReduce_229),+ (230 , happyReduce_230),+ (231 , happyReduce_231),+ (232 , happyReduce_232),+ (233 , happyReduce_233),+ (234 , happyReduce_234),+ (235 , happyReduce_235),+ (236 , happyReduce_236),+ (237 , happyReduce_237),+ (238 , happyReduce_238),+ (239 , happyReduce_239),+ (240 , happyReduce_240),+ (241 , happyReduce_241),+ (242 , happyReduce_242),+ (243 , happyReduce_243),+ (244 , happyReduce_244),+ (245 , happyReduce_245),+ (246 , happyReduce_246),+ (247 , happyReduce_247),+ (248 , happyReduce_248),+ (249 , happyReduce_249),+ (250 , happyReduce_250),+ (251 , happyReduce_251),+ (252 , happyReduce_252),+ (253 , happyReduce_253),+ (254 , happyReduce_254),+ (255 , happyReduce_255),+ (256 , happyReduce_256),+ (257 , happyReduce_257),+ (258 , happyReduce_258),+ (259 , happyReduce_259),+ (260 , happyReduce_260),+ (261 , happyReduce_261),+ (262 , happyReduce_262),+ (263 , happyReduce_263),+ (264 , happyReduce_264),+ (265 , happyReduce_265),+ (266 , happyReduce_266),+ (267 , happyReduce_267),+ (268 , happyReduce_268),+ (269 , happyReduce_269),+ (270 , happyReduce_270),+ (271 , happyReduce_271),+ (272 , happyReduce_272),+ (273 , happyReduce_273),+ (274 , happyReduce_274),+ (275 , happyReduce_275),+ (276 , happyReduce_276),+ (277 , happyReduce_277),+ (278 , happyReduce_278),+ (279 , happyReduce_279),+ (280 , happyReduce_280),+ (281 , happyReduce_281),+ (282 , happyReduce_282),+ (283 , happyReduce_283),+ (284 , happyReduce_284),+ (285 , happyReduce_285),+ (286 , happyReduce_286),+ (287 , happyReduce_287),+ (288 , happyReduce_288),+ (289 , happyReduce_289),+ (290 , happyReduce_290),+ (291 , happyReduce_291),+ (292 , happyReduce_292),+ (293 , happyReduce_293),+ (294 , happyReduce_294),+ (295 , happyReduce_295),+ (296 , happyReduce_296),+ (297 , happyReduce_297),+ (298 , happyReduce_298),+ (299 , happyReduce_299),+ (300 , happyReduce_300),+ (301 , happyReduce_301),+ (302 , happyReduce_302),+ (303 , happyReduce_303),+ (304 , happyReduce_304),+ (305 , happyReduce_305),+ (306 , happyReduce_306)+ ]++happy_n_terms = 70 :: Int+happy_n_nonterms = 115 :: Int++happyReduce_3 = happySpecReduce_1 0# happyReduction_3+happyReduction_3 happy_x_1+ = case happyOut7 happy_x_1 of { happy_var_1 -> + happyIn6+ (reverse happy_var_1+ )}++happyReduce_4 = happySpecReduce_2 1# happyReduction_4+happyReduction_4 happy_x_2+ happy_x_1+ = case happyOut7 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + happyIn7+ (happy_var_2 : happy_var_1+ )}}++happyReduce_5 = happySpecReduce_0 1# happyReduction_5+happyReduction_5 = happyIn7+ ([]+ )++happyReduce_6 = happySpecReduce_1 2# happyReduction_6+happyReduction_6 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> + happyIn8+ (TokKeyword KwLet happy_var_1+ )}++happyReduce_7 = happySpecReduce_1 2# happyReduction_7+happyReduction_7 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> + happyIn8+ (TokKeyword KwIn happy_var_1+ )}++happyReduce_8 = happySpecReduce_1 2# happyReduction_8+happyReduction_8 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> + happyIn8+ (TokKeyword KwWhere happy_var_1+ )}++happyReduce_9 = happySpecReduce_1 2# happyReduction_9+happyReduction_9 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> + happyIn8+ (TokKeyword KwWith happy_var_1+ )}++happyReduce_10 = happySpecReduce_1 2# happyReduction_10+happyReduction_10 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> + happyIn8+ (TokKeyword KwRewrite happy_var_1+ )}++happyReduce_11 = happySpecReduce_1 2# happyReduction_11+happyReduction_11 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> + happyIn8+ (TokKeyword KwPostulate happy_var_1+ )}++happyReduce_12 = happySpecReduce_1 2# happyReduction_12+happyReduction_12 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> + happyIn8+ (TokKeyword KwPrimitive happy_var_1+ )}++happyReduce_13 = happySpecReduce_1 2# happyReduction_13+happyReduction_13 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> + happyIn8+ (TokKeyword KwOpen happy_var_1+ )}++happyReduce_14 = happySpecReduce_1 2# happyReduction_14+happyReduction_14 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> + happyIn8+ (TokKeyword KwImport happy_var_1+ )}++happyReduce_15 = happySpecReduce_1 2# happyReduction_15+happyReduction_15 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> + happyIn8+ (TokKeyword KwUsing happy_var_1+ )}++happyReduce_16 = happySpecReduce_1 2# happyReduction_16+happyReduction_16 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> + happyIn8+ (TokKeyword KwHiding happy_var_1+ )}++happyReduce_17 = happySpecReduce_1 2# happyReduction_17+happyReduction_17 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> + happyIn8+ (TokKeyword KwRenaming happy_var_1+ )}++happyReduce_18 = happySpecReduce_1 2# happyReduction_18+happyReduction_18 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> + happyIn8+ (TokKeyword KwTo happy_var_1+ )}++happyReduce_19 = happySpecReduce_1 2# happyReduction_19+happyReduction_19 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> + happyIn8+ (TokKeyword KwPublic happy_var_1+ )}++happyReduce_20 = happySpecReduce_1 2# happyReduction_20+happyReduction_20 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> + happyIn8+ (TokKeyword KwModule happy_var_1+ )}++happyReduce_21 = happySpecReduce_1 2# happyReduction_21+happyReduction_21 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> + happyIn8+ (TokKeyword KwData happy_var_1+ )}++happyReduce_22 = happySpecReduce_1 2# happyReduction_22+happyReduction_22 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> + happyIn8+ (TokKeyword KwCoData happy_var_1+ )}++happyReduce_23 = happySpecReduce_1 2# happyReduction_23+happyReduction_23 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> + happyIn8+ (TokKeyword KwRecord happy_var_1+ )}++happyReduce_24 = happySpecReduce_1 2# happyReduction_24+happyReduction_24 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> + happyIn8+ (TokKeyword KwConstructor happy_var_1+ )}++happyReduce_25 = happySpecReduce_1 2# happyReduction_25+happyReduction_25 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> + happyIn8+ (TokKeyword KwField happy_var_1+ )}++happyReduce_26 = happySpecReduce_1 2# happyReduction_26+happyReduction_26 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> + happyIn8+ (TokKeyword KwInfix happy_var_1+ )}++happyReduce_27 = happySpecReduce_1 2# happyReduction_27+happyReduction_27 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> + happyIn8+ (TokKeyword KwInfixL happy_var_1+ )}++happyReduce_28 = happySpecReduce_1 2# happyReduction_28+happyReduction_28 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> + happyIn8+ (TokKeyword KwInfixR happy_var_1+ )}++happyReduce_29 = happySpecReduce_1 2# happyReduction_29+happyReduction_29 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> + happyIn8+ (TokKeyword KwMutual happy_var_1+ )}++happyReduce_30 = happySpecReduce_1 2# happyReduction_30+happyReduction_30 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> + happyIn8+ (TokKeyword KwAbstract happy_var_1+ )}++happyReduce_31 = happySpecReduce_1 2# happyReduction_31+happyReduction_31 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> + happyIn8+ (TokKeyword KwPrivate happy_var_1+ )}++happyReduce_32 = happySpecReduce_1 2# happyReduction_32+happyReduction_32 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> + happyIn8+ (TokKeyword KwProp happy_var_1+ )}++happyReduce_33 = happySpecReduce_1 2# happyReduction_33+happyReduction_33 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> + happyIn8+ (TokKeyword KwSet happy_var_1+ )}++happyReduce_34 = happySpecReduce_1 2# happyReduction_34+happyReduction_34 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> + happyIn8+ (TokKeyword KwForall happy_var_1+ )}++happyReduce_35 = happySpecReduce_1 2# happyReduction_35+happyReduction_35 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> + happyIn8+ (TokKeyword KwSyntax happy_var_1+ )}++happyReduce_36 = happySpecReduce_1 2# happyReduction_36+happyReduction_36 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> + happyIn8+ (TokKeyword KwOPTIONS happy_var_1+ )}++happyReduce_37 = happySpecReduce_1 2# happyReduction_37+happyReduction_37 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> + happyIn8+ (TokKeyword KwBUILTIN happy_var_1+ )}++happyReduce_38 = happySpecReduce_1 2# happyReduction_38+happyReduction_38 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> + happyIn8+ (TokKeyword KwIMPORT happy_var_1+ )}++happyReduce_39 = happySpecReduce_1 2# happyReduction_39+happyReduction_39 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> + happyIn8+ (TokKeyword KwCOMPILED happy_var_1+ )}++happyReduce_40 = happySpecReduce_1 2# happyReduction_40+happyReduction_40 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> + happyIn8+ (TokKeyword KwCOMPILED_DATA happy_var_1+ )}++happyReduce_41 = happySpecReduce_1 2# happyReduction_41+happyReduction_41 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> + happyIn8+ (TokKeyword KwCOMPILED_TYPE happy_var_1+ )}++happyReduce_42 = happySpecReduce_1 2# happyReduction_42+happyReduction_42 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EPIC happy_var_1) -> + happyIn8+ (TokKeyword KwCOMPILED_EPIC happy_var_1+ )}++happyReduce_43 = happySpecReduce_1 2# happyReduction_43+happyReduction_43 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> + happyIn8+ (TokKeyword KwIMPOSSIBLE happy_var_1+ )}++happyReduce_44 = happySpecReduce_1 2# happyReduction_44+happyReduction_44 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwETA happy_var_1) -> + happyIn8+ (TokKeyword KwETA happy_var_1+ )}++happyReduce_45 = happySpecReduce_1 2# happyReduction_45+happyReduction_45 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> + happyIn8+ (TokKeyword KwQuoteGoal happy_var_1+ )}++happyReduce_46 = happySpecReduce_1 2# happyReduction_46+happyReduction_46 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> + happyIn8+ (TokKeyword KwQuote happy_var_1+ )}++happyReduce_47 = happySpecReduce_1 2# happyReduction_47+happyReduction_47 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> + happyIn8+ (TokSetN happy_var_1+ )}++happyReduce_48 = happySpecReduce_1 2# happyReduction_48+happyReduction_48 happy_x_1+ = case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> + happyIn8+ (TokTeX happy_var_1+ )}++happyReduce_49 = happySpecReduce_1 2# happyReduction_49+happyReduction_49 happy_x_1+ = case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> + happyIn8+ (TokComment happy_var_1+ )}++happyReduce_50 = happySpecReduce_1 2# happyReduction_50+happyReduction_50 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> + happyIn8+ (TokSymbol SymEllipsis happy_var_1+ )}++happyReduce_51 = happySpecReduce_1 2# happyReduction_51+happyReduction_51 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> + happyIn8+ (TokSymbol SymDot happy_var_1+ )}++happyReduce_52 = happySpecReduce_1 2# happyReduction_52+happyReduction_52 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> + happyIn8+ (TokSymbol SymSemi happy_var_1+ )}++happyReduce_53 = happySpecReduce_1 2# happyReduction_53+happyReduction_53 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> + happyIn8+ (TokSymbol SymColon happy_var_1+ )}++happyReduce_54 = happySpecReduce_1 2# happyReduction_54+happyReduction_54 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> + happyIn8+ (TokSymbol SymEqual happy_var_1+ )}++happyReduce_55 = happySpecReduce_1 2# happyReduction_55+happyReduction_55 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> + happyIn8+ (TokSymbol SymUnderscore happy_var_1+ )}++happyReduce_56 = happySpecReduce_1 2# happyReduction_56+happyReduction_56 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> + happyIn8+ (TokSymbol SymQuestionMark happy_var_1+ )}++happyReduce_57 = happySpecReduce_1 2# happyReduction_57+happyReduction_57 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> + happyIn8+ (TokSymbol SymArrow happy_var_1+ )}++happyReduce_58 = happySpecReduce_1 2# happyReduction_58+happyReduction_58 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> + happyIn8+ (TokSymbol SymLambda happy_var_1+ )}++happyReduce_59 = happySpecReduce_1 2# happyReduction_59+happyReduction_59 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> + happyIn8+ (TokSymbol SymAs happy_var_1+ )}++happyReduce_60 = happySpecReduce_1 2# happyReduction_60+happyReduction_60 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> + happyIn8+ (TokSymbol SymBar happy_var_1+ )}++happyReduce_61 = happySpecReduce_1 2# happyReduction_61+happyReduction_61 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> + happyIn8+ (TokSymbol SymOpenParen happy_var_1+ )}++happyReduce_62 = happySpecReduce_1 2# happyReduction_62+happyReduction_62 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> + happyIn8+ (TokSymbol SymCloseParen happy_var_1+ )}++happyReduce_63 = happySpecReduce_1 2# happyReduction_63+happyReduction_63 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> + happyIn8+ (TokSymbol SymOpenBrace happy_var_1+ )}++happyReduce_64 = happySpecReduce_1 2# happyReduction_64+happyReduction_64 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> + happyIn8+ (TokSymbol SymCloseBrace happy_var_1+ )}++happyReduce_65 = happySpecReduce_1 2# happyReduction_65+happyReduction_65 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> + happyIn8+ (TokSymbol SymOpenVirtualBrace happy_var_1+ )}++happyReduce_66 = happySpecReduce_1 2# happyReduction_66+happyReduction_66 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> + happyIn8+ (TokSymbol SymCloseVirtualBrace happy_var_1+ )}++happyReduce_67 = happySpecReduce_1 2# happyReduction_67+happyReduction_67 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> + happyIn8+ (TokSymbol SymVirtualSemi happy_var_1+ )}++happyReduce_68 = happySpecReduce_1 2# happyReduction_68+happyReduction_68 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + happyIn8+ (TokSymbol SymOpenPragma happy_var_1+ )}++happyReduce_69 = happySpecReduce_1 2# happyReduction_69+happyReduction_69 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> + happyIn8+ (TokSymbol SymClosePragma happy_var_1+ )}++happyReduce_70 = happySpecReduce_1 2# happyReduction_70+happyReduction_70 happy_x_1+ = case happyOutTok happy_x_1 of { (TokId happy_var_1) -> + happyIn8+ (TokId happy_var_1+ )}++happyReduce_71 = happySpecReduce_1 2# happyReduction_71+happyReduction_71 happy_x_1+ = case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> + happyIn8+ (TokQId happy_var_1+ )}++happyReduce_72 = happySpecReduce_1 2# happyReduction_72+happyReduction_72 happy_x_1+ = case happyOutTok happy_x_1 of { (TokString happy_var_1) -> + happyIn8+ (TokString happy_var_1+ )}++happyReduce_73 = happySpecReduce_1 2# happyReduction_73+happyReduction_73 happy_x_1+ = case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> + happyIn8+ (TokLiteral happy_var_1+ )}++happyReduce_74 = happySpecReduce_0 3# happyReduction_74+happyReduction_74 = happyIn9+ (()+ )++happyReduce_75 = happySpecReduce_2 3# happyReduction_75+happyReduction_75 happy_x_2+ happy_x_1+ = happyIn9+ (()+ )++happyReduce_76 = happySpecReduce_2 4# happyReduction_76+happyReduction_76 happy_x_2+ happy_x_1+ = case happyOut11 happy_x_1 of { happy_var_1 -> + happyIn10+ (happy_var_1+ )}++happyReduce_77 = happySpecReduce_1 5# happyReduction_77+happyReduction_77 happy_x_1+ = case happyOut96 happy_x_1 of { happy_var_1 -> + happyIn11+ (([], happy_var_1)+ )}++happyReduce_78 = happySpecReduce_3 5# happyReduction_78+happyReduction_78 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + happyIn11+ (let (ps,m) = happy_var_3 in (happy_var_2 : ps, m)+ )}}++happyReduce_79 = happySpecReduce_1 6# happyReduction_79+happyReduction_79 happy_x_1+ = happyIn12+ (()+ )++happyReduce_80 = happyMonadReduce 1# 6# happyReduction_80+happyReduction_80 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (( popContext)+ ) (\r -> happyReturn (happyIn12 r))++happyReduce_81 = happySpecReduce_1 7# happyReduction_81+happyReduction_81 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> + happyIn13+ (happy_var_1+ )}++happyReduce_82 = happySpecReduce_2 7# happyReduction_82+happyReduction_82 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_2 of { (TokSymbol SymVirtualSemi happy_var_2) -> + happyIn13+ (happy_var_2+ )}++happyReduce_83 = happyMonadReduce 0# 8# happyReduction_83+happyReduction_83 (happyRest) tk+ = happyThen (( pushLexState imp_dir)+ ) (\r -> happyReturn (happyIn14 r))++happyReduce_84 = happyMonadReduce 1# 9# happyReduction_84+happyReduction_84 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> + ( case happy_var_1 of {+ LitInt _ n -> return $ fromIntegral n;+ _ -> fail $ "Expected integer"+ })}+ ) (\r -> happyReturn (happyIn15 r))++happyReduce_85 = happyMonadReduce 1# 10# happyReduction_85+happyReduction_85 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> + ( mkName happy_var_1)}+ ) (\r -> happyReturn (happyIn16 r))++happyReduce_86 = happySpecReduce_2 11# happyReduction_86+happyReduction_86 happy_x_2+ happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + case happyOut17 happy_x_2 of { happy_var_2 -> + happyIn17+ (happy_var_1 : happy_var_2+ )}}++happyReduce_87 = happySpecReduce_1 11# happyReduction_87+happyReduction_87 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn17+ ([happy_var_1]+ )}++happyReduce_88 = happySpecReduce_2 12# happyReduction_88+happyReduction_88 happy_x_2+ happy_x_1+ = case happyOut16 happy_x_2 of { happy_var_2 -> + happyIn18+ (Arg NotHidden Irrelevant happy_var_2+ )}++happyReduce_89 = happySpecReduce_1 12# happyReduction_89+happyReduction_89 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn18+ (defaultArg happy_var_1+ )}++happyReduce_90 = happySpecReduce_2 13# happyReduction_90+happyReduction_90 happy_x_2+ happy_x_1+ = case happyOut18 happy_x_1 of { happy_var_1 -> + case happyOut19 happy_x_2 of { happy_var_2 -> + happyIn19+ (happy_var_1 : happy_var_2+ )}}++happyReduce_91 = happySpecReduce_1 13# happyReduction_91+happyReduction_91 happy_x_1+ = case happyOut18 happy_x_1 of { happy_var_1 -> + happyIn19+ ([happy_var_1]+ )}++happyReduce_92 = happySpecReduce_2 14# happyReduction_92+happyReduction_92 happy_x_2+ happy_x_1+ = case happyOut18 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + happyIn20+ (happy_var_1 : happy_var_2+ )}}++happyReduce_93 = happySpecReduce_1 14# happyReduction_93+happyReduction_93 happy_x_1+ = case happyOut18 happy_x_1 of { happy_var_1 -> + happyIn20+ ([happy_var_1]+ )}++happyReduce_94 = happyReduce 4# 14# happyReduction_94+happyReduction_94 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut19 happy_x_2 of { happy_var_2 -> + case happyOut20 happy_x_4 of { happy_var_4 -> + happyIn20+ (map hide happy_var_2 ++ happy_var_4+ ) `HappyStk` happyRest}}++happyReduce_95 = happySpecReduce_3 14# happyReduction_95+happyReduction_95 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut19 happy_x_2 of { happy_var_2 -> + happyIn20+ (map hide happy_var_2+ )}++happyReduce_96 = happyReduce 5# 14# happyReduction_96+happyReduction_96 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut17 happy_x_3 of { happy_var_3 -> + case happyOut20 happy_x_5 of { happy_var_5 -> + happyIn20+ (map (Arg Hidden Irrelevant) happy_var_3 ++ happy_var_5+ ) `HappyStk` happyRest}}++happyReduce_97 = happyReduce 4# 14# happyReduction_97+happyReduction_97 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut17 happy_x_3 of { happy_var_3 -> + happyIn20+ (map (Arg Hidden Irrelevant) happy_var_3+ ) `HappyStk` happyRest}++happyReduce_98 = happyMonadReduce 1# 15# happyReduction_98+happyReduction_98 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> + ( mkQName happy_var_1)}+ ) (\r -> happyReturn (happyIn21 r))++happyReduce_99 = happySpecReduce_1 15# happyReduction_99+happyReduction_99 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn21+ (QName happy_var_1+ )}++happyReduce_100 = happySpecReduce_1 16# happyReduction_100+happyReduction_100 happy_x_1+ = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn22+ (happy_var_1+ )}++happyReduce_101 = happySpecReduce_1 17# happyReduction_101+happyReduction_101 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn23+ (happy_var_1+ )}++happyReduce_102 = happySpecReduce_1 17# happyReduction_102+happyReduction_102 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> + happyIn23+ (Name (getRange happy_var_1) [Hole]+ )}++happyReduce_103 = happySpecReduce_2 18# happyReduction_103+happyReduction_103 happy_x_2+ happy_x_1+ = case happyOut23 happy_x_1 of { happy_var_1 -> + case happyOut24 happy_x_2 of { happy_var_2 -> + happyIn24+ (happy_var_1 : happy_var_2+ )}}++happyReduce_104 = happySpecReduce_1 18# happyReduction_104+happyReduction_104 happy_x_1+ = case happyOut23 happy_x_1 of { happy_var_1 -> + happyIn24+ ([happy_var_1]+ )}++happyReduce_105 = happyMonadReduce 1# 19# happyReduction_105+happyReduction_105 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut31 happy_x_1 of { happy_var_1 -> + (+ let getName (Ident (QName x)) = Just x+ getName (Underscore r _) = Just (Name r [Hole])+ getName _ = Nothing+ in+ case partition isJust $ map getName happy_var_1 of+ (good, []) -> return $ map fromJust good+ _ -> fail $ "expected sequence of bound identifiers")}+ ) (\r -> happyReturn (happyIn25 r))++happyReduce_106 = happySpecReduce_0 20# happyReduction_106+happyReduction_106 = happyIn26+ ([]+ )++happyReduce_107 = happySpecReduce_2 20# happyReduction_107+happyReduction_107 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokString happy_var_1) -> + case happyOut26 happy_x_2 of { happy_var_2 -> + happyIn26+ (snd happy_var_1 : happy_var_2+ )}}++happyReduce_108 = happyMonadReduce 1# 21# happyReduction_108+happyReduction_108 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> + ( fmap QName (mkName happy_var_1))}+ ) (\r -> happyReturn (happyIn27 r))++happyReduce_109 = happySpecReduce_2 22# happyReduction_109+happyReduction_109 happy_x_2+ happy_x_1+ = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_2 of { happy_var_2 -> + happyIn28+ (Pi happy_var_1 happy_var_2+ )}}++happyReduce_110 = happySpecReduce_3 22# happyReduction_110+happyReduction_110 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut48 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn28+ (forallPi happy_var_2 happy_var_3+ )}}++happyReduce_111 = happySpecReduce_3 22# happyReduction_111+happyReduction_111 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut33 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn28+ (Fun (fuseRange happy_var_1 happy_var_3) (RawApp (getRange happy_var_1) happy_var_1) happy_var_3+ )}}++happyReduce_112 = happySpecReduce_1 22# happyReduction_112+happyReduction_112 happy_x_1+ = case happyOut29 happy_x_1 of { happy_var_1 -> + happyIn28+ (happy_var_1+ )}++happyReduce_113 = happyMonadReduce 1# 23# happyReduction_113+happyReduction_113 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut30 happy_x_1 of { happy_var_1 -> + ( case happy_var_1 of+ { [e] -> return e+ ; e : es -> return $ WithApp (fuseRange e es) e es+ ; [] -> fail "impossible: empty with expressions"+ })}+ ) (\r -> happyReturn (happyIn29 r))++happyReduce_114 = happySpecReduce_3 24# happyReduction_114+happyReduction_114 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut33 happy_x_1 of { happy_var_1 -> + case happyOut30 happy_x_3 of { happy_var_3 -> + happyIn30+ (RawApp (getRange happy_var_1) happy_var_1 : happy_var_3+ )}}++happyReduce_115 = happySpecReduce_1 24# happyReduction_115+happyReduction_115 happy_x_1+ = case happyOut31 happy_x_1 of { happy_var_1 -> + happyIn30+ ([RawApp (getRange happy_var_1) happy_var_1]+ )}++happyReduce_116 = happySpecReduce_1 25# happyReduction_116+happyReduction_116 happy_x_1+ = case happyOut32 happy_x_1 of { happy_var_1 -> + happyIn31+ ([happy_var_1]+ )}++happyReduce_117 = happySpecReduce_2 25# happyReduction_117+happyReduction_117 happy_x_2+ happy_x_1+ = case happyOut34 happy_x_1 of { happy_var_1 -> + case happyOut31 happy_x_2 of { happy_var_2 -> + happyIn31+ (happy_var_1 : happy_var_2+ )}}++happyReduce_118 = happySpecReduce_3 26# happyReduction_118+happyReduction_118 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> + case happyOut45 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn32+ (Lam (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3+ )}}}++happyReduce_119 = happySpecReduce_2 26# happyReduction_119+happyReduction_119 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> + case happyOut46 happy_x_2 of { happy_var_2 -> + happyIn32+ (let (bs, h) = happy_var_2; r = fuseRange happy_var_1 bs in+ if null bs then AbsurdLam r h else+ Lam r bs (AbsurdLam r h)+ )}}++happyReduce_120 = happyReduce 4# 26# happyReduction_120+happyReduction_120 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> + case happyOut118 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_4 of { happy_var_4 -> + happyIn32+ (Let (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4+ ) `HappyStk` happyRest}}}++happyReduce_121 = happySpecReduce_1 26# happyReduction_121+happyReduction_121 happy_x_1+ = case happyOut34 happy_x_1 of { happy_var_1 -> + happyIn32+ (happy_var_1+ )}++happyReduce_122 = happyReduce 4# 26# happyReduction_122+happyReduction_122 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_4 of { happy_var_4 -> + happyIn32+ (QuoteGoal (getRange (happy_var_1,happy_var_4)) happy_var_2 happy_var_4+ ) `HappyStk` happyRest}}}++happyReduce_123 = happySpecReduce_1 27# happyReduction_123+happyReduction_123 happy_x_1+ = case happyOut34 happy_x_1 of { happy_var_1 -> + happyIn33+ ([happy_var_1]+ )}++happyReduce_124 = happySpecReduce_2 27# happyReduction_124+happyReduction_124 happy_x_2+ happy_x_1+ = case happyOut34 happy_x_1 of { happy_var_1 -> + case happyOut33 happy_x_2 of { happy_var_2 -> + happyIn33+ (happy_var_1 : happy_var_2+ )}}++happyReduce_125 = happySpecReduce_1 28# happyReduction_125+happyReduction_125 happy_x_1+ = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn34+ (Ident happy_var_1+ )}++happyReduce_126 = happySpecReduce_1 28# happyReduction_126+happyReduction_126 happy_x_1+ = case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> + happyIn34+ (Lit happy_var_1+ )}++happyReduce_127 = happySpecReduce_1 28# happyReduction_127+happyReduction_127 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> + happyIn34+ (QuestionMark (getRange happy_var_1) Nothing+ )}++happyReduce_128 = happySpecReduce_1 28# happyReduction_128+happyReduction_128 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> + happyIn34+ (Underscore (getRange happy_var_1) Nothing+ )}++happyReduce_129 = happySpecReduce_1 28# happyReduction_129+happyReduction_129 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> + happyIn34+ (Prop (getRange happy_var_1)+ )}++happyReduce_130 = happySpecReduce_1 28# happyReduction_130+happyReduction_130 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> + happyIn34+ (Set (getRange happy_var_1)+ )}++happyReduce_131 = happySpecReduce_1 28# happyReduction_131+happyReduction_131 happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> + happyIn34+ (Quote (getRange happy_var_1)+ )}++happyReduce_132 = happySpecReduce_1 28# happyReduction_132+happyReduction_132 happy_x_1+ = case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> + happyIn34+ (SetN (getRange (fst happy_var_1)) (snd happy_var_1)+ )}++happyReduce_133 = happySpecReduce_3 28# happyReduction_133+happyReduction_133 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> + case happyOut28 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> + happyIn34+ (HiddenArg (fuseRange happy_var_1 happy_var_3) (unnamed happy_var_2)+ )}}}++happyReduce_134 = happyReduce 5# 28# happyReduction_134+happyReduction_134 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> + happyIn34+ (HiddenArg (fuseRange happy_var_1 happy_var_5) (named (show happy_var_2) happy_var_4)+ ) `HappyStk` happyRest}}}}++happyReduce_135 = happySpecReduce_3 28# happyReduction_135+happyReduction_135 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> + case happyOut28 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> + happyIn34+ (Paren (fuseRange happy_var_1 happy_var_3) happy_var_2+ )}}}++happyReduce_136 = happySpecReduce_2 28# happyReduction_136+happyReduction_136 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> + case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> + happyIn34+ (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r+ )}}++happyReduce_137 = happySpecReduce_2 28# happyReduction_137+happyReduction_137 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> + case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) -> + happyIn34+ (Absurd (fuseRange happy_var_1 happy_var_2)+ )}}++happyReduce_138 = happySpecReduce_3 28# happyReduction_138+happyReduction_138 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + case happyOut34 happy_x_3 of { happy_var_3 -> + happyIn34+ (As (fuseRange happy_var_1 happy_var_3) happy_var_1 happy_var_3+ )}}++happyReduce_139 = happySpecReduce_2 28# happyReduction_139+happyReduction_139 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> + case happyOut34 happy_x_2 of { happy_var_2 -> + happyIn34+ (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_140 = happyReduce 4# 28# happyReduction_140+happyReduction_140 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> + happyIn34+ (Rec (getRange (happy_var_1,happy_var_4)) happy_var_3+ ) `HappyStk` happyRest}}}++happyReduce_141 = happySpecReduce_0 29# happyReduction_141+happyReduction_141 = happyIn35+ ([]+ )++happyReduce_142 = happySpecReduce_1 29# happyReduction_142+happyReduction_142 happy_x_1+ = case happyOut36 happy_x_1 of { happy_var_1 -> + happyIn35+ (happy_var_1+ )}++happyReduce_143 = happySpecReduce_1 30# happyReduction_143+happyReduction_143 happy_x_1+ = case happyOut37 happy_x_1 of { happy_var_1 -> + happyIn36+ ([happy_var_1]+ )}++happyReduce_144 = happySpecReduce_3 30# happyReduction_144+happyReduction_144 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut36 happy_x_3 of { happy_var_3 -> + happyIn36+ (happy_var_1 : happy_var_3+ )}}++happyReduce_145 = happySpecReduce_3 31# happyReduction_145+happyReduction_145 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn37+ ((happy_var_1, happy_var_3)+ )}}++happyReduce_146 = happySpecReduce_2 32# happyReduction_146+happyReduction_146 happy_x_2+ happy_x_1+ = case happyOut39 happy_x_1 of { happy_var_1 -> + happyIn38+ (happy_var_1+ )}++happyReduce_147 = happySpecReduce_1 33# happyReduction_147+happyReduction_147 happy_x_1+ = case happyOut40 happy_x_1 of { happy_var_1 -> + happyIn39+ ({-TeleBind-} happy_var_1+ )}++happyReduce_148 = happySpecReduce_2 34# happyReduction_148+happyReduction_148 happy_x_2+ happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn40+ (happy_var_1 : happy_var_2+ )}}++happyReduce_149 = happySpecReduce_1 34# happyReduction_149+happyReduction_149 happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + happyIn40+ ([happy_var_1]+ )}++happyReduce_150 = happySpecReduce_3 35# happyReduction_150+happyReduction_150 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> + case happyOut42 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> + happyIn41+ (TypedBindings (fuseRange happy_var_1 happy_var_3) (Arg NotHidden Relevant happy_var_2)+ )}}}++happyReduce_151 = happySpecReduce_3 35# happyReduction_151+happyReduction_151 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> + case happyOut42 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> + happyIn41+ (TypedBindings (fuseRange happy_var_1 happy_var_3) (Arg Hidden Relevant happy_var_2)+ )}}}++happyReduce_152 = happySpecReduce_1 36# happyReduction_152+happyReduction_152 happy_x_1+ = case happyOut44 happy_x_1 of { happy_var_1 -> + happyIn42+ ([happy_var_1]+ )}++happyReduce_153 = happySpecReduce_3 36# happyReduction_153+happyReduction_153 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_3 of { happy_var_3 -> + happyIn42+ (happy_var_1 : happy_var_3+ )}}++happyReduce_154 = happySpecReduce_1 37# happyReduction_154+happyReduction_154 happy_x_1+ = case happyOut42 happy_x_1 of { happy_var_1 -> + happyIn43+ (happy_var_1+ )}++happyReduce_155 = happySpecReduce_3 37# happyReduction_155+happyReduction_155 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut28 happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_3 of { happy_var_3 -> + happyIn43+ (TNoBind happy_var_1 : happy_var_3+ )}}++happyReduce_156 = happySpecReduce_1 37# happyReduction_156+happyReduction_156 happy_x_1+ = case happyOut28 happy_x_1 of { happy_var_1 -> + happyIn43+ ([TNoBind happy_var_1]+ )}++happyReduce_157 = happySpecReduce_3 38# happyReduction_157+happyReduction_157 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut25 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn44+ (TBind (fuseRange happy_var_1 happy_var_3) (map mkBoundName_ happy_var_1) happy_var_3+ )}}++happyReduce_158 = happyMonadReduce 2# 39# happyReduction_158+happyReduction_158 (happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + (+ case last happy_var_1 of+ Left _ -> parseError "Absurd lambda cannot have a body."+ _ -> return [ b | Right b <- happy_var_1 ])}+ ) (\r -> happyReturn (happyIn45 r))++happyReduce_159 = happyMonadReduce 1# 40# happyReduction_159+happyReduction_159 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + (+ case last happy_var_1 of+ Right _ -> parseError "Missing body for lambda"+ Left h -> return ([ b | Right b <- init happy_var_1], h))}+ ) (\r -> happyReturn (happyIn46 r))++happyReduce_160 = happySpecReduce_2 41# happyReduction_160+happyReduction_160 happy_x_2+ happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut47 happy_x_2 of { happy_var_2 -> + happyIn47+ (map Right happy_var_1 ++ happy_var_2+ )}}++happyReduce_161 = happySpecReduce_2 41# happyReduction_161+happyReduction_161 happy_x_2+ happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut47 happy_x_2 of { happy_var_2 -> + happyIn47+ (Right (DomainFull happy_var_1) : happy_var_2+ )}}++happyReduce_162 = happySpecReduce_1 41# happyReduction_162+happyReduction_162 happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + happyIn47+ (map Right happy_var_1+ )}++happyReduce_163 = happySpecReduce_1 41# happyReduction_163+happyReduction_163 happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + happyIn47+ ([Right $ DomainFull happy_var_1]+ )}++happyReduce_164 = happySpecReduce_2 41# happyReduction_164+happyReduction_164 happy_x_2+ happy_x_1+ = happyIn47+ ([Left NotHidden]+ )++happyReduce_165 = happySpecReduce_2 41# happyReduction_165+happyReduction_165 happy_x_2+ happy_x_1+ = happyIn47+ ([Left Hidden]+ )++happyReduce_166 = happySpecReduce_2 42# happyReduction_166+happyReduction_166 happy_x_2+ happy_x_1+ = case happyOut49 happy_x_1 of { happy_var_1 -> + happyIn48+ (happy_var_1+ )}++happyReduce_167 = happySpecReduce_2 43# happyReduction_167+happyReduction_167 happy_x_2+ happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + happyIn49+ (happy_var_1 ++ happy_var_2+ )}}++happyReduce_168 = happySpecReduce_2 43# happyReduction_168+happyReduction_168 happy_x_2+ happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + happyIn49+ (DomainFull happy_var_1 : happy_var_2+ )}}++happyReduce_169 = happySpecReduce_1 43# happyReduction_169+happyReduction_169 happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + happyIn49+ (happy_var_1+ )}++happyReduce_170 = happySpecReduce_1 43# happyReduction_170+happyReduction_170 happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + happyIn49+ ([DomainFull happy_var_1]+ )}++happyReduce_171 = happySpecReduce_2 44# happyReduction_171+happyReduction_171 happy_x_2+ happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut50 happy_x_2 of { happy_var_2 -> + happyIn50+ (happy_var_1 ++ happy_var_2+ )}}++happyReduce_172 = happySpecReduce_2 44# happyReduction_172+happyReduction_172 happy_x_2+ happy_x_1+ = case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut50 happy_x_2 of { happy_var_2 -> + happyIn50+ (DomainFull happy_var_1 : happy_var_2+ )}}++happyReduce_173 = happySpecReduce_0 44# happyReduction_173+happyReduction_173 = happyIn50+ ([]+ )++happyReduce_174 = happySpecReduce_1 45# happyReduction_174+happyReduction_174 happy_x_1+ = case happyOut23 happy_x_1 of { happy_var_1 -> + happyIn51+ ([DomainFree NotHidden $ mkBoundName_ happy_var_1]+ )}++happyReduce_175 = happySpecReduce_3 45# happyReduction_175+happyReduction_175 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut25 happy_x_2 of { happy_var_2 -> + happyIn51+ (map (DomainFree Hidden . mkBoundName_) happy_var_2+ )}++happyReduce_176 = happySpecReduce_1 46# happyReduction_176+happyReduction_176 happy_x_1+ = case happyOut53 happy_x_1 of { happy_var_1 -> + happyIn52+ ((Nothing, happy_var_1)+ )}++happyReduce_177 = happyMonadReduce 3# 46# happyReduction_177+happyReduction_177 (happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut53 happy_x_3 of { happy_var_3 -> + ( isName "as" happy_var_1 >>+ return (Just (AsName happy_var_2 (getRange (fst happy_var_1))), happy_var_3))}}}+ ) (\r -> happyReturn (happyIn52 r))++happyReduce_178 = happyMonadReduce 1# 47# happyReduction_178+happyReduction_178 (happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut54 happy_x_1 of { happy_var_1 -> + ( verifyImportDirective happy_var_1)}+ ) (\r -> happyReturn (happyIn53 r))++happyReduce_179 = happySpecReduce_2 48# happyReduction_179+happyReduction_179 happy_x_2+ happy_x_1+ = case happyOut55 happy_x_2 of { happy_var_2 -> + happyIn54+ (happy_var_2 { publicOpen = True }+ )}++happyReduce_180 = happySpecReduce_1 48# happyReduction_180+happyReduction_180 happy_x_1+ = case happyOut55 happy_x_1 of { happy_var_1 -> + happyIn54+ (happy_var_1+ )}++happyReduce_181 = happySpecReduce_2 49# happyReduction_181+happyReduction_181 happy_x_2+ happy_x_1+ = case happyOut56 happy_x_1 of { happy_var_1 -> + case happyOut57 happy_x_2 of { happy_var_2 -> + happyIn55+ (ImportDirective (fuseRange (snd happy_var_1) (snd happy_var_2)) (fst happy_var_1) (fst happy_var_2) False+ )}}++happyReduce_182 = happySpecReduce_1 49# happyReduction_182+happyReduction_182 happy_x_1+ = case happyOut57 happy_x_1 of { happy_var_1 -> + happyIn55+ (ImportDirective (getRange (snd happy_var_1)) (Hiding []) (fst happy_var_1) False+ )}++happyReduce_183 = happySpecReduce_1 49# happyReduction_183+happyReduction_183 happy_x_1+ = case happyOut56 happy_x_1 of { happy_var_1 -> + happyIn55+ (ImportDirective (getRange (snd happy_var_1)) (fst happy_var_1) [] False+ )}++happyReduce_184 = happySpecReduce_0 49# happyReduction_184+happyReduction_184 = happyIn55+ (ImportDirective noRange (Hiding []) [] False+ )++happyReduce_185 = happyReduce 4# 50# happyReduction_185+happyReduction_185 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> + case happyOut62 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> + happyIn56+ ((Using happy_var_3 , fuseRange happy_var_1 happy_var_4)+ ) `HappyStk` happyRest}}}++happyReduce_186 = happyReduce 4# 50# happyReduction_186+happyReduction_186 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> + case happyOut63 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> + happyIn56+ ((Hiding happy_var_3 , fuseRange happy_var_1 happy_var_4)+ ) `HappyStk` happyRest}}}++happyReduce_187 = happyReduce 4# 51# happyReduction_187+happyReduction_187 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> + case happyOut58 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> + happyIn57+ ((happy_var_3 , fuseRange happy_var_1 happy_var_4)+ ) `HappyStk` happyRest}}}++happyReduce_188 = happySpecReduce_3 52# happyReduction_188+happyReduction_188 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut59 happy_x_1 of { happy_var_1 -> + case happyOut58 happy_x_3 of { happy_var_3 -> + happyIn58+ (happy_var_1 : happy_var_3+ )}}++happyReduce_189 = happySpecReduce_1 52# happyReduction_189+happyReduction_189 happy_x_1+ = case happyOut59 happy_x_1 of { happy_var_1 -> + happyIn58+ ([happy_var_1]+ )}++happyReduce_190 = happySpecReduce_3 53# happyReduction_190+happyReduction_190 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut60 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> + case happyOut16 happy_x_3 of { happy_var_3 -> + happyIn59+ (Renaming happy_var_1 happy_var_3 (getRange happy_var_2)+ )}}}++happyReduce_191 = happySpecReduce_2 54# happyReduction_191+happyReduction_191 happy_x_2+ happy_x_1+ = case happyOut16 happy_x_2 of { happy_var_2 -> + happyIn60+ (ImportedName happy_var_2+ )}++happyReduce_192 = happySpecReduce_3 54# happyReduction_192+happyReduction_192 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut16 happy_x_3 of { happy_var_3 -> + happyIn60+ (ImportedModule happy_var_3+ )}++happyReduce_193 = happySpecReduce_1 55# happyReduction_193+happyReduction_193 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn61+ (ImportedName happy_var_1+ )}++happyReduce_194 = happySpecReduce_2 55# happyReduction_194+happyReduction_194 happy_x_2+ happy_x_1+ = case happyOut16 happy_x_2 of { happy_var_2 -> + happyIn61+ (ImportedModule happy_var_2+ )}++happyReduce_195 = happySpecReduce_0 56# happyReduction_195+happyReduction_195 = happyIn62+ ([]+ )++happyReduce_196 = happySpecReduce_1 56# happyReduction_196+happyReduction_196 happy_x_1+ = case happyOut63 happy_x_1 of { happy_var_1 -> + happyIn62+ (happy_var_1+ )}++happyReduce_197 = happySpecReduce_1 57# happyReduction_197+happyReduction_197 happy_x_1+ = case happyOut61 happy_x_1 of { happy_var_1 -> + happyIn63+ ([happy_var_1]+ )}++happyReduce_198 = happySpecReduce_3 57# happyReduction_198+happyReduction_198 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut61 happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_3 of { happy_var_3 -> + happyIn63+ (happy_var_1 : happy_var_3+ )}}++happyReduce_199 = happyMonadReduce 3# 58# happyReduction_199+happyReduction_199 (happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut29 happy_x_1 of { happy_var_1 -> + case happyOut67 happy_x_2 of { happy_var_2 -> + case happyOut66 happy_x_3 of { happy_var_3 -> + ( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}}+ ) (\r -> happyReturn (happyIn64 r))++happyReduce_200 = happyReduce 4# 58# happyReduction_200+happyReduction_200 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> + case happyOut65 happy_x_2 of { happy_var_2 -> + case happyOut67 happy_x_3 of { happy_var_3 -> + case happyOut66 happy_x_4 of { happy_var_4 -> + happyIn64+ (Ellipsis (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3 happy_var_4+ ) `HappyStk` happyRest}}}}++happyReduce_201 = happySpecReduce_0 59# happyReduction_201+happyReduction_201 = happyIn65+ ([]+ )++happyReduce_202 = happyMonadReduce 3# 59# happyReduction_202+happyReduction_202 (happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut33 happy_x_2 of { happy_var_2 -> + case happyOut65 happy_x_3 of { happy_var_3 -> + ( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->+ return (p : happy_var_3))}}+ ) (\r -> happyReturn (happyIn65 r))++happyReduce_203 = happySpecReduce_0 60# happyReduction_203+happyReduction_203 = happyIn66+ ([]+ )++happyReduce_204 = happySpecReduce_2 60# happyReduction_204+happyReduction_204 happy_x_2+ happy_x_1+ = case happyOut28 happy_x_2 of { happy_var_2 -> + happyIn66+ (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }+ )}++happyReduce_205 = happySpecReduce_0 61# happyReduction_205+happyReduction_205 = happyIn67+ ([]+ )++happyReduce_206 = happySpecReduce_2 61# happyReduction_206+happyReduction_206 happy_x_2+ happy_x_1+ = case happyOut28 happy_x_2 of { happy_var_2 -> + happyIn67+ (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }+ )}++happyReduce_207 = happySpecReduce_0 62# happyReduction_207+happyReduction_207 = happyIn68+ (NoWhere+ )++happyReduce_208 = happySpecReduce_2 62# happyReduction_208+happyReduction_208 happy_x_2+ happy_x_1+ = case happyOut118 happy_x_2 of { happy_var_2 -> + happyIn68+ (AnyWhere happy_var_2+ )}++happyReduce_209 = happyReduce 4# 62# happyReduction_209+happyReduction_209 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_4 of { happy_var_4 -> + happyIn68+ (SomeWhere happy_var_2 happy_var_4+ ) `HappyStk` happyRest}}++happyReduce_210 = happySpecReduce_1 63# happyReduction_210+happyReduction_210 happy_x_1+ = case happyOut71 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_211 = happySpecReduce_1 63# happyReduction_211+happyReduction_211 happy_x_1+ = case happyOut80 happy_x_1 of { happy_var_1 -> + happyIn69+ (happy_var_1+ )}++happyReduce_212 = happySpecReduce_1 63# happyReduction_212+happyReduction_212 happy_x_1+ = case happyOut74 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_213 = happySpecReduce_1 63# happyReduction_213+happyReduction_213 happy_x_1+ = case happyOut76 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_214 = happySpecReduce_1 63# happyReduction_214+happyReduction_214 happy_x_1+ = case happyOut77 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_215 = happySpecReduce_1 63# happyReduction_215+happyReduction_215 happy_x_1+ = case happyOut79 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_216 = happySpecReduce_1 63# happyReduction_216+happyReduction_216 happy_x_1+ = case happyOut81 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_217 = happySpecReduce_1 63# happyReduction_217+happyReduction_217 happy_x_1+ = case happyOut82 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_218 = happySpecReduce_1 63# happyReduction_218+happyReduction_218 happy_x_1+ = case happyOut83 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_219 = happySpecReduce_1 63# happyReduction_219+happyReduction_219 happy_x_1+ = case happyOut84 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_220 = happySpecReduce_1 63# happyReduction_220+happyReduction_220 happy_x_1+ = case happyOut85 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_221 = happySpecReduce_1 63# happyReduction_221+happyReduction_221 happy_x_1+ = case happyOut91 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_222 = happySpecReduce_1 63# happyReduction_222+happyReduction_222 happy_x_1+ = case happyOut94 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_223 = happySpecReduce_1 63# happyReduction_223+happyReduction_223 happy_x_1+ = case happyOut93 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_224 = happySpecReduce_1 63# happyReduction_224+happyReduction_224 happy_x_1+ = case happyOut95 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_225 = happySpecReduce_1 63# happyReduction_225+happyReduction_225 happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_226 = happySpecReduce_1 63# happyReduction_226+happyReduction_226 happy_x_1+ = case happyOut86 happy_x_1 of { happy_var_1 -> + happyIn69+ ([happy_var_1]+ )}++happyReduce_227 = happySpecReduce_3 64# happyReduction_227+happyReduction_227 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut17 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn70+ (map (flip (TypeSig Relevant) happy_var_3) happy_var_1+ )}}++happyReduce_228 = happyReduce 4# 65# happyReduction_228+happyReduction_228 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_4 of { happy_var_4 -> + happyIn71+ (TypeSig Irrelevant happy_var_2 happy_var_4+ ) `HappyStk` happyRest}}++happyReduce_229 = happySpecReduce_3 65# happyReduction_229+happyReduction_229 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn71+ (TypeSig Relevant happy_var_1 happy_var_3+ )}}++happyReduce_230 = happySpecReduce_3 66# happyReduction_230+happyReduction_230 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut19 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn72+ (map (\ (Arg _ rel x) -> TypeSig rel x happy_var_3) happy_var_1+ )}}++happyReduce_231 = happySpecReduce_3 67# happyReduction_231+happyReduction_231 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut20 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn73+ (map (fmap (flip (TypeSig Relevant) happy_var_3)) happy_var_1+ )}}++happyReduce_232 = happySpecReduce_3 68# happyReduction_232+happyReduction_232 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut64 happy_x_1 of { happy_var_1 -> + case happyOut75 happy_x_2 of { happy_var_2 -> + case happyOut68 happy_x_3 of { happy_var_3 -> + happyIn74+ (FunClause happy_var_1 happy_var_2 happy_var_3+ )}}}++happyReduce_233 = happySpecReduce_2 69# happyReduction_233+happyReduction_233 happy_x_2+ happy_x_1+ = case happyOut28 happy_x_2 of { happy_var_2 -> + happyIn75+ (RHS happy_var_2+ )}++happyReduce_234 = happySpecReduce_0 69# happyReduction_234+happyReduction_234 = happyIn75+ (AbsurdRHS+ )++happyReduce_235 = happyReduce 7# 70# happyReduction_235+happyReduction_235 (happy_x_7 `HappyStk`+ happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOut28 happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> + case happyOut116 happy_x_7 of { happy_var_7 -> + happyIn76+ (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) Inductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7+ ) `HappyStk` happyRest}}}}}}++happyReduce_236 = happyReduce 7# 70# happyReduction_236+happyReduction_236 (happy_x_7 `HappyStk`+ happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOut28 happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> + case happyOut116 happy_x_7 of { happy_var_7 -> + happyIn76+ (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) CoInductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7+ ) `HappyStk` happyRest}}}}}}++happyReduce_237 = happyReduce 7# 71# happyReduction_237+happyReduction_237 (happy_x_7 `HappyStk`+ happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOut28 happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> + case happyOut117 happy_x_7 of { happy_var_7 -> + happyIn77+ (Record (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_2 (fst happy_var_7) (map addType happy_var_3) happy_var_5 (snd happy_var_7)+ ) `HappyStk` happyRest}}}}}}++happyReduce_238 = happySpecReduce_2 72# happyReduction_238+happyReduction_238 happy_x_2+ happy_x_1+ = case happyOut16 happy_x_2 of { happy_var_2 -> + happyIn78+ (happy_var_2+ )}++happyReduce_239 = happySpecReduce_3 73# happyReduction_239+happyReduction_239 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut24 happy_x_3 of { happy_var_3 -> + happyIn79+ (Infix (NonAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3+ )}}}++happyReduce_240 = happySpecReduce_3 73# happyReduction_240+happyReduction_240 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut24 happy_x_3 of { happy_var_3 -> + happyIn79+ (Infix (LeftAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3+ )}}}++happyReduce_241 = happySpecReduce_3 73# happyReduction_241+happyReduction_241 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut24 happy_x_3 of { happy_var_3 -> + happyIn79+ (Infix (RightAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3+ )}}}++happyReduce_242 = happySpecReduce_2 74# happyReduction_242+happyReduction_242 happy_x_2+ happy_x_1+ = case happyOut114 happy_x_2 of { happy_var_2 -> + happyIn80+ (let toField (Arg h rel (TypeSig _ x t)) = Field x (Arg h rel t) in map toField happy_var_2+ )}++happyReduce_243 = happySpecReduce_2 75# happyReduction_243+happyReduction_243 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> + case happyOut118 happy_x_2 of { happy_var_2 -> + happyIn81+ (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_244 = happySpecReduce_2 76# happyReduction_244+happyReduction_244 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> + case happyOut118 happy_x_2 of { happy_var_2 -> + happyIn82+ (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_245 = happySpecReduce_2 77# happyReduction_245+happyReduction_245 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> + case happyOut118 happy_x_2 of { happy_var_2 -> + happyIn83+ (Private (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_246 = happySpecReduce_2 78# happyReduction_246+happyReduction_246 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> + case happyOut112 happy_x_2 of { happy_var_2 -> + happyIn84+ (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_247 = happySpecReduce_2 79# happyReduction_247+happyReduction_247 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> + case happyOut110 happy_x_2 of { happy_var_2 -> + happyIn85+ (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2+ )}}++happyReduce_248 = happyMonadReduce 5# 80# happyReduction_248+happyReduction_248 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut88 happy_x_3 of { happy_var_3 -> + case happyOut87 happy_x_5 of { happy_var_5 -> + (+ case happy_var_2 of+ Name _ [_] -> case mkNotation happy_var_3 happy_var_5 of+ Left err -> parseError $ "malformed syntax declaration: " ++ err+ Right n -> return $ Syntax happy_var_2 n+ _ -> parseError "syntax declarations are allowed only for simple names (without holes)")}}}+ ) (\r -> happyReturn (happyIn86 r))++happyReduce_249 = happySpecReduce_1 81# happyReduction_249+happyReduction_249 happy_x_1+ = case happyOut90 happy_x_1 of { happy_var_1 -> + happyIn87+ ([happy_var_1]+ )}++happyReduce_250 = happySpecReduce_2 81# happyReduction_250+happyReduction_250 happy_x_2+ happy_x_1+ = case happyOut87 happy_x_1 of { happy_var_1 -> + case happyOut90 happy_x_2 of { happy_var_2 -> + happyIn87+ (happy_var_1 ++ [happy_var_2]+ )}}++happyReduce_251 = happySpecReduce_1 82# happyReduction_251+happyReduction_251 happy_x_1+ = case happyOut89 happy_x_1 of { happy_var_1 -> + happyIn88+ ([happy_var_1]+ )}++happyReduce_252 = happySpecReduce_2 82# happyReduction_252+happyReduction_252 happy_x_2+ happy_x_1+ = case happyOut88 happy_x_1 of { happy_var_1 -> + case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn88+ (happy_var_1 ++ [happy_var_2]+ )}}++happyReduce_253 = happySpecReduce_1 83# happyReduction_253+happyReduction_253 happy_x_1+ = case happyOut90 happy_x_1 of { happy_var_1 -> + happyIn89+ (ExprHole happy_var_1+ )}++happyReduce_254 = happyReduce 6# 83# happyReduction_254+happyReduction_254 (happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut90 happy_x_3 of { happy_var_3 -> + case happyOut90 happy_x_5 of { happy_var_5 -> + happyIn89+ (LambdaHole happy_var_3 happy_var_5+ ) `HappyStk` happyRest}}++happyReduce_255 = happySpecReduce_1 84# happyReduction_255+happyReduction_255 happy_x_1+ = case happyOutTok happy_x_1 of { (TokId happy_var_1) -> + happyIn90+ (snd happy_var_1+ )}++happyReduce_256 = happyReduce 4# 85# happyReduction_256+happyReduction_256 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> + case happyOut22 happy_x_2 of { happy_var_2 -> + case happyOut92 happy_x_3 of { happy_var_3 -> + case happyOut53 happy_x_4 of { happy_var_4 -> + happyIn91+ (let+ { m = happy_var_2+ ; es = happy_var_3+ ; dir = happy_var_4+ ; r = getRange (happy_var_1, m, es, dir)+ } in+ case es of+ { [] -> Open r m dir+ ; _ -> Private r [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) []+ (RawApp (fuseRange m es) (Ident m : es)) DoOpen dir+ ]+ }+ ) `HappyStk` happyRest}}}}++happyReduce_257 = happySpecReduce_0 86# happyReduction_257+happyReduction_257 = happyIn92+ ([]+ )++happyReduce_258 = happySpecReduce_2 86# happyReduction_258+happyReduction_258 happy_x_2+ happy_x_1+ = case happyOut34 happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { happy_var_2 -> + happyIn92+ (happy_var_1 : happy_var_2+ )}}++happyReduce_259 = happyReduce 6# 87# happyReduction_259+happyReduction_259 (happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOut28 happy_x_5 of { happy_var_5 -> + case happyOut53 happy_x_6 of { happy_var_6 -> + happyIn93+ (ModuleMacro (getRange (happy_var_1, happy_var_5, happy_var_6)) happy_var_2 (map addType happy_var_3) happy_var_5 DontOpen happy_var_6+ ) `HappyStk` happyRest}}}}}++happyReduce_260 = happyReduce 7# 87# happyReduction_260+happyReduction_260 (happy_x_7 `HappyStk`+ happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> + case happyOut16 happy_x_3 of { happy_var_3 -> + case happyOut50 happy_x_4 of { happy_var_4 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + case happyOut53 happy_x_7 of { happy_var_7 -> + happyIn93+ (ModuleMacro (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_3 (map addType happy_var_4) happy_var_6 DoOpen happy_var_7+ ) `HappyStk` happyRest}}}}}++happyReduce_261 = happySpecReduce_3 88# happyReduction_261+happyReduction_261 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> + case happyOut22 happy_x_2 of { happy_var_2 -> + case happyOut52 happy_x_3 of { happy_var_3 -> + happyIn94+ (Import (getRange (happy_var_1,happy_var_2,snd happy_var_3)) happy_var_2 (fst happy_var_3) DontOpen (snd happy_var_3)+ )}}}++happyReduce_262 = happyReduce 4# 88# happyReduction_262+happyReduction_262 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> + case happyOut22 happy_x_3 of { happy_var_3 -> + case happyOut52 happy_x_4 of { happy_var_4 -> + happyIn94+ (Import (getRange (happy_var_1,happy_var_3,snd happy_var_4)) happy_var_3 (fst happy_var_4) DoOpen (snd happy_var_4)+ ) `HappyStk` happyRest}}}++happyReduce_263 = happyReduce 5# 89# happyReduction_263+happyReduction_263 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> + case happyOut16 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> + case happyOut119 happy_x_5 of { happy_var_5 -> + happyIn95+ (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5+ ) `HappyStk` happyRest}}}}}++happyReduce_264 = happySpecReduce_2 90# happyReduction_264+happyReduction_264 happy_x_2+ happy_x_1+ = case happyOut97 happy_x_2 of { happy_var_2 -> + happyIn96+ ([happy_var_2]+ )}++happyReduce_265 = happySpecReduce_3 90# happyReduction_265+happyReduction_265 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut94 happy_x_2 of { happy_var_2 -> + case happyOut96 happy_x_3 of { happy_var_3 -> + happyIn96+ (happy_var_2 : happy_var_3+ )}}++happyReduce_266 = happySpecReduce_3 90# happyReduction_266+happyReduction_266 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut91 happy_x_2 of { happy_var_2 -> + case happyOut96 happy_x_3 of { happy_var_3 -> + happyIn96+ (happy_var_2 : happy_var_3+ )}}++happyReduce_267 = happyReduce 5# 91# happyReduction_267+happyReduction_267 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> + case happyOut22 happy_x_2 of { happy_var_2 -> + case happyOut50 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> + case happyOut119 happy_x_5 of { happy_var_5 -> + happyIn97+ (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5+ ) `HappyStk` happyRest}}}}}++happyReduce_268 = happySpecReduce_1 92# happyReduction_268+happyReduction_268 happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + happyIn98+ (Pragma happy_var_1+ )}++happyReduce_269 = happySpecReduce_1 93# happyReduction_269+happyReduction_269 happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + happyIn99+ (happy_var_1+ )}++happyReduce_270 = happySpecReduce_1 94# happyReduction_270+happyReduction_270 happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_271 = happySpecReduce_1 94# happyReduction_271+happyReduction_271 happy_x_1+ = case happyOut103 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_272 = happySpecReduce_1 94# happyReduction_272+happyReduction_272 happy_x_1+ = case happyOut105 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_273 = happySpecReduce_1 94# happyReduction_273+happyReduction_273 happy_x_1+ = case happyOut104 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_274 = happySpecReduce_1 94# happyReduction_274+happyReduction_274 happy_x_1+ = case happyOut106 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_275 = happySpecReduce_1 94# happyReduction_275+happyReduction_275 happy_x_1+ = case happyOut108 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_276 = happySpecReduce_1 94# happyReduction_276+happyReduction_276 happy_x_1+ = case happyOut109 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_277 = happySpecReduce_1 94# happyReduction_277+happyReduction_277 happy_x_1+ = case happyOut107 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1+ )}++happyReduce_278 = happyReduce 4# 95# happyReduction_278+happyReduction_278 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut26 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> + happyIn101+ (OptionsPragma (fuseRange happy_var_1 happy_var_4) happy_var_3+ ) `HappyStk` happyRest}}}++happyReduce_279 = happyReduce 5# 96# happyReduction_279+happyReduction_279 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOutTok happy_x_3 of { (TokString happy_var_3) -> + case happyOut27 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> + happyIn102+ (BuiltinPragma (fuseRange happy_var_1 happy_var_5) (snd happy_var_3) (Ident happy_var_4)+ ) `HappyStk` happyRest}}}}++happyReduce_280 = happyReduce 5# 97# happyReduction_280+happyReduction_280 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut27 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> + happyIn103+ (CompiledPragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)+ ) `HappyStk` happyRest}}}}++happyReduce_281 = happyReduce 5# 98# happyReduction_281+happyReduction_281 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut27 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> + happyIn104+ (CompiledTypePragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)+ ) `HappyStk` happyRest}}}}++happyReduce_282 = happyReduce 6# 99# happyReduction_282+happyReduction_282 (happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut27 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokString happy_var_4) -> + case happyOut26 happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> + happyIn105+ (CompiledDataPragma (fuseRange happy_var_1 happy_var_6) happy_var_3 (snd happy_var_4) happy_var_5+ ) `HappyStk` happyRest}}}}}++happyReduce_283 = happyReduce 5# 100# happyReduction_283+happyReduction_283 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut27 happy_x_3 of { happy_var_3 -> + case happyOut26 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> + happyIn106+ (CompiledEpicPragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)+ ) `HappyStk` happyRest}}}}++happyReduce_284 = happyReduce 4# 101# happyReduction_284+happyReduction_284 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOut27 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> + happyIn107+ (EtaPragma (fuseRange happy_var_1 happy_var_4) happy_var_3+ ) `HappyStk` happyRest}}}++happyReduce_285 = happyMonadReduce 4# 102# happyReduction_285+happyReduction_285 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest) tk+ = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOutTok happy_x_3 of { (TokString happy_var_3) -> + case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> + ( let s = snd happy_var_3 in+ if validHaskellModuleName s+ then return $ ImportPragma (fuseRange happy_var_1 happy_var_4) s+ else parseError $ "Malformed module name: " ++ s ++ ".")}}}+ ) (\r -> happyReturn (happyIn108 r))++happyReduce_286 = happySpecReduce_3 103# happyReduction_286+happyReduction_286 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> + case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> + happyIn109+ (ImpossiblePragma (fuseRange happy_var_1 happy_var_3)+ )}}++happyReduce_287 = happyReduce 5# 104# happyReduction_287+happyReduction_287 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut111 happy_x_3 of { happy_var_3 -> + happyIn110+ (reverse happy_var_3+ ) `HappyStk` happyRest}++happyReduce_288 = happyReduce 4# 105# happyReduction_288+happyReduction_288 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut111 happy_x_1 of { happy_var_1 -> + case happyOut70 happy_x_4 of { happy_var_4 -> + happyIn111+ (reverse happy_var_4 ++ happy_var_1+ ) `HappyStk` happyRest}}++happyReduce_289 = happySpecReduce_2 105# happyReduction_289+happyReduction_289 happy_x_2+ happy_x_1+ = case happyOut70 happy_x_2 of { happy_var_2 -> + happyIn111+ (reverse happy_var_2+ )}++happyReduce_290 = happyReduce 5# 106# happyReduction_290+happyReduction_290 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut113 happy_x_3 of { happy_var_3 -> + happyIn112+ (reverse happy_var_3+ ) `HappyStk` happyRest}++happyReduce_291 = happyReduce 4# 107# happyReduction_291+happyReduction_291 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut113 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_4 of { happy_var_4 -> + happyIn113+ (reverse happy_var_4 ++ happy_var_1+ ) `HappyStk` happyRest}}++happyReduce_292 = happySpecReduce_2 107# happyReduction_292+happyReduction_292 happy_x_2+ happy_x_1+ = case happyOut72 happy_x_2 of { happy_var_2 -> + happyIn113+ (reverse happy_var_2+ )}++happyReduce_293 = happyReduce 5# 108# happyReduction_293+happyReduction_293 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn114+ (reverse happy_var_3+ ) `HappyStk` happyRest}++happyReduce_294 = happyReduce 4# 109# happyReduction_294+happyReduction_294 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut115 happy_x_1 of { happy_var_1 -> + case happyOut73 happy_x_4 of { happy_var_4 -> + happyIn115+ (reverse happy_var_4 ++ happy_var_1+ ) `HappyStk` happyRest}}++happyReduce_295 = happySpecReduce_2 109# happyReduction_295+happyReduction_295 happy_x_2+ happy_x_1+ = case happyOut73 happy_x_2 of { happy_var_2 -> + happyIn115+ (reverse happy_var_2+ )}++happyReduce_296 = happyReduce 4# 110# happyReduction_296+happyReduction_296 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = happyIn116+ ([]+ ) `HappyStk` happyRest++happyReduce_297 = happySpecReduce_1 110# happyReduction_297+happyReduction_297 happy_x_1+ = case happyOut110 happy_x_1 of { happy_var_1 -> + happyIn116+ (happy_var_1+ )}++happyReduce_298 = happyReduce 4# 111# happyReduction_298+happyReduction_298 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = happyIn117+ ((Nothing, [])+ ) `HappyStk` happyRest++happyReduce_299 = happyReduce 6# 111# happyReduction_299+happyReduction_299 (happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut78 happy_x_4 of { happy_var_4 -> + happyIn117+ ((Just happy_var_4, [])+ ) `HappyStk` happyRest}++happyReduce_300 = happyReduce 8# 111# happyReduction_300+happyReduction_300 (happy_x_8 `HappyStk`+ happy_x_7 `HappyStk`+ happy_x_6 `HappyStk`+ happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut78 happy_x_4 of { happy_var_4 -> + case happyOut120 happy_x_6 of { happy_var_6 -> + happyIn117+ ((Just happy_var_4, reverse happy_var_6)+ ) `HappyStk` happyRest}}++happyReduce_301 = happyReduce 5# 111# happyReduction_301+happyReduction_301 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut120 happy_x_3 of { happy_var_3 -> + happyIn117+ ((Nothing, reverse happy_var_3)+ ) `HappyStk` happyRest}++happyReduce_302 = happyReduce 5# 112# happyReduction_302+happyReduction_302 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut120 happy_x_3 of { happy_var_3 -> + happyIn118+ (reverse happy_var_3+ ) `HappyStk` happyRest}++happyReduce_303 = happyReduce 4# 113# happyReduction_303+happyReduction_303 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = happyIn119+ ([]+ ) `HappyStk` happyRest++happyReduce_304 = happySpecReduce_1 113# happyReduction_304+happyReduction_304 happy_x_1+ = case happyOut118 happy_x_1 of { happy_var_1 -> + happyIn119+ (happy_var_1+ )}++happyReduce_305 = happyReduce 4# 114# happyReduction_305+happyReduction_305 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut120 happy_x_1 of { happy_var_1 -> + case happyOut69 happy_x_4 of { happy_var_4 -> + happyIn120+ (reverse happy_var_4 ++ happy_var_1+ ) `HappyStk` happyRest}}++happyReduce_306 = happySpecReduce_2 114# happyReduction_306+happyReduction_306 happy_x_2+ happy_x_1+ = case happyOut69 happy_x_2 of { happy_var_2 -> + happyIn120+ (reverse happy_var_2+ )}++happyNewToken action sts stk+ = lexer(\tk -> + let cont i = happyDoAction i tk action sts stk in+ case tk of {+ TokEOF -> happyDoAction 69# tk action sts stk;+ TokKeyword KwLet happy_dollar_dollar -> cont 1#;+ TokKeyword KwIn happy_dollar_dollar -> cont 2#;+ TokKeyword KwWhere happy_dollar_dollar -> cont 3#;+ TokKeyword KwWith happy_dollar_dollar -> cont 4#;+ TokKeyword KwRewrite happy_dollar_dollar -> cont 5#;+ TokKeyword KwPostulate happy_dollar_dollar -> cont 6#;+ TokKeyword KwPrimitive happy_dollar_dollar -> cont 7#;+ TokKeyword KwOpen happy_dollar_dollar -> cont 8#;+ TokKeyword KwImport happy_dollar_dollar -> cont 9#;+ TokKeyword KwUsing happy_dollar_dollar -> cont 10#;+ TokKeyword KwHiding happy_dollar_dollar -> cont 11#;+ TokKeyword KwRenaming happy_dollar_dollar -> cont 12#;+ TokKeyword KwTo happy_dollar_dollar -> cont 13#;+ TokKeyword KwPublic happy_dollar_dollar -> cont 14#;+ TokKeyword KwModule happy_dollar_dollar -> cont 15#;+ TokKeyword KwData happy_dollar_dollar -> cont 16#;+ TokKeyword KwCoData happy_dollar_dollar -> cont 17#;+ TokKeyword KwRecord happy_dollar_dollar -> cont 18#;+ TokKeyword KwConstructor happy_dollar_dollar -> cont 19#;+ TokKeyword KwField happy_dollar_dollar -> cont 20#;+ TokKeyword KwInfix happy_dollar_dollar -> cont 21#;+ TokKeyword KwInfixL happy_dollar_dollar -> cont 22#;+ TokKeyword KwInfixR happy_dollar_dollar -> cont 23#;+ TokKeyword KwMutual happy_dollar_dollar -> cont 24#;+ TokKeyword KwAbstract happy_dollar_dollar -> cont 25#;+ TokKeyword KwPrivate happy_dollar_dollar -> cont 26#;+ TokKeyword KwProp happy_dollar_dollar -> cont 27#;+ TokKeyword KwSet happy_dollar_dollar -> cont 28#;+ TokKeyword KwForall happy_dollar_dollar -> cont 29#;+ TokKeyword KwSyntax happy_dollar_dollar -> cont 30#;+ TokKeyword KwOPTIONS happy_dollar_dollar -> cont 31#;+ TokKeyword KwBUILTIN happy_dollar_dollar -> cont 32#;+ TokKeyword KwIMPORT happy_dollar_dollar -> cont 33#;+ TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 34#;+ TokKeyword KwETA happy_dollar_dollar -> cont 35#;+ TokKeyword KwCOMPILED happy_dollar_dollar -> cont 36#;+ TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 37#;+ TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 38#;+ TokKeyword KwCOMPILED_EPIC happy_dollar_dollar -> cont 39#;+ TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 40#;+ TokKeyword KwQuote happy_dollar_dollar -> cont 41#;+ TokSetN happy_dollar_dollar -> cont 42#;+ TokTeX happy_dollar_dollar -> cont 43#;+ TokComment happy_dollar_dollar -> cont 44#;+ TokSymbol SymEllipsis happy_dollar_dollar -> cont 45#;+ TokSymbol SymDot happy_dollar_dollar -> cont 46#;+ TokSymbol SymSemi happy_dollar_dollar -> cont 47#;+ TokSymbol SymColon happy_dollar_dollar -> cont 48#;+ TokSymbol SymEqual happy_dollar_dollar -> cont 49#;+ TokSymbol SymUnderscore happy_dollar_dollar -> cont 50#;+ TokSymbol SymQuestionMark happy_dollar_dollar -> cont 51#;+ TokSymbol SymArrow happy_dollar_dollar -> cont 52#;+ TokSymbol SymLambda happy_dollar_dollar -> cont 53#;+ TokSymbol SymAs happy_dollar_dollar -> cont 54#;+ TokSymbol SymBar happy_dollar_dollar -> cont 55#;+ TokSymbol SymOpenParen happy_dollar_dollar -> cont 56#;+ TokSymbol SymCloseParen happy_dollar_dollar -> cont 57#;+ TokSymbol SymOpenBrace happy_dollar_dollar -> cont 58#;+ TokSymbol SymCloseBrace happy_dollar_dollar -> cont 59#;+ TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 60#;+ TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 61#;+ TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 62#;+ TokSymbol SymOpenPragma happy_dollar_dollar -> cont 63#;+ TokSymbol SymClosePragma happy_dollar_dollar -> cont 64#;+ TokId happy_dollar_dollar -> cont 65#;+ TokQId happy_dollar_dollar -> cont 66#;+ TokString happy_dollar_dollar -> cont 67#;+ TokLiteral happy_dollar_dollar -> cont 68#;+ _ -> happyError' tk+ })++happyError_ tk = happyError' tk++happyThen :: () => Parser a -> (a -> Parser b) -> Parser b+happyThen = (>>=)+happyReturn :: () => a -> Parser a+happyReturn = (return)+happyThen1 = happyThen+happyReturn1 :: () => a -> Parser a+happyReturn1 = happyReturn+happyError' :: () => (Token) -> Parser a+happyError' tk = (\token -> happyError) tk++tokensParser = happySomeParser where+ happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))++exprParser = happySomeParser where+ happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut28 x))++moduleParser = happySomeParser where+ happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut10 x))++happySeq = happyDontSeq+++{--------------------------------------------------------------------------+ Parsers+ --------------------------------------------------------------------------}++-- | Parse the token stream. Used by the TeX compiler.+tokensParser :: Parser [Token]++-- | Parse an expression. Could be used in interactions.+exprParser :: Parser Expr++-- | Parse a module.+moduleParser :: Parser Module+++{--------------------------------------------------------------------------+ Happy stuff+ --------------------------------------------------------------------------}++-- | Required by Happy.+happyError :: Parser a+happyError = parseError "Parse error"+++{--------------------------------------------------------------------------+ Utility functions+ --------------------------------------------------------------------------}++-- | Create a name from a string.++mkName :: (Interval, String) -> Parser Name+mkName (i, s) = do+ let xs = parts s+ mapM_ isValidId xs+ unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"+ return $ Name (getRange i) xs+ where+ parts :: String -> [NamePart]+ parts "" = []+ parts ('_' : s) = Hole : parts s+ parts s = Id x : parts s'+ where (x, s') = break (== '_') s++ isValidId Hole = return ()+ isValidId (Id x) = case parse defaultParseFlags [0] (lexer return) x of+ ParseOk _ (TokId _) -> return ()+ _ -> fail $ "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"++ -- we know that there are no two Ids in a row+ alternating (Hole : Hole : _) = False+ alternating (_ : xs) = alternating xs+ alternating [] = True++-- | Create a qualified name from a list of strings+mkQName :: [(Interval, String)] -> Parser QName+mkQName ss = do+ xs <- mapM mkName ss+ return $ foldr Qual (QName $ last xs) (init xs)++-- | Match a particular name.+isName :: String -> (Interval, String) -> Parser ()+isName s (_,s')+ | s == s' = return ()+ | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'++-- | Build a forall pi (forall x y z -> ...)+forallPi :: [LamBinding] -> Expr -> Expr+forallPi bs e = Pi (map addType bs) e++-- | Converts lambda bindings to typed bindings.+addType :: LamBinding -> TypedBindings+addType (DomainFull b) = b+addType (DomainFree h x) = TypedBindings r $ Arg h Relevant [TBind r [x] $ Underscore r Nothing]+ where r = getRange x++-- | Check that an import directive doesn't contain repeated names+verifyImportDirective :: ImportDirective -> Parser ImportDirective+verifyImportDirective i =+ case filter ((>1) . length)+ $ group+ $ sort xs+ of+ [] -> return i+ yss -> let Just pos = rStart $ getRange $ head $ concat yss in+ parseErrorAt pos $+ "repeated name" ++ s ++ " in import directive: " +++ concat (intersperse ", " $ map (show . head) yss)+ where+ s = case yss of+ [_] -> ""+ _ -> "s"+ where+ xs = names (usingOrHiding i) ++ map renFrom (renaming i)+ names (Using xs) = xs+ names (Hiding xs) = xs++-- | Breaks up a string into substrings. Returns every maximal+-- subsequence of zero or more characters distinct from @'.'@.+--+-- > splitOnDots "" == [""]+-- > splitOnDots "foo.bar" == ["foo", "bar"]+-- > splitOnDots ".foo.bar" == ["", "foo", "bar"]+-- > splitOnDots "foo.bar." == ["foo", "bar", ""]+-- > splitOnDots "foo..bar" == ["foo", "", "bar"]+splitOnDots :: String -> [String]+splitOnDots "" = [""]+splitOnDots ('.' : s) = [] : splitOnDots s+splitOnDots (c : s) = case splitOnDots s of+ p : ps -> (c : p) : ps++prop_splitOnDots = and+ [ splitOnDots "" == [""]+ , splitOnDots "foo.bar" == ["foo", "bar"]+ , splitOnDots ".foo.bar" == ["", "foo", "bar"]+ , splitOnDots "foo.bar." == ["foo", "bar", ""]+ , splitOnDots "foo..bar" == ["foo", "", "bar"]+ ]++-- | Returns 'True' iff the name is a valid Haskell (hierarchical)+-- module name.+validHaskellModuleName :: String -> Bool+validHaskellModuleName = all ok . splitOnDots+ where+ -- Checks if a dot-less module name is well-formed.+ ok :: String -> Bool+ ok [] = False+ ok (c : s) =+ isUpper c &&+ all (\c -> isLower c || c == '_' ||+ isUpper c ||+ generalCategory c == DecimalNumber ||+ c == '\'')+ s++{--------------------------------------------------------------------------+ Patterns+ --------------------------------------------------------------------------}++-- | Turn an expression into a left hand side.+exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)+exprToLHS e = case e of+ WithApp r e es -> LHS <$> exprToPattern e <*> mapM exprToPattern es+ _ -> LHS <$> exprToPattern e <*> return []++-- | Turn an expression into a pattern. Fails if the expression is not a+-- valid pattern.+exprToPattern :: Expr -> Parser Pattern+exprToPattern e =+ case e of+ Ident x -> return $ IdentP x+ App _ e1 e2 -> AppP <$> exprToPattern e1+ <*> T.mapM (T.mapM exprToPattern) e2+ Paren r e -> ParenP r+ <$> exprToPattern e+ Underscore r _ -> return $ WildP r+ Absurd r -> return $ AbsurdP r+ As r x e -> AsP r x <$> exprToPattern e+ Dot r (HiddenArg _ e) -> return $ HiddenP r $ fmap (DotP r) e+ Dot r e -> return $ DotP r e+ Lit l -> return $ LitP l+ HiddenArg r e -> HiddenP r <$> T.mapM exprToPattern e+ RawApp r es -> RawAppP r <$> mapM exprToPattern es+ OpApp r x es -> OpAppP r x <$> mapM exprToPattern es+ _ ->+ let Just pos = rStart $ getRange e in+ parseErrorAt pos $ "Not a valid pattern: " ++ show e++{--------------------------------------------------------------------------+ Tests+ --------------------------------------------------------------------------}++-- | Test suite.+tests :: IO Bool+tests = runTests "Agda.Syntax.Parser.Parser"+ [ quickCheck' prop_splitOnDots+ ]+{-# LINE 1 "templates/GenericTemplate.hs" #-}+{-# LINE 1 "templates/GenericTemplate.hs" #-}+{-# LINE 1 "<built-in>" #-}+{-# LINE 1 "<command-line>" #-}+{-# LINE 1 "templates/GenericTemplate.hs" #-}+-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp ++{-# LINE 30 "templates/GenericTemplate.hs" #-}+++data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList++++++{-# LINE 51 "templates/GenericTemplate.hs" #-}++{-# LINE 61 "templates/GenericTemplate.hs" #-}++{-# LINE 70 "templates/GenericTemplate.hs" #-}++infixr 9 `HappyStk`+data HappyStk a = HappyStk a (HappyStk a)++-----------------------------------------------------------------------------+-- starting the parse++happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll++-----------------------------------------------------------------------------+-- Accepting the parse++-- If the current token is 0#, it means we've just accepted a partial+-- parse (a %partial parser). We must ignore the saved token on the top of+-- the stack in this case.+happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =+ happyReturn1 ans+happyAccept j tk st sts (HappyStk ans _) = + (happyTcHack j (happyTcHack st)) (happyReturn1 ans)++-----------------------------------------------------------------------------+-- Arrays only: do the next action++++happyDoAction i tk st+ = {- nothing -}+++ case action of+ 0# -> {- nothing -}+ happyFail i tk st+ -1# -> {- nothing -}+ happyAccept i tk st+ n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}++ (happyReduceArr Happy_Data_Array.! rule) i tk st+ where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))+ n -> {- nothing -}+++ happyShift new_state i tk st+ where !(new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))+ where !(off) = indexShortOffAddr happyActOffsets st+ !(off_i) = (off Happy_GHC_Exts.+# i)+ check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))+ then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i)+ else False+ !(action)+ | check = indexShortOffAddr happyTable off_i+ | otherwise = indexShortOffAddr happyDefActions st++{-# LINE 130 "templates/GenericTemplate.hs" #-}+++indexShortOffAddr (HappyA# arr) off =+ Happy_GHC_Exts.narrow16Int# i+ where+ !i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)+ !high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))+ !low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))+ !off' = off Happy_GHC_Exts.*# 2#++++++data HappyAddr = HappyA# Happy_GHC_Exts.Addr#+++++-----------------------------------------------------------------------------+-- HappyState data type (not arrays)++{-# LINE 163 "templates/GenericTemplate.hs" #-}++-----------------------------------------------------------------------------+-- Shifting a token++happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =+ let !(i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in+-- trace "shifting the error token" $+ happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)++happyShift new_state i tk st sts stk =+ happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)++-- happyReduce is specialised for the common cases.++happySpecReduce_0 i fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happySpecReduce_0 nt fn j tk st@((action)) sts stk+ = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)++happySpecReduce_1 i fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')+ = let r = fn v1 in+ happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))++happySpecReduce_2 i fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')+ = let r = fn v1 v2 in+ happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))++happySpecReduce_3 i fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')+ = let r = fn v1 v2 v3 in+ happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))++happyReduce k i fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happyReduce k nt fn j tk st sts stk+ = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of+ sts1@((HappyCons (st1@(action)) (_))) ->+ let r = fn stk in -- it doesn't hurt to always seq here...+ happyDoSeq r (happyGoto nt j tk st1 sts1 r)++happyMonadReduce k nt fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happyMonadReduce k nt fn j tk st sts stk =+ happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))+ where !(sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))+ drop_stk = happyDropStk k stk++happyMonad2Reduce k nt fn 0# tk st sts stk+ = happyFail 0# tk st sts stk+happyMonad2Reduce k nt fn j tk st sts stk =+ happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))+ where !(sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))+ drop_stk = happyDropStk k stk++ !(off) = indexShortOffAddr happyGotoOffsets st1+ !(off_i) = (off Happy_GHC_Exts.+# nt)+ !(new_state) = indexShortOffAddr happyTable off_i+++++happyDrop 0# l = l+happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t++happyDropStk 0# l = l+happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs++-----------------------------------------------------------------------------+-- Moving to a new state after a reduction+++happyGoto nt j tk st = + {- nothing -}+ happyDoAction j tk new_state+ where !(off) = indexShortOffAddr happyGotoOffsets st+ !(off_i) = (off Happy_GHC_Exts.+# nt)+ !(new_state) = indexShortOffAddr happyTable off_i+++++-----------------------------------------------------------------------------+-- Error recovery (0# is the error token)++-- parse error if we are in recovery and we fail again+happyFail 0# tk old_st _ stk =+-- trace "failing" $ + happyError_ tk++{- We don't need state discarding for our restricted implementation of+ "error". In fact, it can cause some bogus parses, so I've disabled it+ for now --SDM++-- discard a state+happyFail 0# tk old_st (HappyCons ((action)) (sts)) + (saved_tok `HappyStk` _ `HappyStk` stk) =+-- trace ("discarding state, depth " ++ show (length stk)) $+ happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))+-}++-- Enter error recovery: generate an error token,+-- save the old token and carry on.+happyFail i tk (action) sts stk =+-- trace "entering error recovery" $+ happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)++-- Internal happy errors:++notHappyAtAll = error "Internal Happy error\n"++-----------------------------------------------------------------------------+-- Hack to get the typechecker to accept our action functions+++happyTcHack :: Happy_GHC_Exts.Int# -> a -> a happyTcHack x y = y {-# INLINE happyTcHack #-}
+ doc/release-notes/2-2-10.txt view
@@ -0,0 +1,214 @@+------------------------------------------------------------------------+-- Release notes for Agda 2 version 2.2.10+------------------------------------------------------------------------++Important changes since 2.2.8:++Language+--------++* New flag: --without-K.++ This flag makes pattern matching more restricted. If the flag is+ activated, then Agda only accepts certain case-splits. If the type+ of the variable to be split is D pars ixs, where D is a data (or+ record) type, pars stands for the parameters, and ixs the indices,+ then the following requirements must be satisfied:++ * The indices ixs must be applications of constructors to distinct+ variables.++ * These variables must not be free in pars.++ The intended purpose of --without-K is to enable experiments with a+ propositional equality without the K rule. Let us define+ propositional equality as follows:++ data _≡_ {A : Set} : A → A → Set where+ refl : ∀ x → x ≡ x++ Then the obvious implementation of the J rule is accepted:++ J : {A : Set} (P : {x y : A} → x ≡ y → Set) →+ (∀ x → P (refl x)) →+ ∀ {x y} (x≡y : x ≡ y) → P x≡y+ J P p (refl x) = p x++ The same applies to Christine Paulin-Mohring's version of the J rule:++ J′ : {A : Set} {x : A} (P : {y : A} → x ≡ y → Set) →+ P (refl x) →+ ∀ {y} (x≡y : x ≡ y) → P x≡y+ J′ P p (refl x) = p++ On the other hand, the obvious implementation of the K rule is not+ accepted:++ K : {A : Set} (P : {x : A} → x ≡ x → Set) →+ (∀ x → P (refl x)) →+ ∀ {x} (x≡x : x ≡ x) → P x≡x+ K P p (refl x) = p x++ However, we have /not/ proved that activation of --without-K ensures+ that the K rule cannot be proved in some other way.++* Irrelevant declarations.++ Postulates and functions can be marked as irrelevant by prefixing+ the name with a dot when the name is declared. Example:++ postulate+ .irrelevant : {A : Set} → .A → A++ Irrelevant names may only be used in irrelevant positions or in+ definitions of things which have been declared irrelevant.++ The axiom irrelevant above can be used to define a projection from+ an irrelevant record field:++ data Subset (A : Set) (P : A → Set) : Set where+ _#_ : (a : A) → .(P a) → Subset A P++ elem : ∀ {A P} → Subset A P → A+ elem (a # p) = a++ .certificate : ∀ {A P} (x : Subset A P) → P (elem x)+ certificate (a # p) = irrelevant p++ The right-hand side of certificate is relevant, so we cannot define++ certificate (a # p) = p++ (because p is irrelevant). However, certificate is declared to be+ irrelevant, so it can use the axiom irrelevant. Furthermore the+ first argument of the axiom is irrelevant, which means that+ irrelevant p is well-formed.++ As shown above the axiom irrelevant justifies irrelevant+ projections. Previously no projections were generated for irrelevant+ record fields, such as the field certificate in the following+ record type:++ record Subset (A : Set) (P : A → Set) : Set where+ constructor _#_+ field+ elem : A+ .certificate : P elem++ Now projections are generated automatically for irrelevant fields+ (unless the flag --no-irrelevant-projections is used). Note that+ irrelevant projections are highly experimental.++* Termination checker recognises projections.++ Projections now preserve sizes, both in patterns and expressions.+ Example:++ record Wrap (A : Set) : Set where+ constructor wrap+ field+ unwrap : A++ open Wrap public++ data WNat : Set where+ zero : WNat+ suc : Wrap WNat → WNat++ id : WNat → WNat+ id zero = zero+ id (suc w) = suc (wrap (id (unwrap w)))++ In the structural ordering unwrap w ≤ w. This means that++ unwrap w ≤ w < suc w,++ and hence the recursive call to id is accepted.++ Projections also preserve guardedness.++Tools+-----++* Hyperlinks for top-level module names now point to the start of the+ module rather than to the declaration of the module name. This+ applies both to the Emacs mode and to the output of agda --html.++* Most occurrences of record field names are now highlighted as+ "fields". Previously many occurrences were highlighted as+ "functions".++* Emacs mode: It is no longer possible to change the behaviour of the+ TAB key by customising agda2-indentation.++* Epic compiler backend.++ A new compiler backend is being implemented. This backend makes use+ of Edwin Brady's language Epic+ (http://www.cs.st-andrews.ac.uk/~eb/epic.php) and its compiler. The+ backend should handle most Agda code, but is still at an+ experimental stage: more testing is needed, and some things written+ below may not be entirely true.++ The Epic compiler can be invoked from the command line using the+ flag --epic:++ agda --epic --epic-flag=<EPIC-FLAG> --compile-dir=<DIR> <FILE>.agda++ The --epic-flag flag can be given multiple times; each flag is given+ verbatim to the Epic compiler (in the given order). The resulting+ executable is named after the main module and placed in the+ directory specified by the --compile-dir flag (default: the project+ root). Intermediate files are placed in a subdirectory called Epic.++ The backend requires that there is a definition named main. This+ definition should be a value of type IO Unit, but at the moment this+ is not checked (so it is easy to produce a program which segfaults).+ Currently the backend represents actions of type IO A as functions+ from Unit to A, and main is applied to the unit value.++ The Epic compiler compiles via C, not Haskell, so the pragmas+ related to the Haskell FFI (IMPORT, COMPILED_DATA and COMPILED) are+ not used by the Epic backend. Instead there is a new pragma+ COMPILED_EPIC. This pragma is used to give Epic code for postulated+ definitions (Epic code can in turn call C code). The form of the+ pragma is {-# COMPILED_EPIC def code #-}, where def is the name of+ an Agda postulate and code is some Epic code which should include+ the function arguments, return type and function body. As an example+ the IO monad can be defined as follows:++ postulate+ IO : Set → Set+ return : ∀ {A} → A → IO A+ _>>=_ : ∀ {A B} → IO A → (A → IO B) → IO B++ {-# COMPILED_EPIC return (u : Unit, a : Any) -> Any =+ ioreturn(a) #-}+ {-# COMPILED_EPIC+ _>>=_ (u1 : Unit, u2 : Unit, x : Any, f : Any) -> Any =+ iobind(x,f) #-}++ Here ioreturn and iobind are Epic functions which are defined in the+ file AgdaPrelude.e which is always included.++ By default the backend will remove so-called forced constructor+ arguments (and case-splitting on forced variables will be+ rewritten). This optimisation can be disabled by using the flag+ --no-forcing.++ All data types which look like unary natural numbers after forced+ constructor arguments have been removed (i.e. types with two+ constructors, one nullary and one with a single recursive argument)+ will be represented as "BigInts". This applies to the standard Fin+ type, for instance.++ The backend supports Agda's primitive functions and the BUILTIN+ pragmas. If the BUILTIN pragmas for unary natural numbers are used,+ then some operations, like addition and multiplication, will use+ more efficient "BigInt" operations.++ If you want to make use of the Epic backend you need to install some+ dependencies, see the README.++* The Emacs mode can compile using either the MAlonzo or the Epic+ backend. The variable agda2-backend controls which backend is used.
+ src/data/EpicInclude/AgdaPrelude.e view
@@ -0,0 +1,117 @@+%include "string.h"++-- IO++%inline putStr (x:String) -> Unit =+ foreign Unit "putStr" (x:String)++putStrLn (x:String) -> Unit =+ putStr(append(x,"\n"))++readStr () -> String =+ foreign String "readStr" ()++intToStr (x:Int) -> String =+ foreign String "intToStr" (x:Int)++strToInt (x:String) -> Int =+ foreign String "strToInt" (x:String)++printInt (x:Int) -> Unit =+ foreign Unit "printInt" (x:Int)++ioreturn (a : Any, u : Unit) -> Any = a+iobind (x : Any, f : Any, u : Unit) -> Any = f (x (u), u)++-- String operations++append (x:String, y:String) -> String =+ foreign String "append" (x:String, y:String)++length (x:String) -> String =+ foreign Int "strlen" (x:String)++index (x:String, i:Int) -> Char =+ foreign Int "strIndex" (x:String, i:Int)++-- Big number arithmetic++subBig (x:BigInt, y:BigInt) -> BigInt =+ foreign BigInt "subBigInt" (x:BigInt, y:BigInt)++gtBig (x:BigInt, y:BigInt) -> Bool =+ foreign Int "gtBigInt" (x:BigInt, y:BigInt)++leBig (x:BigInt, y:BigInt) -> Bool =+ foreign Int "leBigInt" (x:BigInt, y:BigInt)++geBig (x:BigInt, y:BigInt) -> Bool =+ foreign Int "geBigInt" (x:BigInt, y:BigInt)++printBig (x:BigInt) -> Unit =+ foreign Unit "printBigInt" (x:BigInt)++bigIntToStr (x:BigInt) -> String =+ foreign String "bigIntToStr" (x:BigInt)++strToBigInt (x:String) -> Int =+ foreign String "strToBigInt" (x:String)++-- Unit++%inline primUnit() -> Unit = unit++-- Nats++primNatPlus (x:BigInt, y:BigInt) -> BigInt =+ foreign BigInt "addBigInt" (x:BigInt, y:BigInt)++primNatTimes (x:BigInt, y:BigInt) -> BigInt =+ foreign BigInt "mulBigInt" (x:BigInt, y:BigInt)++primZero() -> BigInt = 0L++primSuc (n : BigInt) -> BigInt = primNatPlus(n, 1L)++primPred(n : BigInt) -> BigInt = subBig(n, 1L)++%inline absBig (x : BigInt) -> BigInt = + if primNatLess(x, primZero) + then primZero+ else x++%inline primNatMinus(x : BigInt, y : BigInt) -> BigInt = absBig(subBig(x, y))++-- readInt () -> Int = foreign Int "readInt" ()++primNatEquality (x:BigInt, y:BigInt) -> Bool =+ foreign Int "eqBigInt" (x:BigInt, y:BigInt)++primNatLess (x:BigInt, y:BigInt) -> Bool =+ foreign Int "ltBigInt" (x:BigInt, y:BigInt)++-- Strings++-- Cannot call foreign "append" directly, for some reason+%inline primStringAppend (x : String, y : String) -> String = append(x, y)++primStringEquality (x : String, y : String) -> Bool =+ foreign Int "eqString" (x : String, y : String)++-- Bools++%inline primTrue () -> Bool = true++%inline primFalse () -> Bool = false++-- Chars++printChar (x:Int) -> Unit =+ foreign Unit "printCharRep" (x:Int)++init () -> Unit =+ foreign Unit "init" ()++-- Coinduction++primSharp (u1 : Any, u2 : Any, x : Any) -> Data = Con 0 (x)
+ src/data/EpicInclude/stdagda.c view
@@ -0,0 +1,44 @@+#include "stdagda.h"+#include <stdlib.h>+#include <unistd.h>+#include <gmp.h>+#include <string.h>+#include <sys/time.h>+#include <locale.h>+//#include "closure.h"+#include "stdfuns.h"++#define _UNICODE+#define UNICODE++int eqString(char *x, char *y) {+ return strcmp(x, y) == 0;+}++void init(void) {+ setlocale(LC_CTYPE, "");+}++void printCharRep(int c) {++ wprintf(L"%lc", c);+}++int bigToInt(mpz_t* n) {+ return (int) mpz_get_si(*n);+}++mpz_t* intToBig(int n) {+ mpz_t* answer = EMALLOC(sizeof(mpz_t));+ mpz_init(*answer);+ mpz_set_si(*answer, (signed long int)n);+ return answer; +} ++VAL getArgBig(mpz_t* num) {+ return evm_getArg(bigToInt(num));+}++mpz_t* numArgsBig(void) { + return intToBig(epic_numArgs());+}
+ src/data/EpicInclude/stdagda.h view
@@ -0,0 +1,21 @@+#ifndef _STDAGDA_H+#define _STDAGDA_H++# ifndef WIN32+# include <pthread.h>+# define GC_THREADS+# else+# define GC_WIN32_THREADS+# endif++#include <gc/gc.h>+#include <gmp.h>+#include <stdio.h>+void init(void);+int eqString(char *x, char *y);+void printCharRep(int c);++char* getArgv(mpz_t* n);+mpz_t* getArgc(void);++#endif
src/data/emacs-mode/agda2-mode.el view
@@ -10,12 +10,12 @@ ;;; Code: -(defvar agda2-version "2.2.8"+(defvar agda2-version "2.2.10" "The version of the Agda mode. Note that, by default, the same version of the underlying Haskell library is used (see `agda2-ghci-options').") -(require 'cl) ; haskell-indent requires it anyway.+(require 'cl) (set (make-local-variable 'lisp-indent-function) 'common-lisp-indent-function) (require 'comint)@@ -25,7 +25,6 @@ (require 'agda-input) (require 'agda2-highlight) (require 'agda2-abbrevs)-(require 'haskell-indent) (require 'haskell-ghci) ;; due to a bug in haskell-mode-2.1 (setq haskell-ghci-mode-map (copy-keymap comint-mode-map))@@ -86,6 +85,13 @@ :type '(repeat directory) :group 'agda2) +(defcustom agda2-backend+ "MAlonzo"+ "The backend which is used to compile Agda programs."+ :type '(choice (const "MAlonzo")+ (const "Epic"))+ :group 'agda2)+ (defcustom agda2-ghci-options (list (concat "-package Agda-" agda2-version)) "Options set in GHCi before loading `agda2-toplevel-module'.@@ -102,14 +108,6 @@ "Hooks for `agda2-mode'." :type 'hook :group 'agda2) -(defcustom agda2-indentation- 'eri- "*The kind of indentation used in `agda2-mode'."- :type '(choice (const :tag "Haskell" haskell)- (const :tag "Extended relative" eri)- (const :tag "None" nil))- :group 'agda2)- (defcustom agda2-information-window-max-height 0.35 "*The maximum height of the information window.@@ -247,10 +245,10 @@ (agda2-goal-and-context-and-inferred ,(kbd "C-c C-.") (local) "Goal type, context and inferred type") (agda2-module-contents-maybe-toplevel ,(kbd "C-c C-o") (local global) "Module contents") (agda2-compute-normalised-maybe-toplevel "\C-c\C-n" (local global) "Evaluate term to normal form")- (agda2-indent ,(kbd "TAB"))- (agda2-indent-reverse [S-iso-lefttab])- (agda2-indent-reverse [S-lefttab])- (agda2-indent-reverse [S-tab])+ (eri-indent ,(kbd "TAB"))+ (eri-indent-reverse [S-iso-lefttab])+ (eri-indent-reverse [S-lefttab])+ (eri-indent-reverse [S-tab]) (agda2-goto-definition-mouse [mouse-2]) (agda2-goto-definition-keyboard "\M-.") (agda2-go-back "\M-*")@@ -356,7 +354,6 @@ (condition-case nil (set-frame-font agda2-fontset-name) (error (error "Unable to change the font; change agda2-fontset-name or tweak agda2-fontset-spec-of-fontset-agda2"))))- (agda2-indent-setup) ;; If GHCi is not running syntax highlighting does not work properly. (unless (eq 'run (agda2-process-status)) (agda2-restart))@@ -380,7 +377,14 @@ (interactive) (save-excursion (let ((agda2-bufname "*ghci*") (ignore-dot-ghci "-ignore-dot-ghci"))- (agda2-protect (kill-buffer agda2-bufname))+ (agda2-protect+ (progn+ ;; GHCi doesn't always die when its buffer is+ ;; killed, so GHCi is killed before the buffer+ ;; is.+ (set-buffer agda2-bufname)+ (agda2-protect (comint-kill-subjob))+ (kill-buffer agda2-bufname))) ;; Make sure that the user's .ghci is not read. ;; Users can override this by adding ;; "-read-dot-ghci" to@@ -455,14 +459,14 @@ (delete-file tempfile)))) response)) -(defun agda2-go (highlight &rest args)+(defun agda2-go (responses-expected highlight &rest args) "Executes commands in GHCi. Sends the list of strings ARGS to GHCi, waits for output and-executes the responses, if any. An error is raised if no-responses are received, and otherwise the syntax highlighting-information is reloaded (unless HIGHLIGHT is nil; if HIGHLIGHT is-a string, then highlighting info is read from the corresponding-file)."+executes the responses, if any. If no responses are received, and+RESPONSES-EXPECTED is non-nil, then an error is raised; otherwise+the syntax highlighting information is reloaded (unless HIGHLIGHT+is nil; if HIGHLIGHT is a string, then highlighting info is read+from the corresponding file)." (let* ((highlighting-temp (and highlight (not (stringp highlight)))) (highlighting (cond ((stringp highlight) highlight) (highlighting-temp (make-temp-file "agda2-mode")))))@@ -479,7 +483,8 @@ "Nothing") "(" (append args '(")"))))))- (when (null responses) (agda2-raise-ghci-error))+ (when (and responses-expected (null responses))+ (agda2-raise-ghci-error)) (if highlight (agda2-highlight-load highlighting)) (agda2-exec-responses responses)) (if highlighting-temp (delete-file highlighting)))))@@ -518,7 +523,7 @@ (or ask (string-match "\\`\\s *\\'" txt))) (setq txt (read-string (concat want ": ") nil nil txt t))) (t (setq input-from-goal t)))- (apply 'agda2-go nil cmd+ (apply 'agda2-go t nil cmd (format "%d" g) (if input-from-goal (agda2-goal-Range o) "noRange") (agda2-string-quote txt) args))))@@ -557,15 +562,18 @@ (defun agda2-load () "Load current buffer." (interactive)- (agda2-go t "cmd_load"+ (agda2-go t t "cmd_load" (agda2-string-quote (buffer-file-name)) (agda2-list-quote agda2-include-dirs) )) (defun agda2-compile ()- "Compile the current module."+ "Compile the current module.++The variable `agda2-backend' determines which backend is used." (interactive)- (agda2-go t "cmd_compile"+ (agda2-go t t "cmd_compile"+ agda2-backend (agda2-string-quote (buffer-file-name)) (agda2-list-quote agda2-include-dirs) ))@@ -644,11 +652,11 @@ (defun agda2-show-goals() "Show all goals." (interactive)- (agda2-go t "cmd_metas"))+ (agda2-go t t "cmd_metas")) (defun agda2-show-constraints() "Show constraints." (interactive)- (agda2-go t "cmd_constraints"))+ (agda2-go t t "cmd_constraints")) (defun agda2-remove-annotations () "Removes buffer annotations (overlays and text properties)."@@ -699,7 +707,7 @@ COMMENT is used to build the function's comments. The function NAME takes a prefix argument which tells whether it should normalise types or not when running CMD (through-`agda2-go' nil; the string PROMPT is used as the goal command+`agda2-go' t nil; the string PROMPT is used as the goal command prompt)." (let ((eval (make-symbol "eval"))) `(defun ,name (not-normalise expr)@@ -708,7 +716,7 @@ With a prefix argument the result is not explicitly normalised.") (interactive ,(concat "P\nM" prompt ": ")) (let ((,eval (if not-normalise "Instantiated" "Normalised")))- (agda2-go nil+ (agda2-go t nil (concat ,cmd " Agda.Interaction.BasicOps." ,eval " " (agda2-string-quote expr))))))) @@ -769,7 +777,7 @@ "Shows all the top-level names in the given module. Along with their types." (interactive "MModule name: ")- (agda2-go nil+ (agda2-go t nil "cmd_show_module_contents_toplevel" (agda2-string-quote module))) @@ -787,7 +795,7 @@ (defun agda2-solveAll () "Solves all goals that are already instantiated internally." (interactive)- (agda2-go t "cmd_solveAll"))+ (agda2-go t t "cmd_solveAll")) (defun agda2-solveAll-action (iss) (save-excursion@@ -814,7 +822,7 @@ (let ((cmd (concat "cmd_compute_toplevel" (if arg " True" " False") " ")))- (agda2-go nil (concat cmd (agda2-string-quote expr)))))+ (agda2-go t nil (concat cmd (agda2-string-quote expr))))) (defun agda2-compute-normalised-maybe-toplevel () "Computes the normal form of the given expression,@@ -835,9 +843,8 @@ (let ((highlighting (make-temp-file "agda2-mode"))) (unwind-protect (progn- (agda2-go highlighting+ (agda2-go nil highlighting "cmd_write_highlighting_info"- (agda2-list-quote agda2-include-dirs) (agda2-string-quote (buffer-file-name)) (agda2-string-quote highlighting))) (delete-file highlighting))))@@ -1060,38 +1067,6 @@ (goto-char (agda2-decl-beginning))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;;;; Indentation--(defun agda2-indent ()- "This is what happens when TAB is pressed.-Depends on the setting of `agda2-indentation'."- (interactive)- (cond ((eq agda2-indentation 'haskell) (haskell-indent-cycle))- ((eq agda2-indentation 'eri) (eri-indent))))--(defun agda2-indent-reverse ()- "This is what happens when S-TAB is pressed.-Depends on the setting of `agda2-indentation'."- (interactive)- (cond ((eq agda2-indentation 'eri) (eri-indent-reverse))))--(defun agda2-indent-setup ()- "Set up and start the indentation subsystem.-Depends on the setting of `agda2-indentation'."- (interactive)- (cond ((eq agda2-indentation 'haskell)- (labels ((setl (var val) (set (make-local-variable var) val)))- (setl 'indent-line-function 'haskell-indent-cycle)- (setl 'haskell-indent-off-side-keywords-re- "\\<\\(do\\|let\\|of\\|where\\|sig\\|struct\\)\\>[ \t]*"))- (local-set-key "\177" 'backward-delete-char-untabify)- (set (make-local-variable 'haskell-literate)- (if (string-match "\\.lagda$" (buffer-file-name))- 'latex))- (setq haskell-indent-mode t)- (run-hooks 'haskell-indent-hook))))--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Comments and paragraphs (defun agda2-comments-and-paragraphs-setup nil@@ -1159,10 +1134,10 @@ With prefix argument, turn on display of implicit arguments if the argument is a positive number, otherwise turn it off." (interactive "P")- (cond ((eq arg nil) (agda2-go t "toggleImplicitArgs"))+ (cond ((eq arg nil) (agda2-go t t "toggleImplicitArgs")) ((and (numberp arg)- (> arg 0)) (agda2-go t "showImplicitArgs" "True"))- (t (agda2-go t "showImplicitArgs" "False"))))+ (> arg 0)) (agda2-go t t "showImplicitArgs" "True"))+ (t (agda2-go t t "showImplicitArgs" "False")))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;
src/data/emacs-mode/annotation.el view
@@ -1,7 +1,7 @@ ;;; annotation.el --- Functions for annotating text with faces and help bubbles ;;; Commentary:-;; +;; ;;; Code: (require 'cl)
src/data/emacs-mode/eri.el view
@@ -7,7 +7,7 @@ (require 'cl) (defun eri-current-line-length nil- "Calculates length of current line."+ "Calculate length of current line." (- (line-end-position) (line-beginning-position))) (defun eri-current-line-empty nil@@ -16,7 +16,8 @@ (eri-current-line-length))) (defun eri-maximum (xs)- "Calculate maximum element in XS. Return nil if the list is empty."+ "Calculate maximum element in XS.+Returns nil if the list is empty." (if xs (apply 'max xs))) (defun eri-take (n xs)@@ -25,17 +26,18 @@ (defun eri-split (x xs) "Return a pair of lists (XS1 . XS2).-If XS is sorted, then XS = (append XS1 XS2), and all elements in XS1 are <= X,-whereas all elements in XS2 are > X."+If XS is sorted, then XS = (append XS1 XS2), and all elements in+XS1 are <= X, whereas all elements in XS2 are > X." (let* ((pos (or (position-if (lambda (y) (> y x)) xs) (length xs))) (xs1 (eri-take pos xs)) (xs2 (nthcdr pos xs)))- `(,xs1 . ,xs2)))+ (cons xs1 xs2))) (defun eri-calculate-indentation-points-on-line (max) "Calculate indentation points on current line.-Only points left of column number MAX are included.-If MAX is nil, then all points are included. Return points in ascending order.+Only points left of column number MAX are included. If MAX is+nil, then all points are included. Points are returned in+ascending order. Example (positions marked with ^ are returned): @@ -44,50 +46,63 @@ | MAX" (let ((result))- (save-restriction- (beginning-of-line)- ; To make \\` work in the regexp below:- (narrow-to-region (line-beginning-position) (line-end-position))+ (save-excursion+ (save-restriction+ (beginning-of-line)+ ; To make \\` work in the regexp below:+ (narrow-to-region (line-beginning-position) (line-end-position))+ (while+ (progn+ (let ((pos (and (search-forward-regexp+ "\\(?:\\s-\\|\\`\\)\\(\\S-\\)" nil t)+ (match-beginning 1))))+ (when (not (null pos))+ (let ((pos1 (- pos (line-beginning-position))))+ (when (or (null max) (< pos1 max))+ (add-to-list 'result pos1))))+ (and pos+ (< (point) (line-end-position))+ (or (null max) (< (current-column) max))))))+ (nreverse result) ; Destructive operation.+ ))))++(defun eri-new-indentation-points ()+ "Calculate new indentation points.+Returns a singleton list containing the column number two steps+in from the indentation of the first non-empty line (white space+excluded) above the current line. If there is no such line,+then the empty list is returned."+ (let ((start (line-beginning-position)))+ (save-excursion+ ; Find a non-empty line above the current one, if any. (while (progn- (let ((pos (and (search-forward-regexp- "\\(?:\\s-\\|\\`\\)\\(\\S-\\)" nil t)- (match-beginning 1))))- (when (not (null pos))- (let ((pos1 (- pos (line-beginning-position))))- (when (or (null max) (< pos1 max))- (add-to-list 'result pos1))))- (and pos- (< (point) (line-end-position))- (or (null max) (< (current-column) max))))))- (nreverse result) ; Destructive operation.- )))--(defun eri-new-indentation-point ()- "Calculate a new indentation point, two steps in from the-indentation of the first non-empty line above the current line.-If there is no such line 2 is returned."- (save-excursion- (while- (progn- (forward-line -1)- (not (or (bobp)- (not (eri-current-line-empty))))))- (+ 2 (current-indentation))))+ (forward-line -1)+ (not (or (bobp)+ (not (eri-current-line-empty))))))+ (if (or (equal (point) start)+ (eri-current-line-empty))+ nil+ (list (+ 2 (current-indentation))))))) (defun eri-calculate-indentation-points (reverse)- "Calculate some indentation points. Gives them in reverse order if-REVERSE is non-nil. See `eri-indent' for a description of how-the indentation points are calculated."+ "Calculate points used to indent the current line.+The points are given in reverse order if REVERSE is non-nil. See+`eri-indent' for a description of how the indentation points are+calculated; note that the current indentation is not included in+the returned list." ;; First find a bunch of indentations used above the current line. (let ((points)- (max))+ (max)+ (start (line-beginning-position))) (save-excursion (while (progn (forward-line -1)- ; Skip lines with only white space.- (unless (eri-current-line-empty)+ ; Skip the line we started from and lines with nothing but+ ; white space.+ (unless (or (equal (point) start)+ (eri-current-line-empty)) (setq points (append (eri-calculate-indentation-points-on-line max)@@ -98,23 +113,25 @@ (not (or (bobp) (and (equal (current-indentation) 0) (> (eri-current-line-length) 0)))))))- ;; Add a new indentation point. Sort the indentations.- ;; Rearrange the points so that the next point is the one after the- ;; current one.- (let* ((ps (add-to-list 'points (eri-new-indentation-point)))- (ps1 (sort ps '<)) ; Note: sort is destructive.- (ps2 (eri-split (current-indentation)- (remove (current-indentation) ps1))))+ ;; Add new indentation points, but remove the current indentation.+ ;; Sort the indentations. Rearrange the points so that the next+ ;; point is the one after the current one. Reverse if necessary.+ ;;+ ;; Note: sort and nreverse are destructive.+ (let* ((ps0 (remove (current-indentation)+ (append (eri-new-indentation-points) points)))+ (ps1 (eri-split (current-indentation) (sort ps0 '<)))+ (ps2 (append (cdr ps1) (car ps1)))) (if reverse- (append (nreverse (car ps2)) (nreverse (cdr ps2)))- (append (cdr ps2) (car ps2))))))+ (nreverse ps2)+ ps2)))) (defun eri-indent (&optional reverse) "Cycle between some possible indentation points. With prefix argument REVERSE, cycle in reverse order. -Assume that a file contains the following lines of code, with point on-the line with three dots:+Assume that a file contains the following lines of code, with+point on the line with three dots: frob = loooooooooooooooooooooooooong identifier foo = f a b@@ -126,19 +143,21 @@ ^ ^ ^ ^ ^ ^ ^ ^ ^ * ^ ^ ^ ^ -Then the ^'s and the * mark the indentation points that this function-cycles through. The indentation points are selected as follows:+Then the ^'s and the * mark the indentation points that this+function cycles through. The indentation points are selected as+follows: - * All lines before the current one, up to and including the first- non-indented line (or the beginning of the buffer) are considered.+ * All lines before the current one, up to and including the+ first non-indented line (or the beginning of the buffer) are+ considered. foo = f a b where f (Foo x) y = let bar = x baz = 3 + 5 - * On these lines, erase all characters that stand to the right of- some non-white space character on a lower line.+ * On these lines, erase all characters that stand to the right+ of some non-white space character on a lower line. foo whe@@ -153,14 +172,15 @@ f ( x y = l b b = 3 + 5 - * The columns of all remaining characters are indentation points.+ * The columns of all remaining characters are indentation+ points. f w f ( x y = l b = 3 + 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ * A new indentation point is also added, two steps in from the- indentation of the first non-empty line above the current line- (or in the second column, if there is no such line).+ indentation of the first non-empty line (white space+ excluded) above the current line (if there is such a line). f w f ( x y = l b = 3 + 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ * ^ ^ ^ ^"@@ -177,8 +197,8 @@ (defun eri-indent-reverse nil "Cycle between some possible indentation points (in reverse order).-See `eri-indent' for a description of how the indentation points are-calculated."+See `eri-indent' for a description of how the indentation points+are calculated." (interactive) (eri-indent t))
src/full/Agda/Auto/Auto.hs view
@@ -15,6 +15,7 @@ import qualified System.Timeout import Data.Maybe (catMaybes) +import Agda.Utils.Permutation (permute, takeP) import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.Monad.MetaVars import Agda.TypeChecking.Monad.Context@@ -320,7 +321,7 @@ minfo = getMetaInfo mv targettyp <- withMetaInfo minfo $ do vs <- getContextArgs- let targettype = tt `piApply` vs+ let targettype = tt `piApply` permute (takeP (fromIntegral $ length vs) $ mvPermutation mv) vs normalise targettype let tctx = length $ envContext $ clEnv minfo
src/full/Agda/Auto/Convert.hs view
@@ -19,9 +19,9 @@ import qualified Agda.Syntax.Position as SP import qualified Agda.TypeChecking.Monad.Base as MB import Agda.TypeChecking.Monad.Signature (getConstInfo, getDefFreeVars, getImportedSignature)-import Agda.Utils.Permutation (Permutation(Perm), idP)+import Agda.Utils.Permutation (Permutation(Perm), idP, permute, takeP) import Agda.Interaction.BasicOps (rewrite, Rewrite(..))-import Agda.TypeChecking.Monad.Base (mvJudgement, getMetaInfo, ctxEntry, envContext, clEnv, Judgement(HasType))+import Agda.TypeChecking.Monad.Base (mvJudgement, mvPermutation, getMetaInfo, ctxEntry, envContext, clEnv, Judgement(HasType)) import Agda.TypeChecking.Monad.MetaVars (lookupMeta, withMetaInfo) import Agda.TypeChecking.Monad.Context (getContextArgs) import Agda.TypeChecking.Monad.Constraints (lookupConstraint, getConstraints)@@ -145,7 +145,7 @@ localVars = map (snd . C.unArg . ctxEntry) . envContext . clEnv $ minfo (targettype, localVars) <- lift $ withMetaInfo minfo $ do vs <- getContextArgs- let targettype = tt `piApply` vs+ let targettype = tt `piApply` permute (takeP (fromIntegral $ length vs) $ mvPermutation mv) vs targettype <- norm targettype localVars <- mapM norm localVars return (targettype, localVars)@@ -153,7 +153,7 @@ typ' <- tomyType targettype ctx' <- mapM tomyType localVars modify (\s -> s {sCurMeta = Nothing})- modify (\s -> s {sMetas = (Map.adjust (\(m, Nothing, deps) -> (m, Just (typ', ctx'), deps)) mi (fst $ sMetas s), snd $ sMetas s)})+ modify (\s -> s {sMetas = (Map.adjust (\(m, _, deps) -> (m, Just (typ', ctx'), deps)) mi (fst $ sMetas s), snd $ sMetas s)}) r projfcns Nothing -> do nxt <- popMapS sEqs (\x y -> y {sEqs = x})@@ -162,7 +162,7 @@ let (ineq, e, i) = eqs !! eqi e' <- tomyExp e i' <- tomyExp i- modify (\s -> s {sEqs = (Map.adjust (\Nothing -> Just (ineq, e', i')) eqi (fst $ sEqs s), snd $ sEqs s)})+ modify (\s -> s {sEqs = (Map.adjust (\_ -> Just (ineq, e', i')) eqi (fst $ sEqs s), snd $ sEqs s)}) r projfcns Nothing -> return projfcns@@ -176,7 +176,13 @@ return (projfcns' ++ icns', typs') ) (S {sConsts = initMapS, sMetas = initMapS, sEqs = initMapS, sCurMeta = Nothing, sMainMeta = imi}) lift $ liftIO $ mapM_ categorizedecl icns'- return (icns', typs', Map.map (\(x, Just (y, z), w) -> (x, y, z, w)) (fst (sMetas s)), map (\(Just x) -> x) $ Map.elems (fst (sEqs s)), fst (sConsts s))+ return (icns', typs', Map.map flatten (fst (sMetas s)), map fromJust $ Map.elems (fst (sEqs s)), fst (sConsts s))+ where+ flatten (x, Just (y, z), w) = (x, y, z, w)+ flatten (x, Nothing, w) = __IMPOSSIBLE__++ fromJust (Just x) = x+ fromJust Nothing = __IMPOSSIBLE__ getConst :: Bool -> AN.QName -> TMode -> TOM (ConstRef O) getConst iscon name mode = do
src/full/Agda/Auto/NarrowingSearch.hs view
@@ -296,7 +296,7 @@ search depth = do pm <- readIORef $ ctpriometa root case pm of- NoPrio False -> __IMPOSSIBLE__ -- nothing to refine but not done+ NoPrio False -> return $ Left False -- nothing to refine but not done, this can happen when eq constraints are passed along with main constraint in agdaplugin NoPrio True -> searchSubProb restprobs depth -- ?? what should depth be PrioMeta _ m -> do
src/full/Agda/Auto/Typecheck.hs view
@@ -786,8 +786,7 @@ (s : ss, ALCons _ a args) -> mpret $ Sidecondition (f s a) (fs ss args) ([], ALCons _ a args) -> mpret $ Sidecondition (f EqRSNone a) (fs [] args) - ([], ALProj eas _ _ as) -> mpret $ Sidecondition (fs [] eas) (fs [] as)- ((_:_), ALProj{}) -> __IMPOSSIBLE__+ (_, ALProj eas _ _ as) -> mpret $ Sidecondition (fs [] eas) (fs [] as) -- when eqr-hint is given manually, ss can be non-empty here (_ : ss, ALConPar args) -> fs ss args
+ src/full/Agda/Compiler/Epic/AuxAST.hs view
@@ -0,0 +1,117 @@+-- | Intermediate abstract syntax tree used in the compiler. Pretty close to+-- Epic syntax.+module Agda.Compiler.Epic.AuxAST where++import Data.Set (Set)+import qualified Data.Set as S++import Agda.Syntax.Abstract.Name++type Var = String+type Tag = Int++type Comment = String+type Inline = Bool++data Fun+ = Fun+ { funInline :: Inline+ , funName :: Var+ , funComment :: Comment+ , funArgs :: [Var]+ , funExpr :: Expr+ }+ | EpicFun+ { funName :: Var+ , funComment :: Comment+ , funEpicCode :: String --EpicCode+ }+ deriving (Eq, Ord, Show)++data Lit+ = LInt Integer+ | LChar Char+ | LString String+ | LFloat Double+ deriving (Show, Ord, Eq)++data Expr+ = Var Var+ | Lit Lit+ | Lam Var Expr+ | Con Tag QName [Expr]+ | App Var [Expr]+ | Case Expr [Branch]+ | If Expr Expr Expr+ | Let Var Expr Expr+ | Lazy Expr+ | UNIT+ | IMPOSSIBLE+ deriving (Show, Ord, Eq)++data Branch+ = Branch {brTag :: Tag, brName :: QName, brVars :: [Var], brExpr :: Expr}+ | BrInt {brInt :: Int, brExpr :: Expr}+ | Default {brExpr :: Expr}+ deriving (Show, Ord, Eq)++-- | Smart constructor for applications to avoid empty applications+apps :: Var -> [Expr] -> Expr+apps v [] = Var v+apps v as = App v as++-- | Substitution+subst :: Var -- ^ Substitute this ...+ -> Var -- ^ with this ...+ -> Expr -- ^ in this.+ -> Expr+subst var var' expr = case expr of+ Var v | var == v -> Var var'+ | otherwise -> Var v+ Lit l -> Lit l+ Lam v e | var == v -> Lam v e+ | otherwise -> Lam v (subst var var' e)+ Con t q es -> Con t q (map (subst var var') es)+ App v es | var == v -> App var' (map (subst var var') es)+ | otherwise -> App v (map (subst var var') es)+ Case e brs -> Case (subst var var' e) (map (substBranch var var') brs)+ If a b c -> let s = subst var var'+ in If (s a) (s b) (s c)+ Let v e e' | var == v -> Let v (subst var var' e) e'+ | otherwise -> Let v (subst var var' e) (subst var var' e')+ Lazy e -> Lazy (subst var var' e)+ UNIT -> UNIT+ IMPOSSIBLE -> IMPOSSIBLE++substBranch :: Var -> Var -> Branch -> Branch+substBranch x e br = br { brExpr = subst x e (brExpr br) }++-- | Get the free variables in an expression+fv :: Expr -> [Var]+fv = S.toList . fv'+ where+ fv' :: Expr -> Set Var+ fv' expr = case expr of+ Var v -> S.singleton v+ Lit _ -> S.empty+ Lam v e1 -> S.delete v (fv' e1)+ Con _ _ es -> S.unions (map fv' es)+ App v es -> S.insert v $ S.unions (map fv' es)+ Case e brs -> fv' e `S.union` S.unions (map fvBr brs)+ If a b c -> S.unions (map fv' [a,b,c])+ Let v e e' -> fv' e `S.union` (S.delete v $ fv' e')+ Lazy e -> fv' e+ UNIT -> S.empty+ IMPOSSIBLE -> S.empty++ fvBr :: Branch -> Set Var+ fvBr b = case b of+ Branch _ _ vs e -> fv' e S.\\ S.fromList vs+ BrInt _ e -> fv' e+ Default e -> fv' e++-- | Filter a list using a list of Bools specifying what to keep.+pairwiseFilter :: [Bool] -> [a] -> [a]+pairwiseFilter (True :bs) (a:as) = a : pairwiseFilter bs as+pairwiseFilter (False:bs) (_:as) = pairwiseFilter bs as+pairwiseFilter _ _ = []
+ src/full/Agda/Compiler/Epic/CompileState.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE CPP #-}++-- | Contains the state monad that the compiler works in and some functions+-- for tampering with the state.+module Agda.Compiler.Epic.CompileState where++import Control.Applicative+import Control.Monad.State+import Data.Map(Map)+import qualified Data.Map as M+import Data.Maybe+import Data.Set(Set)+import qualified Data.Set as S++import Agda.Compiler.Epic.AuxAST+import Agda.Syntax.Internal+import Agda.Syntax.Common+import Agda.TypeChecking.Monad (MonadTCM, internalError, defType, theDef, getConstInfo)+import qualified Agda.TypeChecking.Monad as M+import Agda.TypeChecking.Reduce++#include "../../undefined.h"+import Agda.Utils.Impossible++type IrrFilter = [Bool]++-- | Stuff we need in our compiler+data CompileState = CompileState+ { dataDecls :: Map QName Tag+ , nameSupply :: [Var]+ , definitions :: Set Var+ , defDelayed :: Map QName Bool+ , conPars :: Map QName Int+ , mainName :: Maybe QName+ , irrFilters :: Map QName IrrFilter+ } deriving Show++-- | The initial (empty) state+initCompileState :: CompileState+initCompileState = CompileState+ { dataDecls = M.empty+ , nameSupply = map (('h':) . show) [0 :: Integer ..]+ , definitions = S.fromList primTopBindings+ , defDelayed = M.empty+ , conPars = M.empty+ , mainName = Nothing+ , irrFilters = M.empty+ }+ where+ -- | For the lambda-lifter not to lift known primitive functions.+ primTopBindings :: [Var]+ primTopBindings = ["primNatCaseZD", "primNatCaseZS", "primBoolCase", "primUnit", "primSharp"]++-- | Compiler monad+type Compile = StateT CompileState++epicError :: MonadTCM m => String -> Compile m a+epicError = lift . internalError++-- | Create a name which can be used in Epic code from a QName.+unqname :: QName -> Var+unqname qn = case nameId $ qnameName qn of+ NameId name modul -> 'd' : show modul+ ++ "_" ++ show name++-- * State modifiers++getDelayed :: MonadTCM m => QName -> Compile m Bool+getDelayed q = fromMaybe False <$> gets (M.lookup q . defDelayed)++putDelayed :: Monad m => QName -> Bool -> Compile m ()+putDelayed q d = modify $ \s -> s {defDelayed = M.insert q d (defDelayed s)}++newName :: Monad m => Compile m Var+newName = do+ n:ns <- gets nameSupply+ modify $ \s -> s { nameSupply = ns}+ return n++-- | Add a data declaration by giving a list of its constructors.+-- Tags will be created and saved.+addDataDecl :: Monad m => [QName] -> Compile m ()+addDataDecl ts = modify+ $ \s -> s { dataDecls = M.union (M.fromList $ zip ts [0..]) (dataDecls s)}++getConstrTag :: Monad m => QName -> Compile m Tag+getConstrTag con = gets $ fromMaybe __IMPOSSIBLE__+ . M.lookup con+ . dataDecls++addDefName :: Monad m => QName -> Compile m ()+addDefName q = do+ modify $ \s -> s {definitions = S.insert (unqname q) $ definitions s }+ when ("main" == show (qnameName q)) (putMain q) -- hax++topBindings :: Monad m => Compile m (Set Var)+topBindings = gets definitions++getConPar :: MonadTCM m => QName -> Compile m Int+getConPar n = fromMaybe __IMPOSSIBLE__ <$> M.lookup n <$> gets conPars++putConPar :: Monad m => QName -> Int -> Compile m ()+putConPar n p = modify $ \s -> s { conPars = M.insert n p (conPars s) }++putMain :: Monad m => QName -> Compile m ()+putMain m = modify $ \s -> s { mainName = Just m }++getMain :: MonadTCM m => Compile m Var+getMain = maybe (epicError "Where is main? :(") (return . unqname) =<< gets mainName++getIrrFilter :: Monad m => QName -> Compile m IrrFilter+getIrrFilter q = gets $ fromMaybe __IMPOSSIBLE__+ . M.lookup q+ . irrFilters++putIrrFilter :: Monad m => QName -> IrrFilter -> Compile m ()+putIrrFilter n f = modify $ \s -> s {irrFilters = M.insert n f $ irrFilters s}++replaceAt :: Int -- ^ replace at+ -> [a] -- ^ to replace+ -> [a] -- ^ replace with+ -> [a] -- ^ result?+replaceAt n xs inserts = let (as, _:bs) = splitAt n xs in as ++ inserts ++ bs+++-- | Copy pasted from MAlonzo, HAHA!!!+-- Move somewhere else!+constructorArity :: (MonadTCM tcm, Num a) => QName -> tcm a+constructorArity q = do+ def <- getConstInfo q+ a <- normalise $ defType def+ case theDef def of+ M.Constructor{ M.conPars = np } -> return . fromIntegral $ arity a - np+ _ -> internalError $ "constructorArity: non constructor: " ++ show q
+ src/full/Agda/Compiler/Epic/Compiler.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE CPP #-}+-- | Epic compiler backend.+module Agda.Compiler.Epic.Compiler(compilerMain) where++import Control.Applicative+import Control.Monad+import Control.Monad.Reader+import Control.Monad.State+import qualified Data.Map as M+import Data.Maybe+import System.Directory+import System.Exit+import System.FilePath hiding (normalise)+import System.Process hiding (env)++import Paths_Agda+import Agda.Interaction.FindFile+import Agda.Interaction.Options+import qualified Agda.Syntax.Concrete.Name as CN+import Agda.Syntax.Internal hiding (Term(..))+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin+import Agda.Utils.FileName++import Agda.Compiler.Epic.CompileState hiding (conPars)+import qualified Agda.Compiler.Epic.ConstructorIrrelevancy as CIrr+import Agda.Compiler.Epic.Epic+import qualified Agda.Compiler.Epic.Erasure as Eras+import qualified Agda.Compiler.Epic.FromAgda as FAgda+import qualified Agda.Compiler.Epic.LambdaLift as LL+import qualified Agda.Compiler.Epic.Primitive as Prim++#include "../../undefined.h"+import Agda.Utils.Impossible++-- | Compile an interface into an Epic/a.out program+-- /actually this is not true, we compile everything so we don't even look at+-- the Interface. This may change in the future.+compilerMain :: Interface -> TCM ()+compilerMain inter = do+ epic_exist <- liftIO $ rawSystem "ghc-pkg" ["-v0", "field", "epic", "id"]+ case epic_exist of+ ExitSuccess -> flip evalStateT initCompileState $ do+ setEpicDir inter+ initialAnalysis+ code <- compileModule =<< lift (gets stImports)+ case code of+ Nothing -> __IMPOSSIBLE__+ Just c -> runEpic (iModuleName inter) c+ ExitFailure _ -> internalError $ unlines+ [ "Agda cannot find the Epic compiler."+ , "This can perhaps be fixed by running `cabal install epic'."+ , "See the README for more information."+ ]+++-- | Before running the compiler, we need to store some things in the state,+-- namely constructor tags, constructor irrelevancies and the delayed field+-- in functions (for coinduction).+initialAnalysis :: MonadTCM m => Compile m ()+initialAnalysis = do+ defs <- M.toList <$> lift (gets (sigDefinitions . stImports))+ forM_ defs $ \(q, def) -> do+ addDefName q+ case theDef def of+ d@(Datatype {}) -> do+ addDataDecl $ dataCons d+ Constructor {conPars = np} -> do+ putIrrFilter q . drop (fromIntegral np) . CIrr.irrFilter $ defType def+ putConPar q =<< lift (constructorArity q)+ r@(Record{}) -> do+ addDataDecl [recCon r]+ f@(Function{}) -> do+ putDelayed q $ case funDelayed f of+ Delayed -> True+ NotDelayed -> False+ _ -> return ()++-- | Perform the chain of compilation stages, from definitions to epic code+compileDefns :: MonadTCM m => [(QName, Definition)] -> Compile m (Maybe EpicCode)+compileDefns defs = do+ -- We need to handle sharp (coinduction) differently, so we get it here.+ msharp <- lift $ getBuiltin' builtinSharp+ emits <- FAgda.fromAgda msharp defs+ >>= Prim.primitivise+ >>= irr -- CIrr.constrIrr+ >>= Eras.erasure+ >>= LL.lambdaLift+ if null emits+ then return Nothing+ else return . return . unlines . map prettyEpicFun $ emits+ where+ irr ds = do+ f <- lift $ gets (optForcing . stPersistentOptions)+ if f then CIrr.constrIrr ds+ else return ds++-- | Compile all definitions from a signature+compileModule :: MonadTCM m => Signature -> Compile m (Maybe EpicCode)+compileModule sig = do+ let defs = M.toList $ sigDefinitions sig+ compileDefns defs++-- | Change the current directory to Epic folder, create it if it doesn't already+-- exist.+setEpicDir :: Interface -> Compile (TCMT IO) ()+setEpicDir mainI = do+ let tm = toTopLevelModuleName $ iModuleName mainI+ f <- lift $ findFile tm+ compileDir' <- lift $ gets (fromMaybe (filePath $ CN.projectRoot f tm) . optCompileDir . stPersistentOptions)+ compileDir <- liftIO $ canonicalizePath compileDir'+ liftIO $ setCurrentDirectory compileDir+ liftIO $ createDirectoryIfMissing False "Epic"+ liftIO $ setCurrentDirectory $ compileDir </> "Epic"++-- | Make a program from the given Epic code.+--+-- The program is written to the file @../m@, where m is the last+-- component of the given module name.+runEpic :: MonadTCM m => ModuleName -> EpicCode -> Compile m ()+runEpic m code = do+ nam <- getMain+ epicflags <- optEpicFlags <$> lift commandLineOptions+ let code' = "include \"AgdaPrelude.e\"\n" ++ code ++ "main() -> Unit = init() ; " ++ nam ++ "(unit)"+ dataDir <- liftIO getDataDir+ curDir <- liftIO getCurrentDirectory+ liftIO $ copyFile (dataDir </> "EpicInclude" </> "AgdaPrelude" <.> "e")+ (curDir </> "AgdaPrelude" <.> "e")+ liftIO $ writeFile ("main" <.> "e") code'++ let outputName = case mnameToList m of+ [] -> __IMPOSSIBLE__+ ms -> last ms+ epic = "epic"+ epicCommand =+ [ "-keepc"+ , "-checking", "0"+ -- , "-trace"+ , "-i", dataDir </> "EpicInclude" </> "stdagda" <.> "c"+ , "main" <.> "e"+ , "-o", ".." </> show outputName+ ] ++ epicflags+ lift $ reportSLn "" 1 $+ "calling: " ++ unwords (epic : epicCommand)+ _ <- liftIO $ rawSystem epic epicCommand+ return ()
+ src/full/Agda/Compiler/Epic/ConstructorIrrelevancy.hs view
@@ -0,0 +1,67 @@+-- | Remove forced (irrelevant) arguments from constructors.+module Agda.Compiler.Epic.ConstructorIrrelevancy where++import Control.Applicative++import Agda.Compiler.Epic.AuxAST+import Agda.Compiler.Epic.CompileState++import Agda.Syntax.Common+import qualified Agda.Syntax.Internal as T+import Agda.TypeChecking.Monad.Base (MonadTCM)+++-- | Check which arguments are forced and create an IrrFilter+irrFilter :: T.Type -> IrrFilter+irrFilter (T.El _ term) = case term of+ T.Pi arg ab -> isRel arg : irrFilter (T.absBody ab)+ T.Fun arg typ -> isRel arg : irrFilter typ+ _ -> []+ where+ isRel :: Arg T.Type -> Bool+ isRel arg = case argRelevance arg of+ Relevant -> True+ Irrelevant -> False+ Forced -> False -- It can be inferred++-- | Remove irrelevant arguments from constructors and branches+constrIrr :: MonadTCM m => [Fun] -> Compile m [Fun]+constrIrr fs = mapM irrFun fs++irrFun :: MonadTCM m => Fun -> Compile m Fun+irrFun (Fun inline name comment args expr) =+ Fun inline name comment args <$> irrExpr expr+irrFun e@(EpicFun{}) = return e++-- | Remove all arguments to constructors that we don't need to store in an+-- expression.+irrExpr :: MonadTCM m => Expr -> Compile m Expr+irrExpr expr = case expr of+ Var v -> return $ Var v+ Lit l -> return $ Lit l+ Lam v e -> Lam v <$> irrExpr e+ Con tag q es -> do+ -- We only need to apply the relevant arguments+ irrFilt <- getIrrFilter q+ return $ Con tag q $ pairwiseFilter irrFilt es+ App v es -> App v <$> mapM irrExpr es+ Case e bs -> Case <$> irrExpr e <*> mapM irrBranch bs+ Let v e e' -> Let v <$> irrExpr e <*> irrExpr e'+ If a b c -> If <$> irrExpr a <*> irrExpr b <*> irrExpr c+ Lazy e -> Lazy <$> irrExpr e+ UNIT -> return expr+ IMPOSSIBLE -> return expr++-- | Remove all the arguments that doesn't need to be stored in the constructor+-- For the branch+irrBranch :: MonadTCM m => Branch -> Compile m Branch+irrBranch br = case br of+ Branch tag name vars e -> do+ ir <- getIrrFilter name+ let vs = pairwiseFilter ir vars+ -- The removed arguments are substituted for unit+ subs = pairwiseFilter (map not ir) vars+ e' = foldr (\x ex -> subst x "primUnit" ex) e subs+ Branch tag name vs <$> irrExpr e'+ BrInt i e -> BrInt i <$> irrExpr e+ Default e -> Default <$> irrExpr e
+ src/full/Agda/Compiler/Epic/Epic.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE CPP #-}++-- | Pretty-print the AuxAST to valid Epic code.+module Agda.Compiler.Epic.Epic+ ( prettyEpicFun+ ) where++import Data.Char+import Data.List++#include "../../undefined.h"+import Agda.Utils.Impossible++import Agda.Compiler.Epic.AuxAST++-- * Some auxilliary pretty-printer functions+(<+>) :: String -> String -> String+x <+> y = x ++ " " ++ y+infixr 6 <+>++($$) :: String -> String -> String+x $$ y = x ++ "\n" ++ y+infixr 5 $$++many :: [String] -> String+many vs = paren $ intercalate ", " vs++paren :: String -> String+paren s = "(" <+> s <+> ")"++curly :: String -> String+curly s = "{-" <+> s <+> "-}"++-- * Pretty-printer+-- | Print a function to an Epic string+prettyEpicFun :: Fun -> String+prettyEpicFun (Fun inline name comment vars e) =+ "--" <+> comment $$+ (if inline then "%inline " else "") ++ name+ <+> many (map typVar vars) <+> "-> Any" <+> "=" <+> prettyEpic e+prettyEpicFun (EpicFun name comment def) =+ "--" <+> comment $$+ "%inline" <+> name <+> def++-- | Print expression to Epic expression+prettyEpic :: Expr -> String+prettyEpic expr = case expr of+ Var v -> v+ Lit l -> prettyEpicLit l+ Lam _ _ -> __IMPOSSIBLE__ -- We have lambda lifted away all λs+ Con t q args -> curly (show q) <+> paren ("Con" <+> show t <+> many (map prettyEpic args))+ If a b c -> "if" <+> prettyEpic a <+> "then" <+> prettyEpic b <+> "else" <+> prettyEpic c+ Let v e e' -> "let" <+> typVar v <+> "=" <+> prettyEpic e <+> "in" <+> prettyEpic e'+ App v es -> v <+> many (map prettyEpic es)+ Case e brs -> "case" <+> prettyEpic e <+> "of {"+ <+> intercalate "\n | " (map prettyEpicBr brs) <+> "}"+ Lazy e -> "lazy" <+> paren (prettyEpic e)+ UNIT -> "unit"+ IMPOSSIBLE -> "impossible"++prettyEpicBr :: Branch -> String+prettyEpicBr br = case br of+ Branch c q vs e ->+ curly (show q) <+>+ "Con" <+> show c+ <+> many (map typVar vs)+ <+> "->" <+> prettyEpic e+ BrInt n e -> show n <+> "->" <+> prettyEpic e+ Default e -> "Default ->" <+> prettyEpic e++prettyEpicLit :: Lit -> String+prettyEpicLit l = case l of+ LInt n -> show n ++ "L"+ LChar c -> show (ord c)+ LString s -> show s+ LFloat f -> show f++typVar :: Var -> String+typVar v = v <+> ":" <+> "Any"
+ src/full/Agda/Compiler/Epic/Erasure.hs view
@@ -0,0 +1,133 @@+-- | Some arguments to functions (types in particular) will not be used in the+-- body. Wouldn't it be useful if these wasn't passed around at all?+-- Fear not, we here perform some analysis and try to remove as many of these+-- occurences as possible.+--+-- We employ the worker/wrapper transform, so if f x1 .. xn = e+-- and we notice that some is not needed we create: f' xj .. xk = e [xi := unit]+-- and f x1 .. xn = f' xj .. xk.+-- i.e we erase them in f' and replace by unit, and the original f function+-- calls the new f'. The idea is that f should be inlined and then peace on earth.+module Agda.Compiler.Epic.Erasure where++import Control.Applicative+import Control.Monad.State+import Data.Map(Map)+import qualified Data.Map as M+import Data.Maybe++import Agda.Compiler.Epic.AuxAST+import Agda.Compiler.Epic.CompileState++import Agda.TypeChecking.Monad.Base (MonadTCM)++data Relevancy+ = Irr+ | Rel+ | DontKnow+ deriving (Eq, Ord, Show)++isIrr :: Relevancy -> Bool+isIrr Irr = True+isIrr Rel = False+isIrr DontKnow = True++isRel :: Relevancy -> Bool+isRel = not . isIrr++-- | Irrelevancy "and"+(&&-) :: Relevancy -> Relevancy -> Relevancy+Rel &&- _ = Rel+_ &&- Rel = Rel+DontKnow &&- a = a+a &&- DontKnow = a+Irr &&- Irr = Irr -- If both arguments are irrelevant, then surely we+ -- have something irrelevant.++data ErasureState = ErasureState+ { relevancies :: Map Var [Relevancy]+ , funs :: Map Var Fun+ }++type Erasure = StateT ErasureState++-- | Try to find as many unused variables as possible+erasure :: MonadTCM m => [Fun] -> Compile m [Fun]+erasure fs = do+ rels <- flip evalStateT (ErasureState M.empty M.empty) $ do+ mapM_ initiate fs+ fu <- gets funs+ M.mapKeys (fromJust . flip M.lookup fu) <$> step+ fmap concat $ mapM (\f -> check f (M.lookup f rels)) fs+ where+ -- | Perform the worker//wrapper transform+ check :: MonadTCM m => Fun -> Maybe [Relevancy] -> Compile m [Fun]+ -- If the function is already marked as to inline we don't need to create a+ -- new function. Also If all arguments are relevant there is nothing to do.+ check f (Just rs) | any isIrr rs && not (funInline f) = do+ f' <- newName+ let args' = pairwiseFilter (map isRel rs) (funArgs f)+ subs = pairwiseFilter (map isIrr rs) (funArgs f)+ e' = foldr (\v e -> subst v "primUnit" e) (funExpr f) subs+ return [ Fun { funInline = True+ , funName = funName f+ , funComment = funComment f+ , funArgs = funArgs f+ , funExpr = App f' $ map Var args'+ }+ , Fun { funInline = False+ , funName = f'+ , funComment = funComment f ++ " [ERASED]"+ , funArgs = args'+ , funExpr = e'+ }+ ]+ check f _ = return [f]++-- | Initiate a function's relevancies (all DontKnow)+initiate :: Monad m => Fun -> Erasure m ()+initiate f@(Fun _ name _ args _) =+ modify $ \s -> s { relevancies = M.insert name (replicate (length args) DontKnow) (relevancies s)+ , funs = M.insert name f (funs s)+ }+initiate (EpicFun {}) = return ()++-- | Calculate if a variable is relevant in an expression+relevant :: (Functor m, Monad m) => Var -> Expr -> Erasure m Relevancy+relevant var expr = case expr of+ Var v | v == var -> return Rel+ | otherwise -> return Irr+ Lit _l -> return Irr+ Lam _ e -> relevant var e+ Con _ _ es -> relevants var es+ App v es | v == var -> return Rel+ | otherwise -> do+ -- The variable is relevant if it is used in a relevant position+ mvrs <- gets (M.lookup v . relevancies)+ case mvrs of+ Nothing -> relevants var es+ Just vrs -> relevants var+ $ pairwiseFilter (map isRel vrs ++ repeat True {- Needs ETA expansion -}) es+ Case e brs -> (&&-) <$> relevant var e <*> relevants var (map brExpr brs)+ If a b c -> relevants var [a,b,c]+ Let _ e1 e2 -> (&&-) <$> relevant var e1 <*> relevant var e2+ Lazy e -> relevant var e+ UNIT -> return Irr+ IMPOSSIBLE -> return Irr+ where+ relevants :: (Functor m, Monad m) => Var -> [Expr] -> Erasure m Relevancy+ relevants v es = foldM (\x y -> return $ x &&- y) Irr =<< mapM (relevant v) es++-- | Try to find a fixpoint for all the functions relevancy.+step :: (Monad m, Functor m) => Erasure m (Map Var [Relevancy])+step = do+ s <- get+ rels <- forM (M.toList (relevancies s)) $ \(v, _) -> do+ let f = fromJust $ M.lookup v (funs s)+ (,) v <$> mapM (flip relevant (funExpr f)) (funArgs f)+ let relsm = M.fromList rels+ if relevancies s == relsm+ then return relsm+ else do+ put s {relevancies = relsm}+ step
+ src/full/Agda/Compiler/Epic/Forcing.hs view
@@ -0,0 +1,398 @@+{-# LANGUAGE CPP #-}+module Agda.Compiler.Epic.Forcing where++import Control.Applicative+import Control.Arrow (first, second)+import Control.Monad+import Control.Monad.State+import Control.Monad.Trans+import Data.List+import qualified Data.Map as M+import Data.Maybe++import Agda.Syntax.Common+import Agda.Syntax.Internal+import Agda.TypeChecking.CompiledClause+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Rules.LHS.Unify+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Pretty+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Telescope+import Agda.Utils.List+import Agda.Utils.Size++import Agda.Compiler.Epic.CompileState hiding (conPars)+import Agda.Compiler.Epic.AuxAST(pairwiseFilter)++#include "../../undefined.h"+import Agda.Utils.Impossible++-- | Replace the uses of forced variables in a CompiledClauses with the function+-- arguments that they correspond to.+-- Note that this works on CompiledClauses where the term's variable indexes+-- have been reversed, which means that the case variables match the variables+-- in the term.+removeForced :: MonadTCM m => CompiledClauses -> Type -> Compile m CompiledClauses+removeForced cc typ = do+ TelV tele _ <- lift $ telView typ+ remForced cc tele++-- | Returns the type of a constructor given its name+constrType :: MonadTCM m => QName -> Compile m Type+constrType q = do+ map <- lift (gets (sigDefinitions . stImports))+ return $ maybe __IMPOSSIBLE__ defType (M.lookup q map)++-- | Returns how many parameters a datatype has+dataParameters :: MonadTCM m => QName -> Compile m Nat+dataParameters name = do+ m <- lift (gets (sigDefinitions . stImports))+ return $ maybe __IMPOSSIBLE__ (defnPars . theDef) (M.lookup name m)+ where+ defnPars :: Defn -> Nat+ defnPars (Datatype {dataPars = p}) = p+ defnPars (Record {recPars = p}) = p+ defnPars _ = 0 -- Not so sure about this.++-- | Is variable n used in a CompiledClause?+isIn :: MonadTCM m => Nat -> CompiledClauses -> Compile m Bool+n `isIn` Case i brs | n == fromIntegral i = return True+ | otherwise = n `isInCase` (fromIntegral i, brs)+n `isIn` Done _ t = return $ n `isInTerm` t+n `isIn` Fail = return $ False++isInCase :: MonadTCM m => Nat -> (Nat, Case CompiledClauses) -> Compile m Bool+n `isInCase` (i, Branches { conBranches = cbrs+ , litBranches = lbrs+ , catchAllBranch = cabr}) = do+ cbrs' <- (or <$>) $ forM (M.toList cbrs) $ \ (constr, cc) -> do+ if i < n+ then do+ par <- fromIntegral <$> getConPar constr+ (n + par - 1) `isIn` cc+ else n `isIn` cc++ lbrs' <- (or <$>) $ forM (M.toList lbrs) $ \ (_, cc) ->+ (if i < n+ then (n - 1)+ else n) `isIn` cc++ cabr' <- case cabr of+ Nothing -> return False+ Just cc -> n `isIn` cc+ return (cbrs' || lbrs' || cabr')+++isInTerm :: Nat -> Term -> Bool+n `isInTerm` term = let recs = any (isInTerm n . unArg) in case term of+ Var i as -> i == n || recs as+ Lam _ ab -> (n+1) `isInTerm` absBody ab+ Lit _ -> False+ Def _ as -> recs as+ Con _ as -> recs as+ Pi a b -> n `isInTerm` unEl (unArg a) || (n+1) `isInTerm` unEl (absBody b)+ Fun a b -> n `isInTerm` unEl (unArg a) || n `isInTerm` unEl b+ Sort sor -> False -- ?+ MetaV meta as -> False -- can't occur?+ DontCare -> False++{- |+insertTele i xs t tele+ tpos+ tele := Gamma ; (i : T as) ; Delta+ n := parameters T+ xs' := xs `apply` (take n as)+becomes+ tpos+ ( Gamma ; xs' ; Delta[i := t] --note that Delta still reference Gamma correctly+ , T as ^ (size xs')+ )++we raise the type since we have added xs' new bindings before Gamma, and as can+only bind to Gamma.+-}+insertTele :: MonadTCM m+ => Int -- ^ ABS `pos` in tele+ -> Maybe Type -- ^ If Just, it is the type to insert patterns from+ -- is nothing if we only want to delete a binding.+ -> Term -- ^ Term to replace at pos+ -> Telescope -- ^ The telescope `tele` where everything is at+ -> Compile m ( Telescope+ , ( Type+ , Type+ )+ )+ -- ^ Returns (resulting telescope, the type at pos in tele, the+ -- return type of the inserted type).+insertTele 0 ins term (ExtendTel t to) = do+ t' <- lift $ normalise t+ let Def st arg = unEl . unArg $ t'+ -- Apply the parameters of the type of t+ -- Because: parameters occurs in the type of constructors but are not bound by it.+ pars <- dataParameters st+ TelV ctele ctyp <- lift $ telView $ maybe (unArg t')+ (`apply` take (fromIntegral pars) arg) ins++ () <- if length (take (fromIntegral pars) arg) == fromIntegral pars+ then return ()+ else __IMPOSSIBLE__+ -- we deal with absBody to directly since we remove t+ return ( ctele +:+ (subst term $ raiseFrom 1 (size ctele) (absBody to))+ , (raise (size ctele) $ unArg t , ctyp)+ )+ where+ -- Append the telescope, we raise since we add a new binding and all the previous+ -- bindings need to be preserved+ (+:+) :: Telescope -> Telescope -> Telescope+ EmptyTel +:+ t2 = t2+ ExtendTel t t1 +:+ t2 = ExtendTel t t1 {absBody = absBody t1 +:+ {-raise 1-} t2 }+-- This case is impossible since we are trying to split a variable outside the tele+insertTele n ins term EmptyTel = __IMPOSSIBLE__+insertTele n ins term (ExtendTel x xs) = do+ (xs', typ) <- insertTele (n - 1) ins term (absBody xs)+ return (ExtendTel x xs {absBody = xs'} , typ)++mkCon c n = Con c [ defaultArg $ Var (fromIntegral i) [] | i <- [n - 1, n - 2 .. 0] ]++unifyI :: MonadTCM m => Telescope -> [Nat] -> Type -> Args -> Args -> Compile m [Maybe Term]+unifyI tele flex typ a1 a2 = lift $ addCtxTel tele $ unifyIndices_ flex typ a1 a2++takeTele 0 _ = EmptyTel+takeTele n (ExtendTel t ts) = ExtendTel t ts {absBody = takeTele (n-1) (absBody ts) }+takeTele _ _ = __IMPOSSIBLE__++-- | Remove forced variables cased on in the current top-level case in the CompiledClauses+remForced :: MonadTCM m+ => CompiledClauses -- ^ Remove cases on forced variables in this+ -> Telescope -- ^ The current context we are in+ -> Compile m CompiledClauses+remForced ccOrig tele = case ccOrig of+ Case n brs -> do+ -- Get all constructor branches+ cbs <- forM (M.toList $ conBranches brs) $ \(constr, cc) -> do+ par <- getConPar constr+ typ <- constrType constr+ -- Update tele with the telescope from the constructor's type+ (tele', (ntyp, ctyp)) <- insertTele n (Just typ) (mkCon constr par) tele+ ntyp <- lift $ reduce ntyp+ ctyp <- lift $ reduce ctyp+ notForced <- getIrrFilter constr+ -- Get the variables that are forced, relative to the position after constr+ forcedVars <- filterM ((`isIn` cc) . (flip subtract (fromIntegral $ n + par - 1)))+ $ pairwiseFilter (map not notForced)+ $ map fromIntegral [par-1,par-2..0]+ if null forcedVars+ then (,) constr <$> remForced cc tele'+ else do+ unif <- case (unEl ntyp, unEl ctyp) of+ (Def st a1, Def st' a2) | st == st' -> do+ typPars <- fromIntegral <$> dataParameters st+ setType <- constrType st+ {-+ We are splitting on C xs+ we know that C : ts -> T ss ; for some T+ we also know from tele that we are splitting on T as+ we want to unify ss with as, but not taking into account+ the Data parameters to T.+ -}+ unifyI (takeTele (n + par) tele')+ (map fromIntegral [0 .. n + par]) -- Don't unify the constructor arguments+ (setType `apply` take typPars a1)+ (drop typPars a1)+ (drop typPars a2)+ x -> __IMPOSSIBLE__+ -- we calculate the new tpos from n (the old one) by adding+ -- how many more bindings we have+ (,) constr <$> replaceForced (fromIntegral $ n + par, tele')+ forcedVars+ (cc, unif)++ lbs <- forM (M.toList $ litBranches brs) $ \(lit, cc) -> do+ -- We have one less binding+ (newTele, _) <- insertTele n Nothing (Lit lit) tele+ (,) lit <$> remForced cc newTele++ cabs <- case catchAllBranch brs of+ Nothing -> return Nothing+ Just cc -> Just <$> remForced cc tele++ return $ Case n brs { conBranches = M.fromList cbs+ , litBranches = M.fromList lbs+ , catchAllBranch = cabs }++ Done n t -> return $ Done n t+ Fail -> return Fail++data FoldState = FoldState+ { clauseToFix :: CompiledClauses+ , clausesAbove :: CompiledClauses -> CompiledClauses+ , unification :: [Maybe Term]+ , theTelescope :: Telescope+ , telePos :: Nat+ } deriving Show++-- Some utility functions++foldM' :: Monad m => a -> [b] -> (a -> b -> m a) -> m a+foldM' z xs f = foldM f z xs++lift2 :: (MonadTrans t, Monad (t1 m), MonadTrans t1, Monad m) => m a -> t (t1 m) a+lift2 = lift . lift++modifyM :: (MonadState a m) => (a -> m a) -> m ()+modifyM f = get >>= f >>= put -- (>>= put) . (get >>=)++-- | replaceForced (tpos, tele) forcedVars (cc, unification)+-- For each forceVar dig out the corresponding case and continue to remForced.+replaceForced :: MonadTCM m+ => (Nat, Telescope) -> [Nat] -> (CompiledClauses, [Maybe Term])+ -> Compile m CompiledClauses+replaceForced (telPos, tele) forcedVars (cc, unif) = do+ let origSt = FoldState+ { clauseToFix = cc+ , clausesAbove = id+ , unification = unif+ , theTelescope = tele+ , telePos = telPos+ }+ st <- flip execStateT origSt $ forM forcedVars $ \ forcedVar -> do+ unif <- gets unification+ let (caseVar, caseTerm) = findPosition forcedVar unif+ telPos <- gets telePos+ termToBranch (telPos - caseVar - 1) caseTerm forcedVar+ clausesAbove st <$> remForced (clauseToFix st) (theTelescope st)+ where+ {-+ In this function the following de Bruijn is:+ forcedVar : Relative+ caseVar : Absolute+ telePos : Absolute+ -}+ termToBranch :: MonadTCM m => Nat -> Term -> Nat -> StateT FoldState (Compile m) ()+ termToBranch caseVar caseTerm forcedVar = case caseTerm of+ Var i _ | i == forcedVar -> do+ telPos <- gets telePos+ let sub = [0..telPos - forcedVar - 2] ++ [caseVar] ++ [telPos - forcedVar..]+ modifyM $ \ st -> do+ newClauseToFix <- substCC sub (clauseToFix st)+ return st+ { clauseToFix = newClauseToFix+ , unification = substs (map (flip Var []) sub) (unification st)+ }+ -- This is impossible since we have already looked and it should+ -- be the correct Var+ | otherwise -> __IMPOSSIBLE__+ Con c args -> do+ telPos <- gets telePos+ let (nextCaseVarInCon, nextCaseTerm) = findPosition forcedVar (map (Just . unArg) args)+ nextCaseVar = nextCaseVarInCon + caseVar+ newBinds = fromIntegral $ length args - 1+ -- we have added newBinds new bindings and removed one before telePos+ nextTelePos = telPos + newBinds+ ctyp <- lift (constrType c)++ modifyM $ \ st -> do+ (newTele , _) <- lift $ insertTele (fromIntegral caseVar) (Just ctyp)+ (mkCon c (length args)) (theTelescope st)+ -- We have to update the unifications-list so that we don't try+ -- to dig out the same again later.+ let newUnif = raiseFrom (telPos - caseVar) newBinds $+ replaceAt (fromIntegral $ telPos - caseVar - 1)+ (unification st)+ (reverse $ map (Just . unArg) args)+ -- The variables in the unification-list is+ -- relative so we need to reverse the args+ -- so they get in the right place.+ return st+ { clauseToFix = raiseFromCC caseVar newBinds+ (substCCBody caseVar+ (Con c $ map (defaultArg . flip Var [])+ [caseVar .. caseVar + newBinds])+ (clauseToFix st))+ , theTelescope = newTele+ , unification = newUnif+ , telePos = nextTelePos+ }+ st <- get+ termToBranch nextCaseVar nextCaseTerm forcedVar+ modify $ \ st -> st+ { clausesAbove = Case (fromIntegral caseVar) . conCase c . (clausesAbove st)+ }+ _ -> __IMPOSSIBLE__++-- Note: Absolute positions+raiseFromCC :: Nat -> Nat -> CompiledClauses -> CompiledClauses+raiseFromCC from add cc = case cc of+ Case n (Branches cbr lbr cabr) -> Case (fromIntegral $ raiseN from add (fromIntegral n)) $+ Branches (M.map rec cbr)+ (M.map rec lbr)+ (fmap rec cabr)+ Done i t -> Done (i + fromIntegral add) $ raiseFrom from add t+ Fail -> Fail+ where+ rec = raiseFromCC from add+ raiseN :: Nat -> Nat -> Nat -> Nat+ raiseN from add n | from <= n = n + add+ | otherwise = n++-- | Substitute with the Substitution, this will adjust with the new bindings in the+-- CompiledClauses+substCC :: MonadTCM m => [Nat] -> CompiledClauses -> StateT FoldState (Compile m) CompiledClauses+substCC ss cc = case cc of+ Done i t -> do+ return $ Done i (substs (map (flip Var []) ({-reverse $ take i -} ss)) t)+ Fail -> return Fail+ Case n brs -> do+ {-+ In a Case split, if we should change n to m, then all the binders in+ this pattern should also change from being based on n to be based on m.+ -}+ cbs <- forM (M.toList $ conBranches brs) $ \ (c, br) -> do+ nargs <- lift2 $ constructorArity c+ let delta = (ss !! n) - fi n+ ss' = take n ss+ ++ [fi n + delta .. fi n + delta + nargs - 1]+ ++ map (+ (nargs - 1)) (drop (n+1) ss)+ (,) c <$> substCC ss' br++ lbs <- forM (M.toList $ litBranches brs) $ \ (l, br) -> do+ -- We have one less binder here+ (,) l <$> substCC (replaceAt n ss []) br++ cabs <- case catchAllBranch brs of+ Nothing -> return Nothing+ Just br -> Just <$> substCC ss br++ return $ Case (fromIntegral (ss !! n))+ Branches { conBranches = M.fromList cbs+ , litBranches = M.fromList lbs+ , catchAllBranch = cabs+ }+ where+ fi = fromIntegral++-- | Substitute variable n for term t in the body of cc+substCCBody :: Nat -> Term -> CompiledClauses -> CompiledClauses+substCCBody n t cc = substsCCBody (vs [0..n - 1] ++ [t] ++ vs [n + 1..]) cc+ where vs = map (flip Var [])++-- | Perform a substitution in the body of cc+substsCCBody :: [Term] -> CompiledClauses -> CompiledClauses+substsCCBody ss cc = case cc of+ Case n brs -> Case n (substsCCBody ss <$> brs)+ Done i t -> Done i (substs ss t)+ Fail -> Fail++-- | Find the location where a certain Variable index is by searching the constructors+-- aswell. i.e find a term that can be transformed into a pattern that contains the+-- same value the index. This fails if no such term is present.+findPosition :: Nat -> [Maybe Term] -> (Nat, Term)+findPosition var ts = let Just n = findIndex (maybe False pred) ts+ in (fromIntegral n , fromJust $ ts !! n)+ where+ pred :: Term -> Bool+ pred t = case t of+ Var i _ | var == i -> True+ Con _ args -> any (pred . unArg) args+ _ -> False
+ src/full/Agda/Compiler/Epic/FromAgda.hs view
@@ -0,0 +1,233 @@+{-# LANGUAGE CPP #-}++-- | Convert from Agda's internal representation to our auxiliary AST.+module Agda.Compiler.Epic.FromAgda where++import Control.Applicative+import Control.Monad+import Control.Monad.State+import Data.Char+import Data.Map(Map)+import qualified Data.Map as M+import Data.Maybe++import Agda.Interaction.Options+import Agda.Syntax.Common+import Agda.Syntax.Internal hiding (Term(..))+import qualified Agda.Syntax.Internal as T+import qualified Agda.Syntax.Literal as TL+import qualified Agda.TypeChecking.CompiledClause as CC+import Agda.TypeChecking.Monad+import qualified Agda.TypeChecking.Substitute as S++import Agda.Compiler.Epic.AuxAST+import Agda.Compiler.Epic.CompileState hiding (conPars)+import Agda.Compiler.Epic.Forcing++#include "../../undefined.h"+import Agda.Utils.Impossible++-- | Convert from Agda's internal representation to our auxiliary AST.+fromAgda :: MonadTCM m => Maybe T.Term -> [(QName, Definition)] -> Compile m [Fun]+fromAgda msharp defs = catMaybes <$> mapM (translateDefn msharp) defs++-- | Translate an Agda definition to an Epic function where applicable+translateDefn :: MonadTCM m => Maybe T.Term -> (QName, Definition) -> Compile m (Maybe Fun)+translateDefn msharp (n, defini) = let n' = unqname n in case theDef defini of+ d@(Datatype {}) -> do -- become functions returning unit+ vars <- replicateM (fromIntegral $ dataPars d + dataIxs d) newName+ return . return $ Fun True n' ("datatype: " ++ show n) vars UNIT+ f@(Function{}) -> do+ irrF <- gets irrFilters+ let len = length . clausePats . translatedClause . head . funClauses $ f+ toEta = fromIntegral (arity (defType defini)) - len+ ccs = reverseCCBody $ funCompiled f+ forcing <- lift $ gets (optForcing . stPersistentOptions)+ funComp <- if forcing+ then removeForced ccs (defType defini)+ else return ccs+ return <$> (etaExpand toEta =<< compileClauses n len funComp)+ Constructor{} -> do -- become functions returning a constructor with their tag+ arit <- lift $ constructorArity n+ tag <- getConstrTag n+ -- Sharp has to use the primSharp function from AgdaPrelude.e+ case msharp of+ Just (T.Def sharp []) | sharp == n -> return <$> mkFun n' "primSharp" 3+ _ -> return <$> mkCon n tag arit+ r@(Record{}) -> do+ vars <- replicateM (fromIntegral $ recPars r) newName+ return . return $ Fun True n' ("record: " ++ show n) vars UNIT+ a@(Axiom{}) -> do -- Axioms get their code from COMPILED_EPIC pragmas+ case axEpDef a of+ Nothing -> return . return $ EpicFun n' ("AXIOM_UNDEFINED: " ++ show n)+ $ "() -> Any = lazy(error \"Axiom " ++ show n ++ " used but has no computation\")"+ Just x -> return . return $ EpicFun n' ("COMPILED_EPIC: " ++ show n) x+ p@(Primitive{}) -> do -- Primitives use primitive functions from AgdaPrelude.e of the same name.+ -- Hopefully they are defined!+ let ar = fromIntegral $ arity $ defType defini+ return <$> mkFun n' (primName p) ar+ where+ mkFun = mkFunGen apps ("primitive: " ++)+ mkCon q tag ari = do+ let name = unqname q+ mkFunGen (flip Con q) (const $ "constructor: " ++ show q) name tag ari+ mkFunGen :: Monad m+ => (name -> [Expr] -> Expr) -- ^ combinator+ -> (name -> String) -- ^ make comment+ -> Var -- ^ Name of the function+ -> name -- ^ Primitive function name+ -> Int -- ^ Arity ofthe function+ -> Compile m Fun -- ^ Result?+ mkFunGen comb sh name primname arit = do+ vars <- replicateM arit newName+ return $ Fun True name (sh primname) vars (comb primname (map Var vars))++ etaExpand :: MonadTCM m => Int -> Fun -> Compile m Fun+ etaExpand num fun = do+ names <- replicateM num newName+ return $ fun+ { funExpr = funExpr fun @@ names+ , funArgs = funArgs fun ++ names+ }++ (@@) :: Expr -> [Var] -> Expr+ e @@ [] = e+ e @@ vs = let ts = map Var vs in case e of+ Var var -> apps var ts+ Lam var expr -> case vs of+ v:vs' -> subst var v expr @@ vs'+ [] -> __IMPOSSIBLE__+ Con tag qName es -> Con tag qName (es ++ ts)+ App var es -> App var (es ++ ts)+ Case expr bs -> Case expr (map (flip appBranch vs) bs)+ If ea eb ec -> If ea (eb @@ vs) (ec @@ vs)+ Let var el e' -> Let var el (e' @@ vs)+ Lazy e' -> Lazy (e' @@ vs)+ Lit _lit -> IMPOSSIBLE -- Right?+ UNIT -> IMPOSSIBLE+ IMPOSSIBLE -> IMPOSSIBLE++ appBranch :: Branch -> [Var] -> Branch+ appBranch b vs = b {brExpr = brExpr b @@ vs}++reverseCCBody :: CC.CompiledClauses -> CC.CompiledClauses+reverseCCBody cc = case cc of+ CC.Case n (CC.Branches cbr lbr cabr) -> CC.Case n $ CC.Branches (M.map reverseCCBody cbr)+ (M.map reverseCCBody lbr)+ (fmap reverseCCBody cabr)+ CC.Done i t -> CC.Done i (S.substs (map (flip T.Var []) (reverse $ take i [0..])) t)+ CC.Fail -> CC.Fail++-- | Translate from Agda's desugared pattern matching (CompiledClauses) to our AuxAST.+-- This is all done by magic. It uses 'substTerm' to translate the actual+-- terms when the cases have been gone through.+-- The case expressions that we get use de Bruijn indices that change after+-- each case in the following way.+-- Say we have this pattern:+--+-- > f (X x y) (Y z) = term+--+-- Initially, the variables have these indexes:+--+-- > f 0@(X x y) 1@(Y z) = term+--+-- The first case will be on @0@, and the variables bound inside the @X@+-- pattern will replace the outer index, so we get something like this:+--+-- > f 0 2@(Y z) = case 0 of X 0 1 -> term+--+-- Notice how @(Y z)@ now has index @2@.+-- Then the second pattern is desugared in the same way:+--+-- > f 0 2 = case 0 of X 0 1 -> case 2 of Y 2 -> term+--+-- This replacement is what is done using the replaceAt function.+--+-- CompiledClauses also have default branches for when all branches fail (even+-- inner branches), the catchAllBranch. Epic does not support this, so+-- we have to add the catchAllBranch to each inner case (here we are calling+-- it omniDefault). To avoid code duplication it is first bound by a let+-- expression.+compileClauses :: MonadTCM m+ => QName+ -> Int -- ^ Number of arguments in the definition+ -> CC.CompiledClauses -> Compile m Fun+compileClauses name nargs c = do+ let n' = unqname name+ vars <- replicateM nargs newName+ e <- compileClauses' vars Nothing c+ return $ Fun False n' ("function: " ++ show name) vars e+ where+ compileClauses' :: MonadTCM m => [Var] -> Maybe Var -> CC.CompiledClauses -> Compile m Expr+ compileClauses' env omniDefault cc = case cc of+ CC.Case n nc -> case length env <= n of+ True -> __IMPOSSIBLE__+ False -> case CC.catchAllBranch nc of+ Nothing -> Case (Var (env !! n)) <$> compileCase env omniDefault n nc+ Just de -> do+ var <- newName+ def <- compileClauses' env omniDefault de+ Let var (Lazy def) . Case (Var (env !! n)) <$> compileCase env (Just var) n nc+ CC.Done _ t -> substTerm ({- reverse -} env) t+ CC.Fail -> return IMPOSSIBLE++ compileCase :: MonadTCM m => [Var] -> Maybe Var -> Int -> CC.Case CC.CompiledClauses+ -> Compile m [Branch]+ compileCase env omniDefault casedvar nc = do+ cb <- if M.null (CC.conBranches nc)+ -- Lit branch+ then forM (M.toList (CC.litBranches nc)) $ \(l, cc) -> do+ cc' <- compileClauses' (replaceAt casedvar env []) omniDefault cc+ case l of+ TL.LitChar _ cha -> return $ BrInt (ord cha) cc'+ _ -> __IMPOSSIBLE__ -- TODO: Handle other literals+ -- Con branch+ else forM (M.toList (CC.conBranches nc)) $ \(b, cc) -> do+ par <- getConPar b+ tag <- getConstrTag b+ vars <- replicateM par newName+ cc' <- compileClauses' (replaceAt casedvar env vars) omniDefault cc+ return $ Branch tag b vars cc'++ case omniDefault of+ Nothing -> return cb+ Just cc -> do+ return $ cb ++ [Default (Var cc)]++-- | Translate the actual Agda terms, with an environment of all the bound variables+-- from patternmatching. Agda terms are in de Bruijn so we just check the new+-- names in the position.+substTerm :: MonadTCM m => [Var] -> T.Term -> Compile m Expr+substTerm env term = case term of+ T.Var ind args -> case length env <= fromIntegral ind of+ True -> __IMPOSSIBLE__+ False -> apps (env !! fromIntegral ind) <$> mapM (substTerm env . unArg) args+ T.Lam _ te -> do+ name <- newName+ Lam name <$> substTerm (name : env) (absBody te)+ T.Lit l -> Lit <$> substLit l+ T.Def q args -> do+ let name = unqname q+ del <- getDelayed q+ f <- apps name <$> mapM (substTerm env . unArg) args+ return $ case del of+ True -> Lazy f+ False -> f+ T.Con q args -> do+ let con = unqname q+ apps con <$> mapM (substTerm env . unArg) args+ T.Pi _ _ -> return UNIT+ T.Fun _ _ -> return UNIT+ T.Sort _ -> return UNIT+ T.MetaV _ _ -> return UNIT+ T.DontCare -> return UNIT++-- | Translate Agda literals to our AUX definition+substLit :: MonadTCM m => TL.Literal -> Compile m Lit+substLit lit = case lit of+ TL.LitInt _ i -> return $ LInt i+ TL.LitLevel _ i -> return $ LInt i+ TL.LitString _ s -> return $ LString s+ TL.LitChar _ c -> return $ LChar c+ TL.LitFloat _ f -> return $ LFloat f+ _ -> epicError $ "literal not supported: " ++ show lit
+ src/full/Agda/Compiler/Epic/LambdaLift.hs view
@@ -0,0 +1,60 @@+-- | Lift lambda expressions to top level definitions (Epic does not support+-- lambdas).+module Agda.Compiler.Epic.LambdaLift where++import Control.Applicative+import Control.Monad.Trans+import Control.Monad.Writer+import qualified Data.Set as S++import Agda.Compiler.Epic.AuxAST+import Agda.Compiler.Epic.CompileState++import Agda.TypeChecking.Monad.Base (MonadTCM)++-- | LL makes it possible to emit new functions when we encounter a lambda+type LL = WriterT [Fun]++-- | lambda lift all the functions+lambdaLift :: MonadTCM m => [Fun] -> Compile m [Fun]+lambdaLift fs = do+ concat <$> sequence+ [do (f', lifts) <- runWriterT (lambdaLiftFun f)+ return $ f' : lifts+ | f <- fs]++-- | λ lift a function, this is in a LL (Writer monad)+lambdaLiftFun :: MonadTCM m => Fun -> LL (Compile m) Fun+lambdaLiftFun (Fun i name c vs e) = Fun i name c vs <$> lambdaLiftExpr e+lambdaLiftFun f@(EpicFun _ _ _) = return f++-- | λ lift an expression, put all the new definitions in the writer monad+lambdaLiftExpr :: MonadTCM m => Expr -> LL (Compile m) Expr+lambdaLiftExpr expr = case expr of+ Var _ -> return expr+ Lit _ -> return expr+ e1@(Lam _ _) -> do+ -- This is the only difficult case, get a group of lambda binders,+ -- lambda lift the body of it, and create a new supercombinator from+ -- this.+ let (vs, e2) = collectLam e1+ topBinding <- lift topBindings+ let vs' = filter (`S.notMember` topBinding) $ fv e1+ e3 <- lambdaLiftExpr e2+ name <- lift newName+ tell [Fun True name "lambda" (vs' ++ vs) e3]+ return $ apps name (map Var vs')+ Con c n es -> Con c n <$> mapM lambdaLiftExpr es+ App v es -> App v <$> mapM lambdaLiftExpr es+ Case e brs -> Case <$> lambdaLiftExpr e+ <*> mapM (\br -> do lle <- lambdaLiftExpr $ brExpr br; return br {brExpr = lle}) brs+ If a b c -> If <$> lambdaLiftExpr a <*> lambdaLiftExpr b <*> lambdaLiftExpr c+ Let v e e' -> Let v <$> lambdaLiftExpr e <*> lambdaLiftExpr e'+ Lazy e -> Lazy <$> lambdaLiftExpr e+ UNIT -> return UNIT+ IMPOSSIBLE -> return IMPOSSIBLE+ where+ -- | Collect all the variables in a group of lambdas+ collectLam :: Expr -> ([Var], Expr)+ collectLam (Lam v e) = let (vs, e') = collectLam e in (v:vs, e')+ collectLam e = ([], e)
+ src/full/Agda/Compiler/Epic/NatDetection.hs view
@@ -0,0 +1,64 @@+-- | Detect if a datatype could be represented as a primitive integer.+-- If it has one constructor with no arguments and one with a recursive+-- argument this is true. This is done using IrrFilters which filter out+-- forced arguments, so for example Fin becomes primitive.+module Agda.Compiler.Epic.NatDetection where++import Control.Applicative+import Control.Monad+import Control.Monad.State+import Data.Function+import Data.List+import qualified Data.Map as M+import Data.Maybe++import Agda.TypeChecking.Monad+import Agda.Syntax.Internal+import Agda.Syntax.Common++import Agda.Compiler.Epic.CompileState hiding (conPars)++-- | Get a list of all the datatypes that look like nats. The [QName] is on the+-- form [zeroConstr, sucConstr]+getNatish :: MonadTCM m => Compile m [(IrrFilter,[QName])]+getNatish = do+ sig <- lift (gets (sigDefinitions . stImports))+ let defs = M.toList sig+ fmap catMaybes $ forM defs $ \(q, def) ->+ case theDef def of+ d@(Datatype {}) -> do -- A datatype ...+ case dataCons d of+ constrs | length constrs == 2 -> do -- with two constructors ...+ z <- zip constrs <$> mapM getIrrFilter constrs+ case sortBy (compare `on` nrRel . snd) z of+ [(cz,fz), (cs,fs)] -> do+ let ts = defType $ sig M.! cs+ nr = fromIntegral $ dataPars d+ return $ do+ guard (nrRel fz == 0) -- where one constructor has zero arguments ...+ guard (nrRel fs == 1) -- and the other one one argument ...+ guard (isRec ((fromJust $ elemIndex True fs) + nr) ts q) -- which is recursive.+ return (fs, [cz, cs]) -- It's natish!+ _ -> return Nothing+ _ -> return Nothing+ _ -> return Nothing++-- | Count the number of relevant arguments+nrRel :: IrrFilter -> Integer+nrRel = sum . map (const 1) . filter id++-- | Check if argument n is recursive+isRec :: Int -> Type -> QName -> Bool+isRec 0 (El _ t) dat = case t of+ Fun arg _ -> argIsDef (unArg arg) dat+ Pi arg _ -> argIsDef (unArg arg) dat+ _ -> False+isRec n (El _ t) dat = case t of+ Pi _ ab -> isRec (n - 1) (absBody ab) dat+ Fun _ typ -> isRec (n - 1) typ dat+ _ -> False++argIsDef :: Type -> QName -> Bool+argIsDef (El _ t) dat = case t of+ Def q _ -> q == dat+ _ -> False
+ src/full/Agda/Compiler/Epic/Primitive.hs view
@@ -0,0 +1,201 @@+{-# LANGUAGE CPP #-}++-- | Change constructors and cases on builtins and natish datatypes to use+-- primitive data+module Agda.Compiler.Epic.Primitive where++import Control.Applicative+import Control.Monad+import Control.Monad.Trans+import Data.Map(Map)+import qualified Data.Map as M+import Data.Maybe++import Agda.Syntax.Internal(QName)+import qualified Agda.Syntax.Internal as T+import Agda.TypeChecking.Monad hiding (defName)+import Agda.TypeChecking.Monad.Builtin++import Agda.Compiler.Epic.AuxAST+import Agda.Compiler.Epic.CompileState+import Agda.Compiler.Epic.NatDetection++#include "../../undefined.h"+import Agda.Utils.Impossible++{- Stacken, Heapen -- Optimizern -}++data PrimTransform = PrimTF+ { mapCon :: Map QName Var+ , translateCase :: Expr -> [Branch] -> Expr+ }++-- | Change constructors and cases on builtins and natish datatypes to use+-- primitive data+primitivise :: MonadTCM m => [Fun] -> Compile m [Fun]+primitivise funs = do+ ptfs <- getBuiltins+ natish <- getNatish+ lists <- primLists+ (++ lists) <$> mapM (primFun $ ptfs ++ map (uncurry natPrimTF) natish) funs++-- | Create primitive functions if list constructors are marked as builtins+primLists :: MonadTCM m => Compile m [Fun]+primLists = do+ mnil <- lift $ getBuiltin' builtinNil+ mcons <- lift $ getBuiltin' builtinCons+ case (mnil, mcons) of+ (Just (T.Con nil []), Just (T.Con cons [])) -> do+ [nilT, consT] <- mapM getConstrTag [nil, cons]+ let fun s n = Fun+ { funInline = True+ , funName = "prim" ++ s+ , funComment = "BUILTIN " ++ s+ , funArgs = []+ , funExpr = Var (unqname n)+ }+ return [ fun "Nil" nil+ , fun "Cons" cons+ , Fun+ { funInline = False+ , funName = "primListElim"+ , funComment = "Eliminator for Lists"+ , funArgs = ["op" , "z" , "xs"]+ , funExpr = Case (Var "xs")+ [ Branch nilT nil [] $ Var "z"+ , Branch consT cons ["y", "ys"] $+ App "op" [ Var "y"+ , App "primListElim" [ Var "op"+ , Var "z"+ , Var "ys"+ ]+ ]+ ]+ }+ ]+ _ -> return []+-- | Build transforms using the names of builtins+getBuiltins :: MonadTCM m => Compile m [PrimTransform]+getBuiltins =+ catMaybes <$> sequence+ [ [builtinZero, builtinSuc ] ~> natPrimTF [True]+ -- ? is this ok to have [True]+ , [builtinLevelZero, builtinLevelSuc] ~> natPrimTF [True]+ , [builtinTrue, builtinFalse] ~> boolPrimTF+ ]+ where+ constrs ~> transf = do+ builtins <- lift $ mapM getBuiltin' constrs+ if all isJust builtins+ then return $ Just (transf (map (defName . fromMaybe __IMPOSSIBLE__) builtins))+ else return Nothing+ defName (T.Def q []) = q+ defName (T.Con q []) = q+ defName _ = __IMPOSSIBLE__++-- | Translation to primitive integer functions+natPrimTF :: IrrFilter -> [QName] -> PrimTransform+natPrimTF filt [zero, suc] = PrimTF+ { mapCon = M.fromList [(zero, "primZero"), (suc, "primSuc")]+ , translateCase = \ce brs -> case brs of+ -- Assuming only the first two branches are relevant when casing on Nats+ (Branch _ n vs e:Branch _ _n' vs' e':_) ->+ if n == zero+ then primNatCaseZS ce e (head (pairwiseFilter filt vs')) e'+ else primNatCaseZS ce e' (head (pairwiseFilter filt vs )) e+ (Branch _ n vs e:Default e':_) ->+ if n == zero+ then primNatCaseZD ce e e' -- zero+ else primNatCaseZS ce e' (head (pairwiseFilter filt vs )) e -- suc+ [ Branch _ n vs e ] ->+ if n == zero+ then e+ else Let (head (pairwiseFilter filt vs)) (App "primPred" [ce]) e+ _ -> __IMPOSSIBLE__+ }+natPrimTF _ _ = __IMPOSSIBLE__++-- | Corresponds to a case for natural numbers+primNatCaseZS :: Expr -- ^ Expression that is cased on+ -> Expr -- ^ Expression for the zero branch+ -> Var -- ^ Variable that is bound in suc branch+ -> Expr -- ^ Expression used for suc branch+ -> Expr -- ^ Result?+primNatCaseZS n zeroBr v sucBr =+ If (App "primNatEquality" [n, Var "primZero"]) zeroBr (Let v (App "primPred" [n]) sucBr)++-- | Corresponds to a case with a zero and default branch+primNatCaseZD :: Expr -- ^ Expression that is cased on+ -> Expr -- ^ Zero branch+ -> Expr -- ^ Default branch+ -> Expr -- ^ Result?+primNatCaseZD n zeroBr defBr = If (App "primNatEquality" [n, Var "primZero"]) zeroBr defBr++-- | Translation to primitive bool functions+boolPrimTF :: [QName] -> PrimTransform+boolPrimTF [true, false] = PrimTF+ { mapCon = M.fromList [(true, "primTrue"), (false, "primFalse")]+ , translateCase = \ce brs ->+ case brs of+ (Branch _ n _vs e:b':_) ->+ (if n == true+ then If ce e (brExpr b')+ else If ce (brExpr b') e)+ _ -> __IMPOSSIBLE__+ }+boolPrimTF _ = __IMPOSSIBLE__++-- | Change all the primitives in the function using the PrimTransform+primFun :: MonadTCM m => [PrimTransform] -> Fun -> Compile m Fun+primFun ptfs (Fun i n c args e) =+ Fun i n c args <$> primExpr ptfs e+primFun _ e@(EpicFun {}) = return e+++-- | Change all the primitives in an expression using PrimTransform+primExpr :: MonadTCM m => [PrimTransform] -> Expr -> Compile m Expr+primExpr prim ex = case ex of+ Var{} -> return ex+ Lit{} -> return ex+ Lam v e1 -> Lam v <$> primExpr prim e1+ Con c n es -> case testCon prim n of+ Just pn -> do+ filt <- getIrrFilter n+ apps pn <$> mapM (primExpr prim) (pairwiseFilter filt es)+ Nothing -> Con c n <$> mapM (primExpr prim) es+ App v es -> App v <$> mapM (primExpr prim) es+ Case e brs -> case testBranch prim brs of+ Just p -> primExpr prim $ translateCase p e brs+ Nothing -> Case <$> primExpr prim e <*> mapM primBranch brs+ If a b c -> If <$> primExpr prim a <*> primExpr prim b <*> primExpr prim c+ Let v e e' -> Let v <$> primExpr prim e <*> primExpr prim e'+ Lazy e -> Lazy <$> primExpr prim e+ UNIT -> return ex+ IMPOSSIBLE -> return ex+ where+ -- | Test if any PrimTransform have any primitive function for+ -- a constructor, gives the name of that primitive function in that+ -- case, otherwise Nothing.+ testCon :: [PrimTransform] -> QName -> Maybe Var+ testCon [] _ = Nothing+ testCon (p : ps) k = M.lookup k (mapCon p) `mplus` testCon ps k++ -- | Test if we should transform the case, based on the branches. Returns+ -- the (first) PrimTransform that is applicable.+ testBranch :: [PrimTransform] -> [Branch] -> Maybe PrimTransform+ testBranch [] _ = Nothing+ testBranch (p:ps) brs = msum (map (check p) brs) `mplus` testBranch ps brs++ -- | Check if a particular PrimTransform can be used on a particular Branch+ -- Returns the PrimTransform in that case.+ check :: PrimTransform -> Branch -> Maybe PrimTransform+ check p br = case br of+ Branch _ n _ _ -> fmap (const p) $ M.lookup n (mapCon p)+ BrInt _ _ -> Nothing+ Default _ -> Nothing++ -- | Change all primitives in a branch+ primBranch :: MonadTCM m => Branch -> Compile m Branch+ primBranch br = do+ e' <- primExpr prim (brExpr br)+ return br {brExpr = e'}
src/full/Agda/Compiler/MAlonzo/Compiler.hs view
@@ -10,7 +10,9 @@ import Data.List as L import Data.Map as M import Data.Set as S-import Language.Haskell.Syntax+import qualified Language.Haskell.Exts.Extension as HS+import qualified Language.Haskell.Exts.Parser as HS+import qualified Language.Haskell.Exts.Syntax as HS import System.Cmd import System.Directory import System.Exit@@ -62,6 +64,7 @@ ignoreAbstractMode $ do mapM_ (compile . miInterface) =<< (M.elems <$> getVisitedModules)+ writeModule rteModule callGHC mainI compile :: Interface -> TCM ()@@ -70,13 +73,13 @@ ifM uptodate noComp $ (yesComp >>) $ do writeModule =<< decl <$> curHsMod <*> (definitions =<< curDefs) <*> imports where- decl mn ds imp = HsModule dummy mn Nothing imp ds- uptodate = liftIO =<< (isNewerThan <$> outFile <*> ifile)+ decl mn ds imp = HS.Module dummy mn [] Nothing Nothing imp ds+ uptodate = liftIO =<< (isNewerThan <$> outFile_ <*> ifile) ifile = maybe __IMPOSSIBLE__ filePath <$> (findInterfaceFile . toTopLevelModuleName =<< curMName) noComp = reportSLn "" 1 . (++ " : no compilation is needed.").show =<< curMName yesComp = reportSLn "" 1 . (`repl` "Compiling <<0>> in <<1>> to <<2>>") =<<- sequence [show <$> curMName, ifile, outFile] :: TCM ()+ sequence [show <$> curMName, ifile, outFile_] :: TCM () -------------------------------------------------- -- imported modules@@ -84,14 +87,14 @@ -- accumulating in it what are acutally used in Misc.xqual -------------------------------------------------- -imports :: TCM [HsImportDecl]+imports :: TCM [HS.ImportDecl] imports = (++) <$> hsImps <*> imps where hsImps = (L.map decl . S.toList .- S.insert unsafeCoerceMod . S.map Module) <$>+ S.insert mazRTE . S.map HS.ModuleName) <$> getHaskellImports imps = L.map decl . uniq <$> ((++) <$> importsForPrim <*> (L.map mazMod <$> mnames))- decl m = HsImportDecl dummy m True Nothing Nothing+ decl m = HS.ImportDecl dummy m True False Nothing Nothing Nothing mnames = (++) <$> (S.elems <$> gets stImportedModules) <*> (iImportedModules <$> curIF) uniq = L.map head . group . L.sort@@ -100,7 +103,7 @@ -- Main compiling clauses -------------------------------------------------- -definitions :: Definitions -> TCM [HsDecl]+definitions :: Definitions -> TCM [HS.Decl] definitions defs = do kit <- coinductionKit M.fold (liftM2 (++) . (definition kit <.> instantiateFull))@@ -120,38 +123,52 @@ -- flat _ _ x = x -- @ -definition :: Maybe CoinductionKit -> Definition -> TCM [HsDecl]-definition kit (Defn q ty _ _ d) = do+definition :: Maybe CoinductionKit -> Definition -> TCM [HS.Decl]+-- ignore irrelevant definitions+definition kit (Defn Forced _ _ _ _ _) = __IMPOSSIBLE__+definition kit (Defn Irrelevant _ _ _ _ _) = return []+definition kit (Defn Relevant q ty _ _ d) = do checkTypeOfMain q ty (infodecl q :) <$> case d of -- Special treatment of coinductive builtins. Datatype{} | Just q == (nameOfInf <$> kit) -> do- let inf = unqhname "T" q- a = ihname "a" 0- b = ihname "a" 1- return [HsTypeDecl dummy inf [a, b] (HsTyVar b)]+ let infT = unqhname "T" q+ infV = unqhname "d" q+ a = ihname "a" 0+ b = ihname "a" 1+ vars = [a, b]+ return [ HS.TypeDecl dummy infT+ (L.map HS.UnkindedVar vars)+ (HS.TyVar b)+ , HS.FunBind [HS.Match dummy infV+ (L.map HS.PVar vars) Nothing+ (HS.UnGuardedRhs HS.unit_con)+ (HS.BDecls [])]+ ] Constructor{} | Just q == (nameOfSharp <$> kit) -> do let sharp = unqhname "d" q x = ihname "x" 0 return $- [ HsTypeSig dummy [sharp] $ fakeType $+ [ HS.TypeSig dummy [sharp] $ fakeType $ "forall a. () -> forall b. () -> b -> b"- , HsFunBind [HsMatch dummy sharp- [HsPWildCard, HsPWildCard, HsPVar x]- (HsUnGuardedRhs (HsVar (UnQual x)))- []]+ , HS.FunBind [HS.Match dummy sharp+ [HS.PWildCard, HS.PWildCard, HS.PVar x]+ Nothing+ (HS.UnGuardedRhs (HS.Var (HS.UnQual x)))+ (HS.BDecls [])] ] Function{} | Just q == (nameOfFlat <$> kit) -> do let flat = unqhname "d" q x = ihname "x" 0 return $- [ HsTypeSig dummy [flat] $ fakeType $+ [ HS.TypeSig dummy [flat] $ fakeType $ "forall a. () -> forall b. () -> b -> b"- , HsFunBind [HsMatch dummy flat- [HsPWildCard, HsPWildCard, HsPVar x]- (HsUnGuardedRhs (HsVar (UnQual x)))- []]+ , HS.FunBind [HS.Match dummy flat+ [HS.PWildCard, HS.PWildCard, HS.PVar x]+ Nothing+ (HS.UnGuardedRhs (HS.Var (HS.UnQual x)))+ (HS.BDecls [])] ] Axiom{ axHsDef = Just (HsDefn ty hs) } -> return $ fbWithType ty (fakeExp hs)@@ -181,37 +198,40 @@ tag _ [] = [] tag i [cl] = (i, True , cl): [] tag i (cl:cls) = (i, False, cl): tag (i + 1) cls- mkwhere (HsFunBind [m0, HsMatch _ dn ps rhs [] ] : fbs@(_:_)) =- [HsFunBind [m0, HsMatch dummy dn ps rhs fbs]]+ mkwhere (HS.FunBind [m0, HS.Match _ dn ps mt rhs (HS.BDecls [])] :+ fbs@(_:_)) =+ [HS.FunBind [m0, HS.Match dummy dn ps mt rhs (HS.BDecls fbs)]] mkwhere fbs = fbs fbWithType ty e =- [ HsTypeSig dummy [unqhname "d" q] $ fakeType ty ] ++ fb e- fb e =[HsFunBind[HsMatch dummy (unqhname "d" q)[] (HsUnGuardedRhs $ e) []]]+ [ HS.TypeSig dummy [unqhname "d" q] $ fakeType ty ] ++ fb e+ fb e = [HS.FunBind [HS.Match dummy (unqhname "d" q) [] Nothing+ (HS.UnGuardedRhs $ e) (HS.BDecls [])]] axiomErr = rtmError $ "postulate evaluated: " ++ show q -checkConstructorType :: QName -> TCM [HsDecl]+checkConstructorType :: QName -> TCM [HS.Decl] checkConstructorType q = do Constructor{ conHsCode = Just (ty, hs) } <- theDef <$> getConstInfo q- return [ HsTypeSig dummy [unqhname "check" q] $ fakeType ty- , HsFunBind [HsMatch dummy (unqhname "check" q) [] (HsUnGuardedRhs $ fakeExp hs) []]+ return [ HS.TypeSig dummy [unqhname "check" q] $ fakeType ty+ , HS.FunBind [HS.Match dummy (unqhname "check" q) [] Nothing+ (HS.UnGuardedRhs $ fakeExp hs) (HS.BDecls [])] ] -checkCover :: QName -> HaskellType -> Nat -> [QName] -> TCM [HsDecl]+checkCover :: QName -> HaskellType -> Nat -> [QName] -> TCM [HS.Decl] checkCover q ty n cs = do let tvs = [ "a" ++ show i | i <- [1..n] ] makeClause c = do a <- constructorArity c Just (_, hsc) <- conHsCode . theDef <$> getConstInfo c- let pat = HsPApp (UnQual $ HsIdent hsc) $ genericReplicate a HsPWildCard- return $ HsAlt dummy pat (HsUnGuardedAlt $ HsTuple []) []+ let pat = HS.PApp (HS.UnQual $ HS.Ident hsc) $ genericReplicate a HS.PWildCard+ return $ HS.Alt dummy pat (HS.UnGuardedAlt $ HS.Tuple []) (HS.BDecls []) cs <- mapM makeClause cs let rhs = case cs of [] -> fakeExp "()" -- There is no empty case statement in Haskell- _ -> HsCase (HsVar $ UnQual $ HsIdent "x") cs+ _ -> HS.Case (HS.Var $ HS.UnQual $ HS.Ident "x") cs - return [ HsTypeSig dummy [unqhname "cover" q] $ fakeType $ unwords (ty : tvs) ++ " -> ()"- , HsFunBind [HsMatch dummy (unqhname "cover" q) [HsPVar $ HsIdent "x"]- (HsUnGuardedRhs rhs) []]+ return [ HS.TypeSig dummy [unqhname "cover" q] $ fakeType $ unwords (ty : tvs) ++ " -> ()"+ , HS.FunBind [HS.Match dummy (unqhname "cover" q) [HS.PVar $ HS.Ident "x"]+ Nothing (HS.UnGuardedRhs rhs) (HS.BDecls [])] ] -- | Move somewhere else!@@ -223,45 +243,49 @@ Constructor{ conPars = np } -> return $ arity a - np _ -> fail $ "constructorArity: non constructor: " ++ show q -clause :: QName -> (Nat, Bool, Clause) -> TCM HsDecl+clause :: QName -> (Nat, Bool, Clause) -> TCM HS.Decl clause q (i, isLast, Clause{ clausePats = ps, clauseBody = b }) =- HsFunBind . (: cont) <$> main where+ HS.FunBind . (: cont) <$> main where main = match <$> argpatts ps (bvars b (0::Nat)) <*> clausebody b- cont | isLast && any isCon ps = [match (L.map HsPVar cvs) failrhs]+ cont | isLast && any isCon ps = [match (L.map HS.PVar cvs) failrhs] | isLast = []- | otherwise = [match (L.map HsPVar cvs) crhs]+ | otherwise = [match (L.map HS.PVar cvs) crhs] cvs = L.map (ihname "v") [0 .. genericLength ps - 1]- crhs = hsCast$ foldl HsApp (hsVarUQ $ dsubname q (i + 1)) (L.map hsVarUQ cvs)+ crhs = hsCast$ foldl HS.App (hsVarUQ $ dsubname q (i + 1)) (L.map hsVarUQ cvs) failrhs = rtmError $ "incomplete pattern matching: " ++ show q- match hps rhs = HsMatch dummy (dsubname q i) hps (HsUnGuardedRhs rhs) []+ match hps rhs = HS.Match dummy (dsubname q i) hps Nothing+ (HS.UnGuardedRhs rhs) (HS.BDecls []) bvars (Body _) _ = []- bvars (Bind (Abs _ b')) n = HsPVar (ihname "v" n) : bvars b' (n + 1)- bvars (NoBind b' ) n = HsPWildCard : bvars b' n -- WHY NOT: bvars b' n -- PRODDUCES head [] exception- bvars NoBody _ = repeat HsPWildCard -- ?+ bvars (Bind (Abs _ b')) n = HS.PVar (ihname "v" n) : bvars b' (n + 1)+ bvars (NoBind b' ) n = HS.PWildCard : bvars b' n -- WHY NOT: bvars b' n -- PRODDUCES head [] exception+ bvars NoBody _ = repeat HS.PWildCard -- ? isCon (Arg _ _ ConP{}) = True isCon _ = False -- argpatts aps xs = hps -- xs is alist of haskell *variables* in form of patterns (because of wildcard)-argpatts :: [Arg Pattern] -> [HsPat] -> TCM [HsPat]+argpatts :: [Arg Pattern] -> [HS.Pat] -> TCM [HS.Pat] argpatts ps0 bvs = evalStateT (mapM pat' ps0) bvs where pat (VarP _ ) = do v <- gets head; modify tail; return v- pat (DotP _ ) = pat (VarP dummy) -- WHY NOT: return HsPWildCard -- SEE ABOVE- pat (LitP l ) = return $ HsPLit $ hslit l+ pat (DotP _ ) = pat (VarP dummy) -- WHY NOT: return HS.PWildCard -- SEE ABOVE+ pat (LitP l ) = return $ HS.PLit $ hslit l pat p@(ConP q _ ps) = do -- Note that irr is applied once for every subpattern, so in the -- worst case it is quadratic in the size of the pattern. I -- suspect that this will not be a problem in practice, though. irrefutable <- lift $ irr p let tilde = if tildesEnabled && irrefutable- then HsPParen . HsPIrrPat+ then HS.PParen . HS.PIrrPat else id- (tilde . HsPParen) <$>- (HsPApp <$> lift (conhqn q) <*> mapM pat' ps)+ (tilde . HS.PParen) <$>+ (HS.PApp <$> lift (conhqn q) <*> mapM pat' ps) - pat' = pat . unArg+ -- Andreas, 2010-09-29+ -- do not match against irrelevant stuff+ pat' (Arg _ Irrelevant _) = return $ HS.PWildCard+ pat' (Arg _ _ p) = pat p tildesEnabled = False @@ -272,118 +296,157 @@ irr (LitP {}) = return False irr (ConP q _ ps) = (&&) <$> singleConstructorType q- <*> (and <$> mapM (irr . unArg) ps)+ <*> (and <$> mapM irr' ps) -clausebody :: ClauseBody -> TCM HsExp+ -- | Irrelevant patterns are naturally irrefutable.+ irr' (Arg _ Irrelevant _) = return $ True+ irr' (Arg _ _ p) = irr p++clausebody :: ClauseBody -> TCM HS.Exp clausebody b0 = runReaderT (go b0) 0 where go (Body tm ) = hsCast <$> term tm go (Bind (Abs _ b)) = local (1+) $ go b go (NoBind b ) = go b- go NoBody = return$ rtmError$ "Impossible Clause Body"+ go NoBody = return $ rtmError $ "Impossible Clause Body" -term :: Term -> ReaderT Nat TCM HsExp+-- | Extract Agda term to Haskell expression.+-- Irrelevant arguments are extracted as @()@.+-- Types are extracted as @()@.+-- @DontCare@ outside of irrelevant arguments is extracted as @error@.+term :: Term -> ReaderT Nat TCM HS.Exp term tm0 = case tm0 of Var i as -> do n <- ask; apps (hsVarUQ $ ihname "v" (n - i - 1)) as- Lam _ at -> do n <- ask; HsLambda dummy [HsPVar $ ihname "v" n] <$>+ Lam _ at -> do n <- ask; HS.Lambda dummy [HS.PVar $ ihname "v" n] <$> local (1+) (term $ absBody at) Lit l -> lift $ literal l- Def q as -> (`apps` as) . HsVar =<< lift (xhqn "d" q)- Con q as -> (`apps` as) . HsCon =<< lift (conhqn q)- Pi _ _ -> return unit_con- Fun _ _ -> return unit_con- Sort _ -> return unit_con+ Def q as -> (`apps` as) . HS.Var =<< lift (xhqn "d" q)+ Con q as -> (`apps` as) . HS.Con =<< lift (conhqn q)+ Pi _ _ -> return HS.unit_con+ Fun _ _ -> return HS.unit_con+ Sort _ -> return HS.unit_con MetaV _ _ -> mazerror "hit MetaV"- DontCare -> return unit_con- where apps = foldM (\h a -> HsApp h <$> term (unArg a))+ DontCare -> return $ rtmError $ "hit DontCare"+ where apps = foldM (\h a -> HS.App h <$> term' a) -literal :: Literal -> TCM HsExp+-- | Irrelevant arguments are replaced by Haskells' ().+term' :: Arg Term -> ReaderT Nat TCM HS.Exp+term' (Arg _ Irrelevant _) = return HS.unit_con+term' (Arg _ _ t) = term t++literal :: Literal -> TCM HS.Exp literal l = case l of LitInt _ _ -> do toN <- bltQual "NATURAL" mazIntegerToNat- return $ HsVar toN `HsApp` typed "Integer"+ return $ HS.Var toN `HS.App` typed "Integer" LitFloat _ _ -> return $ typed "Double" _ -> return $ l'- where l' = HsLit $ hslit l- typed = HsExpTypeSig dummy l' . HsQualType [] . HsTyCon . rtmQual+ where l' = HS.Lit $ hslit l+ typed = HS.ExpTypeSig dummy l' . HS.TyCon . rtmQual -hslit :: Literal -> HsLiteral-hslit l = case l of LitInt _ x -> HsInt x- LitLevel _ x -> HsInt x- LitFloat _ x -> HsFrac (toRational x)- LitString _ x -> HsString x- LitChar _ x -> HsChar x- LitQName _ x -> HsString (show x)+hslit :: Literal -> HS.Literal+hslit l = case l of LitInt _ x -> HS.Int x+ LitLevel _ x -> HS.Int x+ LitFloat _ x -> HS.Frac (toRational x)+ LitString _ x -> HS.String x+ LitChar _ x -> HS.Char x+ LitQName _ x -> HS.String (show x) -condecl :: QName -> TCM (Nat, HsConDecl)+condecl :: QName -> TCM (Nat, HS.ConDecl) condecl q = getConstInfo q >>= \d -> case d of- Defn _ ty _ _ (Constructor {conPars = np}) -> do ar <- arity <$> normalise ty- return $ (ar, cdecl q (ar - np))+ Defn _ _ ty _ _ (Constructor {conPars = np}) -> do+ ar <- arity <$> normalise ty+ return $ (ar, cdecl q (ar - np)) _ -> mazerror $ "condecl:" ++ gshow' (q, d) -cdecl :: QName -> Nat -> HsConDecl-cdecl q n = HsConDecl dummy (unqhname "C" q)- [ HsUnBangedTy $ HsTyVar $ ihname "a" i | i <- [0 .. n - 1]]+cdecl :: QName -> Nat -> HS.ConDecl+cdecl q n = HS.ConDecl (unqhname "C" q)+ [ HS.UnBangedTy $ HS.TyVar $ ihname "a" i | i <- [0 .. n - 1]] tvaldecl :: QName -> Induction -- ^ Is the type inductive or coinductive?- -> Nat -> Nat -> [HsConDecl] -> Maybe Clause -> [HsDecl]+ -> Nat -> Nat -> [HS.ConDecl] -> Maybe Clause -> [HS.Decl] tvaldecl q ind ntv npar cds cl =- HsFunBind [HsMatch dummy vn pvs (HsUnGuardedRhs unit_con) []] :- maybe [datatype] (const []) cl+ HS.FunBind [HS.Match dummy vn pvs Nothing+ (HS.UnGuardedRhs HS.unit_con) (HS.BDecls [])] :+ maybe [HS.DataDecl dummy kind [] tn tvs+ (L.map (HS.QualConDecl dummy [] []) cds) []]+ (const []) cl where (tn, vn) = (unqhname "T" q, unqhname "d" q)- tvs = [ ihname "a" i | i <- [0 .. ntv - 1]]- pvs = [ HsPVar $ ihname "a" i | i <- [0 .. npar - 1]]+ tvs = [ HS.UnkindedVar $ ihname "a" i | i <- [0 .. ntv - 1]]+ pvs = [ HS.PVar $ ihname "a" i | i <- [0 .. npar - 1]] -- Inductive data types consisting of a single constructor with a -- single argument are translated into newtypes.- datatype = case (ind, cds) of- (Inductive, [c@(HsConDecl _ _ [_])]) -> newtyp c- (Inductive, [c@(HsRecDecl _ _ [_])]) -> newtyp c- _ -> datatyp-- newtyp c = HsNewTypeDecl dummy [] tn tvs c []- datatyp = HsDataDecl dummy [] tn tvs cds []+ kind = case (ind, cds) of+ (Inductive, [HS.ConDecl _ [_]]) -> HS.NewType+ (Inductive, [HS.RecDecl _ [_]]) -> HS.NewType+ _ -> HS.DataType -infodecl :: QName -> HsDecl+infodecl :: QName -> HS.Decl infodecl q = fakeD (unqhname "name" q) $ show (show q) -------------------------------------------------- -- Inserting unsafeCoerce -------------------------------------------------- -hsCast :: HsExp -> HsExp+hsCast :: HS.Exp -> HS.Exp {- hsCast = addcast . go where- addcast [e@(HsVar(UnQual(HsIdent(c:ns))))] | c == 'v' && all isDigit ns = e- addcast es = foldl HsApp mazCoerce es+ addcast [e@(HS.Var(HS.UnQual(HS.Ident(c:ns))))] | c == 'v' && all isDigit ns = e+ addcast es = foldl HS.App mazCoerce es -- this need to be extended if you generate other kinds of exps.- go (HsApp e1 e2 ) = go e1 ++ [hsCast e2]- go (HsLambda _ ps e) = [ HsLambda dummy ps (hsCast e) ]+ go (HS.App e1 e2 ) = go e1 ++ [hsCast e2]+ go (HS.Lambda _ ps e) = [ HS.Lambda dummy ps (hsCast e) ] go e = [e] -} -hsCast e = mazCoerce `HsApp` hsCast' e-hsCast' (HsApp e1 e2) = hsCast' e1 `HsApp` (mazCoerce `HsApp` hsCast' e2)-hsCast' (HsLambda _ ps e) = HsLambda dummy ps $ hsCast' e+hsCast e = mazCoerce `HS.App` hsCast' e+hsCast' (HS.App e1 e2) = hsCast' e1 `HS.App` (hsCoerce $ hsCast' e2)+hsCast' (HS.Lambda _ ps e) = HS.Lambda dummy ps $ hsCast' e hsCast' e = e +-- No coercion for literal integers+hsCoerce e@(HS.ExpTypeSig _ (HS.Lit (HS.Int{})) _) = e+hsCoerce e = HS.App mazCoerce e++ -------------------------------------------------- -- Writing out a haskell module -------------------------------------------------- -writeModule :: HsModule -> TCM ()-writeModule m =+writeModule :: HS.Module -> TCM ()+writeModule (HS.Module l m ps w ex imp ds) = do -- Note that GHC assumes that sources use ASCII or UTF-8.- liftIO . (`UTF8.writeFile` (preamble ++ prettyPrint m)) =<< outFile+ out <- outFile m+ liftIO $ UTF8.writeFile out $ prettyPrint $+ HS.Module l m (p : ps) w ex imp ds where- preamble = unlines $ [ "{-# LANGUAGE EmptyDataDecls"- , " , ExistentialQuantification"- , " , ScopedTypeVariables"- , " , NoMonomorphismRestriction"- , " #-}"- ]+ p = HS.LanguagePragma dummy $ L.map HS.Ident $+ [ "EmptyDataDecls"+ , "ExistentialQuantification"+ , "ScopedTypeVariables"+ , "NoMonomorphismRestriction"+ ] +rteModule :: HS.Module+rteModule = ok $ parse $ unlines+ [ "module " ++ prettyPrint mazRTE ++ " where"+ , "import Unsafe.Coerce"+ , ""+ , "-- Special version of coerce that plays well with rules."+ , "{-# INLINE [1] mazCoerce #-}"+ , "mazCoerce = Unsafe.Coerce.unsafeCoerce"+ , "{-# RULES \"coerce-id\" forall (x :: a) . mazCoerce x = x #-}"+ ]+ where+ parse = HS.parseWithMode+ HS.defaultParseMode{HS.extensions = [HS.ExplicitForall]}++ ok (HS.ParseOk d) = d+ ok HS.ParseFailed{} = __IMPOSSIBLE__++ compileDir :: TCM FilePath compileDir = do mdir <- optCompileDir <$> commandLineOptions@@ -391,10 +454,10 @@ Just dir -> return dir Nothing -> __IMPOSSIBLE__ -outFile' = do+outFile' m = do mdir <- compileDir- (fdir, fn) <- splitFileName . repldot pathSeparator .- prettyPrint <$> curHsMod+ let (fdir, fn) = splitFileName $ repldot pathSeparator $+ prettyPrint m let dir = mdir </> fdir fp = dir </> replaceExtension fn "hs" liftIO $ createDirectoryIfMissing True dir@@ -402,9 +465,12 @@ where repldot c = L.map (\c' -> if c' == '.' then c else c') -outFile :: TCM FilePath-outFile = snd <$> outFile'+outFile :: HS.ModuleName -> TCM FilePath+outFile m = snd <$> outFile' m +outFile_ :: TCM FilePath+outFile_ = outFile =<< curHsMod+ callGHC :: Interface -> TCM () callGHC i = do setInterface i@@ -414,7 +480,7 @@ let outputName = case agdaMod of [] -> __IMPOSSIBLE__ ms -> last ms- (mdir, fp) <- outFile'+ (mdir, fp) <- outFile' =<< curHsMod opts <- optGhcFlags <$> commandLineOptions let overridableArgs =@@ -433,30 +499,26 @@ args = overridableArgs ++ opts ++ otherArgs compiler = "ghc" - reportSLn "" 1 $ "calling: " ++ L.intercalate " " (compiler : args)- (inn, out, err, p) <-- liftIO $ runInteractiveProcess compiler args Nothing Nothing+ -- Note: Some versions of GHC use stderr for progress reports. For+ -- those versions of GHC we don't print any progress information+ -- unless an error is encountered. - liftIO $ do- hClose inn- -- The handles should be in text mode.- hSetBinaryMode out False- hSetBinaryMode err False+ reportSLn "" 1 $ "calling: " ++ L.intercalate " " (compiler : args)+ (_, _, err, p) <-+ liftIO $ createProcess (proc compiler args){ std_err = CreatePipe } - -- GHC seems to use stderr for progress reports.- s <- liftIO $ join <$> LocIO.hGetContents err <*> LocIO.hGetContents out- reportSLn "" 1 s+ errors <- liftIO $ case err of+ Nothing -> __IMPOSSIBLE__+ Just err -> do+ -- The handle should be in text mode.+ hSetBinaryMode err False+ liftIO $ LocIO.hGetContents err exitcode <- liftIO $ do -- Ensure that the output has been read before waiting for the -- process.- E.evaluate (length s)+ E.evaluate (length errors) waitForProcess p case exitcode of- ExitFailure _ -> typeError (CompilationError s)+ ExitFailure _ -> typeError (CompilationError errors) _ -> return ()-- where- -- Note that this function returns s1 before inspecting its input.- join s1 s2 =- s1 ++ (if L.null s1 || last s1 == '\n' then "" else "\n") ++ s2
src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot view
@@ -1,10 +1,10 @@ module Agda.Compiler.MAlonzo.Compiler where import Control.Monad.Reader (ReaderT)-import Language.Haskell.Syntax (HsExp)+import qualified Language.Haskell.Exts.Syntax as HS import Agda.Syntax.Common (Nat) import Agda.Syntax.Internal (Term) import Agda.TypeChecking.Monad (TCM) -term :: Term -> ReaderT Nat TCM HsExp+term :: Term -> ReaderT Nat TCM HS.Exp
src/full/Agda/Compiler/MAlonzo/Encode.hs view
@@ -10,7 +10,7 @@ import Data.Char import Data.Function import Data.List-import Language.Haskell.Syntax+import qualified Language.Haskell.Exts.Syntax as HS import Test.QuickCheck import Agda.Compiler.MAlonzo.Misc@@ -38,14 +38,17 @@ -- Precondition: The input must not start or end with @.@, and no two -- @.@s may be adjacent. -encodeModuleName :: Module -> Module-encodeModuleName (Module s) = Module $ case splitUp s of- p : ps | p == mazstr -> concat (p : map encNamePart ps)- _ -> s+encodeModuleName :: HS.ModuleName -> HS.ModuleName+encodeModuleName (HS.ModuleName s) = HS.ModuleName $ case splitUp s of+ ps | mazstr' `isPrefixOf` ps ->+ concat (mazstr' ++ map encNamePart (drop (length mazstr') ps))+ _ -> s where -- splitUp ".apa.bepa." == [".","apa",".","bepa","."] splitUp = groupBy ((&&) `on` (/= '.')) + mazstr' = splitUp mazstr+ encNamePart "." = "." encNamePart s = ensureFirstCharLarge s ++ concatMap enc s @@ -65,13 +68,14 @@ -- generator could strengthen it. prop_encodeModuleName_injective (M s1) (M s2) =- if encodeModuleName (Module s1) == encodeModuleName (Module s2) then+ if encodeModuleName (HS.ModuleName s1) ==+ encodeModuleName (HS.ModuleName s2) then s1 == s2 else True prop_encodeModuleName_OK (M s') =- s ~= unM (encodeModuleName (Module s))+ s ~= unM (encodeModuleName (HS.ModuleName s)) where s = mazstr ++ "." ++ s' @@ -82,11 +86,11 @@ where (s1', s2') = span (/= '.') s' _ ~= _ = False - unM (Module s) = s+ unM (HS.ModuleName s) = s prop_encodeModuleName_preserved (M m) = shouldBePreserved m ==>- encodeModuleName (Module m) == Module m+ encodeModuleName (HS.ModuleName m) == HS.ModuleName m where shouldBePreserved m = not (m == mazstr || (mazstr ++ ".") `isPrefixOf` m)
src/full/Agda/Compiler/MAlonzo/Misc.hs view
@@ -9,7 +9,7 @@ import Data.Set as S import Data.Maybe import Data.Function-import Language.Haskell.Syntax+import qualified Language.Haskell.Exts.Syntax as HS import System.IO import System.Time @@ -57,7 +57,7 @@ curMName :: TCM ModuleName curMName = sigMName <$> curSig -curHsMod :: TCM Module+curHsMod :: TCM HS.ModuleName curHsMod = mazMod <$> curMName curDefs :: TCM Definitions@@ -82,16 +82,16 @@ -- * Names coming from Haskell must always be used qualified. -- Exception: names from the Prelude. -ihname :: String -> Nat -> HsName-ihname s i = HsIdent $ s ++ show i+ihname :: String -> Nat -> HS.Name+ihname s i = HS.Ident $ s ++ show i -unqhname :: String -> QName -> HsName-unqhname s q | ("d", "main") == (s, show(qnameName q)) = HsIdent "main"+unqhname :: String -> QName -> HS.Name+unqhname s q | ("d", "main") == (s, show(qnameName q)) = HS.Ident "main" | otherwise = ihname s (idnum $ nameId $ qnameName $ q) where idnum (NameId x _) = fromIntegral x -- the toplevel module containing the given one-tlmodOf :: ModuleName -> TCM Module+tlmodOf :: ModuleName -> TCM HS.ModuleName tlmodOf = fmap mazMod . tlmname tlmname :: ModuleName -> TCM ModuleName@@ -102,76 +102,82 @@ getVisitedModules return $ case ms of (m' : _) -> m'; _ -> __IMPOSSIBLE__ --- qualify HsName n by the module of QName q, if necessary;+-- qualify HS.Name n by the module of QName q, if necessary; -- accumulates the used module in stImportedModules at the same time.-xqual :: QName -> HsName -> TCM HsQName+xqual :: QName -> HS.Name -> TCM HS.QName xqual q n = do m1 <- tlmname (qnameModule q) m2 <- curMName- if m1 == m2 then return (UnQual n)- else addImport m1 >> return (Qual (mazMod m1) n)+ if m1 == m2 then return (HS.UnQual n)+ else addImport m1 >> return (HS.Qual (mazMod m1) n) -xhqn :: String -> QName -> TCM HsQName+xhqn :: String -> QName -> TCM HS.QName xhqn s q = xqual q (unqhname s q) -- always use the original name for a constructor even when it's redefined.-conhqn :: QName -> TCM HsQName+conhqn :: QName -> TCM HS.QName conhqn q = do cq <- canonicalName q defn <- theDef <$> getConstInfo cq- case defn of Constructor{conHsCode = Just (_, hs)} -> return $ UnQual $ HsIdent hs+ case defn of Constructor{conHsCode = Just (_, hs)} -> return $ HS.UnQual $ HS.Ident hs _ -> xhqn "C" cq -- qualify name s by the module of builtin b-bltQual :: String -> String -> TCM HsQName-bltQual b s = do (Def q _) <- getBuiltin b; xqual q (HsIdent s)+bltQual :: String -> String -> TCM HS.QName+bltQual b s = do (Def q _) <- getBuiltin b; xqual q (HS.Ident s) -- sub-naming for cascaded definitions for concsecutive clauses dsubname q i | i == 0 = unqhname "d" q | otherwise = unqhname ("d_" ++ show i ++ "_") q -hsVarUQ :: HsName -> HsExp-hsVarUQ = HsVar . UnQual+hsVarUQ :: HS.Name -> HS.Exp+hsVarUQ = HS.Var . HS.UnQual -------------------------------------------------- -- Hard coded module names -------------------------------------------------- -mazstr = "MAlonzo"+mazstr = "MAlonzo.Code" mazName = mkName_ dummy mazstr-mazMod' s = Module $ mazstr ++ "." ++ s-mazMod :: ModuleName -> Module+mazMod' s = HS.ModuleName $ mazstr ++ "." ++ s+mazMod :: ModuleName -> HS.ModuleName mazMod = mazMod' . show mazerror msg = error $ mazstr ++ ": " ++ msg-mazCoerce = HsVar $ Qual unsafeCoerceMod (HsIdent "unsafeCoerce")+-- mazCoerce = HS.Var $ HS.Qual unsafeCoerceMod (HS.Ident "unsafeCoerce")+mazCoerce = HS.Var $ HS.Qual mazRTE $ HS.Ident "mazCoerce" +mazRTE :: HS.ModuleName+mazRTE = HS.ModuleName "MAlonzo.RTE"+ -- for Runtime module: Not really used (Runtime modules has been abolished). rtmMod = mazMod' "Runtime"-rtmQual = UnQual . HsIdent-rtmVar = HsVar . rtmQual-rtmError s = rtmVar "error" `HsApp`- (HsLit $ HsString $ "MAlonzo Runtime Error: " ++ s)+rtmQual = HS.UnQual . HS.Ident+rtmVar = HS.Var . rtmQual+rtmError s = rtmVar "error" `HS.App`+ (HS.Lit $ HS.String $ "MAlonzo Runtime Error: " ++ s) -unsafeCoerceMod = Module "Unsafe.Coerce"+unsafeCoerceMod = HS.ModuleName "Unsafe.Coerce" -------------------------------------------------- -- Sloppy ways to declare <name> = <string> -------------------------------------------------- -fakeD :: HsName -> String -> HsDecl-fakeD v s = HsFunBind [HsMatch dummy v []- (HsUnGuardedRhs $ hsVarUQ $ HsIdent $ s) [] ]+fakeD :: HS.Name -> String -> HS.Decl+fakeD v s = HS.FunBind [ HS.Match dummy v [] Nothing+ (HS.UnGuardedRhs $ hsVarUQ $ HS.Ident $ s)+ (HS.BDecls [])+ ] -fakeDS :: String -> String -> HsDecl-fakeDS = fakeD . HsIdent+fakeDS :: String -> String -> HS.Decl+fakeDS = fakeD . HS.Ident -fakeDQ :: QName -> String -> HsDecl+fakeDQ :: QName -> String -> HS.Decl fakeDQ = fakeD . unqhname "d" -fakeType :: String -> HsQualType-fakeType = HsQualType [] . HsTyVar . HsIdent+fakeType :: String -> HS.Type+fakeType = HS.TyVar . HS.Ident -fakeExp :: String -> HsExp-fakeExp = HsVar . UnQual . HsIdent+fakeExp :: String -> HS.Exp+fakeExp = HS.Var . HS.UnQual . HS.Ident dummy :: a dummy = error "MAlonzo : this dummy value should not have been eval'ed."@@ -198,5 +204,3 @@ `extQ` (gshow' . M.toList :: M.Map TermHead [Arg Pattern] -> String) `extQ` (gshow' . M.toList :: M.Map String (Builtin String) -> String) `extQ` (show :: Scope -> String)--
src/full/Agda/Compiler/MAlonzo/Pretty.hs view
@@ -5,8 +5,7 @@ module Agda.Compiler.MAlonzo.Pretty where import Data.Generics-import qualified Language.Haskell.Pretty as Pretty-import Language.Haskell.Syntax+import qualified Language.Haskell.Exts.Pretty as Pretty import Agda.Compiler.MAlonzo.Encode @@ -15,10 +14,4 @@ prettyPrint :: (Pretty.Pretty a, Data a) => a -> String prettyPrint = Pretty.prettyPrint .- everywhere (mkT bracket) . everywhere (mkT encodeModuleName)- where- -- Workaround for GHC bug #4284.- bracket :: HsExp -> HsExp- bracket e@(HsVar _) = e- bracket e = HsParen e
src/full/Agda/Compiler/MAlonzo/Primitives.hs view
@@ -1,240 +1,244 @@-module Agda.Compiler.MAlonzo.Primitives where - -import Control.Monad.Reader -import Control.Monad.State -import Data.Char -import Data.List as L -import Data.Map as M -import Language.Haskell.Syntax - -import {-# SOURCE #-} Agda.Compiler.MAlonzo.Compiler (term) -import Agda.Compiler.MAlonzo.Misc -import Agda.Compiler.MAlonzo.Pretty -import Agda.Syntax.Common -import Agda.Syntax.Internal -import Agda.TypeChecking.Monad -import Agda.TypeChecking.Monad.Builtin -import Agda.TypeChecking.Reduce -import Agda.TypeChecking.Substitute -import Agda.TypeChecking.Pretty -import Agda.Utils.Monad - --- | Check that the main function has type IO a, for some a. -checkTypeOfMain :: QName -> Type -> TCM () -checkTypeOfMain q ty - | show (qnameName q) /= "main" = return () - | otherwise = do - Def io [] <- primIO - ty <- normalise ty - case unEl ty of - Def d _ | d == io -> return () - _ -> do - err <- fsep $ - pwords "The type of main should be" ++ - [prettyTCM io] ++ pwords " A, for some A. The given type is" ++ [prettyTCM ty] - typeError $ GenericError $ show err - --- Haskell modules to be imported for BUILT-INs -importsForPrim :: TCM [Module] -importsForPrim = xForPrim $ L.map (\(s, ms)-> (s, return (L.map Module ms))) $ - [ "CHAR" |-> ["Data.Char"] - -- , "IO" |-> ["System.IO"] - ] - where (|->) = (,) - - --- Declarations of helper functions for BUILT-INs -declsForPrim :: TCM [HsDecl] -declsForPrim = xForPrim $ - [ "NATURAL" |-> (++) <$> natToFrom "Integer" mazNatToInteger mazIntegerToNat - <*> natToFrom "Int" mazNatToInt mazIntToNat - , "LIST" |-> forList mazListToHList mazHListToList - , "STRING" |-> forList mazListToString mazStringToList - , "BOOL" |-> decls ["TRUE", "FALSE"] - mazBoolToHBool "let { f <<0>> = True; f <<1>> = False; } in f" - mazHBoolToBool "let { f True = <<0>>; f False = <<1>>; } in f" - , "CHAR" |-> return - [ fakeDS mazCharToInteger - "(fromIntegral . Data.Char.ord :: Char -> Integer)" - ] - ] - where - infix 1 |-> - (|->) = (,) - forList toH toA = decls ["NIL", "CONS"] - toH (concat - ["let { f <<0>> = [];" - ," f (<<1>> x xs) = x : f (Unsafe.Coerce.unsafeCoerce xs)" - ,"} in f"]) - toA (concat - ["let { f [] = <<0>>;" - ," f (c:cs) = <<1>> c (Unsafe.Coerce.unsafeCoerce (f cs));" - ,"} in f"]) - natToFrom hty to from = let - totxt = repl ["<<0>>", "<<1>>", hty] (concat - ["let { f <<0>> = 0 :: <<2>>;" - ," f (<<1>> x) = 1 + f (Unsafe.Coerce.unsafeCoerce x);" - ,"} in f"]) - fromtxt = repl ["<<0>>", "<<1>>", hty] (concat - ["let { f x | x <= (0 :: <<2>>) = <<0>>" - ," | True = <<1>> (Unsafe.Coerce.unsafeCoerce (f (x - 1)))" - ,"} in f"]) - in decls ["ZERO", "SUC"] to totxt from fromtxt - decls cs n1 b1 n2 b2 = - ifM (hasCompiledData cs) - (return $ L.map (`fakeDS` "id") [n1, n2]) - $ do cs' <- mapM pconName cs - return $ zipWith (\ n -> fakeDS n . repl cs') [n1, n2] [b1, b2] - -mazNatToInteger = "mazNatToInteger" -mazIntegerToNat = "mazIntegerToNat" -mazNatToInt = "mazNatToInt" -mazIntToNat = "mazIntToNat" -mazCharToInteger = "mazCharToInteger" -mazListToHList = "mazListToHList" -mazHListToList = "mazHListToList" -mazListToString = "mazListToString" -mazStringToList = "mazStringToList" -mazBoolToHBool = "mazBoolToHBool" -mazHBoolToBool = "mazHBoolToBool" - --------------- - -xForPrim :: [(String, TCM [a])] -> TCM [a] -xForPrim table = do - qs <- keys <$> curDefs - bs <- toList <$> gets stBuiltinThings - concat <$> sequence [ maybe (return []) id $ L.lookup s table - | (s, Builtin (Def q _)) <- bs, q `elem` qs ] - - --- Definition bodies for primitive functions -primBody :: String -> TCM HsExp -primBody s = maybe unimplemented (either (hsVarUQ . HsIdent) id <$>) $ - L.lookup s $ - [ - -- Integer functions - "primIntegerPlus" |-> binAsis "(+)" "Integer" - , "primIntegerMinus" |-> binAsis "(-)" "Integer" - , "primIntegerTimes" |-> binAsis "(*)" "Integer" - , "primIntegerDiv" |-> binAsis "div" "Integer" - , "primIntegerMod" |-> binAsis "mod" "Integer" - , "primIntegerEquality"|-> rel "(==)" "Integer" - , "primIntegerLess" |-> rel "(<)" "Integer" - , "primIntegerAbs" |-> do toN <- bltQual' "NATURAL" mazIntegerToNat - return $ repl [toN] $ "\\ x -> <<0>> (abs x)" - , "primNatToInteger" |-> bltQual' "NATURAL" mazNatToInteger - , "primShowInteger" |-> return "(show :: Integer -> String)" - - -- Natural number functions - , "primNatPlus" |-> binNat "(+)" - , "primNatMinus" |-> binNat "(-)" - , "primNatTimes" |-> binNat "(*)" - , "primNatDivSuc" |-> binNat "(\\ x y -> div x (y + 1))" - , "primNatModSuc" |-> binNat "(\\ x y -> mod x (y + 1))" - , "primNatEquality" |-> relNat "(==)" - , "primNatLess" |-> relNat "(<)" - - -- Floating point functions - , "primIntegerToFloat" |-> return "(fromIntegral :: Integer -> Double)" - , "primFloatPlus" |-> return "((+) :: Double -> Double -> Double)" - , "primFloatMinus" |-> return "((-) :: Double -> Double -> Double)" - , "primFloatTimes" |-> return "((*) :: Double -> Double -> Double)" - , "primFloatDiv" |-> return "((/) :: Double -> Double -> Double)" - , "primFloatLess" |-> rel "(<)" "Double" - , "primRound" |-> return "(round :: Double -> Integer)" - , "primFloor" |-> return "(floor :: Double -> Integer)" - , "primCeiling" |-> return "(ceiling :: Double -> Integer)" - , "primExp" |-> return "(exp :: Double -> Double)" - , "primLog" |-> return "(log :: Double -> Double)" -- partial - , "primSin" |-> return "(sin :: Double -> Double)" - , "primShowFloat" |-> return "(show :: Double -> String)" - , "primRound" |-> return "(round :: Double -> Integer)" - - -- Character functions - , "primCharEquality" |-> rel "(==)" "Char" - , "primIsLower" |-> pred "Data.Char.isLower" - , "primIsDigit" |-> pred "Data.Char.isDigit" - , "primIsAlpha" |-> pred "Data.Char.isAlpha" - , "primIsSpace" |-> pred "Data.Char.isSpace" - , "primIsAscii" |-> pred "Data.Char.isAscii" - , "primIsLatin1" |-> pred "Data.Char.isLatin1" - , "primIsPrint" |-> pred "Data.Char.isPrint" - , "primIsHExDigit" |-> pred "Data.Char.isHexDigit" - , "primToUpper" |-> return "Data.Char.toUpper" - , "primToLower" |-> return "Data.Char.toLower" - , "primCharToNat" |-> do toN <- bltQual' "NATURAL" mazIntToNat - return $ repl [toN] $ - "(\\ x -> <<0>> ((fromEnum :: Char -> Int) x))" - , "primNatToChar" |-> do toI <- bltQual' "NATURAL" mazNatToInt - return $ repl[toI] $ - "(\\ x -> (toEnum :: Int -> Char) (<<0>> x))" - , "primShowChar" |-> return "(show :: Char -> String)" - - -- String functions - , "primStringToList" |-> bltQual' "STRING" mazStringToList - , "primStringFromList" |-> bltQual' "STRING" mazListToString - , "primStringAppend" |-> binAsis "(++)" "String" - , "primStringEquality" |-> rel "(==)" "String" - , "primShowString" |-> return "(show :: String -> String)" - - -- QNames - , "primQNameEquality" |-> rel "(==)" "String" - - -- Trust me - , ("primTrustMe" , Right <$> do - refl <- primRefl - flip runReaderT 0 $ - term $ lam "A" (lam "x" (lam "y" refl))) - ] - where - x |-> s = (x, Left <$> s) - bin blt op ty from to = do - from' <- bltQual' blt from - to' <- bltQual' blt to - return $ repl [op, opty ty, from', to'] $ - "\\ x y -> <<3>> ((<<0>> :: <<1>>) (<<2>> x) (<<2>> y))" - binNat op = bin "NATURAL" op "Integer" mazNatToInteger mazIntegerToNat - binAsis op ty = return $ repl [op, opty ty] $ "((<<0>>) :: <<1>>)" - rel' toTy op ty = do - toHB <- bltQual' "BOOL" mazHBoolToBool - return $ repl [op, ty, toHB, toTy] $ - "(\\ x y -> <<2>> ((<<0>> :: <<1>> -> <<1>> -> Bool) (<<3>> x) (<<3>> y)))" - relNat op = do toHI <- bltQual' "NATURAL" mazNatToInteger - rel' toHI op "Integer" - rel op ty = rel' "" op ty - pred p = do toHB <- bltQual' "BOOL" mazHBoolToBool - return $ repl [p, toHB] $ "(\\ x -> <<1>> (<<0>> x))" - opty t = t ++ "->" ++ t ++ "->" ++ t - unimplemented = typeError $ NotImplemented s - - lam x t = Lam Hidden (Abs x t) - var x = Arg Hidden Relevant (Var x []) - ----------------------- - -repl subs = go where - go ('<':'<':c:'>':'>':s) | 0 <= i && i < length subs = subs !! i ++ go s - where i = ord c - ord '0' - go (c:s) = c : go s - go [] = [] - -pconName :: String -> TCM String -pconName s = toS =<< getBuiltin s where - toS (Con q _) = prettyPrint <$> conhqn q - toS (Lam _ (Abs _ t)) = toS t - toS _ = mazerror $ "pconName" ++ s - -hasCompiledData :: [String] -> TCM Bool -hasCompiledData (s:_) = toB =<< getBuiltin s where - toB (Con q _) = do - def <- getConstInfo =<< ignoreAbstractMode (canonicalName q) - return $ case theDef def of Constructor{conHsCode = Just _} -> True - _ -> False - toB (Lam _ (Abs _ t)) = toB t - toB _ = return False -hasCompiledData _ = return False - - -bltQual' b s = prettyPrint <$> bltQual b s - +module Agda.Compiler.MAlonzo.Primitives where++import Control.Monad.Reader+import Control.Monad.State+import Data.Char+import Data.List as L+import Data.Map as M+import qualified Language.Haskell.Exts.Syntax as HS++import {-# SOURCE #-} Agda.Compiler.MAlonzo.Compiler (term)+import Agda.Compiler.MAlonzo.Misc+import Agda.Compiler.MAlonzo.Pretty+import Agda.Syntax.Common+import Agda.Syntax.Internal+import Agda.TypeChecking.Monad+import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Reduce+import Agda.TypeChecking.Substitute+import Agda.TypeChecking.Pretty+import Agda.Utils.Monad++-- | Check that the main function has type IO a, for some a.+checkTypeOfMain :: QName -> Type -> TCM ()+checkTypeOfMain q ty+ | show (qnameName q) /= "main" = return ()+ | otherwise = do+ Def io [] <- primIO+ ty <- normalise ty+ case unEl ty of+ Def d _ | d == io -> return ()+ _ -> do+ err <- fsep $+ pwords "The type of main should be" +++ [prettyTCM io] ++ pwords " A, for some A. The given type is" ++ [prettyTCM ty]+ typeError $ GenericError $ show err++-- Haskell modules to be imported for BUILT-INs+importsForPrim :: TCM [HS.ModuleName]+importsForPrim =+ xForPrim $+ L.map (\(s, ms) -> (s, return (L.map HS.ModuleName ms))) $+ [ "CHAR" |-> ["Data.Char"]+ -- , "IO" |-> ["System.IO"]+ ]+ where (|->) = (,)++-- Declarations of helper functions for BUILT-INs+declsForPrim :: TCM [HS.Decl]+declsForPrim = xForPrim $+ [ "NATURAL" |-> (++) <$> natToFrom "Integer" mazNatToInteger mazIntegerToNat+ <*> natToFrom "Int" mazNatToInt mazIntToNat+ , "LIST" |-> forList mazListToHList mazHListToList+ , "STRING" |-> forList mazListToString mazStringToList+ , "BOOL" |-> decls ["TRUE", "FALSE"]+ mazBoolToHBool "let { f <<0>> = True; f <<1>> = False; } in f"+ mazHBoolToBool "let { f True = <<0>>; f False = <<1>>; } in f"+ , "CHAR" |-> return+ [ fakeDS mazCharToInteger+ "(fromIntegral . Data.Char.ord :: Char -> Integer)"+ ]+ ]+ where+ infix 1 |->+ (|->) = (,)+ forList toH toA = decls ["NIL", "CONS"]+ toH (concat+ ["let { f <<0>> = [];"+ ," f (<<1>> x xs) = x : f (" ++ prettyPrint mazCoerce ++ " xs)"+ ,"} in f"])+ toA (concat+ ["let { f [] = <<0>>;"+ ," f (c:cs) = <<1>> c (" ++ prettyPrint mazCoerce ++ " (f cs));"+ ,"} in f"])+ natToFrom hty to from = let+ totxt = repl ["<<0>>", "<<1>>", hty, to] $ concat+ [ "\\ x -> case x of { <<0>> -> 0 :: <<2>>; "+ , "<<1>> x -> 1 + (<<3>> (" ++ prettyPrint mazCoerce ++ " x)) }" ]+ fromtxt = repl ["<<0>>", "<<1>>", hty, from] $ concat+ [ "\\ x -> if x <= (0 :: <<2>>) then <<0>> "+ , "else <<1>> (" ++ prettyPrint mazCoerce ++ " (<<3>> (x - 1)))" ]+ in do+ ds <- decls ["ZERO", "SUC"] to totxt from fromtxt+ let rule name = HS.Rule name HS.AlwaysActive (Just [HS.RuleVar $ HS.Ident "x"])+ var = HS.Var . HS.UnQual . HS.Ident+ (%) = HS.App+ return $ [HS.RulePragmaDecl dummy+ [ rule (to ++ "-" ++ from) (var to % (var from % var "x")) (var "x")+ , rule (from ++ "-" ++ to) (var from % (var to % var "x")) (var "x")+ ]] ++ ds+ decls cs n1 b1 n2 b2 =+ do cs' <- mapM pconName cs+ return $ zipWith (\ n -> fakeDS n . repl cs') [n1, n2] [b1, b2]++mazNatToInteger = "mazNatToInteger"+mazIntegerToNat = "mazIntegerToNat"+mazNatToInt = "mazNatToInt"+mazIntToNat = "mazIntToNat"+mazCharToInteger = "mazCharToInteger"+mazListToHList = "mazListToHList"+mazHListToList = "mazHListToList"+mazListToString = "mazListToString"+mazStringToList = "mazStringToList"+mazBoolToHBool = "mazBoolToHBool"+mazHBoolToBool = "mazHBoolToBool"++--------------++xForPrim :: [(String, TCM [a])] -> TCM [a]+xForPrim table = do+ qs <- keys <$> curDefs+ bs <- toList <$> gets stBuiltinThings+ concat <$> sequence [ maybe (return []) id $ L.lookup s table+ | (s, Builtin (Def q _)) <- bs, q `elem` qs ]+++-- Definition bodies for primitive functions+primBody :: String -> TCM HS.Exp+primBody s = maybe unimplemented (either (hsVarUQ . HS.Ident) id <$>) $+ L.lookup s $+ [+ -- Integer functions+ "primIntegerPlus" |-> binAsis "(+)" "Integer"+ , "primIntegerMinus" |-> binAsis "(-)" "Integer"+ , "primIntegerTimes" |-> binAsis "(*)" "Integer"+ , "primIntegerDiv" |-> binAsis "div" "Integer"+ , "primIntegerMod" |-> binAsis "mod" "Integer"+ , "primIntegerEquality"|-> rel "(==)" "Integer"+ , "primIntegerLess" |-> rel "(<)" "Integer"+ , "primIntegerAbs" |-> do toN <- bltQual' "NATURAL" mazIntegerToNat+ return $ repl [toN] $ "\\ x -> <<0>> (abs x)"+ , "primNatToInteger" |-> bltQual' "NATURAL" mazNatToInteger+ , "primShowInteger" |-> return "(show :: Integer -> String)"++ -- Natural number functions+ , "primNatPlus" |-> binNat "(+)"+ , "primNatMinus" |-> binNat "(-)"+ , "primNatTimes" |-> binNat "(*)"+ , "primNatDivSuc" |-> binNat "(\\ x y -> div x (y + 1))"+ , "primNatModSuc" |-> binNat "(\\ x y -> mod x (y + 1))"+ , "primNatEquality" |-> relNat "(==)"+ , "primNatLess" |-> relNat "(<)"++ -- Floating point functions+ , "primIntegerToFloat" |-> return "(fromIntegral :: Integer -> Double)"+ , "primFloatPlus" |-> return "((+) :: Double -> Double -> Double)"+ , "primFloatMinus" |-> return "((-) :: Double -> Double -> Double)"+ , "primFloatTimes" |-> return "((*) :: Double -> Double -> Double)"+ , "primFloatDiv" |-> return "((/) :: Double -> Double -> Double)"+ , "primFloatLess" |-> rel "(<)" "Double"+ , "primRound" |-> return "(round :: Double -> Integer)"+ , "primFloor" |-> return "(floor :: Double -> Integer)"+ , "primCeiling" |-> return "(ceiling :: Double -> Integer)"+ , "primExp" |-> return "(exp :: Double -> Double)"+ , "primLog" |-> return "(log :: Double -> Double)" -- partial+ , "primSin" |-> return "(sin :: Double -> Double)"+ , "primShowFloat" |-> return "(show :: Double -> String)"+ , "primRound" |-> return "(round :: Double -> Integer)"++ -- Character functions+ , "primCharEquality" |-> rel "(==)" "Char"+ , "primIsLower" |-> pred "Data.Char.isLower"+ , "primIsDigit" |-> pred "Data.Char.isDigit"+ , "primIsAlpha" |-> pred "Data.Char.isAlpha"+ , "primIsSpace" |-> pred "Data.Char.isSpace"+ , "primIsAscii" |-> pred "Data.Char.isAscii"+ , "primIsLatin1" |-> pred "Data.Char.isLatin1"+ , "primIsPrint" |-> pred "Data.Char.isPrint"+ , "primIsHExDigit" |-> pred "Data.Char.isHexDigit"+ , "primToUpper" |-> return "Data.Char.toUpper"+ , "primToLower" |-> return "Data.Char.toLower"+ , "primCharToNat" |-> do toN <- bltQual' "NATURAL" mazIntToNat+ return $ repl [toN] $+ "(\\ x -> <<0>> ((fromEnum :: Char -> Int) x))"+ , "primNatToChar" |-> do toI <- bltQual' "NATURAL" mazNatToInt+ return $ repl[toI] $+ "(\\ x -> (toEnum :: Int -> Char) (<<0>> x))"+ , "primShowChar" |-> return "(show :: Char -> String)"++ -- String functions+ , "primStringToList" |-> bltQual' "STRING" mazStringToList+ , "primStringFromList" |-> bltQual' "STRING" mazListToString+ , "primStringAppend" |-> binAsis "(++)" "String"+ , "primStringEquality" |-> rel "(==)" "String"+ , "primShowString" |-> return "(show :: String -> String)"++ -- QNames+ , "primQNameEquality" |-> rel "(==)" "String"++ -- Trust me+ , ("primTrustMe" , Right <$> do+ refl <- primRefl+ flip runReaderT 0 $+ term $ lam "A" (lam "x" (lam "y" refl)))+ ]+ where+ x |-> s = (x, Left <$> s)+ bin blt op ty from to = do+ from' <- bltQual' blt from+ to' <- bltQual' blt to+ return $ repl [op, opty ty, from', to'] $+ "\\ x y -> <<3>> ((<<0>> :: <<1>>) (<<2>> x) (<<2>> y))"+ binNat op = bin "NATURAL" op "Integer" mazNatToInteger mazIntegerToNat+ binAsis op ty = return $ repl [op, opty ty] $ "((<<0>>) :: <<1>>)"+ rel' toTy op ty = do+ toHB <- bltQual' "BOOL" mazHBoolToBool+ return $ repl [op, ty, toHB, toTy] $+ "(\\ x y -> <<2>> ((<<0>> :: <<1>> -> <<1>> -> Bool) (<<3>> x) (<<3>> y)))"+ relNat op = do toHI <- bltQual' "NATURAL" mazNatToInteger+ rel' toHI op "Integer"+ rel op ty = rel' "" op ty+ pred p = do toHB <- bltQual' "BOOL" mazHBoolToBool+ return $ repl [p, toHB] $ "(\\ x -> <<1>> (<<0>> x))"+ opty t = t ++ "->" ++ t ++ "->" ++ t+ unimplemented = typeError $ NotImplemented s++ lam x t = Lam Hidden (Abs x t)+ var x = Arg Hidden Relevant (Var x [])++----------------------++repl subs = go where+ go ('<':'<':c:'>':'>':s) | 0 <= i && i < length subs = subs !! i ++ go s+ where i = ord c - ord '0'+ go (c:s) = c : go s+ go [] = []++pconName :: String -> TCM String+pconName s = toS =<< getBuiltin s where+ toS (Con q _) = prettyPrint <$> conhqn q+ toS (Lam _ (Abs _ t)) = toS t+ toS _ = mazerror $ "pconName" ++ s++hasCompiledData :: [String] -> TCM Bool+hasCompiledData (s:_) = toB =<< getBuiltin s where+ toB (Con q _) = do+ def <- getConstInfo =<< ignoreAbstractMode (canonicalName q)+ return $ case theDef def of Constructor{conHsCode = Just _} -> True+ _ -> False+ toB (Lam _ (Abs _ t)) = toB t+ toB _ = return False+hasCompiledData _ = return False+++bltQual' b s = prettyPrint <$> bltQual b s
+ src/full/Agda/ImpossibleTest.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE CPP #-}+module Agda.ImpossibleTest where++import Agda.Utils.Impossible++#include "undefined.h"++impossibleTest = __IMPOSSIBLE__
src/full/Agda/Interaction/BasicOps.hs view
@@ -180,7 +180,7 @@ evalInCurrent e = do t <- newTypeMeta_ v <- checkExpr e t- v' <- etaContract =<< normalise v+ v' <- {- etaContract =<< -} normalise v reify v' @@ -197,8 +197,8 @@ --rewrite :: Rewrite -> Term -> TCM Term rewrite AsIs t = return t rewrite Instantiated t = return t -- reify does instantiation-rewrite HeadNormal t = etaContract =<< reduce t-rewrite Normalised t = etaContract =<< normalise t+rewrite HeadNormal t = {- etaContract =<< -} reduce t+rewrite Normalised t = {- etaContract =<< -} normalise t data OutputForm a b@@ -517,7 +517,7 @@ let tel = telFromList [defaultArg ("_", t)] perm = idP 1 pat = [defaultArg (I.VarP "c")]- r <- split tel perm pat 0+ r <- split CoInductive tel perm pat 0 case r of Left err -> return [] Right cs -> mapM showTCM $ concatMap (conName . scPats) cs
src/full/Agda/Interaction/CommandLine/CommandLine.hs view
@@ -305,4 +305,3 @@ [ "<exp> Infer type of expression <exp> and evaluate it." ] where explain (x,_) = ":" ++ x-
src/full/Agda/Interaction/Exceptions.hs view
@@ -20,4 +20,3 @@ failOnException h m = m `catch` handleParseException handler where handler x = h (getRange x) (show x)-
src/full/Agda/Interaction/GhciTop.hs view
@@ -95,6 +95,7 @@ import Agda.Termination.TermCheck +import qualified Agda.Compiler.Epic.Compiler as Epic import qualified Agda.Compiler.MAlonzo.Compiler as MAlonzo import qualified Agda.Auto.Auto as Auto@@ -128,22 +129,32 @@ theState :: IORef State theState = unsafePerformIO $ newIORef initState +-- | Can the command run even if the relevant file has not been loaded+-- into the state?++data Independence+ = Independent (Maybe [FilePath])+ -- ^ Yes. If the argument is @'Just' is@, then @is@ is used as the+ -- command's include directories.+ | Dependent+ -- No.+ -- | An interactive computation. data Interaction = Interaction- { includeDirectories :: Maybe [FilePath]- -- ^ A command is independent iff this field is @'Just' is@; @is@- -- is used as the command's include directories.+ { independence :: Independence+ -- ^ Is the command independent? , command :: TCM (Maybe ModuleName) -- ^ If a module name is returned, then syntax highlighting -- information will be written for the given module (by 'ioTCM'). } --- | Can the command run even if the relevant file has not been loaded--- into the state?+-- ^ Is the command independent? isIndependent :: Interaction -> Bool-isIndependent = isJust . includeDirectories+isIndependent i = case independence i of+ Independent {} -> True+ Dependent {} -> False -- | Run a TCM computation in the current state. Should only -- be used for debugging.@@ -202,9 +213,13 @@ r <- runTCM $ catchError (do put st x <- withEnv initEnv $ do- case includeDirectories cmd of- Nothing -> ensureFileLoaded current- Just is -> do+ case independence cmd of+ Dependent -> ensureFileLoaded current+ Independent Nothing ->+ -- Make sure that the include directories have+ -- been set.+ setCommandLineOptions =<< commandLineOptions+ Independent (Just is) -> do ex <- liftIO $ doesFileExist $ filePath current setIncludeDirs is $ if ex then ProjectRoot current else CurrentDir@@ -250,7 +265,7 @@ -- If an error was encountered, display an error message and exit -- with an error code; otherwise, inform Emacs about the buffer's- -- goals.+ -- goals (if current matches the new current file). let errStatus = Status { sChecked = False , sShowImplicitArguments = optShowImplicit $ stPragmaOptions st@@ -260,9 +275,13 @@ Left e -> displayErrorAndExit errStatus (getRange e) $ tcErrString e Right (Right _) -> do- is <- theInteractionPoints <$> liftIO (readIORef theState)- liftIO $ LocIO.putStrLn $ response $- L [A "agda2-goals-action", Q $ L $ List.map showNumIId is]+ f <- theCurrentFile <$> readIORef theState+ case f of+ Just (f, _) | f === current -> do+ is <- theInteractionPoints <$> liftIO (readIORef theState)+ liftIO $ LocIO.putStrLn $ response $+ L [A "agda2-goals-action", Q $ L $ List.map showNumIId is]+ _ -> return () -- | @cmd_load m includes@ loads the module in file @m@, using -- @includes@ as the include directories.@@ -283,7 +302,7 @@ -> ((Interface, Maybe Imp.Warnings) -> TCM ()) -> Interaction cmd_load' file includes unsolvedOK cmd =- Interaction (Just includes) $ do+ Interaction (Independent (Just includes)) $ do -- Forget the previous "current file" and interaction points. liftIO $ modifyIORef theState $ \s -> s { theInteractionPoints = []@@ -331,17 +350,23 @@ return $ Just $ iModuleName (fst ok) --- | @cmd_compile m includes@ compiles the module in file @m@, using--- @includes@ as the include directories.+-- | Available backends. -cmd_compile :: FilePath -> [FilePath] -> Interaction-cmd_compile file includes =+data Backend = MAlonzo | Epic++-- | @cmd_compile b m includes@ compiles the module in file @m@ using+-- the backend @b@, using @includes@ as the include directories.++cmd_compile :: Backend -> FilePath -> [FilePath] -> Interaction+cmd_compile b file includes = cmd_load' file includes False (\(i, mw) -> case mw of Nothing -> do- MAlonzo.compilerMain i+ case b of+ MAlonzo -> MAlonzo.compilerMain i+ Epic -> Epic.compilerMain i display_info "*Compilation result*"- "The module was successfully compiled."+ "The module was successfully compiled." Just w -> display_info errorTitle $ unlines [ "You can only compile modules without unsolved metavariables"@@ -349,7 +374,7 @@ ]) cmd_constraints :: Interaction-cmd_constraints = Interaction Nothing $ do+cmd_constraints = Interaction Dependent $ do cs <- map show <$> B.getConstraints display_info "*Constraints*" (unlines cs) return Nothing@@ -357,7 +382,7 @@ -- Show unsolved metas. If there are no unsolved metas but unsolved constraints -- show those instead. cmd_metas :: Interaction-cmd_metas = Interaction Nothing $ do -- CL.showMetas []+cmd_metas = Interaction Dependent $ do -- CL.showMetas [] ims <- B.typesOfVisibleMetas B.AsIs -- Show unsolved implicit arguments normalised. hms <- B.typesOfHiddenMetas B.Normalised@@ -398,7 +423,8 @@ cmd_refine :: GoalCommand cmd_refine = give_gen B.refine $ \_ s -> quote . show -give_gen give_ref mk_newtxt ii rng s = Interaction Nothing $ give_gen' give_ref mk_newtxt ii rng s+give_gen give_ref mk_newtxt ii rng s = Interaction Dependent $+ give_gen' give_ref mk_newtxt ii rng s give_gen' give_ref mk_newtxt ii rng s = do scope <- getInteractionScope ii@@ -417,7 +443,7 @@ replace x xs ys = concatMap (\y -> if y == x then xs else [y]) ys cmd_intro :: GoalCommand-cmd_intro ii rng _ = Interaction Nothing $ do+cmd_intro ii rng _ = Interaction Dependent $ do ss <- B.introTactic ii B.withInteractionId ii $ case ss of [] -> do@@ -439,7 +465,7 @@ (if null s then cmd_intro else cmd_refine) ii rng s cmd_auto :: GoalCommand-cmd_auto ii rng s = Interaction Nothing $ do+cmd_auto ii rng s = Interaction Dependent $ do (res, msg) <- Auto.auto ii rng s case res of Left xs -> do@@ -495,19 +521,19 @@ return $ align 10 $ shuffle $ zip ns (map (text ":" <+>) es) cmd_context :: B.Rewrite -> GoalCommand-cmd_context norm ii _ _ = Interaction Nothing $ do+cmd_context norm ii _ _ = Interaction Dependent $ do display_infoD "*Context*" =<< prettyContext norm False ii return Nothing cmd_infer :: B.Rewrite -> GoalCommand-cmd_infer norm ii rng s = Interaction Nothing $ do+cmd_infer norm ii rng s = Interaction Dependent $ do display_infoD "*Inferred Type*" =<< B.withInteractionId ii (prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s) return Nothing cmd_goal_type :: B.Rewrite -> GoalCommand-cmd_goal_type norm ii _ _ = Interaction Nothing $ do+cmd_goal_type norm ii _ _ = Interaction Dependent $ do s <- B.withInteractionId ii $ prettyTypeOfMeta norm ii display_infoD "*Current Goal*" s return Nothing@@ -528,17 +554,18 @@ -- | Displays the current goal and context. cmd_goal_type_context :: B.Rewrite -> GoalCommand-cmd_goal_type_context norm ii rng s = Interaction Nothing $+cmd_goal_type_context norm ii rng s = Interaction Dependent $ cmd_goal_type_context_and P.empty norm ii rng s -- | Displays the current goal and context /and/ infers the type of an -- expression. cmd_goal_type_context_infer :: B.Rewrite -> GoalCommand-cmd_goal_type_context_infer norm ii rng s = Interaction Nothing $ do- typ <- B.withInteractionId ii $- prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s- cmd_goal_type_context_and (text "Have:" <+> typ) norm ii rng s+cmd_goal_type_context_infer norm ii rng s =+ Interaction Dependent $ do+ typ <- B.withInteractionId ii $+ prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s+ cmd_goal_type_context_and (text "Have:" <+> typ) norm ii rng s -- | Shows all the top-level names in the given module, along with -- their types.@@ -560,7 +587,7 @@ -- their types. Uses the scope of the given goal. cmd_show_module_contents :: GoalCommand-cmd_show_module_contents ii rng s = Interaction Nothing $ do+cmd_show_module_contents ii rng s = Interaction Dependent $ do B.withInteractionId ii $ showModuleContents rng s return Nothing @@ -568,7 +595,7 @@ -- their types. Uses the top-level scope. cmd_show_module_contents_toplevel :: String -> Interaction-cmd_show_module_contents_toplevel s = Interaction Nothing $ do+cmd_show_module_contents_toplevel s = Interaction Dependent $ do B.atTopLevel $ showModuleContents noRange s return Nothing @@ -694,7 +721,7 @@ nameModifiers = "" : "'" : "''" : [show i | i <-[3..]] cmd_make_case :: GoalCommand-cmd_make_case ii rng s = Interaction Nothing $ do+cmd_make_case ii rng s = Interaction Dependent $ do cs <- makeCase ii rng s B.withInteractionId ii $ do pcs <- mapM prettyA cs@@ -707,7 +734,7 @@ where render = renderStyle (style { mode = OneLineMode }) cmd_solveAll :: Interaction-cmd_solveAll = Interaction Nothing $ do+cmd_solveAll = Interaction Dependent $ do out <- getInsts liftIO $ LocIO.putStrLn $ response $ Cons (A "last")@@ -777,7 +804,7 @@ instance LowerMeta SC.Declaration where lowerMeta = go where go d = case d of- TypeSig n e1 -> TypeSig n (lowerMeta e1)+ TypeSig rel n e1 -> TypeSig rel n (lowerMeta e1) SC.Field n e1 -> SC.Field n (lowerMeta e1) FunClause lhs rhs whcl -> FunClause lhs (lowerMeta rhs) (lowerMeta whcl) Data r ind n tel e1 cs -> Data r ind n@@ -818,7 +845,7 @@ cmd_compute :: Bool -- ^ Ignore abstract? -> GoalCommand-cmd_compute ignore ii rng s = Interaction Nothing $ do+cmd_compute ignore ii rng s = Interaction Dependent $ do e <- B.parseExprIn ii rng s d <- B.withInteractionId ii $ do let c = B.evalInCurrent e@@ -839,7 +866,7 @@ -> String -- ^ The expression to parse. -> Interaction-parseAndDoAtToplevel cmd title s = Interaction Nothing $ do+parseAndDoAtToplevel cmd title s = Interaction Dependent $ do e <- liftIO $ parse exprParser s display_info title =<< B.atTopLevel (showA =<< cmd =<< concreteToAbstract_ e)@@ -869,18 +896,25 @@ ------------------------------------------------------------------------ -- Syntax highlighting --- | @cmd_write_highlighting_info includes source target@ writes--- syntax highlighting information for the module in @source@ into--- @target@; @includes@ is the include directories. If the module does--- not exist, or its module name is malformed or cannot be determined,--- or the module has not already been visited, or the cached info is--- out of date, then the representation of \"no highlighting--- information available\" is instead written to @target@.+-- | @cmd_write_highlighting_info source target@ writes syntax+-- highlighting information for the module in @source@ into @target@.+--+-- If the module does not exist, or its module name is malformed or+-- cannot be determined, or the module has not already been visited,+-- or the cached info is out of date, then the representation of \"no+-- highlighting information available\" is instead written to+-- @target@.+--+-- This command is used to load syntax highlighting information when a+-- new file is opened, and it would probably be annoying if jumping to+-- the definition of an identifier reset the proof state, so this+-- command tries not to do that. One result of this is that the+-- command uses the current include directories, whatever they happen+-- to be. -cmd_write_highlighting_info ::- [FilePath] -> FilePath -> FilePath -> Interaction-cmd_write_highlighting_info includes source target =- Interaction (Just includes) $ do+cmd_write_highlighting_info :: FilePath -> FilePath -> Interaction+cmd_write_highlighting_info source target =+ Interaction (Independent Nothing) $ do liftIO . UTF8.writeFile target . showHighlightingInfo =<< do ex <- liftIO $ doesFileExist source case ex of@@ -922,7 +956,7 @@ showImplicitArgs :: Bool -- ^ Show them? -> Interaction-showImplicitArgs showImpl = Interaction Nothing $ do+showImplicitArgs showImpl = Interaction Dependent $ do opts <- commandLineOptions setCommandLineOptions $ opts { optPragmaOptions =@@ -932,7 +966,7 @@ -- | Toggle display of implicit arguments. toggleImplicitArgs :: Interaction-toggleImplicitArgs = Interaction Nothing $ do+toggleImplicitArgs = Interaction Dependent $ do opts <- commandLineOptions let ps = optPragmaOptions opts setCommandLineOptions $
src/full/Agda/Interaction/Highlighting/Generate.hs view
@@ -14,6 +14,7 @@ import Agda.Interaction.Highlighting.Range hiding (tests) import qualified Agda.TypeChecking.Errors as E import Agda.TypeChecking.MetaVars (isBlockedTerm)+import Agda.TypeChecking.Monad.Options (reportSLn) import Agda.TypeChecking.Monad hiding (MetaInfo, Primitive, Constructor, Record, Function, Datatype) import qualified Agda.TypeChecking.Monad as M@@ -95,7 +96,10 @@ -- along with ranges for problematic -- call sites. -> TCM HighlightingInfo-generateSyntaxInfo file mErr top termErrs =+generateSyntaxInfo file mErr top termErrs = do+ reportSLn "import.iface.create" 15 $+ "Generating syntax info for " ++ filePath file ++ ' ' : maybe "(No TCErr)" (const "(with TCErr)") mErr ++ "."+ M.withScope_ (CA.insideScope top) $ M.ignoreAbstractMode $ do modMap <- sourceToModule tokens <- liftIO $ Pa.parseFile' Pa.tokensParser file@@ -202,14 +206,16 @@ field m n = nameToFile modMap file m n (\isOp -> mempty { aspect = Just $ Name (Just Field) isOp }) Nothing- mod n = nameToFile modMap file []- (A.nameConcrete n)- (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })- (Just $ A.nameBindingSite n) asName n = nameToFile modMap file [] n (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp }) Nothing+ mod isTopLevelModule n =+ nameToFile modMap file []+ (A.nameConcrete n)+ (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })+ (Just $ (if isTopLevelModule then P.beginningOfFile else id)+ (A.nameBindingSite n)) getVarAndField :: A.Expr -> File getVarAndField (A.Var x) = bound x@@ -217,9 +223,9 @@ getVarAndField _ = mempty getLet :: A.LetBinding -> File- getLet (A.LetBind _ x _ _) = bound x- getLet A.LetApply{} = mempty- getLet A.LetOpen{} = mempty+ getLet (A.LetBind _ _ x _ _) = bound x+ getLet A.LetApply{} = mempty+ getLet A.LetOpen{} = mempty getLam :: A.LamBinding -> File getLam (A.DomainFree _ x) = bound x@@ -247,8 +253,18 @@ getFieldDecl _ = mempty getModuleName :: A.ModuleName -> File- getModuleName (A.MName { A.mnameToList = xs }) =- mconcat $ map mod xs+ getModuleName m@(A.MName { A.mnameToList = xs }) =+ mconcat $ map (mod isTopLevelModule) xs+ where+ isTopLevelModule =+ case catMaybes $+ map (join .+ fmap P.srcFile .+ P.rStart .+ A.nameBindingSite) xs of+ f : _ -> Map.lookup f modMap ==+ Just (C.toTopLevelModuleName $ A.mnameToConcrete m)+ [] -> False getModuleInfo :: SI.ModuleInfo -> File getModuleInfo (SI.ModuleInfo { SI.minfoAsTo = asTo@@ -289,16 +305,17 @@ dropPostulates k _ = k defnToNameKind :: Defn -> NameKind- defnToNameKind (M.Axiom {}) = Postulate- defnToNameKind (M.Function {}) = Function- defnToNameKind (M.Datatype {}) = Datatype- defnToNameKind (M.Record {}) = Record- defnToNameKind (M.Constructor { M.conInd = i }) = Constructor i- defnToNameKind (M.Primitive {}) = Primitive+ defnToNameKind (M.Axiom {}) = Postulate+ defnToNameKind (M.Function { M.funProjection = Nothing }) = Function+ defnToNameKind (M.Function { M.funProjection = Just _ }) = Field+ defnToNameKind (M.Datatype {}) = Datatype+ defnToNameKind (M.Record {}) = Record+ defnToNameKind (M.Constructor { M.conInd = i }) = Constructor i+ defnToNameKind (M.Primitive {}) = Primitive getAxiomName :: A.Declaration -> A.QName- getAxiomName (A.Axiom _ q _) = q- getAxiomName _ = __IMPOSSIBLE__+ getAxiomName (A.Axiom _ _ q _) = q+ getAxiomName _ = __IMPOSSIBLE__ getDef :: A.Definition -> Map A.QName NameKind getDef (A.FunDef _ q _) = Map.singleton q Function@@ -309,13 +326,13 @@ getDef (A.RecDef _ q c _ _ _) = Map.singleton q Record `union` case c of Nothing -> Map.empty- Just (A.Axiom _ q _) ->+ Just (A.Axiom _ _ q _) -> Map.singleton q (Constructor SC.Inductive) Just _ -> __IMPOSSIBLE__ getDef (A.ScopedDef {}) = Map.empty getDecl :: A.Declaration -> Map A.QName NameKind- getDecl (A.Axiom _ q _) = Map.singleton q Postulate+ getDecl (A.Axiom _ _ q _) = Map.singleton q Postulate getDecl (A.Field _ q _) = Map.singleton q Field getDecl (A.Primitive _ q _) = Map.singleton q Primitive getDecl (A.Definition {}) = Map.empty
src/full/Agda/Interaction/Highlighting/HTML.hs view
@@ -140,8 +140,10 @@ code contents info = mconcat $ map (\(pos, s, mi) -> annotate pos mi (stringToHtml s)) $- map (\cs@((mi, (pos, _)) : _) ->- (pos, map (snd . snd) cs, maybe mempty id mi)) $+ map (\cs -> case cs of+ (mi, (pos, _)) : _ ->+ (pos, map (snd . snd) cs, maybe mempty id mi)+ [] -> __IMPOSSIBLE__) $ List.groupBy ((==) `on` fst) $ map (\(pos, c) -> (Map.lookup pos infoMap, (pos, c))) $ zip [1..] contents
src/full/Agda/Interaction/Imports.hs view
@@ -68,10 +68,15 @@ reportSLn "import.iface.merge" 20 $ " Current builtins " ++ show (Map.keys bs) ++ "\n" ++ " New builtins " ++ show (Map.keys bi)- case Map.toList $ Map.intersection bs bi of- [] -> return ()- (b, Builtin x):_ -> typeError $ DuplicateBuiltinBinding b x x- (_, Prim{}):_ -> __IMPOSSIBLE__+ let check b = case (b1, b2) of+ (Builtin x, Builtin y)+ | x == y -> return ()+ | otherwise -> typeError $ DuplicateBuiltinBinding b x y+ _ -> __IMPOSSIBLE__+ where+ Just b1 = Map.lookup b bs+ Just b2 = Map.lookup b bi+ mapM_ check (map fst $ Map.toList $ Map.intersection bs bi) addImportedThings sig bi (iHaskellImports i) reportSLn "import.iface.merge" 20 $ " Rebinding primitives " ++ show prim@@ -211,11 +216,12 @@ reportSLn "import.iface" 10 $ " Check for cycle" checkForImportCycle - uptodate <- ifM ignoreInterfaces- (return False)- (liftIO $ filePath (toIFile file)- `isNewerThan`- filePath file)+ uptodate <- do+ ignore <- ignoreInterfaces+ cached <- isCached file -- if it's cached ignoreInterfaces has no effect+ -- to avoid typechecking a file more than once+ newer <- liftIO $ filePath (toIFile file) `isNewerThan` filePath file+ return $ newer && (not ignore || cached) reportSLn "import.iface" 5 $ " " ++ render (pretty x) ++ " is " ++@@ -245,102 +251,121 @@ return (i, wt) where- skip file = do- -- Examine the mtime of the interface file. If it is newer than the- -- stored version (in stDecodedModules), or if there is no stored version,- -- read and decode it. Otherwise use the stored version.- let ifile = filePath $ toIFile file- t <- liftIO $ getModificationTime ifile- mm <- getDecodedModule x- (cached, mi) <- case mm of- Just (mi, mt) ->- if mt < t- then do dropDecodedModule x- reportSLn "import.iface" 5 $ " file is newer, re-reading " ++ ifile- (,) False <$> readInterface ifile- else do reportSLn "import.iface" 5 $ " using stored version of " ++ ifile- return (True, Just mi)- Nothing ->- do reportSLn "import.iface" 5 $ " no stored version, reading " ++ ifile- (,) False <$> readInterface ifile+ isCached file = do+ let ifile = filePath $ toIFile file+ exist <- liftIO $ doesFileExist ifile+ if not exist+ then return False+ else do+ t <- liftIO $ getModificationTime ifile+ mm <- getDecodedModule x+ return $ case mm of+ Just (mi, mt) | mt >= t -> True+ _ -> False - -- Check that it's the right version- case mi of- Nothing -> do- reportSLn "import.iface" 5 $ " bad interface, re-type checking"- typeCheck file- Just i -> do+ skip file = do+ -- Examine the mtime of the interface file. If it is newer than the+ -- stored version (in stDecodedModules), or if there is no stored version,+ -- read and decode it. Otherwise use the stored version.+ let ifile = filePath $ toIFile file+ t <- liftIO $ getModificationTime ifile+ mm <- getDecodedModule x+ (cached, mi) <- case mm of+ Just (mi, mt) ->+ if mt < t+ then do dropDecodedModule x+ reportSLn "import.iface" 5 $ " file is newer, re-reading " ++ ifile+ (,) False <$> readInterface ifile+ else do reportSLn "import.iface" 5 $ " using stored version of " ++ ifile+ return (True, Just mi)+ Nothing -> do+ reportSLn "import.iface" 5 $ " no stored version, reading " ++ ifile+ (,) False <$> readInterface ifile - reportSLn "import.iface" 5 $ " imports: " ++ show (iImportedModules i)+ -- Check that it's the right version+ case mi of+ Nothing -> do+ reportSLn "import.iface" 5 $ " bad interface, re-type checking"+ typeCheck file+ Just i -> do - ts <- map snd <$> mapM getInterface (iImportedModules i)+ reportSLn "import.iface" 5 $ " imports: " ++ show (iImportedModules i) - -- If any of the imports are newer we need to retype check- if any (> t) ts- then do- -- liftIO close -- Close the interface file. See above.- typeCheck file- else do- reportSLn "" 1 $- "Skipping " ++ render (pretty x) ++- " (" ++ (if cached then "cached" else ifile) ++ ")."- -- We set the pragma options of the skipped file here,- -- because if the top-level file is skipped we want the- -- pragmas to apply to interactive commands in the UI.- mapM_ setOptionsFromPragma (iPragmaOptions i)- return (False, (i, Right t))+ ts <- map snd <$> mapM getInterface (iImportedModules i) - typeCheck file = do- -- Do the type checking.- reportSLn "" 1 $ "Checking " ++ render (pretty x) ++ " (" ++ filePath file ++ ")."- if includeStateChanges then do- r <- createInterface file x+ -- If any of the imports are newer we need to retype check+ if any (> t) ts+ then do+ -- liftIO close -- Close the interface file. See above.+ typeCheck file+ else do+ unless cached $ reportSLn "" 1 $+ "Skipping " ++ render (pretty x) +++ " (" ++ ifile ++ ")."+ -- We set the pragma options of the skipped file here,+ -- because if the top-level file is skipped we want the+ -- pragmas to apply to interactive commands in the UI.+ mapM_ setOptionsFromPragma (iPragmaOptions i)+ return (False, (i, Right t)) - -- Merge the signature with the signature for imported- -- things.- sig <- getSignature- addImportedThings sig Map.empty Set.empty- setSignature emptySignature+ typeCheck file =+ let ret a = do+ reportSLn "" 1 $ "Finished " ++ render (pretty x) ++ "."+ return a+ in do+ -- Do the type checking.+ reportSLn "" 1 $ "Checking " ++ render (pretty x) ++ " (" ++ filePath file ++ ")."+ if includeStateChanges then do+ r <- createInterface file x - return (True, r)- else do- ms <- getImportPath- mf <- stModuleToSource <$> get- vs <- getVisitedModules- ds <- getDecodedModules- opts <- stPersistentOptions <$> get- isig <- getImportedSignature- ibuiltin <- gets stImportedBuiltins- -- Every interface is treated in isolation.- r <- liftIO $ runTCM $- withImportPath ms $ do- setDecodedModules ds- setCommandLineOptions opts- modify $ \s -> s { stModuleToSource = mf }- setVisitedModules vs- addImportedThings isig ibuiltin Set.empty+ -- Merge the signature with the signature for imported+ -- things.+ sig <- getSignature+ addImportedThings sig Map.empty Set.empty+ setSignature emptySignature - r <- createInterface file x+ ret (True, r)+ else do+ ms <- getImportPath+ mf <- stModuleToSource <$> get+ vs <- getVisitedModules+ ds <- getDecodedModules+ opts <- stPersistentOptions <$> get+ isig <- getImportedSignature+ ibuiltin <- gets stImportedBuiltins+ -- Every interface is treated in isolation.+ r <- liftIO $ runTCM $+ withImportPath ms $ do+ setDecodedModules ds+ setCommandLineOptions opts+ modify $ \s -> s { stModuleToSource = mf }+ setVisitedModules vs+ addImportedThings isig ibuiltin Set.empty - mf <- stModuleToSource <$> get- vs <- getVisitedModules- ds <- getDecodedModules- isig <- getImportedSignature- ibuiltin <- gets stImportedBuiltins- hsImports <- getHaskellImports- return (r, do- modify $ \s -> s { stModuleToSource = mf }- setVisitedModules vs- setDecodedModules ds+ r <- createInterface file x - addImportedThings isig ibuiltin hsImports)+ mf <- stModuleToSource <$> get+ ds <- getDecodedModules+ return (r, do+ modify $ \s -> s { stModuleToSource = mf }+ setDecodedModules ds+ case r of+ (i, Right t) -> storeDecodedModule i t+ _ -> return ()+ ) - case r of- Left err -> throwError err- Right (result, update) -> do- update- return (False, result)+ case r of+ Left err -> throwError err+ Right (r, update) -> do+ update+ case r of+ (_, Right _) -> do+ r <- skip file+ ret r+ _ ->+ ret (False, r) + readInterface :: FilePath -> TCM (Maybe Interface) readInterface file = do -- Decode the interface file@@ -373,6 +398,8 @@ writeInterface :: FilePath -> Interface -> TCM ClockTime writeInterface file i = do+ reportSLn "import.iface.write" 5 $+ "Writing interface file " ++ file ++ "." encodeFile file i liftIO $ getModificationTime file `catchError` \e -> do@@ -450,18 +477,15 @@ withScope_ (insideScope topLevel) $ generateVimFile $ filePath file -- Check if there are unsolved meta-variables...+ unsolvedOK <- optAllowUnsolved <$> pragmaOptions unsolvedMetas <- List.nub <$> (mapM getMetaRange =<< getOpenMetas)- unless (null unsolvedMetas) $ do- unsolvedOK <- optAllowUnsolved <$> pragmaOptions- unless unsolvedOK $- typeError $ UnsolvedMetas unsolvedMetas+ unless (null unsolvedMetas || unsolvedOK) $+ typeError $ UnsolvedMetas unsolvedMetas -- ...or unsolved constraints unsolvedConstraints <- getConstraints- unless (null unsolvedConstraints) $ do- unsolvedOK <- optAllowUnsolved <$> pragmaOptions- unless unsolvedOK $- typeError $ UnsolvedConstraints unsolvedConstraints+ unless (null unsolvedConstraints || unsolvedOK) $+ typeError $ UnsolvedConstraints unsolvedConstraints setScope $ outsideScope topLevel @@ -473,7 +497,8 @@ then do -- The file was successfully type-checked (and no warnings were -- encountered), so the interface should be written out.- t <- writeInterface (filePath $ toIFile file) i+ let ifile = filePath $ toIFile file+ t <- writeInterface ifile i return (i, Right t) else return (i, Left $ Warnings termErrs unsolvedMetas unsolvedConstraints)
src/full/Agda/Interaction/MakeCase.hs view
@@ -34,7 +34,7 @@ #include "../undefined.h" import Agda.Utils.Impossible --- | Find the clause whose right hand side is the given meta +-- | Find the clause whose right hand side is the given meta -- BY SEARCHING THE WHOLE SIGNATURE. Returns -- the original clause, before record patterns have been translated -- away. Raises an error if there is no matching clause.@@ -42,7 +42,7 @@ -- Andreas, 2010-09-21: This looks like a SUPER UGLY HACK to me. You are -- walking through the WHOLE signature to find an information you have -- thrown away earlier. (shutter with disgust).--- This code fails for record rhs because they have been eta-expanded, +-- This code fails for record rhs because they have been eta-expanded, -- so the MVar is gone. findClause :: MetaId -> TCM (QName, Clause) findClause m = do@@ -58,8 +58,8 @@ reportSDoc "interaction.case" 10 $ vcat $ [ text "Interaction.MakeCase.findClause fails" , text "expected rhs to be meta var" <+> (text $ show m)- , text "but could not find it in the signature" - ] + , text "but could not find it in the signature"+ ] reportSDoc "interaction.case" 20 $ vcat $ map (text . show) (Map.elems $ sigDefinitions sig) -- you asked for it! typeError $ GenericError "Right hand side must be a single hole when making a case distinction." [r] -> return r@@ -88,31 +88,10 @@ var <- deBruijnIndex =<< parseExprIn hole rng s z <- splitClauseWithAbs clause var case z of- Left err -> typeError . GenericError . show =<< prettySplitError err+ Left err -> typeError . GenericError . show =<< prettyTCM err Right (Left cl) -> (:[]) <$> makeAbsurdClause f cl Right (Right c) -> mapM (makeAbstractClause f) c -prettySplitError :: SplitError -> TCM Doc-prettySplitError err = case err of- NotADatatype t -> fsep $- pwords "Cannot pattern match on non-datatype" ++ [prettyTCM t]- IrrelevantDatatype t -> fsep $- pwords "Cannot pattern match on datatype" ++ [prettyTCM t] ++- pwords "since it is declared irrelevant" - NoRecordConstructor t -> fsep $- pwords "Cannot pattern match on record" ++ [prettyTCM t] ++- pwords "because it has no constructor"- CantSplit c tel cIxs gIxs flex -> addCtxTel tel $ vcat- [ fsep $ pwords "Cannot pattern match on constructor" ++ [prettyTCM c <> text ","] ++- pwords "since the inferred indices"- , nest 2 $ prettyTCM cIxs- , fsep $ pwords "cannot be unified with the expected indices"- , nest 2 $ prettyTCM gIxs- , fsep $ pwords "for some" ++ punctuate comma (map prettyTCM flex)- ]- GenericSplitError s -> fsep $- pwords "Split failed:" ++ pwords s- makeAbsurdClause :: QName -> SplitClause -> TCM A.Clause makeAbsurdClause f (SClause tel perm ps _) = do reportSDoc "interaction.case" 10 $ vcat@@ -142,11 +121,10 @@ deBruijnIndex :: A.Expr -> TCM Nat deBruijnIndex e = do (v, _) <- -- Andreas, 2010-09-21 allow splitting on irrelevant (record) vars- Context.wakeIrrelevantVars $ + Context.wakeIrrelevantVars $ inferExpr e case v of Var n _ -> return n _ -> typeError . GenericError . show =<< (fsep $ pwords "The scrutinee of a case distinction must be a variable," ++ [ prettyTCM v ] ++ pwords "isn't.")-
src/full/Agda/Interaction/Options.hs view
@@ -18,7 +18,7 @@ ) where import Control.Monad ( when )-import Control.Monad.Error ( MonadError(catchError) )+import Control.Monad.Error ( MonadError(..) ) import Data.List ( isSuffixOf ) import System.Console.GetOpt (getOpt, usageInfo, ArgOrder(ReturnInOrder) , OptDescr(..), ArgDescr(..)@@ -61,6 +61,7 @@ , optInteractive :: Bool , optRunTests :: Bool , optCompile :: Bool+ , optEpicCompile :: Bool , optCompileDir :: Maybe FilePath -- ^ In the absence of a path the project root is used. , optGenerateVimFile :: Bool@@ -71,6 +72,7 @@ , optForcing :: Bool , optGhcFlags :: [String] , optPragmaOptions :: PragmaOptions+ , optEpicFlags :: [String] } deriving Show @@ -91,6 +93,8 @@ , optInjectiveTypeConstructors :: Bool , optGuardingTypeConstructors :: Bool , optUniversePolymorphism :: Bool+ , optIrrelevantProjections :: Bool+ , optWithoutK :: Bool } deriving Show @@ -119,6 +123,7 @@ , optInteractive = False , optRunTests = False , optCompile = False+ , optEpicCompile = False , optCompileDir = Nothing , optGenerateVimFile = False , optGenerateHTML = False@@ -128,6 +133,7 @@ , optForcing = True , optGhcFlags = [] , optPragmaOptions = defaultPragmaOptions+ , optEpicFlags = [] } defaultPragmaOptions :: PragmaOptions@@ -135,6 +141,7 @@ { optShowImplicit = False , optVerbose = defaultVerbosity , optProofIrrelevance = False+ , optIrrelevantProjections = True , optAllowUnsolved = False , optDisablePositivity = False , optTerminationCheck = True@@ -146,6 +153,7 @@ , optInjectiveTypeConstructors = False , optGuardingTypeConstructors = False , optUniversePolymorphism = False+ , optWithoutK = False } -- | The default output directory for HTML.@@ -168,14 +176,17 @@ checkOpts opts | not (atMostOne [optAllowUnsolved . p, optCompile]) = Left "Unsolved meta variables are not allowed when compiling.\n"- | not (atMostOne [optInteractive, optCompile]) =- Left "Choose at most one: compiler or interactive mode.\n"+ | not (atMostOne [optInteractive, optCompile, optEpicCompile]) =+ Left "Choose at most one: compiler/interactive mode.\n" | not (atMostOne [optGenerateHTML, optInteractive]) = Left "Choose at most one: HTML generator or interactive mode.\n" | not (atMostOne [ optUniversePolymorphism . p , not . optUniverseCheck . p ]) = Left "Cannot have both universe polymorphism and type in type.\n"+ | (not . null . optEpicFlags $ opts)+ && not (optEpicCompile opts) =+ Left "Cannot set Epic flags without using the Epic backend.\n" | otherwise = Right opts where atMostOne bs = length (filter ($ opts) bs) <= 1@@ -186,11 +197,12 @@ inputFlag f o = case optInputFile o of Nothing -> return $ o { optInputFile = Just f }- Just _ -> fail "only one input file allowed"+ Just _ -> throwError "only one input file allowed" versionFlag o = return $ o { optShowVersion = True } helpFlag o = return $ o { optShowHelp = True } proofIrrelevanceFlag o = return $ o { optProofIrrelevance = True }+noIrrelevantProjectionsFlag o = return $ o { optIrrelevantProjections = False } ignoreInterfacesFlag o = return $ o { optIgnoreInterfaces = True } allowUnsolvedFlag o = return $ o { optAllowUnsolved = True } showImplicitFlag o = return $ o { optShowImplicit = True }@@ -206,14 +218,17 @@ guardingTypeConstructorFlag o = return $ o { optGuardingTypeConstructors = True } universePolymorphismFlag o = return $ o { optUniversePolymorphism = True } noForcingFlag o = return $ o { optForcing = False }+withoutKFlag o = return $ o { optWithoutK = True } interactiveFlag o = return $ o { optInteractive = True , optPragmaOptions = (optPragmaOptions o) { optAllowUnsolved = True } } compileFlag o = return $ o { optCompile = True }+compileEpicFlag o = return $ o { optEpicCompile = True} compileDirFlag f o = return $ o { optCompileDir = Just f } ghcFlag f o = return $ o { optGhcFlags = f : optGhcFlags o }+epicFlagsFlag s o = return $ o { optEpicFlags = optEpicFlags o ++ [s]} htmlFlag o = return $ o { optGenerateHTML = True } htmlDirFlag d o = return $ o { optHTMLDir = d }@@ -231,18 +246,18 @@ ss -> do n <- readM (last ss) `catchError` \_ -> usage return (init ss, n)- usage = fail "argument to verbose should be on the form x.y.z:N or N"+ usage = throwError "argument to verbose should be on the form x.y.z:N or N" terminationDepthFlag s o = do k <- readM s `catchError` \_ -> usage when (k < 1) $ usage -- or: turn termination checking off for 0 return $ o { optTerminationDepth = k-1 }- where usage = fail "argument to termination-depth should be >= 1"+ where usage = throwError "argument to termination-depth should be >= 1" integerArgument :: String -> String -> Either String Int integerArgument flag s = readM s `catchError` \_ ->- fail $ "option '" ++ flag ++ "' requires an integer argument"+ throwError $ "option '" ++ flag ++ "' requires an integer argument" standardOptions :: [OptDescr (Flag CommandLineOptions)] standardOptions =@@ -251,11 +266,14 @@ , Option ['I'] ["interactive"] (NoArg interactiveFlag) "start in interactive mode" , Option ['c'] ["compile"] (NoArg compileFlag)- "compile program (experimental)"+ "compile program using the MAlonzo backend (experimental)"+ , Option [] ["epic"] (NoArg compileEpicFlag) "compile program using the Epic backend" , Option [] ["compile-dir"] (ReqArg compileDirFlag "DIR") ("directory for compiler output (default: the project root)") , Option [] ["ghc-flag"] (ReqArg ghcFlag "GHC-FLAG")- "give the flag GHC-FLAG to GHC when compiling"+ "give the flag GHC-FLAG to GHC when compiling using MAlonzo"+ , Option [] ["epic-flag"] (ReqArg epicFlagsFlag "EPIC-FLAG")+ "give the flag EPIC-FLAG to Epic when compiling using Epic" , Option [] ["test"] (NoArg runTestsFlag) "run internal test suite" , Option [] ["vim"] (NoArg vimFlag)@@ -310,6 +328,10 @@ "treat type constructors as inductive constructors when checking productivity" , Option [] ["universe-polymorphism"] (NoArg universePolymorphismFlag) "enable universe polymorphism (experimental feature)"+ , Option [] ["no-irrelevant-projections"] (NoArg noIrrelevantProjectionsFlag)+ "disable projection of irrelevant record fields"+ , Option [] ["without-K"] (NoArg withoutKFlag)+ "disable the K rule (maybe)" ] -- | Used for printing usage info.@@ -322,7 +344,7 @@ parseOptions' argv opts fileArg = \defaults -> case getOpt (ReturnInOrder fileArg) opts argv of (o,_,[]) -> foldl (>>=) (return defaults) o- (_,_,errs) -> fail $ concat errs+ (_,_,errs) -> throwError $ concat errs -- | Parse the standard options. parseStandardOptions :: [String] -> Either String CommandLineOptions@@ -339,7 +361,7 @@ -> Either String PragmaOptions parsePragmaOptions argv opts = do ps <- parseOptions' argv pragmaOptions- (\s _ -> fail $ "Bad option in pragma: " ++ s)+ (\s _ -> throwError $ "Bad option in pragma: " ++ s) (optPragmaOptions opts) checkOpts (opts { optPragmaOptions = ps }) return ps@@ -348,7 +370,8 @@ parsePluginOptions :: [String] -> [OptDescr (Flag opts)] -> Flag opts parsePluginOptions argv opts = parseOptions' argv opts- (\s _ -> fail $ "Internal error: Flag " ++ s ++ " passed to a plugin")+ (\s _ -> throwError $+ "Internal error: Flag " ++ s ++ " passed to a plugin") -- | The usage info message. The argument is the program name (probably -- agda).
src/full/Agda/Main.hs view
@@ -48,6 +48,7 @@ import Agda.TypeChecking.SizedTypes import Agda.Compiler.MAlonzo.Compiler as MAlonzo+import Agda.Compiler.Epic.Compiler as Epic import Agda.Termination.TermCheck @@ -88,6 +89,7 @@ checkFile = do i <- optInteractive <$> liftTCM commandLineOptions compile <- optCompile <$> liftTCM commandLineOptions+ epic <- optEpicCompile <$> liftTCM commandLineOptions when i $ liftIO $ LocIO.putStr splashScreen let failIfNoInt (Just i) = return i -- The allowed combinations of command-line@@ -97,6 +99,7 @@ interaction :: TCM (Maybe Interface) -> TCM () interaction | i = runIM . interactionLoop | compile = (MAlonzo.compilerMain =<<) . (failIfNoInt =<<)+ | epic = (Epic.compilerMain =<<) . (failIfNoInt =<<) | otherwise = (() <$) interaction $ do hasFile <- hasInputFile@@ -168,4 +171,3 @@ `catchImpossible` \e -> do LocIO.putStr $ show e exitFailure-
src/full/Agda/Packaging/Monad.hs view
@@ -31,7 +31,7 @@ instance Applicative (AgdaPkg opt) where pure = return- (<*>) = ap + (<*>) = ap asksM :: (MonadReader r m) => (r -> m a) -> m a asksM = join . asks
src/full/Agda/Syntax/Abstract.hs view
@@ -56,7 +56,7 @@ deriving (Typeable, Data, Show) data Declaration- = Axiom DefInfo QName Expr -- ^ postulate+ = Axiom DefInfo Relevance QName Expr -- ^ postulate | Field DefInfo QName (Arg Expr) -- ^ record field | Primitive DefInfo QName Expr -- ^ primitive function | Definition DeclInfo [TypeSignature] [Definition] -- ^ a bunch of mutually recursive definitions@@ -74,10 +74,11 @@ | CompiledPragma QName String | CompiledTypePragma QName String | CompiledDataPragma QName String [String]+ | CompiledEpicPragma QName String | EtaPragma QName deriving (Typeable, Data, Show) -data LetBinding = LetBind LetInfo Name Expr Expr -- ^ LetBind info name type defn+data LetBinding = LetBind LetInfo Relevance Name Expr Expr -- ^ LetBind info name type defn | LetApply ModuleInfo ModuleName [TypedBindings] ModuleName [NamedArg Expr] (Map QName QName) (Map ModuleName ModuleName) | LetOpen ModuleInfo ModuleName -- ^ only for highlighting and abstractToConcrete deriving (Typeable, Data, Show)@@ -229,7 +230,7 @@ getRange (DontCare) = noRange instance HasRange Declaration where- getRange (Axiom i _ _ ) = getRange i+ getRange (Axiom i _ _ _ ) = getRange i getRange (Field i _ _ ) = getRange i getRange (Definition i _ _ ) = getRange i getRange (Section i _ _ _ ) = getRange i@@ -270,7 +271,7 @@ getRange (RewriteRHS _ es rhs wh) = getRange (es, rhs, wh) instance HasRange LetBinding where- getRange (LetBind i _ _ _ ) = getRange i+ getRange (LetBind i _ _ _ _ ) = getRange i getRange (LetApply i _ _ _ _ _ _ ) = getRange i getRange (LetOpen i _ ) = getRange i @@ -308,12 +309,16 @@ killRange (Quote i) = killRange1 Quote i killRange (DontCare) = DontCare +instance KillRange Relevance where+ killRange rel = rel -- no range to kill+ instance KillRange Declaration where- killRange (Axiom i a b ) = killRange3 Axiom i a b+ killRange (Axiom i rel a b ) = killRange4 Axiom i rel a b killRange (Field i a b ) = killRange3 Field i a b killRange (Definition i a b ) = killRange3 Definition i a b killRange (Section i a b c ) = killRange4 Section i a b c killRange (Apply i a b c d e f ) = killRange5 Apply i a b c d e f+ -- the last two arguments of Apply are name maps, so nothing to kill killRange (Import i a ) = killRange2 Import i a killRange (Primitive i a b ) = killRange3 Primitive i a b killRange (Pragma i a ) = Pragma (killRange i) a@@ -350,7 +355,7 @@ killRange (RewriteRHS x es rhs wh) = killRange4 RewriteRHS x es rhs wh instance KillRange LetBinding where- killRange (LetBind i a b c ) = killRange4 LetBind i a b c+ killRange (LetBind i rel a b c ) = killRange5 LetBind i rel a b c killRange (LetApply i a b c d e f ) = killRange5 LetApply i a b c d e f killRange (LetOpen i x ) = killRange2 LetOpen i x @@ -363,7 +368,7 @@ -- include local modules and where clauses. allNames :: Declaration -> Seq QName-allNames (Axiom _ q _) = Seq.singleton q+allNames (Axiom _ _ q _) = Seq.singleton q allNames (Field _ q _) = Seq.singleton q allNames (Primitive _ q _) = Seq.singleton q allNames (Definition _ _ defs) = Fold.foldMap allNamesD defs@@ -398,5 +403,5 @@ -- Precondition: The declaration has to be an 'Axiom'. axiomName :: Declaration -> QName-axiomName (Axiom _ q _) = q+axiomName (Axiom _ _ q _) = q axiomName _ = __IMPOSSIBLE__
src/full/Agda/Syntax/Abstract/Name.hs view
@@ -264,4 +264,3 @@ instance Sized ModuleName where size = size . mnameToList-
src/full/Agda/Syntax/Abstract/Views.hs view
@@ -10,9 +10,10 @@ | NonApplication Expr -- ^ TODO: if we allow beta-redexes (which we currently do) there could be one here. -data Head = HeadVar Name- | HeadDef QName- | HeadCon [QName]+-- | @Head@ of an applicative expression.+data Head = HeadVar Name -- ^ A variable.+ | HeadDef QName -- ^ A defined symbol (except constructor).+ | HeadCon [QName] -- ^ A constructor which could belong to any of the data types in the list. appView :: Expr -> AppView appView e =@@ -43,4 +44,3 @@ getRange (HeadVar x) = getRange x getRange (HeadDef x) = getRange x getRange (HeadCon x) = getRange x-
src/full/Agda/Syntax/Common.hs view
@@ -36,6 +36,11 @@ ignoreForced Relevant = Relevant ignoreForced Irrelevant = Irrelevant +-- | @Relevance@ from @Bool@.+irrelevant :: Bool -> Relevance+irrelevant True = Irrelevant+irrelevant False = Relevant+ instance KillRange Induction where killRange = id instance KillRange Hiding where killRange = id
src/full/Agda/Syntax/Concrete.hs view
@@ -122,7 +122,7 @@ -- | A telescope is a sequence of typed bindings. Bound variables are in scope--- in later types. +-- in later types. type Telescope = [TypedBindings] {-| Left hand sides can be written in infix style. For example:@@ -210,8 +210,8 @@ which type in the intended family the constructor targets. -} data Declaration- = TypeSig Name Expr- | Field Name (Arg Expr)+ = TypeSig Relevance Name Expr -- ^ Axioms and functions can be irrelevant.+ | Field Name (Arg Expr) -- ^ Record field, can be hidden and/or irrelevant. | FunClause LHS RHS WhereClause | Data !Range Induction Name [TypedBindings] Expr [Constructor] | Record !Range Name (Maybe Name) [TypedBindings] Expr [Declaration]@@ -240,6 +240,7 @@ | CompiledDataPragma !Range QName String [String] | CompiledTypePragma !Range QName String | CompiledPragma !Range QName String+ | CompiledEpicPragma !Range QName String | ImportPragma !Range String -- ^ Invariant: The string must be a valid Haskell -- module name.@@ -337,23 +338,23 @@ getRange (SomeWhere _ ds) = getRange ds instance HasRange Declaration where- getRange (TypeSig x t) = fuseRange x t- getRange (Field x t) = fuseRange x t- getRange (FunClause lhs rhs wh) = fuseRange lhs rhs `fuseRange` wh- getRange (Data r _ _ _ _ _) = r- getRange (Record r _ _ _ _ _) = r- getRange (Mutual r _) = r- getRange (Abstract r _) = r- getRange (Open r _ _) = r- getRange (ModuleMacro r _ _ _ _ _) = r- getRange (Import r _ _ _ _) = r- getRange (Private r _) = r- getRange (Postulate r _) = r- getRange (Primitive r _) = r- getRange (Module r _ _ _) = r- getRange (Infix f _) = getRange f- getRange (Syntax n _) = getRange n- getRange (Pragma p) = getRange p+ getRange (TypeSig _ x t) = fuseRange x t+ getRange (Field x t) = fuseRange x t+ getRange (FunClause lhs rhs wh) = fuseRange lhs rhs `fuseRange` wh+ getRange (Data r _ _ _ _ _) = r+ getRange (Record r _ _ _ _ _) = r+ getRange (Mutual r _) = r+ getRange (Abstract r _) = r+ getRange (Open r _ _) = r+ getRange (ModuleMacro r _ _ _ _ _) = r+ getRange (Import r _ _ _ _) = r+ getRange (Private r _) = r+ getRange (Postulate r _) = r+ getRange (Primitive r _) = r+ getRange (Module r _ _ _) = r+ getRange (Infix f _) = getRange f+ getRange (Syntax n _) = getRange n+ getRange (Pragma p) = getRange p instance HasRange LHS where getRange (LHS p ps eqns ws) = fuseRange p (fuseRange ps (eqns ++ ws))@@ -369,6 +370,7 @@ getRange (CompiledDataPragma r _ _ _) = r getRange (CompiledTypePragma r _ _) = r getRange (CompiledPragma r _ _) = r+ getRange (CompiledEpicPragma r _ _) = r getRange (ImportPragma r _) = r getRange (ImpossiblePragma r) = r getRange (EtaPragma r _) = r@@ -402,4 +404,3 @@ getRange (LitP l) = getRange l getRange (HiddenP r _) = r getRange (DotP r _) = r-
src/full/Agda/Syntax/Concrete/Definitions.hs view
@@ -41,7 +41,8 @@ modifiers have been distributed to the individual declarations. -} data NiceDeclaration- = Axiom Range Fixity' Access IsAbstract Name Expr+ = Axiom Range Fixity' Access IsAbstract Relevance Name Expr+ -- ^ Axioms and functions can be declared irrelevant. | NiceField Range Fixity' Access IsAbstract Name (Arg Expr) | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr | NiceDef Range [Declaration] [NiceTypeSignature] [NiceDefinition]@@ -98,7 +99,7 @@ getRange (DeclarationPanic _) = noRange instance HasRange NiceDeclaration where- getRange (Axiom r _ _ _ _ _) = r+ getRange (Axiom r _ _ _ _ _ _) = r getRange (NiceField r _ _ _ _ _) = r getRange (NiceDef r _ _ _) = r getRange (NiceModule r _ _ _ _ _) = r@@ -178,7 +179,7 @@ -- Compute the names defined in a declaration declaredNames :: Declaration -> [Name] declaredNames d = case d of- TypeSig x _ -> [x]+ TypeSig _ x _ -> [x] Field x _ -> [x] FunClause (LHS p [] _ _) _ _ | IdentP (QName x) <- noSingletonRawAppP p -> [x]@@ -205,21 +206,21 @@ nice _ [] = return [] nice fixs (d:ds) = case d of- TypeSig x t ->+ TypeSig rel x t -> -- After a type signature there should follow a bunch of -- clauses. case span (isFunClauseOf x) ds of ([], _) -> throwError $ MissingDefinition x (ds0,ds1) -> do ds1 <- nice fixs ds1- d <- mkFunDef fixs x (Just t) ds0+ d <- mkFunDef rel fixs x (Just t) ds0 return $ d : ds1 cl@(FunClause lhs@(LHS p [] _ _) _ _) | IdentP (QName x) <- noSingletonRawAppP p -> do ds <- nice fixs ds- d <- mkFunDef fixs x Nothing [cl]+ d <- mkFunDef Relevant fixs x Nothing [cl] -- fun def without type signature is relevant return $ d : ds FunClause lhs _ _ -> throwError $ MissingTypeSignature lhs @@ -230,7 +231,7 @@ Data r CoInductive x tel t cs -> throwError (Codata r) Data r Inductive x tel t cs -> dataOrRec DataDef niceAx r x tel t cs Record r x c tel t cs -> do- let c' = (\c -> niceAxiom fixs (TypeSig c t)) <$> c+ let c' = (\c -> niceAxiom fixs (TypeSig Relevant c t)) <$> c -- constructor is always relevant dataOrRec (\x1 x2 x3 x4 x5 -> RecDef x1 x2 x3 x4 x5 c') (const niceDeclarations) r x tel t cs Mutual r ds -> do@@ -261,13 +262,13 @@ Pragma p -> return [NicePragma (getRange p) p] FunClause _ _ _ -> __IMPOSSIBLE__- TypeSig _ _ -> __IMPOSSIBLE__+ TypeSig{} -> __IMPOSSIBLE__ where dataOrRec mkDef niceD r x tel t cs = do ds <- niceD fixs cs return $ [ NiceDef r [d]- [ Axiom (fuseRange x t) f PublicAccess ConcreteDef+ [ Axiom (fuseRange x t) f PublicAccess ConcreteDef Relevant x (Pi tel t) ] -- Setting the range to the range of t makes sense@@ -296,23 +297,23 @@ niceAxioms fixs ds = map (niceAxiom fixs) ds niceAxiom :: Map.Map Name Fixity' -> TypeSignature -> NiceDeclaration- niceAxiom fixs d@(TypeSig x t) =- Axiom (getRange d) (fixity x fixs) PublicAccess ConcreteDef x t+ niceAxiom fixs d@(TypeSig rel x t) =+ Axiom (getRange d) (fixity x fixs) PublicAccess ConcreteDef rel x t niceAxiom fixs d@(Field x argt) = NiceField (getRange d) (fixity x fixs) PublicAccess ConcreteDef x argt niceAxiom _ _ = __IMPOSSIBLE__ toPrim :: NiceDeclaration -> NiceDeclaration- toPrim (Axiom r f a c x t) = PrimitiveFunction r f a c x t- toPrim _ = __IMPOSSIBLE__+ toPrim (Axiom r f a c rel x t) = PrimitiveFunction r f a c x t+ toPrim _ = __IMPOSSIBLE__ -- Create a function definition.- mkFunDef fixs x mt ds0 = do+ mkFunDef rel fixs x mt ds0 = do cs <- mkClauses x $ expandEllipsis ds0 return $ NiceDef (fuseRange x ds0)- (TypeSig x t : ds0)- [ Axiom (fuseRange x t) f PublicAccess ConcreteDef x t ]+ (TypeSig rel x t : ds0)+ [ Axiom (fuseRange x t) f PublicAccess ConcreteDef rel x t ] [ FunDef (getRange ds0) ds0 f PublicAccess ConcreteDef x cs ] where@@ -400,7 +401,7 @@ -- Make a declaration abstract mkAbstract d = case d of- Axiom r f a _ x e -> Axiom r f a AbstractDef x e+ Axiom r f a _ rel x e -> Axiom r f a AbstractDef rel x e NiceField r f a _ x e -> NiceField r f a AbstractDef x e PrimitiveFunction r f a _ x e -> PrimitiveFunction r f a AbstractDef x e NiceDef r cs ts ds -> NiceDef r cs (map mkAbstract ts)@@ -427,7 +428,7 @@ -- Make a declaration private mkPrivate d = case d of- Axiom r f _ a x e -> Axiom r f PrivateAccess a x e+ Axiom r f _ a rel x e -> Axiom r f PrivateAccess a rel x e NiceField r f _ a x e -> NiceField r f PrivateAccess a x e PrimitiveFunction r f _ a x e -> PrimitiveFunction r f PrivateAccess a x e NiceDef r cs ts ds -> NiceDef r cs (map mkPrivate ts)@@ -485,13 +486,12 @@ notSoNiceDeclarations :: [NiceDeclaration] -> [Declaration] notSoNiceDeclarations = concatMap notNice where- notNice (Axiom _ _ _ _ x e) = [TypeSig x e]+ notNice (Axiom _ _ _ _ rel x e) = [TypeSig rel x e] notNice (NiceField _ _ _ _ x argt) = [Field x argt]- notNice (PrimitiveFunction r _ _ _ x e) = [Primitive r [TypeSig x e]]+ notNice (PrimitiveFunction r _ _ _ x e) = [Primitive r [TypeSig Relevant x e]] notNice (NiceDef _ ds _ _) = ds notNice (NiceModule r _ _ x tel ds) = [Module r x tel ds] notNice (NiceModuleMacro r _ _ x tel e o dir) = [ModuleMacro r x tel e o dir] notNice (NiceOpen r x dir) = [Open r x dir] notNice (NiceImport r x as o dir) = [Import r x as o dir] notNice (NicePragma _ p) = [Pragma p]-
src/full/Agda/Syntax/Concrete/Operators.hs view
@@ -87,14 +87,14 @@ where zs = concatMap opOrNot ops - opOrNot (x, Fixity' fx syn) = Left x + opOrNot (x, Fixity' fx syn) = Left x : case x of Name _ [_] -> [] _ -> [Right (x, fx, syntaxOf x)] ++ case syn of [] -> [] _ -> [Right (x, fx, syn)]- + data UseBoundNames = UseBoundNames | DontUseBoundNames @@ -140,10 +140,10 @@ (True,False) -> Postfix (False,True) -> Prefix (False,False) -> Nonfix- + notationNames :: NewNotation -> [Name]-notationNames (_, _, ps) = [Name noRange [Id x] | IdPart x <- ps ] +notationNames (_, _, ps) = [Name noRange [Id x] | IdPart x <- ps ] buildParser :: forall e. IsExpr e => Range -> UseBoundNames -> ScopeM (ReadP e e) buildParser r use = do@@ -160,15 +160,15 @@ DontUseBoundNames -> not (Set.member x conparts) || Set.member x connames -- If string is a part of notation, it cannot be used as an identifier, -- unless it is also used as an identifier. See issue 307.- return $ -- traceShow ops $ + return $ -- traceShow ops $ recursive $ \p -> -- p is a parser for an arbitrary expression concatMap (mkP p) (order fix) -- for infix operators (with outer "holes") ++ [ appP p ] -- parser for simple applications ++ map (nonfixP . opP p) non -- for things with no outer "holes" ++ [ const $ atomP isAtom ] where- + level :: NewNotation -> Nat level (_name, fixity, _syn) = fixityLevel fixity @@ -177,7 +177,7 @@ isinfixl, isinfixr, isinfix, nonfix, isprefix, ispostfix :: NewNotation -> Bool isinfixl (_, LeftAssoc _ _, syn) = isInfix syn- isinfixl _ = False + isinfixl _ = False isinfixr (_, RightAssoc _ _, syn) = isInfix syn isinfixr _ = False@@ -209,7 +209,7 @@ postfx = fixP postfixP ispostfix fixP :: (ReadP e (NewNotation,Range,[e]) -> ReadP e e -> ReadP e e) -> (NewNotation -> Bool) -> [ReadP e e -> ReadP e e]- fixP f g = + fixP f g = case filter g ops of [] -> [] ops -> [ f $ choice $ map (opP p0) ops ]@@ -384,4 +384,3 @@ mparen :: Bool -> Expr -> Expr mparen True e = Paren (getRange e) e mparen False e = e-
src/full/Agda/Syntax/Concrete/Operators/Parser.hs view
@@ -159,7 +159,7 @@ restP x = return x +++ do f <- binop op e <- p- f x e + f x e nonfixP op p = (do (nsyn,r,es) <- op@@ -194,4 +194,3 @@ case exprView e of LocalV x | not (p x) -> pfail _ -> return e-
src/full/Agda/Syntax/Concrete/Pretty.hs view
@@ -43,8 +43,8 @@ pRelevance :: Pretty a => Relevance -> a -> Doc pRelevance Forced a = pretty a pRelevance Relevant a = pretty a-pRelevance Irrelevant a = - let d = pretty a +pRelevance Irrelevant a =+ let d = pretty a in if render d == "_" then d else text "." <> d {- UNUSED@@ -218,12 +218,13 @@ instance Pretty Declaration where pretty d = case d of- TypeSig x e -> sep [ pretty x <+> text ":"- , nest 2 $ pretty e- ]- Field x (Arg h rel e) -> + TypeSig rel x e ->+ sep [ pRelevance rel $ pretty x <+> text ":"+ , nest 2 $ pretty e+ ]+ Field x (Arg h rel e) -> sep [ text "field"- , nest 2 $ pRelevance rel $ pHidden h (TypeSig x e)+ , nest 2 $ pRelevance rel $ pHidden h (TypeSig Relevant x e) ] FunClause lhs rhs wh -> sep [ pretty lhs@@ -302,6 +303,8 @@ hsep [ text "COMPILED_TYPE", pretty x, text hs ] pretty (CompiledDataPragma _ x hs hcs) = hsep $ [text "COMPILED_DATA", pretty x] ++ map text (hs : hcs)+ pretty (CompiledEpicPragma _ x e) =+ hsep [ text "COMPILED_EPIC", pretty x, text e ] pretty (ImportPragma _ i) = hsep $ [text "IMPORT", text i] pretty (ImpossiblePragma _) =@@ -315,7 +318,7 @@ pretty (NonAssoc _ n) = text "infix" <+> text (show n) instance Pretty e => Pretty (Arg e) where- -- Andreas 2010-09-21: do not print relevance in general, only in function types! + -- Andreas 2010-09-21: do not print relevance in general, only in function types! -- Andreas 2010-09-24: and in record fields pretty (Arg h r e) = -- pRelevance r $ pHidden h e@@ -376,4 +379,3 @@ instance Pretty ImportedName where pretty (ImportedName x) = pretty x pretty (ImportedModule x) = text "module" <+> pretty x-
src/full/Agda/Syntax/Fixity.hs view
@@ -13,7 +13,7 @@ -- | The notation is handled as the fixity in the renamer. Hence they -- are grouped together in this type.-data Fixity' = Fixity' +data Fixity' = Fixity' {theFixity :: Fixity, theNotation :: Notation} deriving (Typeable, Data, Show, Eq)@@ -38,7 +38,7 @@ defaultFixity' = Fixity' defaultFixity defaultNotation -noFixity = NonAssoc noRange (negate 666) +noFixity = NonAssoc noRange (negate 666) -- | Fixity of operators. data Fixity = LeftAssoc Range Nat@@ -127,4 +127,3 @@ getRange (LeftAssoc r _) = r getRange (RightAssoc r _) = r getRange (NonAssoc r _) = r-
src/full/Agda/Syntax/Info.hs view
@@ -101,7 +101,7 @@ killRange (LetRange r) = LetRange (killRange r) {--------------------------------------------------------------------------- Definition information (declarations that actually defines something)+ Definition information (declarations that actually define something) --------------------------------------------------------------------------} data DefInfo =@@ -172,4 +172,3 @@ instance KillRange PatInfo where killRange (PatRange r) = PatRange $ killRange r killRange (PatSource r f) = PatSource (killRange r) f-
src/full/Agda/Syntax/Internal.hs view
@@ -369,4 +369,3 @@ [ "An internal error has occurred. Please report this as a bug." , "Location of the error: " ++ file ++ ":" ++ show line ]-
src/full/Agda/Syntax/Internal/Generic.hs view
@@ -78,4 +78,3 @@ traverseTerm f (El s t) = El s $ traverseTerm f t traverseTermM f (El s t) = El s <$> traverseTermM f t foldTerm f (El s t) = foldTerm f t-
src/full/Agda/Syntax/Literal.hs view
@@ -62,4 +62,3 @@ killRange (LitString r x) = LitString (killRange r) x killRange (LitChar r x) = LitChar (killRange r) x killRange (LitQName r x) = LitQName (killRange r) x-
src/full/Agda/Syntax/Notation.hs view
@@ -5,6 +5,7 @@ import Control.Applicative import Control.Monad (when)+import Control.Monad.Error (throwError) import Data.List import Data.Maybe import Data.Generics (Typeable, Data)@@ -35,11 +36,11 @@ data HoleName = LambdaHole String String -- ^ (\x -> y) ; 1st argument is the bound name (unused for now) | ExprHole String -- ^ simple named hole --- | Target of a hole +-- | Target of a hole holeName (LambdaHole _ n) = n holeName (ExprHole n) = n -type Notation = [GenPart] +type Notation = [GenPart] -- | Part of a Notation data GenPart = BindHole Int -- ^ Argument is the position of the hole (with binding) where the binding should occur.@@ -65,20 +66,20 @@ -- | From notation with names to notation with indices. mkNotation :: [HoleName] -> [String] -> Either String Notation-mkNotation _ [] = fail "empty notation is disallowed"+mkNotation _ [] = throwError "empty notation is disallowed" mkNotation holes ids = do xs <- mapM mkPart ids- when (not (isAlternating xs)) $ fail "syntax must alternate holes and non-holes"- when (not (isExprLinear xs)) $ fail "syntax must use holes exactly once"- when (not (isLambdaLinear xs)) $ fail "syntax must use binding holes exactly once"+ when (not (isAlternating xs)) $ throwError "syntax must alternate holes and non-holes"+ when (not (isExprLinear xs)) $ throwError "syntax must use holes exactly once"+ when (not (isLambdaLinear xs)) $ throwError "syntax must use binding holes exactly once" return xs- where mkPart ident = - case (findIndices (\x -> ident == holeName x) holes, + where mkPart ident =+ case (findIndices (\x -> ident == holeName x) holes, findIndices (\x -> case x of LambdaHole ident' _ -> ident == ident';_ -> False) holes) of ([],[x]) -> return $ BindHole x ([x], []) -> return $ NormalHole x ([], []) -> return $ IdPart ident- _ -> fail "hole names must be unique"+ _ -> throwError "hole names must be unique" isExprLinear xs = sort [ x | NormalHole x <- xs] == [ i | (i,h) <- zip [0..] holes ] isLambdaLinear xs = sort [ x | BindHole x <- xs] == [ i | (i,h) <- zip [0..] holes, isLambdaHole h ]@@ -93,5 +94,3 @@ -- | No notation by default defaultNotation = [] noNotation = []--
src/full/Agda/Syntax/Parser/Comments.hs view
@@ -78,5 +78,3 @@ where (==>) = (,) other = ($)--
src/full/Agda/Syntax/Parser/Layout.hs view
@@ -146,4 +146,3 @@ return $ case ctx of Layout n -> compare (posCol loc) n _ -> GT-
src/full/Agda/Syntax/Parser/LexActions.hs view
@@ -244,4 +244,3 @@ -- | True if the given state appears somewhere on the state stack inState :: LexState -> LexPredicate inState s (ls, _) _ _ _ = s `elem` ls-
src/full/Agda/Syntax/Parser/Lexer.x view
@@ -1,4 +1,5 @@ {+{-# OPTIONS_GHC -fno-warn-deprecated-flags #-} {-| The lexer is generated by Alex (<http://www.haskell.org/alex>) and is an adaptation of GHC's lexer. The main lexing function 'lexer' is called by the "Agda.Syntax.Parser.Parser" to get the next token from the input.@@ -78,6 +79,7 @@ <pragma_> "COMPILED_DATA" { keyword KwCOMPILED_DATA } <pragma_> "COMPILED_TYPE" { keyword KwCOMPILED_TYPE } <pragma_> "COMPILED" { keyword KwCOMPILED }+<pragma_> "COMPILED_EPIC" { keyword KwCOMPILED_EPIC } <pragma_> "IMPORT" { keyword KwIMPORT } <pragma_> "IMPOSSIBLE" { keyword KwIMPOSSIBLE } <pragma_> "ETA" { keyword KwETA }
src/full/Agda/Syntax/Parser/LookAhead.hs view
@@ -133,4 +133,3 @@ runLookAhead err (LookAhead m) = do inp <- getLexInput evalStateT (runReaderT m (ErrorFun err)) inp-
src/full/Agda/Syntax/Parser/Monad.hs view
@@ -313,4 +313,3 @@ pushCurrentContext = do p <- getLastPos pushContext (Layout (posCol p))-
src/full/Agda/Syntax/Parser/Parser.y view
@@ -1,5 +1,6 @@ {-{-# OPTIONS -fno-warn-incomplete-patterns #-}+{-# OPTIONS_GHC -fno-warn-incomplete-patterns+ -fno-warn-deprecated-flags #-} {-| The parser is generated by Happy (<http://www.haskell.org/happy>). -} module Agda.Syntax.Parser.Parser (@@ -87,6 +88,7 @@ 'COMPILED' { TokKeyword KwCOMPILED $$ } 'COMPILED_DATA' { TokKeyword KwCOMPILED_DATA $$ } 'COMPILED_TYPE' { TokKeyword KwCOMPILED_TYPE $$ }+ 'COMPILED_EPIC' { TokKeyword KwCOMPILED_EPIC $$ } 'quoteGoal' { TokKeyword KwQuoteGoal $$ } 'quote' { TokKeyword KwQuote $$ } @@ -176,6 +178,7 @@ | 'COMPILED' { TokKeyword KwCOMPILED $1 } | 'COMPILED_DATA'{ TokKeyword KwCOMPILED_DATA $1 } | 'COMPILED_TYPE'{ TokKeyword KwCOMPILED_TYPE $1 }+ | 'COMPILED_EPIC'{ TokKeyword KwCOMPILED_EPIC $1 } | 'IMPOSSIBLE' { TokKeyword KwIMPOSSIBLE $1 } | 'ETA' { TokKeyword KwETA $1 } | 'quoteGoal' { TokKeyword KwQuoteGoal $1 }@@ -305,7 +308,7 @@ -- A possibly dotted identifier. MaybeDottedId :: { Arg Name }-MaybeDottedId +MaybeDottedId : '.' Id { Arg NotHidden Irrelevant $2 } | Id { defaultArg $1 } @@ -544,7 +547,7 @@ -- A non-empty sequence of possibly untyped bindings. TypedUntypedBindings1 :: { [LamBinding] }-TypedUntypedBindings1 +TypedUntypedBindings1 : DomainFreeBinding TypedUntypedBindings1 { $1 ++ $2 } | TypedBindings TypedUntypedBindings1 { DomainFull $1 : $2 } | DomainFreeBinding { $1 }@@ -680,7 +683,7 @@ -- Top-level definitions. Declaration :: { [Declaration] } Declaration- : TypeSig { [$1] }+ : RelTypeSig { [$1] } -- Possibly dotted type signature. | Fields { $1 } | FunClause { [$1] } | Data { [$1] }@@ -703,21 +706,25 @@ Individual declarations --------------------------------------------------------------------------} --- Type signatures can appear everywhere, so the type is completely polymorphic--- in the indices.-TypeSig :: { Declaration }-TypeSig : Id ':' Expr { TypeSig $1 $3 }- -- Type signatures of the form "n1 n2 n3 ... : Type", with at least -- one bound name. TypeSigs :: { [Declaration] }-TypeSigs : SpaceIds ':' Expr { map (flip TypeSig $3) $1 }+TypeSigs : SpaceIds ':' Expr { map (flip (TypeSig Relevant) $3) $1 } +-- Some declaration can include relevance information (axioms, functions)+RelTypeSig :: { Declaration }+RelTypeSig+ : '.' Id ':' Expr { TypeSig Irrelevant $2 $4 }+ | Id ':' Expr { TypeSig Relevant $1 $3 }++RelTypeSigs :: { [Declaration] }+RelTypeSigs : MaybeDottedIds ':' Expr { map (\ (Arg _ rel x) -> TypeSig rel x $3) $1 }+ -- A variant of TypeSigs where any sub-sequence of names can be marked--- as hidden or irrelevant using braces and dots: +-- as hidden or irrelevant using braces and dots: -- {n1 .n2} n3 .n4 {n5} .{n6 n7} ... : Type. ArgTypeSigs :: { [Arg Declaration] }-ArgTypeSigs : ArgIds ':' Expr { map (fmap (flip TypeSig $3)) $1 }+ArgTypeSigs : ArgIds ':' Expr { map (fmap (flip (TypeSig Relevant) $3)) $1 } -- Function declarations. The left hand side is parsed as an expression to allow -- declarations like 'x::xs ++ ys = e', when '::' has higher precedence than '++'.@@ -755,7 +762,7 @@ -- Field declarations. Fields :: { [Declaration] } Fields : 'field' ArgTypeSignatures- { let toField (Arg h rel (TypeSig x t)) = Field x (Arg h rel t) in map toField $2 }+ { let toField (Arg h rel (TypeSig _ x t)) = Field x (Arg h rel t) in map toField $2 } --REM { let toField (h, TypeSig x t) = Field h x t in map toField $2 } -- Mutually recursive declarations.@@ -775,16 +782,16 @@ -- Postulates. Can only contain type signatures. TODO: relax this. Postulate :: { Declaration }-Postulate : 'postulate' TypeSignatures { Postulate (fuseRange $1 $2) $2 }+Postulate : 'postulate' RelTypeSignatures { Postulate (fuseRange $1 $2) $2 } -- Primitives. Can only contain type signatures. Primitive :: { Declaration } Primitive : 'primitive' TypeSignatures { Primitive (fuseRange $1 $2) $2 } --- Syntax declaration (To declare eg. mixfix binders) +-- Syntax declaration (To declare eg. mixfix binders) Syntax :: { Declaration } Syntax : 'syntax' Id HoleNames '=' SimpleIds {%- case $2 of + case $2 of Name _ [_] -> case mkNotation $3 $5 of Left err -> parseError $ "malformed syntax declaration: " ++ err Right n -> return $ Syntax $2 n@@ -802,11 +809,11 @@ HoleName :: { HoleName } HoleName : SimpleId { ExprHole $1} | '(' '\\' SimpleId '->' SimpleId ')' { LambdaHole $3 $5 }--- Variable name hole to be implemented later. +-- Variable name hole to be implemented later. -- Discard the interval. SimpleId :: { String }-SimpleId : id { snd $1 } +SimpleId : id { snd $1 } -- Open@@ -873,6 +880,7 @@ | CompiledPragma { $1 } | CompiledDataPragma { $1 } | CompiledTypePragma { $1 }+ | CompiledEpicPragma { $1 } | ImportPragma { $1 } | ImpossiblePragma { $1 } | RecordEtaPragma { $1 }@@ -900,6 +908,12 @@ : '{-#' 'COMPILED_DATA' PragmaName string PragmaStrings '#-}' { CompiledDataPragma (fuseRange $1 $6) $3 (snd $4) $5 } +CompiledEpicPragma :: { Pragma }+CompiledEpicPragma+ : '{-#' 'COMPILED_EPIC' PragmaName PragmaStrings '#-}'+ { CompiledEpicPragma (fuseRange $1 $5) $3 (unwords $4) }++ RecordEtaPragma :: { Pragma } RecordEtaPragma : '{-#' 'ETA' PragmaName '#-}'@@ -932,6 +946,17 @@ TypeSignatures1 : TypeSignatures1 semi TeX TypeSigs { reverse $4 ++ $1 } | TeX TypeSigs { reverse $2 }++-- A variant of TypeSignatures which allows the irrelevance annotation (dot).+RelTypeSignatures :: { [TypeSignature] }+RelTypeSignatures+ : TeX vopen RelTypeSignatures1 TeX close { reverse $3 }++-- Inside the layout block.+RelTypeSignatures1 :: { [TypeSignature] }+RelTypeSignatures1+ : RelTypeSignatures1 semi TeX RelTypeSigs { reverse $4 ++ $1 }+ | TeX RelTypeSigs { reverse $2 } -- A variant of TypeSignatures which uses ArgTypeSigs instead of -- TypeSigs.
src/full/Agda/Syntax/Parser/StringLiterals.hs view
@@ -210,4 +210,3 @@ , ("SP", '\SP') , ("DEL", '\DEL') ]-
src/full/Agda/Syntax/Parser/Tokens.hs view
@@ -18,7 +18,7 @@ | KwSet | KwProp | KwForall | KwRecord | KwConstructor | KwField | KwHiding | KwUsing | KwRenaming | KwTo | KwPublic | KwOPTIONS | KwBUILTIN | KwLINE- | KwCOMPILED_DATA | KwCOMPILED_TYPE | KwCOMPILED | KwIMPORT+ | KwCOMPILED_DATA | KwCOMPILED_TYPE | KwCOMPILED | KwCOMPILED_EPIC | KwIMPORT | KwIMPOSSIBLE | KwETA | KwQuoteGoal | KwQuote | KwSyntax deriving (Eq, Show)
src/full/Agda/Syntax/Position.hs view
@@ -36,6 +36,7 @@ , fuseRange , fuseRanges , beginningOf+ , beginningOfFile -- * Tests , tests@@ -324,9 +325,18 @@ -- beginning, then 'noRange' is returned. beginningOf :: Range -> Range beginningOf r = case rStart r of- Just pos -> Range [Interval { iStart = pos, iEnd = pos }] Nothing -> noRange+ Just pos -> posToRange pos pos +-- | @beginningOfFile r@ is an empty range (a single, empty interval)+-- at the beginning of @r@'s starting position's file. If there is no+-- such position, then an empty range is returned.+beginningOfFile :: Range -> Range+beginningOfFile r = case rStart r of+ Nothing -> noRange+ Just (Pn { srcFile = f }) -> posToRange p p+ where p = startPos f+ -- | @x `withRangeOf` y@ sets the range of @x@ to the range of @y@. withRangeOf :: (SetRange t, HasRange u) => t -> u -> t x `withRangeOf` y = setRange (getRange y) x@@ -395,6 +405,8 @@ prop_beginningOf r = rangeInvariant (beginningOf r) +prop_beginningOfFile r = rangeInvariant (beginningOfFile r)+ instance Arbitrary Position where arbitrary = do srcFile <- arbitrary@@ -453,5 +465,6 @@ , quickCheck' prop_fuseIntervals , quickCheck' prop_fuseRanges , quickCheck' prop_beginningOf+ , quickCheck' prop_beginningOfFile , quickCheck' prop_intervalInSameFileAs ]
src/full/Agda/Syntax/Scope/Base.hs view
@@ -32,7 +32,7 @@ { scopeName :: A.ModuleName , scopeParents :: [A.ModuleName] , scopePrivate :: NameSpace- , scopePublic :: NameSpace + , scopePublic :: NameSpace , scopeImported :: NameSpace -- ^ public opened names , scopeImports :: Map C.QName A.ModuleName }@@ -166,6 +166,7 @@ blockOfLines "names" (map pr $ Map.toList names) ++ blockOfLines "modules" (map pr $ Map.toList mods) where+ pr :: (Show a, Show b) => (a,b) -> String pr (x, y) = show x ++ " --> " ++ show y instance Show AbstractName where@@ -462,17 +463,24 @@ scopeLookup :: forall a. InScope a => C.QName -> ScopeInfo -> [a] scopeLookup q scope = nub $ findName q root ++ imports where+ this :: A.ModuleName this = scopeCurrent scope++ current :: Scope current = moduleScope this++ root :: Scope root = mergeScopes $ current : map moduleScope (scopeParents current) tag = inScopeTag :: InScopeTag a + splitName :: C.QName -> [(C.QName, C.QName)] splitName (C.QName x) = [] splitName (C.Qual x q) = (C.QName x, q) : do (m, r) <- splitName q return (C.Qual x m, r) + imported :: C.QName -> [A.ModuleName] imported q = maybe [] (:[]) $ Map.lookup q $ scopeImports root topImports :: [a]@@ -487,21 +495,25 @@ x <- findName x (restrictPrivate $ moduleScope m) return x + moduleScope :: A.ModuleName -> Scope moduleScope name = case Map.lookup name (scopeModules scope) of Nothing -> __IMPOSSIBLE__ Just s -> s + lookupName :: forall a. InScope a => C.Name -> Scope -> [a] lookupName x s = maybe [] id $ Map.lookup x (allNamesInScope s) + findName :: forall a. InScope a => C.QName -> Scope -> [a] findName (C.QName x) s = lookupName x s findName (C.Qual x q) s = do m <- nub $ mods ++ defs -- record types will appear bot as a mod and a def Just s' <- return $ Map.lookup m (scopeModules scope) findName q (restrictPrivate s') where+ mods, defs :: [ModuleName] mods = amodName <$> lookupName x s -- Qualified constructors are qualified by their datatype rather than a module- defs = mnameFromList . qnameToList . anameName <$> lookupName x s + defs = mnameFromList . qnameToList . anameName <$> lookupName x s -- * Inverse look-up @@ -531,6 +543,7 @@ [] -> Nothing x : _ -> Just x + unique :: forall a . [a] -> Bool unique [] = __IMPOSSIBLE__ unique [_] = True unique (_:_:_) = False@@ -576,4 +589,3 @@ -- | Takes the second component of 'inverseScopeLookup'. inverseScopeLookupModule :: A.ModuleName -> ScopeInfo -> Maybe C.QName inverseScopeLookupModule x = inverseScopeLookup (Left x)-
src/full/Agda/Syntax/Scope/Monad.hs view
@@ -403,7 +403,7 @@ current <- getCurrentModule m <- amodName <$> resolveModule cm let ns = namespace current m- s <- setScopeAccess ns <$> + s <- setScopeAccess ns <$> (applyImportDirectiveM cm dir . restrictPrivate =<< getNamedScope m) checkForClashes (scopeNameSpace ns s) modifyCurrentScope (`mergeScope` s)@@ -438,4 +438,3 @@ case filter realClash modClashes of (_, (m0:_, m1:_)):_ -> typeError $ ClashingModule (amodName m0) (amodName m1) _ -> return ()-
src/full/Agda/Syntax/Strict.hs view
@@ -85,4 +85,3 @@ strict :: Strict a => a -> a strict x = id $!! x-
src/full/Agda/Syntax/Translation/AbstractToConcrete.hs view
@@ -417,10 +417,10 @@ ret (C.TNoBind e) instance ToConcrete LetBinding [C.Declaration] where- bindToConcrete (LetBind i x t e) ret =+ bindToConcrete (LetBind i rel x t e) ret = bindToConcrete x $ \x -> do (t,(e, [], [], [])) <- toConcrete (t, A.RHS e)- ret [ C.TypeSig x t+ ret [ C.TypeSig rel x t , C.FunClause (C.LHS (C.IdentP $ C.QName x) [] [] []) e C.NoWhere ]@@ -498,14 +498,14 @@ toConcrete (TypeAndDef d (ScopedDef scope def)) = withScope scope $ toConcrete (TypeAndDef d def) - toConcrete (TypeAndDef (Axiom _ x t) (FunDef i _ cs)) =+ toConcrete (TypeAndDef (Axiom _ rel x t) (FunDef i _ cs)) = withAbstractPrivate i $ do t' <- toConcreteCtx TopCtx t cs' <- toConcrete cs x' <- unsafeQNameToName <$> toConcrete x- return $ TypeSig x' t' : concat cs'+ return $ TypeSig rel x' t' : concat cs' - toConcrete (TypeAndDef (Axiom _ x t) (DataDef i _ bs cs)) =+ toConcrete (TypeAndDef (Axiom _ _ x t) (DataDef i _ bs cs)) = withAbstractPrivate i $ bindToConcrete tel $ \tel' -> do t' <- toConcreteCtx TopCtx t0@@ -519,7 +519,7 @@ mkTel _ _ = __IMPOSSIBLE__ -- mkTel n t = error $ "mkTel " ++ show n ++ " " ++ show t - toConcrete (TypeAndDef (Axiom _ x t) (RecDef i _ c bs _ cs)) =+ toConcrete (TypeAndDef (Axiom _ _ x t) (RecDef i _ c bs _ cs)) = withAbstractPrivate i $ bindToConcrete tel $ \tel' -> do t' <- toConcreteCtx TopCtx t0@@ -539,29 +539,35 @@ instance ToConcrete (Constr A.Constructor) C.Declaration where toConcrete (Constr (A.ScopedDecl scope [d])) = withScope scope $ toConcrete (Constr d)- toConcrete (Constr (A.Axiom i x t)) = do+ toConcrete (Constr (A.Axiom i rel x t)) = do x' <- unsafeQNameToName <$> toConcrete x t' <- toConcreteCtx TopCtx t- return $ C.TypeSig x' t'+ return $ C.TypeSig rel x' t' toConcrete (Constr d) = head <$> toConcrete d instance ToConcrete A.Clause [C.Declaration] where toConcrete (A.Clause lhs rhs wh) =- bindToConcrete lhs $ \(C.LHS p wps _ _) -> do- bindToConcrete (AsWhereDecls wh) $ \wh' -> do- (rhs', eqs, with, wcs) <- toConcreteCtx TopCtx rhs- return $ FunClause (C.LHS p wps eqs with) rhs' wh' : wcs+ bindToConcrete lhs $ \lhs ->+ case lhs of+ C.LHS p wps _ _ -> do+ bindToConcrete (AsWhereDecls wh) $ \wh' -> do+ (rhs', eqs, with, wcs) <- toConcreteCtx TopCtx rhs+ return $ FunClause (C.LHS p wps eqs with) rhs' wh' : wcs+ C.Ellipsis {} -> __IMPOSSIBLE__+ -- TODO: Is the case above impossible? Previously there was+ -- no code for it, but GHC 7's completeness checker spotted+ -- that the case was not covered. instance ToConcrete A.Declaration [C.Declaration] where toConcrete (ScopedDecl scope ds) = withScope scope $ toConcrete ds - toConcrete (Axiom i x t) = do+ toConcrete (Axiom i rel x t) = do x' <- unsafeQNameToName <$> toConcrete x withAbstractPrivate i $ withInfixDecl i x' $ do t' <- toConcreteCtx TopCtx t- return [C.Postulate (getRange i) [C.TypeSig x' t']]+ return [C.Postulate (getRange i) [C.TypeSig rel x' t']] toConcrete (A.Field i x t) = do x' <- unsafeQNameToName <$> toConcrete x@@ -575,7 +581,8 @@ withAbstractPrivate i $ withInfixDecl i x' $ do t' <- toConcreteCtx TopCtx t- return [C.Primitive (getRange i) [C.TypeSig x' t']]+ return [C.Primitive (getRange i) [C.TypeSig Relevant x' t']]+ -- Primitives are always relevant. toConcrete (Definition i ts ds) = do ixs' <- map (id -*- unsafeQNameToName) <$> toConcrete (map (DontTouchMe -*- id) ixs)@@ -585,7 +592,7 @@ where ixs = map getInfoAndName ts is = map fst ixs- getInfoAndName (A.Axiom i x _) = (i,x)+ getInfoAndName (A.Axiom i _ x _) = (i,x) getInfoAndName (A.ScopedDecl scope [d]) = getInfoAndName d getInfoAndName _ = __IMPOSSIBLE__ @@ -642,6 +649,9 @@ A.CompiledPragma x hs -> do x <- toConcrete x return $ C.CompiledPragma r x hs+ A.CompiledEpicPragma x e -> do+ x <- toConcrete x+ return $ C.CompiledEpicPragma r x e A.EtaPragma x -> C.EtaPragma r <$> toConcrete x -- Left hand sides --------------------------------------------------------@@ -796,4 +806,3 @@ es <- mapM (toConcreteCtx InsideOperandCtx) as bracket roundFixBrackets $ return $ opApp (getRange cn) cn es-
src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs view
@@ -52,6 +52,7 @@ import Agda.TypeChecking.Monad.Options import {-# SOURCE #-} Agda.Interaction.Imports (scopeCheckImport)+import Agda.Interaction.Options import Agda.Utils.Monad import Agda.Utils.Tuple@@ -61,41 +62,7 @@ #include "../../undefined.h" import Agda.Utils.Impossible----- moved here to reduce the probability of line number change--- in C.ImpossiblePragma (test/fail/Impossible.agda)-instance ToAbstract C.Pragma [A.Pragma] where- toAbstract (C.ImpossiblePragma _) = __IMPOSSIBLE__- toAbstract (C.OptionsPragma _ opts) = return [ A.OptionsPragma opts ]- toAbstract (C.CompiledTypePragma _ x hs) = do- e <- toAbstract $ OldQName x- case e of- A.Def x -> return [ A.CompiledTypePragma x hs ]- _ -> fail $ "Bad compiled type: " ++ show x -- TODO: error message- toAbstract (C.CompiledDataPragma _ x hs hcs) = do- e <- toAbstract $ OldQName x- case e of- A.Def x -> return [ A.CompiledDataPragma x hs hcs ]- _ -> fail $ "Not a datatype: " ++ show x -- TODO: error message- toAbstract (C.CompiledPragma _ x hs) = do- e <- toAbstract $ OldQName x- y <- case e of- A.Def x -> return x- A.Con _ -> fail "Use COMPILED_DATA for constructors" -- TODO- _ -> __IMPOSSIBLE__- return [ A.CompiledPragma y hs ]- toAbstract (C.BuiltinPragma _ b e) = do- e <- toAbstract e- return [ A.BuiltinPragma b e ]- toAbstract (C.ImportPragma _ i) = do- addHaskellImport i- return []- toAbstract (C.EtaPragma _ x) = do- e <- toAbstract $ OldQName x- case e of- A.Def x -> return [ A.EtaPragma x ]- _ -> fail "Bad ETA pragma"+import Agda.ImpossibleTest (impossibleTest) {-------------------------------------------------------------------------- Exceptions@@ -190,7 +157,7 @@ notField NiceField{} = False notField _ = True - build (NiceField r f _ _ x (Arg h rel e) : fs) = + build (NiceField r f _ _ x (Arg h rel e) : fs) = C.Pi [C.TypedBindings r $ Arg h rel [C.TBind r [BName x f] e]] $ build fs where r = getRange x build (d : fs) = C.Let noRange (notSoNiceDeclarations [d]) $ build fs@@ -431,14 +398,14 @@ -- | By default, arguments are @Relevant@. mkArg :: C.Expr -> Arg C.Expr--- mkArg (C.Dot _ e) = mkArg' Irrelevant e -mkArg e = mkArg' Relevant e +-- mkArg (C.Dot _ e) = mkArg' Irrelevant e+mkArg e = mkArg' Relevant e -- | Parse a possibly dotted C.Expr as A.Expr. Bool = True if dotted. toAbstractDot :: Precedence -> C.Expr -> ScopeM (A.Expr, Bool) toAbstractDot prec e = do- reportSLn "scope.irrelevance" 100 $ "toAbstractDot: " ++ (render $ pretty e) + reportSLn "scope.irrelevance" 100 $ "toAbstractDot: " ++ (render $ pretty e) traceCall (ScopeCheckExpr e) $ case e of -- annotateExpr e = ScopedExpr <scope from Monad> e C.Dot _ e -> do@@ -451,7 +418,7 @@ C.Paren _ e -> toAbstractDot TopCtx e - e -> do + e -> do e <- toAbstractCtx prec e return (e, False) @@ -459,7 +426,7 @@ toAbstract e = traceCall (ScopeCheckExpr e) $ annotateExpr $ case e of -- annotateExpr e = ScopedExpr <scope from Monad> e- + -- Names Ident x -> toAbstract (OldQName x) @@ -490,7 +457,7 @@ {- Andreas, 2010-09-06 STALE COMMENT -- Dots are used in dot patterns and in irrelevant function space .A n -> B -- we propagate dots out from the head of applications- + C.Dot r e1 -> do t1 <- toAbstract e1 return $ A.Dot t1@@ -518,12 +485,15 @@ C.AbsurdLam r h -> return $ A.AbsurdLam (ExprRange r) h e0@(C.Lam r bs e) -> do- localToAbstract bs $ \(b:bs') -> do- e <- toAbstractCtx TopCtx e- let info = ExprRange r- return $ A.Lam info b $ foldr mkLam e bs'- where- mkLam b e = A.Lam (ExprRange $ fuseRange b e) b e+ localToAbstract bs $ \bs ->+ case bs of+ b:bs' -> do+ e <- toAbstractCtx TopCtx e+ let info = ExprRange r+ return $ A.Lam info b $ foldr mkLam e bs'+ where+ mkLam b e = A.Lam (ExprRange $ fuseRange b e) b e+ [] -> __IMPOSSIBLE__ -- Irrelevant non-dependent function type @@ -533,7 +503,7 @@ e2 <- toAbstractCtx TopCtx e2 let info = ExprRange r return $ A.Fun info e1 e2- + {- -- Other function types @@ -668,11 +638,11 @@ instance ToAbstract LetDef [A.LetBinding] where toAbstract (LetDef d) = case d of- NiceDef _ c [C.Axiom _ _ _ _ x t] [C.FunDef _ _ _ _ _ _ [cl]] ->+ NiceDef _ c [C.Axiom _ _ _ _ rel x t] [C.FunDef _ _ _ _ _ _ [cl]] -> do e <- letToAbstract cl t <- toAbstract t x <- toAbstract (NewName x)- return [ A.LetBind (LetRange $ getRange c) x t e ]+ return [ A.LetBind (LetRange $ getRange c) rel x t e ] -- You can't open public in a let NiceOpen r x dirs | not (C.publicOpen dirs) -> do@@ -713,7 +683,7 @@ i' = ExprRange (fuseRange i e) lambda _ _ = notAValidLetBinding d --- instance ToAbstract C.Pragma [A.Pragma] +-- instance ToAbstract C.Pragma [A.Pragma] -- moved higher up to reduce the probability of line number change -- in C.ImpossiblePragma (test/fail/Impossible.agda) @@ -754,7 +724,7 @@ printScope "data" 20 $ "Checked data " ++ show x return $ A.DataDef (mkDefInfo x f p a r) x' pars cons where- conName (C.Axiom _ _ _ _ c _) = c+ conName (C.Axiom _ _ _ _ _ c _) = c conName _ = __IMPOSSIBLE__ -- Record definitions (mucho interesting)@@ -789,19 +759,21 @@ case d of -- Axiom- C.Axiom r f p a x t -> do+ C.Axiom r f p a rel x t -> do t' <- toAbstractCtx TopCtx t y <- freshAbstractQName f x bindName p DefName x y- return [ A.Axiom (mkDefInfo x f p a r) y t' ]+ return [ A.Axiom (mkDefInfo x f p a r) rel y t' ] -- Fields C.NiceField r f p a x t -> do t' <- toAbstractCtx TopCtx t y <- freshAbstractQName f x- unless (argRelevance t == Irrelevant) $ + irrProj <- optIrrelevantProjections <$> pragmaOptions+ unless (argRelevance t == Irrelevant && not irrProj) $ -- Andreas, 2010-09-24: irrelevant fields are not in scope -- this ensures that projections out of irrelevant fields cannot occur+ -- Ulf: unless you turn on --irrelevant-projections bindName p DefName x y return [ A.Field (mkDefInfo x f p a r) y t' ] @@ -902,7 +874,7 @@ data ConstrDecl = ConstrDecl A.ModuleName C.NiceDeclaration instance ToAbstract ConstrDecl A.Declaration where- toAbstract (ConstrDecl m (C.Axiom r f p a x t)) = do+ toAbstract (ConstrDecl m (C.Axiom r f p a rel x t)) = do -- rel==Relevant t' <- toAbstractCtx TopCtx t -- The abstract name is the qualified one y <- withCurrentModule m $ freshAbstractQName f x@@ -910,7 +882,7 @@ bindName p' ConName x y withCurrentModule m $ bindName p' ConName x y printScope "con" 15 "bound constructor"- return $ A.Axiom (mkDefInfo x f p a r) y t'+ return $ A.Axiom (mkDefInfo x f p a r) rel y t' where -- An abstract constructor is private (abstract constructor means -- abstract datatype, so the constructor should not be exported).@@ -919,6 +891,45 @@ (_, p) -> p toAbstract _ = __IMPOSSIBLE__ -- a constructor is always an axiom++instance ToAbstract C.Pragma [A.Pragma] where+ toAbstract (C.ImpossiblePragma _) = impossibleTest+ toAbstract (C.OptionsPragma _ opts) = return [ A.OptionsPragma opts ]+ toAbstract (C.CompiledTypePragma _ x hs) = do+ e <- toAbstract $ OldQName x+ case e of+ A.Def x -> return [ A.CompiledTypePragma x hs ]+ _ -> fail $ "Bad compiled type: " ++ show x -- TODO: error message+ toAbstract (C.CompiledDataPragma _ x hs hcs) = do+ e <- toAbstract $ OldQName x+ case e of+ A.Def x -> return [ A.CompiledDataPragma x hs hcs ]+ _ -> fail $ "Not a datatype: " ++ show x -- TODO: error message+ toAbstract (C.CompiledPragma _ x hs) = do+ e <- toAbstract $ OldQName x+ y <- case e of+ A.Def x -> return x+ A.Con _ -> fail "Use COMPILED_DATA for constructors" -- TODO+ _ -> __IMPOSSIBLE__+ return [ A.CompiledPragma y hs ]+ toAbstract (C.CompiledEpicPragma _ x ep) = do+ e <- toAbstract $ OldQName x+ y <- case e of+ A.Def x -> return x+ -- A.Con _ -> fail "Use COMPILED_DATA_EPIC for constructors" -- TODO+ _ -> __IMPOSSIBLE__+ return [ A.CompiledEpicPragma y ep ]+ toAbstract (C.BuiltinPragma _ b e) = do+ e <- toAbstract e+ return [ A.BuiltinPragma b e ]+ toAbstract (C.ImportPragma _ i) = do+ addHaskellImport i+ return []+ toAbstract (C.EtaPragma _ x) = do+ e <- toAbstract $ OldQName x+ case e of+ A.Def x -> return [ A.EtaPragma x ]+ _ -> fail "Bad ETA pragma" instance ToAbstract C.Clause A.Clause where toAbstract (C.Clause top C.Ellipsis{} _ _ _) = fail "bad '...'" -- TODO: errors message
src/full/Agda/Syntax/Translation/InternalToAbstract.hs view
@@ -201,7 +201,7 @@ Constructor{conPars = np} <- theDef <$> getConstInfo x scope <- getScope let whocares = A.Underscore (Info.MetaInfo noRange scope Nothing)- us = replicate (fromIntegral np) $ Arg Hidden Irrelevant whocares+ us = replicate (fromIntegral np) $ Arg Hidden Relevant whocares n <- getDefFreeVars x es <- reify vs apps (A.Con (AmbQ [x]), genericDrop n $ us ++ es)@@ -391,7 +391,7 @@ else lift $ A.DotP i <$> reify v I.LitP (LitLevel {}) -> __IMPOSSIBLE__ I.LitP l -> return (A.LitP l)- I.ConP c _ ps -> A.ConP i (AmbQ [c]) <$> reifyArgs ps + I.ConP c _ ps -> A.ConP i (AmbQ [c]) <$> reifyArgs ps where i = PatRange noRange mi = MetaInfo noRange emptyScopeInfo Nothing@@ -472,5 +472,3 @@ => Reify (Judgement t a) (Judgement t' a') where reify (HasType i t) = HasType <$> reify i <*> reify t reify (IsSort i) = IsSort <$> reify i--
src/full/Agda/Termination/CallGraph.hs view
@@ -66,7 +66,7 @@ -- A negative decrease means an increase. The generalization -- allows the termination checker to record an increase by 1 which -- can be compensated by a following decrease by 2 which results in--- an overall decrease. +-- an overall decrease. -- -- However, the termination checker of the paper itself terminates because -- there are only finitely many different call-matrices. To maintain@@ -91,17 +91,17 @@ -- | Smart constructor for @Decr k :: Order@ which cuts off too big values. ----- Possible values for @k@: @- ?cutoff '<=' k '<=' ?cutoff + 1@. +-- Possible values for @k@: @- ?cutoff '<=' k '<=' ?cutoff + 1@. -- decr :: (?cutoff :: Int) => Int -> Order decr k | k < - ?cutoff = Unknown | k > ?cutoff = Decr (?cutoff + 1)- | otherwise = Decr k + | otherwise = Decr k --- | Smart constructor for matrix shaped orders, avoiding empty and singleton matrices. +-- | Smart constructor for matrix shaped orders, avoiding empty and singleton matrices. orderMat :: Matrix Integer Order -> Order orderMat m | Matrix.isEmpty m = Decr 0 -- 0x0 Matrix = neutral element- | otherwise = case isSingleton m of + | otherwise = case isSingleton m of Just o -> o -- 1x1 Matrix Nothing -> Mat m -- nxn Matrix @@ -152,13 +152,13 @@ outlaw the offending types. instance (?cutoff :: Int) => Arbitrary Order where- arbitrary = frequency + arbitrary = frequency [(20, return Unknown) ,(80, elements [- ?cutoff .. ?cutoff + 1] >>= Decr) ] -- no embedded matrices generated for now. -} instance Arbitrary Order where- arbitrary = frequency + arbitrary = frequency [(30, return Unknown) ,(70, elements [0,1] >>= return . Decr) ] -- no embedded matrices generated for now.@@ -190,7 +190,7 @@ {- collapse m We assume that m codes a permutation: each row has at most one column-that is not Un. +that is not Un. To collapse a matrix into a single value, we take the best value of each column and multiply them. That means if one column is all Un,@@ -234,7 +234,7 @@ infimum :: (?cutoff :: Int) => [Order] -> Order infimum (o:l) = foldl minO o l-infimum [] = __IMPOSSIBLE__ +infimum [] = __IMPOSSIBLE__ minO :: (?cutoff :: Int) => Order -> Order -> Order minO o1 o2 = case (o1,o2) of@@ -604,7 +604,7 @@ -- All tests tests :: IO Bool-tests = runTests "Agda.Termination.CallGraph" +tests = runTests "Agda.Termination.CallGraph" [ quickCheck' callMatrixInvariant , quickCheck' prop_decr , quickCheck' prop_orderSemiring
src/full/Agda/Termination/Lexicographic.hs view
@@ -229,11 +229,10 @@ [ quickCheck' prop_recBehaviour_Arbitrary , quickCheck' prop_fromDiagonals , quickCheck' prop_newBehaviour- , quickCheckWith' Args{ replay = Nothing- , maxSuccess = 50- , maxDiscard = 200- , maxSize = 20- }+ , quickCheckWith' stdArgs{ maxSuccess = 50+ , maxDiscard = 200+ , maxSize = 20+ } prop_lexOrder , quickCheck' prop_lexOrder_noArgs ]
src/full/Agda/Termination/Matrix.hs view
@@ -211,7 +211,7 @@ | i <- range $ toBounds $ size m1 ] prop_add sz =- forAll (vectorOf 3 (matrix sz :: Gen TM)) $ \[m1, m2, m3] ->+ forAll (three (matrix sz :: Gen TM)) $ \(m1, m2, m3) -> let m' = add (+) m1 m2 in associative (add (+)) m1 m2 m3 && commutative (add (+)) m1 m2 &&@@ -245,7 +245,7 @@ prop_mul sz = sized $ \n -> resize (n `div` 2) $- forAll (vectorOf 2 natural) $ \[c2, c3] ->+ forAll (two natural) $ \(c2, c3) -> forAll (matrix sz :: Gen TM) $ \m1 -> forAll (matrix (Size { rows = cols sz, cols = c2 })) $ \m2 -> forAll (matrix (Size { rows = c2, cols = c3 })) $ \m3 ->
src/full/Agda/Termination/Semiring.hs view
@@ -73,9 +73,9 @@ mempty = 0 mappend = (+) -instance SemiRing Integer where +instance SemiRing Integer where multiply = (*)- + integerSemiring :: Semiring Integer integerSemiring = Semiring { add = (+), mul = (*), zero = 0 } -- , one = 1 }
src/full/Agda/Termination/SparseMatrix.hs view
@@ -111,7 +111,7 @@ deriving (Eq, Ord) matrixInvariant :: (Num i, Ix i) => Matrix i b -> Bool-matrixInvariant m = all (\ (MIx i j, b) -> 1 <= i && i <= rows sz +matrixInvariant m = all (\ (MIx i j, b) -> 1 <= i && i <= rows sz && 1 <= j && j <= cols sz) (unM m) && strictlySorted (MIx 0 0) (unM m) && sizeInvariant sz@@ -125,8 +125,8 @@ strictlySorted i ((i', b) : l) = i < i' && strictlySorted i' l {- strictlySorted (MIx i j) [] = True-strictlySorted (MIx i j) ((MIx i' j', b) : l) = - (i < i' || i == i' && j < j' ) && strictlySorted (MIx i' j') b +strictlySorted (MIx i j) ((MIx i' j', b) : l) =+ (i < i' || i == i' && j < j' ) && strictlySorted (MIx i' j') b -} instance (Ord i, Integral i, Enum i, Show i, Show b, HasZero b) => Show (Matrix i b) where@@ -200,10 +200,10 @@ -- | Converts a sparse matrix to a sparse list of rows toSparseRows :: (Num i, Enum i) => Matrix i b -> [(i,[(i,b)])]-toSparseRows m = aux 1 [] (unM m) +toSparseRows m = aux 1 [] (unM m) where aux i' [] [] = [] aux i' row [] = [(i', reverse row)]- aux i' row ((MIx i j, b) : m) + aux i' row ((MIx i j, b) : m) | i' == i = aux i' ((j,b):row) m | otherwise = (i', reverse row) : aux i [(j,b)] m @@ -220,8 +220,8 @@ -- | Converts a matrix to a list of row lists. toLists :: (Ord i, Integral i, Enum i, HasZero b) => Matrix i b -> [[b]]-toLists m = blowUpSparseVec emptyRow (rows sz) $ - map (\ (i,r) -> (i, blowUpSparseVec zeroElement (cols sz) r)) $ toSparseRows m +toLists m = blowUpSparseVec emptyRow (rows sz) $+ map (\ (i,r) -> (i, blowUpSparseVec zeroElement (cols sz) r)) $ toSparseRows m -- [ [ maybe zeroElement id $ lookup (MIx { row = r, col = c }) (unM m) -- | c <- [1 .. cols sz] ] | r <- [1 .. rows sz] ] where sz = size m@@ -263,17 +263,17 @@ -- | Returns 'Just b' iff it is a 1x1 matrix with just one entry 'b'. isSingleton :: (Num i, Ix i) => Matrix i b -> Maybe b-isSingleton m = if (rows sz == 1 || cols sz == 1) then - case unM m of +isSingleton m = if (rows sz == 1 || cols sz == 1) then+ case unM m of [(_,b)] -> Just b _ -> __IMPOSSIBLE__ else Nothing where sz = size m -- | Transposition-transposeSize (Size { rows = n, cols = m }) = Size { rows = m, cols = n } +transposeSize (Size { rows = n, cols = m }) = Size { rows = m, cols = n } transpose m = M { size = transposeSize (size m)- , unM = List.sortBy (\ (i,a) (j,b) -> compare i j) $ + , unM = List.sortBy (\ (i,a) (j,b) -> compare i j) $ map (\(MIx i j, b) -> (MIx j i, b)) $ unM m } -- | @'add' (+) m1 m2@ adds @m1@ and @m2@. Uses @(+)@ to add values.@@ -284,15 +284,15 @@ add plus m1 m2 = M (size m1) $ mergeAssocWith plus (unM m1) (unM m2) -- | assoc list union-mergeAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)] +mergeAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)] mergeAssocWith f [] m = m mergeAssocWith f l [] = l-mergeAssocWith f l@((i,a):l') m@((j,b):m') +mergeAssocWith f l@((i,a):l') m@((j,b):m') | i < j = (i,a) : mergeAssocWith f l' m | i > j = (j,b) : mergeAssocWith f l m' | otherwise = (i, f a b) : mergeAssocWith f l' m' --- | @'intersectWith' f m1 m2@ build the pointwise conjunction @m1@ and @m2@. +-- | @'intersectWith' f m1 m2@ build the pointwise conjunction @m1@ and @m2@. -- Uses @f@ to combine non-zero values. -- -- Precondition: @'size' m1 == 'size' m2@.@@ -301,16 +301,16 @@ intersectWith f m1 m2 = M (size m1) $ interAssocWith f (unM m1) (unM m2) -- | assoc list intersection-interAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)] +interAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)] interAssocWith f [] m = [] interAssocWith f l [] = []-interAssocWith f l@((i,a):l') m@((j,b):m') +interAssocWith f l@((i,a):l') m@((j,b):m') | i < j = interAssocWith f l' m | i > j = interAssocWith f l m' | otherwise = (i, f a b) : interAssocWith f l' m' prop_add sz =- forAll (vectorOf 3 (matrix sz :: Gen TM)) $ \[m1, m2, m3] ->+ forAll (three (matrix sz :: Gen TM)) $ \(m1, m2, m3) -> let m' = add (+) m1 m2 in associative (add (+)) m1 m2 m3 && commutative (add (+)) m1 m2 &&@@ -326,22 +326,22 @@ {- mul A B works as follows: * turn A into a list of sparse rows and the transposed B as well * form the crossproduct using the inner vector product to compute els-* the inner vector product is summing up +* the inner vector product is summing up after intersecting with the muliplication op of the semiring -} mul :: (Enum i, Num i, Ix i, Eq a)- => Semiring a -> Matrix i a -> Matrix i a -> Matrix i a + => Semiring a -> Matrix i a -> Matrix i a -> Matrix i a mul semiring m1 m2 = M (Size { rows = rows (size m1), cols = cols (size m2) }) $ filter (\ (i,b) -> b /= Semiring.zero semiring) $- [ (MIx i j, foldl (Semiring.add semiring) (Semiring.zero semiring) $ + [ (MIx i j, foldl (Semiring.add semiring) (Semiring.zero semiring) $ map snd $ interAssocWith (Semiring.mul semiring) v w) | (i,v) <- toSparseRows m1 , (j,w) <- toSparseRows $ transpose m2 ] prop_mul sz = sized $ \n -> resize (n `div` 2) $- forAll (vectorOf 2 natural) $ \[c2, c3] ->+ forAll (two natural) $ \(c2, c3) -> forAll (matrix sz :: Gen TM) $ \m1 -> forAll (matrix (Size { rows = cols sz, cols = c2 })) $ \m2 -> forAll (matrix (Size { rows = c2, cols = c3 })) $ \m3 ->
src/full/Agda/Termination/TermCheck.hs view
@@ -35,12 +35,14 @@ import Agda.TypeChecking.Monad import Agda.TypeChecking.Pretty import Agda.TypeChecking.Reduce (reduce, normalise, instantiate, instantiateFull)+import Agda.TypeChecking.Records (isRecordConstructor) import Agda.TypeChecking.Rules.Builtin.Coinduction import Agda.TypeChecking.Rules.Term (isType_) import Agda.TypeChecking.Substitute (abstract,raise,substs) import Agda.TypeChecking.Telescope import Agda.TypeChecking.EtaContract import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Monad.Signature (isProjection) import Agda.TypeChecking.Primitive (constructorForm) import qualified Agda.Interaction.Highlighting.Range as R@@ -431,7 +433,12 @@ (loopSort pats s) (loop pats guarded t) - loop :: (?cutoff :: Int) => [DeBruijnPat] -> Order -> Term -> TCM Calls+ loop+ :: (?cutoff :: Int)+ => [DeBruijnPat] -- ^ Parameters of calling function as patterns.+ -> Order -- ^ Guardedness status of @Term@.+ -> Term -- ^ Part of function body from which calls are to be extracted.+ -> TCM Calls loop pats guarded t = do t <- instantiate t -- instantiate top-level MetaVar suc <- sizeSuc@@ -458,7 +465,8 @@ (True, CoInductive) -> Term.lt .*. guarded (False, _) -> Term.unknown - -- Handles function applications.+ -- Handles function applications @g args0@.+ function :: QName -> [Arg Term] -> TCM Calls function g args0 = do let args1 = map unArg args0 args2 <- mapM instantiateFull args1@@ -469,8 +477,17 @@ args2 <- mapM reduceCon args2 args <- mapM etaContract args2 + -- If the function is a projection, then preserve guardedness+ -- for its principal argument.+ isProj <- isProjection g+ let unguards = repeat Term.unknown+ let guards = maybe unguards -- not a proj. ==> unguarded+ (\ n -> take (n - 1) unguards ++ guarded : unguards)+ -- proj. => preserve g. of princ. arg. (counting starts with 1)+ isProj -- collect calls in the arguments of this call- calls <- collectCalls (loop pats Term.unknown) args+ calls <- collectCalls (uncurry (loop pats)) (zip guards args)+ -- calls <- collectCalls (loop pats Term.unknown) args reportSDoc "term.found.call" 20@@ -543,35 +560,35 @@ -- Call to defined function. fun = function g args0 - -- abstraction+ -- Abstraction. Preserves guardedness. Lam h (Abs x t) -> loop (map liftDBP pats) guarded t - -- variable+ -- Neutral term. Destroys guardedness. Var i args -> collectCalls (loop pats Term.unknown) (map unArg args) - -- dependent function space+ -- Dependent function space. Pi a (Abs _ b) -> do g1 <- loopType pats Term.unknown (unArg a) g2 <- loopType (map liftDBP pats) piArgumentGuarded b return $ g1 `Term.union` g2 - -- non-dependent function space+ -- Non-dependent function space. Fun a b -> do g1 <- loopType pats Term.unknown (unArg a) g2 <- loopType pats piArgumentGuarded b return $ g1 `Term.union` g2 - -- literal+ -- Literal. Lit l -> return Term.empty - -- sort+ -- Sort. Sort s -> loopSort pats s -- Unsolved metas are not considered termination problems, there -- will be a warning for them anyway. MetaV x args -> return Term.empty - -- erased proof+ -- Erased proof. DontCare -> return Term.empty where@@ -614,7 +631,24 @@ (nrows + 1, ncols + 1, (g : genericReplicate ncols Term.unknown) : map (Term.unknown :) m) +-- | Stripping off a record constructor is not counted as decrease, in+-- contrast to a data constructor.+decreaseFromConstructor :: QName -> TCM Order+decreaseFromConstructor c = do+ isRC <- isRecordConstructor c+ return $ if isRC then Term.le else Term.lt +increaseFromConstructor :: (?cutoff :: Int) => QName -> TCM Order+increaseFromConstructor c = do+ isRC <- isRecordConstructor c+ return $ if isRC then Term.le else Term.decr (-1)++{-+increaseFromConstructor c = negateOrder <$> decreaseFromConstructor c+ where negateOrder (Decr k) = Decr (- k)+ negateOrder _ = __IMPOSSIBLE__+-}+ -- | Compute the sub patterns of a 'DeBruijnPat'. subPatterns :: DeBruijnPat -> [DeBruijnPat] subPatterns p = case p of@@ -646,18 +680,29 @@ | c == c' = compareConArgs suc ts ps compareTerm' suc (Def s ts) (ConDBP s' ps) | s == s' && Just s == suc = compareConArgs suc ts ps-compareTerm' _ t@Con{} (ConDBP _ ps)- | any (isSubTerm t) ps = return Term.lt--- new cases for counting constructors+compareTerm' _ t@Con{} (ConDBP c ps)+ | any (isSubTerm t) ps = decreaseFromConstructor c+-- new cases for counting constructors / projections -- register also increase compareTerm' suc (Def s ts) p | Just s == suc = do os <- mapM (\ t -> compareTerm' suc (unArg t) p) ts return $ decr (-1) .*. infimum os+-- projections are size preserving+compareTerm' suc (Def qn ts) p = do+ isProj <- isProjection qn+ case isProj of+ -- strip off projection (n is the number of the record argument, counting starts with 1)+ Just n | length ts >= n && n >= 1 ->+ compareTerm' suc (unArg (ts !! (n - 1))) p+ -- not a projection or underapplied:+ _ -> return Term.unknown compareTerm' suc (Con c ts) p = do os <- mapM (\ t -> compareTerm' suc (unArg t) p) ts- return $ if (null os) then Term.unknown else decr (-1) .*. infimum os+ oc <- increaseFromConstructor c+ return $ if (null os) then Term.unknown else oc .*. infimum os compareTerm' _ _ _ = return Term.unknown +-- TODO: isSubTerm should compute a size difference (Term.Order) isSubTerm :: Term -> DeBruijnPat -> Bool isSubTerm t p = equal t p || properSubTerm t p where@@ -699,4 +744,5 @@ compareVar i (ConDBP c ps) = do os <- mapM (compareVar i) ps let o = Term.supremum os- return $ (Term..*.) Term.lt o+ oc <- decreaseFromConstructor c+ return $ (Term..*.) oc o
src/full/Agda/TypeChecker.hs view
@@ -11,4 +11,3 @@ import Agda.TypeChecking.Rules.LHS as Rules import Agda.TypeChecking.Rules.Record as Rules import Agda.TypeChecking.Rules.Term as Rules-
src/full/Agda/TypeChecking/Abstract.hs view
@@ -64,4 +64,3 @@ instance (AbstractTerm a, AbstractTerm b) => AbstractTerm (a, b) where abstractTerm u (x, y) = (abstractTerm u x, abstractTerm u y)-
src/full/Agda/TypeChecking/CompiledClause.hs view
@@ -114,4 +114,3 @@ sep [ text ("case " ++ show n ++ " of") , nest 2 $ pretty bs ]-
src/full/Agda/TypeChecking/CompiledClause/Match.hs view
@@ -18,23 +18,26 @@ import Agda.Utils.Impossible #include "../../undefined.h" -matchCompiled :: CompiledClauses -> Args -> TCM (Reduced (Blocked Args) Term)+matchCompiled :: CompiledClauses -> MaybeReducedArgs -> TCM (Reduced (Blocked Args) Term) matchCompiled c args = match c args id [] -type Stack = [(CompiledClauses, Args, Args -> Args)]+type Stack = [(CompiledClauses, MaybeReducedArgs, Args -> Args)] -- TODO: literal/constructor pattern conflict (for Nat) -match :: CompiledClauses -> Args -> (Args -> Args) -> Stack -> TCM (Reduced (Blocked Args) Term)-match Fail args patch stack = return $ NoReduction $ NotBlocked (patch args)+match :: CompiledClauses -> MaybeReducedArgs -> (Args -> Args) -> Stack -> TCM (Reduced (Blocked Args) Term)+match Fail args patch stack = return $ NoReduction $ NotBlocked (patch $ map ignoreReduced args) match (Done _ t) args _ _ =- return $ YesReduction $ substs (reverse $ map unArg args) t+ return $ YesReduction $ substs (reverse $ map (unArg . ignoreReduced) args) t match (Case n bs) args patch stack = do- let (args0, Arg h r v, args1) = extractNthElement' n args- w <- unfoldCorecursion =<< reduceB v+ let (args0, MaybeRed red (Arg h r v0), args1) = extractNthElement' n args+ w <- case red of+ Reduced b -> return $ fmap (const v0) b+ NotReduced ->+ unfoldCorecursion =<< instantiate v0 cv <- constructorForm $ ignoreBlocking w let v = ignoreBlocking w- args' = args0 ++ [Arg h r v] ++ args1+ args' = args0 ++ [MaybeRed red $ Arg h r v] ++ args1 stack' = maybe [] (\c -> [(c, args', patch)]) (catchAllBranch bs) ++ stack patchLit args = patch (args0 ++ [Arg h r v] ++ args1)@@ -43,8 +46,8 @@ where (args0, args1') = splitAt n args (vs, args1) = splitAt m args1' case w of- Blocked x _ -> return $ NoReduction $ Blocked x (patch args')- NotBlocked (MetaV x _) -> return $ NoReduction $ Blocked x (patch args')+ Blocked x _ -> return $ NoReduction $ Blocked x (patch $ map ignoreReduced args')+ NotBlocked (MetaV x _) -> return $ NoReduction $ Blocked x (patch $ map ignoreReduced args') NotBlocked (Lit l) -> case Map.lookup l (litBranches bs) of Nothing -> match' stack'' Just cc -> match cc (args0 ++ args1) patchLit stack''@@ -52,18 +55,18 @@ stack'' = (++ stack') $ case cv of Con c vs -> case Map.lookup c (conBranches bs) of Nothing -> []- Just cc -> [(cc, args0 ++ vs ++ args1, patchCon c (length vs))]+ Just cc -> [(cc, args0 ++ map (MaybeRed red) vs ++ args1, patchCon c (length vs))] _ -> [] NotBlocked (Con c vs) -> case Map.lookup c (conBranches bs) of Nothing -> match' stack'- Just cc -> match cc (args0 ++ vs ++ args1) (patchCon c (length vs)) stack'- NotBlocked _ -> return $ NoReduction $ NotBlocked (patch args')+ Just cc -> match cc (args0 ++ map (MaybeRed red) vs ++ args1)+ (patchCon c (length vs)) stack'+ NotBlocked _ -> return $ NoReduction $ NotBlocked (patch $ map ignoreReduced args') match' :: Stack -> TCM (Reduced (Blocked Args) Term) match' ((c, args, patch):stack) = match c args patch stack match' [] = typeError $ GenericError "Incomplete pattern matching" -unfoldCorecursion (NotBlocked (Def f args)) =- unfoldDefinition True reduceB (Def f []) f args-unfoldCorecursion w = return w-+unfoldCorecursion v = case v of+ Def f args -> unfoldDefinition True reduceB (Def f []) f args+ _ -> reduceB v
src/full/Agda/TypeChecking/CompiledClause/Match.hs-boot view
@@ -1,9 +1,10 @@ module Agda.TypeChecking.CompiledClause.Match where +import Agda.Syntax.Common import Agda.Syntax.Internal import Agda.TypeChecking.Monad.Base import Agda.TypeChecking.CompiledClause -matchCompiled :: CompiledClauses -> Args -> TCM (Reduced (Blocked Args) Term)+matchCompiled :: CompiledClauses -> MaybeReducedArgs -> TCM (Reduced (Blocked Args) Term)
src/full/Agda/TypeChecking/Constraints.hs view
@@ -130,4 +130,3 @@ InstS{} -> return [] -- Open (whatever that means) Open -> __IMPOSSIBLE__-
src/full/Agda/TypeChecking/Conversion.hs view
@@ -93,7 +93,7 @@ m <- reduceB m n <- reduceB n case (m, n) of- _ | isNeutral m && isNeutral n ->+ _ | isMeta m || isMeta n || (isNeutral m && isNeutral n) -> compareAtom cmp a' (ignoreBlocking m) (ignoreBlocking n) _ -> do (tel, m') <- etaExpandRecord r ps $ ignoreBlocking m@@ -103,9 +103,13 @@ else compareAtom cmp a' m n _ -> compareAtom cmp a' m n where- isNeutral Blocked{} = False+-- Andreas, 2010-10-11: allowing neutrals to be blocked things does not seem+-- to change Agda's behavior+-- isNeutral Blocked{} = False isNeutral (NotBlocked Con{}) = False isNeutral _ = True+ isMeta (NotBlocked MetaV{}) = True+ isMeta _ = False equalFun (a,t) m n = do name <- freshName_ (suggest $ unEl t)@@ -152,6 +156,9 @@ compareAtom cmp t m n = verboseBracket "tc.conv.atom" 5 "compareAtom" $ catchConstraint (ValueCmp cmp t m n) $ do+ -- constructorForm changes literal to constructors+ -- Andreas: what happens if I cut out the eta expansion here?+ -- Answer: Triggers issue 245, does not resolve 348 mb <- traverse constructorForm =<< etaExpandBlocked =<< reduceB m nb <- traverse constructorForm =<< etaExpandBlocked =<< reduceB n let m = ignoreBlocking mb@@ -689,4 +696,3 @@ (_ , DLub{} ) -> buildConstraint (SortCmp CmpEq s1 s2) where notEq s1 s2 = typeError $ UnequalSorts s1 s2-
src/full/Agda/TypeChecking/Coverage.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP, FlexibleContexts, TupleSections #-}+{-# LANGUAGE CPP, FlexibleContexts #-} module Agda.TypeChecking.Coverage where @@ -24,6 +24,7 @@ import Agda.TypeChecking.Rules.LHS.Unify import Agda.TypeChecking.Rules.LHS.Instantiate import Agda.TypeChecking.Rules.LHS+import qualified Agda.TypeChecking.Rules.LHS.Split as Split import Agda.TypeChecking.Coverage.Match @@ -54,11 +55,35 @@ data SplitError = NotADatatype Type -- ^ neither data type nor record | IrrelevantDatatype Type -- ^ data type, but in irrelevant position+ | CoinductiveDatatype Type -- ^ coinductive data type | NoRecordConstructor Type -- ^ record type, but no constructor | CantSplit QName Telescope Args Args [Term] | GenericSplitError String deriving (Show) +instance PrettyTCM SplitError where+ prettyTCM err = case err of+ NotADatatype t -> fsep $+ pwords "Cannot pattern match on non-datatype" ++ [prettyTCM t]+ IrrelevantDatatype t -> fsep $+ pwords "Cannot pattern match on datatype" ++ [prettyTCM t] +++ pwords "since it is declared irrelevant"+ CoinductiveDatatype t -> fsep $+ pwords "Cannot pattern match on the coinductive type" ++ [prettyTCM t]+ NoRecordConstructor t -> fsep $+ pwords "Cannot pattern match on record" ++ [prettyTCM t] +++ pwords "because it has no constructor"+ CantSplit c tel cIxs gIxs flex -> addCtxTel tel $ vcat+ [ fsep $ pwords "Cannot pattern match on constructor" ++ [prettyTCM c <> text ","] +++ pwords "since the inferred indices"+ , nest 2 $ prettyTCM cIxs+ , fsep $ pwords "cannot be unified with the expected indices"+ , nest 2 $ prettyTCM gIxs+ , fsep $ pwords "for some" ++ punctuate comma (map prettyTCM flex)+ ]+ GenericSplitError s -> fsep $+ pwords "Split failed:" ++ pwords s+ instance Error SplitError where noMsg = strMsg "" strMsg = GenericSplitError@@ -69,7 +94,7 @@ typeOfVar tel n | n >= len = __IMPOSSIBLE__ | otherwise = fmap snd -- throw away name, keep Arg Type- $ ts !! fromIntegral n + $ ts !! fromIntegral n where len = genericLength ts ts = reverse $ telToList tel@@ -126,32 +151,38 @@ No -> return (Set.empty, [ps]) Block Nothing -> fail $ "blocked by dot pattern" Block (Just x) -> do- r <- split tel perm ps x+ r <- split Inductive tel perm ps x case r of Left err -> case err of CantSplit c _ _ _ _ -> typeError $ CoverageCantSplitOn c NotADatatype a -> typeError $ CoverageCantSplitType a IrrelevantDatatype a -> typeError $ CoverageCantSplitType a+ CoinductiveDatatype a -> typeError $ CoverageCantSplitType a NoRecordConstructor a -> typeError $ CoverageCantSplitType a GenericSplitError s -> fail $ "failed to split: " ++ s Right scs -> (Set.unions -*- concat) . unzip <$> mapM (cover cs) scs --- | Check that a type is a non-irrelevant datatype or a record with named constructor.-isDatatype :: (MonadTCM tcm, MonadException SplitError tcm) => - Arg Type -> tcm (QName, [Arg Term], [Arg Term], [QName])-isDatatype at = do+-- | Check that a type is a non-irrelevant datatype or a record with+-- named constructor. Unless the 'Induction' argument is 'CoInductive'+-- the data type must be inductive.+isDatatype :: (MonadTCM tcm, MonadException SplitError tcm) =>+ Induction -> Arg Type ->+ tcm (QName, [Arg Term], [Arg Term], [QName])+isDatatype ind at = do let t = unArg at t' <- normalise t case unEl t' of Def d args -> do def <- theDef <$> getConstInfo d case def of- Datatype{dataPars = np, dataCons = cs, dataInduction = Inductive} -> - if argRelevance at == Irrelevant - then throwException $ IrrelevantDatatype t- else do- let (ps, is) = genericSplitAt np args- return (d, ps, is, cs)+ Datatype{dataPars = np, dataCons = cs, dataInduction = i}+ | i == CoInductive && ind /= CoInductive ->+ throwException $ CoinductiveDatatype t+ | argRelevance at == Irrelevant ->+ throwException $ IrrelevantDatatype t+ | otherwise -> do+ let (ps, is) = genericSplitAt np args+ return (d, ps, is, cs) Record{recPars = np, recCon = c, recNamedCon = hasCon} -> if hasCon then return (d, args, [], [c]) else throwException $ NoRecordConstructor t@@ -303,23 +334,33 @@ -- | split Δ x ps. Δ ⊢ ps, x ∈ Δ (deBruijn index) splitClause :: Clause -> Nat -> TCM (Either SplitError Covering)-splitClause c x = split (clauseTel c) (clausePerm c) (clausePats c) x+splitClause c x =+ split Inductive (clauseTel c) (clausePerm c) (clausePats c) x splitClauseWithAbs :: Clause -> Nat -> TCM (Either SplitError (Either SplitClause Covering))-splitClauseWithAbs c x = split' (clauseTel c) (clausePerm c) (clausePats c) x+splitClauseWithAbs c x =+ split' Inductive (clauseTel c) (clausePerm c) (clausePats c) x -split :: MonadTCM tcm => Telescope -> Permutation -> [Arg Pattern] -> Nat ->- tcm (Either SplitError Covering)-split tel perm ps x = do- r <- split' tel perm ps x+split :: MonadTCM tcm+ => Induction+ -- ^ Coinductive constructors are allowed if this argument is+ -- 'CoInductive'.+ -> Telescope -> Permutation -> [Arg Pattern] -> Nat+ -> tcm (Either SplitError Covering)+split ind tel perm ps x = do+ r <- split' ind tel perm ps x return $ case r of Left err -> Left err Right (Left _) -> Right [] Right (Right c) -> Right c -split' :: MonadTCM tcm => Telescope -> Permutation -> [Arg Pattern] -> Nat ->- tcm (Either SplitError (Either SplitClause Covering))-split' tel perm ps x = liftTCM $ runExceptionT $ do+split' :: MonadTCM tcm+ => Induction+ -- ^ Coinductive constructors are allowed if this argument is+ -- 'CoInductive'.+ -> Telescope -> Permutation -> [Arg Pattern] -> Nat+ -> tcm (Either SplitError (Either SplitClause Covering))+split' ind tel perm ps x = liftTCM $ runExceptionT $ do debugInit tel perm x ps @@ -345,8 +386,11 @@ -- Check that t is a datatype or a record -- Andreas, 2010-09-21, isDatatype now directly throws an exception if it fails- (d, pars, ixs, cons) <- isDatatype t+ (d, pars, ixs, cons) <- isDatatype ind t + whenM (optWithoutK <$> pragmaOptions) $+ Split.wellFormedIndices pars ixs+ -- Compute the neighbourhoods for the constructors ns <- concat <$> mapM (computeNeighbourhood delta1 delta2 perm d pars ixs hix hps) cons case ns of@@ -354,7 +398,7 @@ let absurd = VarP "()" return $ Left $ SClause { scTel = telFromList $ telToList delta1 ++- [fmap ("()",) t] ++ -- add name "()"+ [fmap ((,) "()") t] ++ -- add name "()" telToList delta2 , scPerm = perm , scPats = plugHole absurd hps
src/full/Agda/TypeChecking/Coverage/Match.hs view
@@ -116,4 +116,3 @@ | c == c' -> matchPats mlit ps qs | otherwise -> No LitMP _ -> __IMPOSSIBLE__-
src/full/Agda/TypeChecking/Datatypes.hs view
@@ -71,5 +71,3 @@ , datatypeIxs = is } _ -> return Nothing--
src/full/Agda/TypeChecking/DisplayForm.hs view
@@ -77,4 +77,3 @@ (Lit l, Lit l') | l == l' -> return [] (p, v) | p == v -> return [] _ -> fail ""-
src/full/Agda/TypeChecking/Empty.hs view
@@ -30,10 +30,9 @@ let tel = telFromList $ telToList tel0 ++ [defaultArg ("_", t)] ps = [ Arg h r $ VarP x | Arg h r (x, _) <- telToList tel ] - r <- split tel (idP $ size tel) ps 0+ r <- split Inductive tel (idP $ size tel) ps 0 case r of Left err -> typeError $ ShouldBeEmpty t [] Right [] -> return [] Right cs -> typeError $ ShouldBeEmpty t $ map (unArg . last . scPats) cs-
src/full/Agda/TypeChecking/Errors.hs view
@@ -110,6 +110,9 @@ GenericError{} -> "GenericError" IlltypedPattern{} -> "IlltypedPattern" IncompletePatternMatching{} -> "IncompletePatternMatching"+ IndexFreeInParameter{} -> "IndexFreeInParameter"+ IndexVariablesNotDistinct{} -> "IndexVariablesNotDistinct"+ IndicesNotConstructorApplications{} -> "IndicesNotConstructorApplications" InternalError{} -> "InternalError" InvalidPattern{} -> "InvalidPattern" LocalVsImportedModuleClash{} -> "LocalVsImportedModuleClash"@@ -155,6 +158,7 @@ TooManyArgumentsInLHS{} -> "TooManyArgumentsInLHS" TooManyFields{} -> "TooManyFields" SplitOnIrrelevant{} -> "SplitOnIrrelevant"+ DefinitionIsIrrelevant{} -> "DefinitionIsIrrelevant" VariableIsIrrelevant{} -> "VariableIsIrrelevant" UnequalRelevance{} -> "UnequalRelevance" UnequalHiding{} -> "UnequalHiding"@@ -240,6 +244,16 @@ pwords "does not construct an element of" ++ [prettyTCM t] ConstructorPatternInWrongDatatype c d -> fsep $ [prettyTCM c] ++ pwords "is not a constructor of the datatype" ++ [prettyTCM d]+ IndicesNotConstructorApplications is ->+ fsep (pwords "The following indices are not constructors applied to variables:")+ $$ nest 2 (vcat $ map prettyTCM is)+ IndexVariablesNotDistinct is ->+ fsep (pwords "The variables in the following indices are not distinct:")+ $$ nest 2 (vcat $ map prettyTCM is)+ IndexFreeInParameter i pars ->+ fsep (pwords "The index" ++ [prettyTCM (I.Var i [])] +++ pwords "is free in the following parameters:")+ $$ nest 2 (vcat $ map prettyTCM pars) ShadowedModule [] -> __IMPOSSIBLE__ ShadowedModule ms@(m : _) -> fsep $ pwords "Duplicate definition of module" ++ [prettyTCM m <> text "."] ++@@ -274,6 +288,8 @@ SplitOnIrrelevant p t -> fsep $ pwords "cannot pattern match" ++ [prettyA p] ++ pwords "against irrelevant type" ++ [prettyTCM t]+ DefinitionIsIrrelevant x -> fsep $+ text "identifier" : prettyTCM x : pwords "is declared irrelevant, so it cannot be used here" VariableIsIrrelevant x -> fsep $ text "variable" : prettyTCM x : pwords "is declared irrelevant, so it cannot be used here" UnequalTerms cmp s t a -> fsep $@@ -571,7 +587,7 @@ fsep $ pwords "when checking the definition of" ++ [prettyTCM x] CheckDataDef _ x ps cs _ -> fsep $ pwords "when checking the definition of" ++ [prettyTCM x]- CheckConstructor d _ _ (A.Axiom _ c _) _ -> fsep $+ CheckConstructor d _ _ (A.Axiom _ _ c _) _ -> fsep $ pwords "when checking the constructor" ++ [prettyTCM c] ++ pwords "in the declaration of" ++ [prettyTCM d] CheckConstructor _ _ _ _ _ -> __IMPOSSIBLE__@@ -631,17 +647,16 @@ bind (C.DomainFree h x) = C.TypedBindings r $ Arg h Relevant [C.TBind r [x] (C.Underscore r Nothing)] where r = getRange x - name (D.Axiom _ _ _ _ n _) = n+ name (D.Axiom _ _ _ _ _ n _) = n name _ = __IMPOSSIBLE__ simpleDecl d = case d of- D.Axiom _ _ _ _ x e -> C.TypeSig x e+ D.Axiom _ _ _ _ rel x e -> C.TypeSig rel x e D.NiceField _ _ _ _ x e -> C.Field x e- D.PrimitiveFunction r _ _ _ x e -> C.Primitive r [C.TypeSig x e]+ D.PrimitiveFunction r _ _ _ x e -> C.Primitive r [C.TypeSig Relevant x e] D.NiceDef r ds _ _ -> C.Mutual r ds D.NiceModule r _ _ x tel _ -> C.Module r x tel [] D.NiceModuleMacro r _ _ x tel e op dir -> C.ModuleMacro r x tel e op dir D.NiceOpen r x dir -> C.Open r x dir D.NiceImport r x as op dir -> C.Import r x as op dir D.NicePragma _ p -> C.Pragma p-
src/full/Agda/TypeChecking/EtaContract.hs view
@@ -59,4 +59,3 @@ (etaContractRecord r c args) (return t) eta t = return t-
src/full/Agda/TypeChecking/Forcing.hs view
@@ -71,4 +71,3 @@ where upd a | i `elem` xs = a { argRelevance = Forced } | otherwise = a-
src/full/Agda/TypeChecking/Free.hs view
@@ -122,4 +122,3 @@ freeInIgnoringSorts :: Free a => Nat -> a -> Bool freeInIgnoringSorts v t = v `Set.member` allVars (freeVars' FreeConf{ fcIgnoreSorts = True } t)-
src/full/Agda/TypeChecking/Implicit.hs view
@@ -39,4 +39,3 @@ | otherwise = find (i + 1) x ts find i x (Arg NotHidden _ _ : _) = NoSuchName x find i x [] = NoSuchName x-
src/full/Agda/TypeChecking/Injectivity.hs view
@@ -219,4 +219,3 @@ args <- metaArgs args return $ Con c args metaPat (LitP l) = return $ Lit l-
src/full/Agda/TypeChecking/Level.hs view
@@ -165,4 +165,3 @@ ns = [ m | Plus m a' <- bs, a == a', m > n ] lub (Max as) (Max bs) = maxim $ as ++ bs-
src/full/Agda/TypeChecking/MetaVars.hs view
@@ -65,7 +65,7 @@ InstV{} -> False InstS{} -> False Open{} -> False- reportSLn "tc.meta.blocked" 12 $ + reportSLn "tc.meta.blocked" 12 $ if r then " yes, because " ++ show i else " no" return r @@ -178,7 +178,7 @@ , nest 2 $ prettyTCM vs <+> text "|-" , nest 2 $ text (show x) <+> text ":" <+> prettyTCM t ]- etaExpandMeta [SingletonRecords, Levels] x+ etaExpandMetaSafe x return $ MetaV x vs newTelMeta :: MonadTCM tcm => Telescope -> tcm Args@@ -195,10 +195,13 @@ tm <- reduce tm case funView tm of FunV (Arg h r a) _ -> do- -- Andreas, 2010-09-24 skip irrelevant record fields when eta-expanding a meta var- arg <- (Arg h r) <$> - if r == Irrelevant then return DontCare- else newValueMetaCtx (telePi_ tel a) ctx+ arg <- (Arg h r) <$>+ {-+ -- Andreas, 2010-09-24 skip irrelevant record fields when eta-expanding a meta var+ -- Andreas, 2010-10-11 this is WRONG, see Issue 347+ if r == Irrelevant then return DontCare else+ -}+ newValueMetaCtx (telePi_ tel a) ctx args <- newArgsMetaCtx (El s tm `piApply` [arg]) tel ctx return $ arg : args NoFunV _ -> return []@@ -249,16 +252,18 @@ addConstraints c return $ MetaV x vs +-- | Auxiliary function to create a postponed type checking problem.+unblockedTester :: MonadTCM tcm => Type -> tcm Bool+unblockedTester t = do+ t <- reduceB $ unEl t+ case t of+ Blocked{} -> return False+ NotBlocked MetaV{} -> return False+ _ -> return True+ postponeTypeCheckingProblem_ :: MonadTCM tcm => A.Expr -> Type -> tcm Term-postponeTypeCheckingProblem_ e t =- postponeTypeCheckingProblem e t unblock- where- unblock = do- t <- reduceB $ unEl t- case t of- Blocked{} -> return False- NotBlocked MetaV{} -> return False- _ -> return True+postponeTypeCheckingProblem_ e t = do+ postponeTypeCheckingProblem e t (unblockedTester t) postponeTypeCheckingProblem :: MonadTCM tcm => A.Expr -> Type -> TCM Bool -> tcm Term postponeTypeCheckingProblem e t unblock = do@@ -276,8 +281,14 @@ etaExpandListeners m = do ms <- getMetaListeners m clearMetaListeners m -- we don't really have to do this- mapM_ (etaExpandMeta allMetaKinds) ms+ -- Andreas 2010-10-15: do not expand record mvars, lazyness needed for irrelevance+ mapM_ etaExpandMetaSafe ms+-- mapM_ (etaExpandMeta allMetaKinds) ms +-- | Do safe eta-expansions for meta (@SingletonRecords,Levels@).+etaExpandMetaSafe :: MonadTCM tcm => MetaId -> tcm ()+etaExpandMetaSafe = etaExpandMeta [SingletonRecords,Levels]+ -- | Various kinds of metavariables. data MetaKind =@@ -297,9 +308,8 @@ -- | Eta expand a metavariable, if it is of the specified kind. -- Don't do anything if the metavariable is a blocked term. etaExpandMeta :: MonadTCM tcm => [MetaKind] -> MetaId -> tcm ()-etaExpandMeta kinds m =- verboseBracket "tc.meta.eta" 10 ("etaExpandMeta " ++ show m) $- whenM (isEtaExpandable m) $ do+etaExpandMeta kinds m = whenM (isEtaExpandable m) $ do+ verboseBracket "tc.meta.eta" 20 ("etaExpandMeta " ++ show m) $ do meta <- lookupMeta m let HasType _ a = mvJudgement meta TelV tel b <- telViewM a@@ -315,7 +325,7 @@ let expand = do u <- withMetaInfo (mvInfo meta) $ newRecordMetaCtx r ps tel args inContext [] $ addCtxTel tel $ do- verboseS "tc.meta.eta" 20 $ do+ verboseS "tc.meta.eta" 15 $ do du <- prettyTCM u liftIO $ LocIO.putStrLn $ "eta expanding: " ++ show m ++ " --> " ++ show du noConstraints $ assignV b m args u -- should never produce any constraints@@ -398,7 +408,7 @@ let pr (Var n []) = text (show n) pr (Def c []) = prettyTCM c pr _ = text ".."- in vcat + in vcat [ text "mvar args:" <+> sep (map (pr . unArg) args) , text "fvars rhs:" <+> sep (map (text . show) $ Set.toList fvs) ]@@ -407,6 +417,13 @@ reportSDoc "tc.meta.assign" 15 $ text "preparing to instantiate: " <+> prettyTCM v + -- Andreas, 2010-10-15 I want to see whether rhd is blocked+ reportSDoc "tc.meta.assign" 25 $ do+ v0 <- reduceB v+ case v0 of+ Blocked m0 _ -> text "blocked on:" <+> prettyTCM m0+ NotBlocked{} -> text "not blocked"+ -- Check that the x doesn't occur in the right hand side v <- liftTCM $ occursCheck x (map unArg ids) v @@ -576,8 +593,8 @@ | otherwise = fail "invalid parameters" where vars = [ Arg h r i | Arg h r (Var i []) <- args ]- + isVar :: Arg Term -> Bool isVar (Arg _ _ (Var _ [])) = True isVar _ = False@@ -598,4 +615,3 @@ updV _ _ = __IMPOSSIBLE__ updS s = assignS mI args s-
src/full/Agda/TypeChecking/MetaVars.hs-boot view
@@ -7,3 +7,4 @@ assignTerm :: MonadTCM tcm => MetaId -> Term -> tcm () assignSort :: MonadTCM tcm => MetaId -> Sort -> tcm () +etaExpandMetaSafe :: MonadTCM tcm => MetaId -> tcm ()
src/full/Agda/TypeChecking/MetaVars/Occurs.hs view
@@ -25,7 +25,7 @@ #include "../../undefined.h" data OccursCtx = Flex | Rigid- deriving (Eq)+ deriving (Eq, Show) abort :: OccursCtx -> TypeError -> TCM () abort Flex _ = patternViolation@@ -35,6 +35,8 @@ class Occurs t where occurs :: OccursCtx -> MetaId -> [Nat] -> t -> TCM t +-- | When assigning @m xs := v@, check that @m@ does not occur in @v@+-- and that the free variables of @v@ are contained in @xs@. occursCheck :: MonadTCM tcm => MetaId -> [Nat] -> Term -> tcm Term occursCheck m xs v = liftTCM $ do v <- instantiate v@@ -80,7 +82,7 @@ NotBlocked v -> occurs' ctx v where occurs' ctx v = case v of- Var i vs -> do+ Var i vs -> do -- abort Rigid turns this error into PatternErr unless (i `elem` xs) $ abort ctx $ MetaCannotDependOn m xs i Var i <$> occ vs Lam h f -> Lam h <$> occ f@@ -97,6 +99,10 @@ -- The arguments are in a flexible position (MetaV m' <$> occurs Flex m xs vs) `catchError` \err -> do+ reportSDoc "tc.meta.kill" 25 $ vcat+ [ text $ "error during flexible occurs check, we are " ++ show ctx+ , text $ show (errError err)+ ] case errError err of -- On pattern violations try to remove offending -- flexible occurrences (if in a rigid context)@@ -205,6 +211,8 @@ let perm = Perm (size kills) [ i | (i, Arg _ _ False) <- zip [0..] (reverse kills) ] m' <- newMeta (mvInfo mv) (mvPriority mv) perm (HasType undefined a)+ -- Andreas, 2010-10-15 eta expand new meta variable if necessary+ etaExpandMetaSafe m' let vars = reverse [ Arg h r (Var i []) | (i, Arg h r False) <- zip [0..] kills ] hs = reverse [ argHiding a | a <- kills ] lam h b = Lam h (Abs "v" b)@@ -234,4 +242,3 @@ - We don't need to check for success, we can just continue occurs checking. -}-
src/full/Agda/TypeChecking/Monad.hs view
@@ -33,5 +33,3 @@ import Agda.TypeChecking.Monad.State import Agda.TypeChecking.Monad.Statistics import Agda.TypeChecking.Monad.Trace--
src/full/Agda/TypeChecking/Monad/Base.hs view
@@ -391,16 +391,19 @@ defaultDisplayForm :: QName -> [Open DisplayForm] defaultDisplayForm c = [] -data Definition = Defn { defName :: QName- , defType :: Type -- type of the lifted definition- , defDisplay :: [Open DisplayForm]- , defMutual :: MutualId- , theDef :: Defn- }+data Definition = Defn+ { defRelevance :: Relevance -- ^ Some defs can be irrelevant (but not hidden).+ , defName :: QName+ , defType :: Type -- ^ Type of the lifted definition.+ , defDisplay :: [Open DisplayForm]+ , defMutual :: MutualId+ , theDef :: Defn+ } deriving (Typeable, Data, Show) type HaskellCode = String type HaskellType = String+type EpicCode = String data HaskellRepresentation = HsDefn HaskellType HaskellCode@@ -417,6 +420,7 @@ data Defn = Axiom { axHsDef :: Maybe HaskellRepresentation+ , axEpDef :: Maybe EpicCode } | Function { funClauses :: [Clauses]@@ -427,6 +431,12 @@ , funAbstr :: IsAbstract , funDelayed :: Delayed -- ^ Are the clauses of this definition delayed?+ , funProjection :: Maybe Int+ -- ^ Is it a record projection?+ -- If yes, then return the index of the record argument.+ -- Start counting with 1, because 0 means that it is already+ -- applied to the record. (Can happen in module instantiation.)+ -- This information is used in the termination checker. } | Datatype { dataPars :: Nat -- nof parameters@@ -470,6 +480,7 @@ , primClauses :: Maybe [Clauses] -- ^ 'Nothing' for primitive functions, @'Just' -- something@ for builtin functions.+ , primCompiled :: Maybe CompiledClauses } -- ^ Primitive or builtin functions. deriving (Typeable, Data, Show)@@ -484,10 +495,27 @@ data Reduced no yes = NoReduction no | YesReduction yes deriving (Typeable) +data IsReduced = NotReduced | Reduced (Blocked ())+data MaybeReduced a = MaybeRed+ { isReduced :: IsReduced+ , ignoreReduced :: a+ }++instance Functor MaybeReduced where+ fmap f (MaybeRed r x) = MaybeRed r (f x)++type MaybeReducedArgs = [MaybeReduced (Arg Term)]++notReduced :: a -> MaybeReduced a+notReduced x = MaybeRed NotReduced x++reduced :: Blocked a -> MaybeReduced a+reduced b = MaybeRed (Reduced $ fmap (const ()) b) (ignoreBlocking b)+ data PrimFun = PrimFun { primFunName :: QName , primFunArity :: Arity- , primFunImplementation :: MonadTCM tcm => [Arg Term] -> tcm (Reduced [Arg Term] Term)+ , primFunImplementation :: MonadTCM tcm => [Arg Term] -> tcm (Reduced MaybeReducedArgs Term) } deriving (Typeable) @@ -500,6 +528,7 @@ defCompiled :: Definition -> Maybe CompiledClauses defCompiled Defn{theDef = Function{funCompiled = cc}} = Just cc+defCompiled Defn{theDef = Primitive{primCompiled = mcc}} = mcc defCompiled _ = Nothing -- | Used to specify whether something should be delayed.@@ -653,6 +682,9 @@ -- or the body of a non-abstract definition this is true. -- To prevent information about abstract things leaking -- outside the module.+ , envIrrelevant :: Bool+ -- ^ Are we checking an irrelevant argument?+ -- Then top-level irrelevant declarations are enabled. , envReplace :: Bool -- ^ Coinductive constructor applications @c args@ get -- replaced by a function application @f tel@, where@@ -685,6 +717,7 @@ , envImportPath = [] , envMutualBlock = Nothing , envAbstractMode = AbstractMode+ , envIrrelevant = False , envReplace = True , envDisplayFormsEnabled = True , envReifyInteractionPoints = True@@ -758,6 +791,9 @@ | ShouldBeApplicationOf Type QName -- ^ Expected a type to be an application of a particular datatype. | ConstructorPatternInWrongDatatype QName QName -- ^ constructor, datatype+ | IndicesNotConstructorApplications [Arg Term] -- ^ Indices.+ | IndexVariablesNotDistinct [Arg Term] -- ^ Indices.+ | IndexFreeInParameter Nat [Arg Term] -- ^ Index (a variable), parameters. | DoesNotConstructAnElementOf QName Term -- ^ constructor, type | DifferentArities -- ^ Varying number of arguments for a function.@@ -782,6 +818,7 @@ | ShouldBeRecordType Type | NotAProperTerm | SplitOnIrrelevant A.Pattern (Arg Type)+ | DefinitionIsIrrelevant QName | VariableIsIrrelevant Name | UnequalLevel Comparison Term Term | UnequalTerms Comparison Term Term Type@@ -1016,4 +1053,3 @@ runTCM' :: Monad m => TCMT m a -> m a runTCM' m = liftM fst (unTCM m initState initEnv)-
src/full/Agda/TypeChecking/Monad/Builtin.hs view
@@ -170,4 +170,3 @@ , builtinQName , builtinAgdaTerm ]-
src/full/Agda/TypeChecking/Monad/Closure.hs view
@@ -12,5 +12,3 @@ withScope_ scope $ withEnv env $ k x--
src/full/Agda/TypeChecking/Monad/Constraints.hs view
@@ -39,4 +39,3 @@ buildConstraint c = do cl <- buildClosure c return [cl]-
src/full/Agda/TypeChecking/Monad/Context.hs view
@@ -94,9 +94,9 @@ getContextId = asks $ map ctxId . envContext -- | Add a let bound variable-addLetBinding :: MonadTCM tcm => Name -> Term -> Type -> tcm a -> tcm a-addLetBinding x v t0 ret = do- let t = defaultArg t0 -- Andreas, 2010-09-06: for now, no irrelevant let+addLetBinding :: MonadTCM tcm => Relevance -> Name -> Term -> Type -> tcm a -> tcm a+addLetBinding rel x v t0 ret = do+ let t = Arg NotHidden rel t0 vt <- makeOpen (v, t) flip local ret $ \e -> e { envLetBindings = Map.insert x vt $ envLetBindings e } @@ -104,7 +104,10 @@ -- in an irrelevant function argument otherwise irrelevant variables -- may be used, so they are awoken before type checking the argument. wakeIrrelevantVars :: MonadTCM tcm => tcm a -> tcm a-wakeIrrelevantVars = local $ \ e -> e { envContext = map wakeVar (envContext e) }+wakeIrrelevantVars = local $ \ e -> e+ { envContext = map wakeVar (envContext e) -- enable local irr. defs+ , envIrrelevant = True -- enable global irr. defs+ } where wakeVar ce = ce { ctxEntry = makeRelevant (ctxEntry ce) } applyRelevanceToContext :: MonadTCM tcm => Relevance -> tcm a -> tcm a@@ -156,4 +159,3 @@ escapeContext :: MonadTCM tcm => Int -> tcm a -> tcm a escapeContext n = local $ \e -> e { envContext = drop n $ envContext e }-
src/full/Agda/TypeChecking/Monad/Env.hs view
@@ -37,4 +37,3 @@ -- | Get the current environmnet getEnv :: MonadTCM tcm => tcm TCEnv getEnv = ask-
src/full/Agda/TypeChecking/Monad/Exception.hs view
@@ -61,4 +61,3 @@ instance (Error err, MonadTCM tcm) => MonadTCM (ExceptionT err tcm) where liftTCM m = ExceptionT $ Right `liftM` liftTCM m-
src/full/Agda/TypeChecking/Monad/Imports.hs view
@@ -89,4 +89,3 @@ m:ms <- getImportPath when (m `elem` ms) $ typeError $ CyclicModuleDependency $ dropWhile (/= m) $ reverse (m:ms)-
src/full/Agda/TypeChecking/Monad/MetaVars.hs view
@@ -176,4 +176,3 @@ clearMetaListeners :: MonadTCM tcm => MetaId -> tcm () clearMetaListeners m = updateMetaVar m $ \mv -> mv { mvListeners = Set.empty }-
src/full/Agda/TypeChecking/Monad/Mutual.hs view
@@ -61,4 +61,3 @@ case filter (Set.member f) bs of [] -> fail $ "No mutual block for " ++ show f b : _ -> return b-
src/full/Agda/TypeChecking/Monad/Open.hs view
@@ -46,4 +46,3 @@ tryOpen o = liftTCM $ (Just <$> getOpen o) `catchError` \_ -> return Nothing-
src/full/Agda/TypeChecking/Monad/Options.hs view
@@ -31,9 +31,8 @@ clo <- commandLineOptions case checkOpts (clo { optPragmaOptions = opts }) of Left err -> __IMPOSSIBLE__- Right opts ->- modify $ \s -> s { stPragmaOptions = optPragmaOptions opts }-+ Right opts -> do+ modify $ \s -> s { stPragmaOptions = (optPragmaOptions opts) } -- | Sets the command line options (both persistent and pragma options -- are updated). --@@ -239,7 +238,7 @@ reportS k n s = verboseS k n $ liftIO $ LocIO.putStr s reportSLn :: MonadTCM tcm => VerboseKey -> Int -> String -> tcm ()-reportSLn k n s = verboseS k n $ liftIO $ LocIO.putStrLn s+reportSLn k n s = verboseS k n $ liftIO $ LocIO.putStrLn s >> LocIO.stdoutFlush reportSDoc :: MonadTCM tcm => VerboseKey -> Int -> tcm Doc -> tcm () reportSDoc k n d = verboseS k n $ liftIO . LocIO.print =<< d@@ -253,4 +252,3 @@ x <- m liftIO $ LocIO.putStrLn "}" return x-
src/full/Agda/TypeChecking/Monad/Signature.hs view
@@ -23,6 +23,7 @@ import Agda.TypeChecking.Monad.Mutual import Agda.TypeChecking.Monad.Open import Agda.TypeChecking.Substitute+-- import Agda.TypeChecking.Pretty -- leads to cyclicity import Agda.TypeChecking.CompiledClause import {-# SOURCE #-} Agda.TypeChecking.Polarity @@ -30,6 +31,7 @@ import Agda.Utils.Map as Map import Agda.Utils.Size import Agda.Utils.Permutation+import Agda.Utils.Pretty #include "../../undefined.h" import Agda.Utils.Impossible@@ -104,6 +106,18 @@ def{theDef = d{dataHsType = Just hsTy}} addHs def = def +addEpicCode :: MonadTCM tcm => QName -> EpicCode -> tcm ()+addEpicCode q epDef =+ -- TODO: sanity checking+ modifySignature $ \sig -> sig+ { sigDefinitions = Map.adjust addEp q $ sigDefinitions sig }+ where+ --addEp def@Defn{theDef = con@Constructor{}} =+ --def{theDef = con{conHsCode = Just (hsTy, hsDef)}}+ addEp def@Defn{theDef = ax@Axiom{}} =+ def{theDef = ax{axEpDef = Just $ epDef}}+ addEp def = def+ unionSignatures :: [Signature] -> Signature unionSignatures ss = foldr unionSignature emptySignature ss where@@ -175,8 +189,18 @@ isig <- getImportedSignature let ss = getOld partOfOldM sigSections [sig, isig] ds = getOld partOfOldD sigDefinitions [sig, isig]+ reportSLn "tc.mod.apply" 10 $ render $ vcat+ [ text "applySection"+ , text "new =" <+> text (show new)+ , text "ptel =" <+> text (show ptel)+ , text "old =" <+> text (show old)+ , text "ts =" <+> text (show ts)+ ] reportSLn "tc.mod.apply" 80 $ "sections: " ++ show ss ++ "\n" ++ "definitions: " ++ show ds+ reportSLn "tc.mod.apply" 80 $ render $ vcat+ [ text "arguments: " <+> text (show ts)+ ] mapM_ (copyDef ts) ds mapM_ (copySec ts) ss where@@ -201,7 +225,7 @@ where t = defType d `apply` ts -- the name is set by the addConstant function- nd y = Defn y t [] (-1) def -- TODO: mutual block?+ nd y = Defn (defRelevance d) y t [] (-1) def -- TODO: mutual block? oldDef = theDef d isCon = case oldDef of Constructor{} -> True@@ -224,7 +248,12 @@ , funPolarity = [] , funArgOccurrences = [] , funAbstr = ConcreteDef+ , funProjection = fmap (nonNeg . \ n -> n - size ts) maybeNum }+ where maybeNum = case oldDef of+ Function { funProjection = mn } -> mn+ _ -> Nothing+ nonNeg n = if n >= 0 then n else __IMPOSSIBLE__ cl = Clause { clauseRange = getRange $ defClauses d , clauseTel = EmptyTel , clausePerm = idP 0@@ -429,8 +458,8 @@ makeAbstract d = do def <- makeAbs $ theDef d return d { theDef = def } where- makeAbs Datatype {dataAbstr = AbstractDef} = Just $ Axiom Nothing- makeAbs Function {funAbstr = AbstractDef} = Just $ Axiom Nothing+ makeAbs Datatype {dataAbstr = AbstractDef} = Just $ Axiom Nothing Nothing+ makeAbs Function {funAbstr = AbstractDef} = Just $ Axiom Nothing Nothing makeAbs Constructor{conAbstr = AbstractDef} = Nothing makeAbs d = Just d @@ -465,6 +494,10 @@ typeOfConst :: MonadTCM tcm => QName -> tcm Type typeOfConst q = defType <$> (instantiateDef =<< getConstInfo q) +-- | get relevance of a constant+relOfConst :: MonadTCM tcm => QName -> tcm Relevance+relOfConst q = defRelevance <$> getConstInfo q+ -- | The name must be a datatype. sortOfConst :: MonadTCM tcm => QName -> tcm Sort sortOfConst q =@@ -473,3 +506,10 @@ Datatype{dataSort = s} -> return s _ -> fail $ "Expected " ++ show q ++ " to be a datatype." +-- | Is it the name of a record projection?+isProjection :: MonadTCM tcm => QName -> tcm (Maybe Int)+isProjection qn = do+ def <- theDef <$> getConstInfo qn+ case def of+ Function { funProjection = result } -> return $ result+ _ -> return $ Nothing
src/full/Agda/TypeChecking/Monad/SizedTypes.hs view
@@ -52,4 +52,3 @@ unSizeView SizeInf = primSizeInf unSizeView (SizeSuc v) = flip apply [Arg NotHidden Relevant v] <$> primSizeSuc unSizeView (OtherSize v) = return v-
src/full/Agda/TypeChecking/Monad/State.hs view
@@ -87,4 +87,3 @@ -- | Get the Haskell imports. getHaskellImports :: MonadTCM tcm => tcm (Set String) getHaskellImports = gets stHaskellImports-
src/full/Agda/TypeChecking/Monad/Statistics.hs view
@@ -11,10 +11,12 @@ tick :: String -> TCM () tick x = modify $ \s ->- s { stStatistics = Map.insertWith (\_ n -> n + 1) x 1- $ stStatistics s- }+ let st' = inc $ stStatistics s in+ force st' `seq` s { stStatistics = st' }+ where+ -- We need to be strict in the map+ force m = sum (Map.elems m)+ inc = Map.insertWith (\_ n -> n + 1) x 1 getStatistics :: TCM Statistics getStatistics = gets stStatistics-
src/full/Agda/TypeChecking/Monad/Trace.hs view
@@ -49,4 +49,3 @@ setCurrentRange r | r == noRange = id | otherwise = traceCall (SetRange r)-
src/full/Agda/TypeChecking/Patterns/Match.hs view
@@ -70,7 +70,7 @@ -- Andreas, 2010-09-07 matching a record constructor against -- something irrelevant will just continue matching against -- irrelevant stuff- (m, vs) <- matchPatterns ps $ + (m, vs) <- matchPatterns ps $ repeat $ Arg NotHidden Irrelevant $ Sort Prop return (m, Arg h Irrelevant $ Con c vs) @@ -96,7 +96,7 @@ -- irrelevant stuff -- NotBlocked (Sort Prop) _ | r == Irrelevant -> do- (m, vs) <- matchPatterns ps $ + (m, vs) <- matchPatterns ps $ repeat $ Arg NotHidden Irrelevant $ Sort Prop return (m, Arg h r $ Con c vs) NotBlocked (Con c' vs)@@ -107,4 +107,3 @@ NotBlocked (MetaV x vs) -> return (DontKnow $ Just x, Arg h r v) Blocked x _ -> return (DontKnow $ Just x, Arg h r v) _ -> return (DontKnow Nothing, Arg h r v)-
src/full/Agda/TypeChecking/Polarity.hs view
@@ -163,4 +163,3 @@ Sort _ -> return [] MetaV _ ts -> map (const Invariant) <$> polarities i ts DontCare -> return []-
src/full/Agda/TypeChecking/Positivity.hs view
@@ -273,7 +273,9 @@ Sort{} -> Map.empty DontCare -> Map.empty where- vs ! i+ -- Apparently some development version of GHC chokes if the+ -- following line is replaced by vs ! i.+ (!) vs i | i < length vs = vs !! i | otherwise = error $ show vs ++ " ! " ++ show i ++ " (" ++ show v ++ ")" @@ -432,4 +434,3 @@ -- D: (A B -> C) generates a positive edge B --> A.1 -- even though the context is negative. inArg d i = mkEdge (ArgNode d i) Positive-
src/full/Agda/TypeChecking/Pretty.hs view
@@ -70,6 +70,7 @@ instance PrettyTCM Type where prettyTCM x = prettyA =<< reify x instance PrettyTCM Sort where prettyTCM x = prettyA =<< reify x instance PrettyTCM DisplayTerm where prettyTCM x = prettyA =<< reify x+instance PrettyTCM NamedClause where prettyTCM x = prettyA =<< reify x instance PrettyTCM ClauseBody where prettyTCM b = do@@ -84,7 +85,7 @@ walk (Bind b) = do (bs, v) <- underAbstraction_ b walk return (text (absName b) : bs, v)- + instance (PrettyTCM a, PrettyTCM b) => PrettyTCM (Judgement a b) where prettyTCM (HasType a t) = prettyTCM a <+> text ":" <+> prettyTCM t prettyTCM (IsSort a) = text "Sort" <+> prettyTCM a@@ -102,6 +103,11 @@ instance PrettyTCM A.Expr where prettyTCM = prettyA +instance PrettyTCM Relevance where+ prettyTCM Irrelevant = text "."+ prettyTCM Relevant = empty+ prettyTCM Forced = empty+ instance PrettyTCM Comparison where prettyTCM CmpEq = text "==" prettyTCM CmpLeq = text "=<"@@ -120,7 +126,7 @@ , nest 2 $ text "~~" <+> prettyTCM v , nest 2 $ text (show cmp) ] | (cmp, u, v) <- zip3 cmps us vs- ] + ] , nest 2 $ text ":" <+> prettyTCM t ] LevelCmp cmp a b ->@@ -191,14 +197,15 @@ d <- prettyTCM t x <- prettyTCM x dctx <- pr ctx- return $ rel r (par h (P.hsep [ x, P.text ":", d])) : dctx+ return $ P.pRelevance r (par h (P.hsep [ x, P.text ":", d])) : dctx where par NotHidden = P.parens par Hidden = P.braces+{- rel Irrelevant x = P.text "." P.<> x rel Relevant x = x rel Forced x = x+-} instance PrettyTCM Context where prettyTCM = prettyTCM . PrettyContext-
src/full/Agda/TypeChecking/Primitive.hs view
@@ -134,7 +134,7 @@ -- From Haskell value to Agda term -type FromTermFunction a = Arg Term -> TCM (Reduced (Arg Term) a)+type FromTermFunction a = Arg Term -> TCM (Reduced (MaybeReduced (Arg Term)) a) class FromTerm a where fromTerm :: MonadTCM tcm => tcm (FromTermFunction a)@@ -189,37 +189,38 @@ _ === _ = False instance (ToTerm a, FromTerm a) => FromTerm [a] where- fromTerm = do- nil' <- primNil- cons' <- primCons- nil <- isCon nil'- cons <- isCon cons'- toA <- fromTerm- fromA <- toTerm- return $ mkList nil cons toA fromA- where- isCon (Lam _ b) = isCon $ absBody b- isCon (Con c _) = return c- isCon v = do- d <- prettyTCM v- typeError $ GenericError $ "expected constructor in built-in binding to " ++ show d- -- TODO: check this when binding the things+ fromTerm = do+ nil' <- primNil+ cons' <- primCons+ nil <- isCon nil'+ cons <- isCon cons'+ toA <- fromTerm+ fromA <- toTerm+ return $ mkList nil cons toA fromA+ where+ isCon (Lam _ b) = isCon $ absBody b+ isCon (Con c _) = return c+ isCon v = do+ d <- prettyTCM v+ typeError $ GenericError $ "expected constructor in built-in binding to " ++ show d+ -- TODO: check this when binding the things - mkList nil cons toA fromA t = do- t <- reduce t- let arg = Arg (argHiding t) (argRelevance t)- case unArg t of- Con c []- | c == nil -> return $ YesReduction []- Con c [x,xs]- | c == cons ->- redBind (toA x)- (\x' -> arg $ Con c [x',xs]) $ \y ->- redBind- (mkList nil cons toA fromA xs)- (\xs' -> arg $ Con c [defaultArg $ fromA y, xs']) $ \ys ->- redReturn (y : ys)- _ -> return $ NoReduction t+ mkList nil cons toA fromA t = do+ b <- reduceB t+ let t = ignoreBlocking b+ let arg = Arg (argHiding t) (argRelevance t)+ case unArg t of+ Con c []+ | c == nil -> return $ YesReduction []+ Con c [x,xs]+ | c == cons ->+ redBind (toA x)+ (\x' -> notReduced $ arg $ Con c [ignoreReduced x',xs]) $ \y ->+ redBind+ (mkList nil cons toA fromA xs)+ (fmap $ \xs' -> arg $ Con c [defaultArg $ fromA y, xs']) $ \ys ->+ redReturn (y : ys)+ _ -> return $ NoReduction (reduced b) -- | Conceptually: @redBind m f k = either (return . Left . f) k =<< m@ redBind :: MonadTCM tcm => tcm (Reduced a a') -> (a -> b) ->@@ -235,10 +236,10 @@ fromReducedTerm :: MonadTCM tcm => (Term -> Maybe a) -> tcm (FromTermFunction a) fromReducedTerm f = return $ \t -> do- t <- reduce t- case f $ unArg t of+ b <- reduceB t+ case f $ unArg (ignoreBlocking b) of Just x -> return $ YesReduction x- Nothing -> return $ NoReduction t+ Nothing -> return $ NoReduction (reduced b) fromLiteral :: MonadTCM tcm => (Literal -> Maybe a) -> tcm (FromTermFunction a) fromLiteral f = fromReducedTerm $ \t -> case t of@@ -251,11 +252,14 @@ refl <- primRefl t <- hPi "A" tset $ hPi "a" (el $ var 0) $ hPi "b" (el $ var 1) $ el (primEquality <#> var 2 <@> var 1 <@> var 0)- return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 3 $ \[t, a, b] -> liftTCM $ do- noConstraints $ equalTerm (El (mkType 0) $ unArg t) (unArg a) (unArg b)- rf <- return refl -- <#> return (unArg t) <#> return (unArg a)- redReturn rf- `catchError` \_ -> return (NoReduction [t, a, b])+ return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 3 $ \ts ->+ case ts of+ [t, a, b] -> liftTCM $ do+ noConstraints $ equalTerm (El (mkType 0) $ unArg t) (unArg a) (unArg b)+ rf <- return refl -- <#> return (unArg t) <#> return (unArg a)+ redReturn rf+ `catchError` \_ -> return (NoReduction $ map notReduced [t, a, b])+ _ -> __IMPOSSIBLE__ -- Tying the knot mkPrimFun1 :: (MonadTCM tcm, PrimType a, PrimType b, FromTerm a, ToTerm b) =>@@ -264,10 +268,13 @@ toA <- fromTerm fromB <- toTerm t <- primType f- return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 1 $ \[v] -> liftTCM $- redBind (toA v)- (\v' -> [v']) $ \x ->- redReturn $ fromB $ f x+ return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 1 $ \ts ->+ case ts of+ [v] -> liftTCM $+ redBind (toA v)+ (\v' -> [v']) $ \x ->+ redReturn $ fromB $ f x+ _ -> __IMPOSSIBLE__ mkPrimFun2 :: (MonadTCM tcm, PrimType a, PrimType b, PrimType c, FromTerm a, ToTerm a, FromTerm b, ToTerm c) => (a -> b -> c) -> tcm PrimitiveImpl@@ -277,12 +284,16 @@ toB <- fromTerm fromC <- toTerm t <- primType f- return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 2 $ \[v,w] -> liftTCM $- redBind (toA v)- (\v' -> [v',w]) $ \x ->- redBind (toB w)- (\w' -> [Arg (argHiding v) (argRelevance v) (fromA x), w']) $ \y ->- redReturn $ fromC $ f x y+ return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 2 $ \ts ->+ case ts of+ [v,w] -> liftTCM $+ redBind (toA v)+ (\v' -> [v', notReduced w]) $ \x ->+ redBind (toB w)+ (\w' -> [ reduced $ notBlocked $ Arg (argHiding v) (argRelevance v) (fromA x)+ , w']) $ \y ->+ redReturn $ fromC $ f x y+ _ -> __IMPOSSIBLE__ mkPrimFun4 :: ( MonadTCM tcm , PrimType a, FromTerm a, ToTerm a@@ -298,29 +309,27 @@ toD <- fromTerm fromE <- toTerm t <- primType f- return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \[a,b,c,d] -> liftTCM $- redBind (toA a)- (\a' -> [a',b,c,d]) $ \x ->- redBind (toB b)- (\b' -> [Arg (argHiding a) (argRelevance a) (fromA x), b', c, d]) $ \y ->- redBind (toC c)- (\c' -> [ Arg (argHiding a) (argRelevance a) (fromA x)- , Arg (argHiding b) (argRelevance b) (fromB y), c', d]) $ \z ->- redBind (toD d)- (\d' -> [ Arg (argHiding a) (argRelevance a) (fromA x)- , Arg (argHiding b) (argRelevance b) (fromB y)- , Arg (argHiding c) (argRelevance c) (fromC z)- , d']) $ \w ->- redReturn $ fromE $ f x y z w---- Abstract primitive functions-abstractPrim :: (MonadTCM tcm, PrimType a) => a -> tcm PrimitiveImpl-abstractPrim x = abstractFromType (primType x)+ return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \ts ->+ let argFrom fromX a x =+ reduced $ notBlocked $ Arg (argHiding a) (argRelevance a) (fromX x)+ in case ts of+ [a,b,c,d] -> liftTCM $+ redBind (toA a)+ (\a' -> a' : map notReduced [b,c,d]) $ \x ->+ redBind (toB b)+ (\b' -> [argFrom fromA a x, b', notReduced c, notReduced d]) $ \y ->+ redBind (toC c)+ (\c' -> [ argFrom fromA a x+ , argFrom fromB b y+ , c', notReduced d]) $ \z ->+ redBind (toD d)+ (\d' -> [ argFrom fromA a x+ , argFrom fromB b y+ , argFrom fromC c z+ , d']) $ \w -> -abstractFromType :: MonadTCM tcm => tcm Type -> tcm PrimitiveImpl-abstractFromType mt = do- t <- mt- return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ (arity t) $ \args -> NoReduction <$> normalise args+ redReturn $ fromE $ f x y z w+ _ -> __IMPOSSIBLE__ -- Type combinators infixr 4 -->@@ -473,4 +482,3 @@ PrimImpl _ pf <- lookupPrimitiveFunction x bindPrimitive x pf return pf-
src/full/Agda/TypeChecking/Quote.hs view
@@ -25,7 +25,7 @@ def <- primAgdaTermDef con <- primAgdaTermCon pi <- primAgdaTermPi- sort <- primAgdaTermSort + sort <- primAgdaTermSort Con z _ <- primZero Con s _ <- primSuc unsupported <- primAgdaTermUnsupported@@ -33,7 +33,7 @@ quoteHiding Hidden = true quoteHiding NotHidden = false list [] = nil- list (a : as) = cons @@ a @@ list as + list (a : as) = cons @@ a @@ list as zero = con @@ quoteName z @@ nil suc n = con @@ quoteName s @@ list [n] quoteArg (Arg h r t) = arg @@ quoteHiding h @@ quote t@@ -62,4 +62,3 @@ qNameType :: TCM Type qNameType = El (mkType 0) <$> primQName-
src/full/Agda/TypeChecking/Rebind.hs view
@@ -28,4 +28,3 @@ rebind (NoBind b) = NoBind $ rebind b rebind NoBody = NoBody -}-
src/full/Agda/TypeChecking/Records.hs view
@@ -94,6 +94,14 @@ Record{recEtaEquality = eta} -> eta _ -> False +-- | Check if a name refers to a record constructor.+isRecordConstructor :: MonadTCM tcm => QName -> tcm Bool+isRecordConstructor c = do+ def <- theDef <$> getConstInfo c+ case def of+ Constructor{ conData = r } -> isRecord r+ _ -> return False+ -- | Check if a constructor name is the internally generated record constructor. isGeneratedRecordConstructor :: MonadTCM tcm => QName -> tcm Bool isGeneratedRecordConstructor c = do@@ -121,8 +129,10 @@ Con _ args -> return (tel', args) -- Already expanded. _ -> do -- irrelevant fields are expanded to DontCare+ -- this is sound because etaExpandRecord is only called during conversion+ -- WARNING: do not use etaExpandRecord to expand MetaVars!! let proj (Arg h Irrelevant _) = Arg h Irrelevant DontCare- proj (Arg h rel x) = Arg h rel $ + proj (Arg h rel x) = Arg h rel $ Def x $ map hide pars ++ [defaultArg u] reportSDoc "tc.record.eta" 20 $ vcat [ text "eta expanding" <+> prettyTCM u <+> text ":" <+> prettyTCM r@@ -138,24 +148,33 @@ -- | The fields should be eta contracted already. etaContractRecord :: MonadTCM tcm => QName -> QName -> Args -> tcm Term etaContractRecord r c args = do- Record{ recFields = xs } <- getRecordDef r+ Record{ recPars = npars, recFields = xs } <- getRecordDef r let check a ax = do+ -- @a@ is the constructor argument, @ax@ the corr. record field name -- skip irrelevant record fields by returning DontCare case (argRelevance a, unArg a) of- (Irrelevant, _) -> return $ Just DontCare- (_, Def y args@(_:_)) | unArg ax == y -> return (Just $ unArg $ last args)- _ -> return Nothing+ (Irrelevant, _) -> return $ Just DontCare+ -- if @a@ is the record field name applied to (npars+1) args,+ -- then it passes the check+ (_, Def y args) | unArg ax == y && genericLength args == npars + 1+ -> return (Just $ unArg $ last args)+ _ -> return Nothing fallBack = return (Con c args) case compare (length args) (length xs) of LT -> fallBack -- Not fully applied GT -> __IMPOSSIBLE__ -- Too many arguments. Impossible. EQ -> do- cs <- zipWithM check args xs- case sequence cs of- Just cs -> case filter (DontCare /=) cs of- (c:cs) -> do- if all (c ==) cs- then return c+ as <- zipWithM check args xs+ case sequence as of+ Just as -> case filter (DontCare /=) as of+ (a:as) ->+ if all (a ==) as+ then do+ reportSDoc "tc.record.eta" 15 $ vcat+ [ text "record" <+> prettyTCM (Con c args)+ , text "is eta-contracted to" <+> prettyTCM a+ ]+ return a else fallBack _ -> fallBack -- just DontCares _ -> fallBack -- a Nothing
src/full/Agda/TypeChecking/Reduce.hs view
@@ -8,7 +8,8 @@ import Control.Monad.Error hiding (mapM) import Control.Applicative import Data.List as List hiding (sort)-import Data.Map as Map+import qualified Data.Map as Map+import Data.Map (Map) import qualified Data.Set as Set import Data.Traversable @@ -256,19 +257,19 @@ Bool -> (Term -> tcm (Blocked Term)) -> Term -> QName -> Args -> tcm (Blocked Term) unfoldDefinition unfoldDelayed keepGoing v0 f args =- {-# SCC "reduceDef" #-}- do info <- getConstInfo f- case theDef info of- Constructor{conSrcCon = c} ->- return $ notBlocked $ Con (c `withRangeOf` f) args- Primitive ConcreteDef x cls -> do- pf <- getPrimitive x- reducePrimitive x v0 f args pf (defDelayed info)- (maybe [] (List.map translatedClause) cls)- Nothing- _ -> reduceNormal v0 f args (defDelayed info)- (List.map translatedClause $ defClauses info)- (defCompiled info)+ {-# SCC "reduceDef" #-} do+ info <- getConstInfo f+ case theDef info of+ Constructor{conSrcCon = c} ->+ return $ notBlocked $ Con (c `withRangeOf` f) args+ Primitive{primAbstr = ConcreteDef, primName = x, primClauses = cls} -> do+ pf <- getPrimitive x+ reducePrimitive x v0 f args pf (defDelayed info)+ (maybe [] (List.map translatedClause) cls)+ (defCompiled info)+ _ -> reduceNormal v0 f (map notReduced args) (defDelayed info)+ (List.map translatedClause $ defClauses info)+ (defCompiled info) where reducePrimitive x v0 f args pf delayed cls mcc | n < ar = return $ notBlocked $ v0 `apply` args -- not fully applied@@ -276,9 +277,12 @@ let (args1,args2) = genericSplitAt ar args r <- def args1 case r of- NoReduction args1' -> reduceNormal v0 f (args1' ++ args2)- delayed cls mcc- YesReduction v -> keepGoing $ v `apply` args2+ NoReduction args1' ->+ reduceNormal v0 f (args1' +++ map notReduced args2)+ delayed cls mcc+ YesReduction v ->+ keepGoing $ v `apply` args2 where n = genericLength args ar = primFunArity pf@@ -291,26 +295,28 @@ [] -> defaultResult -- no definition for head cls@(Clause{ clausePats = ps } : _) | length ps <= length args -> do- let (args1,args2) = splitAt (length ps) args+ let (args1,args2') = splitAt (length ps) args+ args2 = map ignoreReduced args2' ev <- maybe (appDef' v0 cls args1) (\cc -> appDef v0 cc args1) mcc case ev of NoReduction v -> return $ v `apply` args2 YesReduction v -> keepGoing $ v `apply` args2 | otherwise -> defaultResult -- partial application- where defaultResult = return $ notBlocked $ v0 `apply` args+ where defaultResult = return $ notBlocked $ v0 `apply` (map ignoreReduced args) -- Apply a defined function to it's arguments. -- The original term is the first argument applied to the third.- appDef :: MonadTCM tcm => Term -> CompiledClauses -> Args -> tcm (Reduced (Blocked Term) Term)+ appDef :: MonadTCM tcm => Term -> CompiledClauses -> MaybeReducedArgs -> tcm (Reduced (Blocked Term) Term) appDef v cc args = liftTCM $ do r <- matchCompiled cc args case r of YesReduction t -> return $ YesReduction t NoReduction args' -> return $ NoReduction $ fmap (apply v) args' - appDef' :: MonadTCM tcm => Term -> [Clause] -> Args -> tcm (Reduced (Blocked Term) Term)- appDef' v cls args = {-# SCC "appDef" #-} goCls cls args where+ appDef' :: MonadTCM tcm => Term -> [Clause] -> MaybeReducedArgs -> tcm (Reduced (Blocked Term) Term)+ appDef' v cls args = {-# SCC "appDef" #-} do+ goCls cls (map ignoreReduced args) where goCls :: MonadTCM tcm => [Clause] -> Args -> tcm (Reduced (Blocked Term) Term) goCls [] args = typeError $ IncompletePatternMatching v args@@ -498,7 +504,8 @@ El <$> instantiateFull s <*> instantiateFull t instance InstantiateFull Term where- instantiateFull v = etaOnce =<< do+ instantiateFull v = etaOnce =<< do -- Andreas, 2010-11-12 DONT ETA!! eta-reduction breaks subject reduction+-- but removing etaOnce now breaks everything v <- instantiate v case v of Var n vs -> Var n <$> instantiateFull vs@@ -585,9 +592,9 @@ instantiateFull = return instance InstantiateFull Definition where- instantiateFull (Defn x t df i d) = do+ instantiateFull (Defn rel x t df i d) = do (t, (df, d)) <- instantiateFull (t, (df, d))- return $ Defn x t df i d+ return $ Defn rel x t df i d instance InstantiateFull a => InstantiateFull (Open a) where instantiateFull (OpenThing n a) = OpenThing n <$> instantiateFull a
src/full/Agda/TypeChecking/Rules/Builtin.hs view
@@ -162,8 +162,9 @@ info <- getConstInfo qx let cls = defClauses info a = defAbstract info+ mcc = defCompiled info bindPrimitive name $ pf { primFunName = qx }- addConstant qx $ info { theDef = Primitive a name (Just cls) }+ addConstant qx $ info { theDef = Primitive a name (Just cls) mcc } -- needed? yes, for checking equations for mul bindBuiltinName builtin v
src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs view
@@ -171,6 +171,10 @@ , funArgOccurrences = [Unused, Unused, Positive] , funAbstr = ConcreteDef , funDelayed = NotDelayed+ , funProjection = Nothing+ {- flat is a projection, but in the termination checker+ it destroys the (inductive) structural ordering.+ Thus, we do not register it as a projection. -} } } return flatE
src/full/Agda/TypeChecking/Rules/Data.hs view
@@ -93,7 +93,7 @@ } escapeContext (size tel) $ do- addConstant name ( Defn name t (defaultDisplayForm name) 0 dataDef )+ addConstant name ( Defn Relevant name t (defaultDisplayForm name) 0 dataDef ) -- Check the types of the constructors mapM_ (checkConstructor name tel' nofIxs s) cs@@ -110,20 +110,20 @@ case (proofIrr, s, cs) of (True, Prop, _:_:_) -> setCurrentRange (getRange $ map conName cs) $ typeError PropMustBeSingleton- where conName (A.Axiom _ c _) = c+ where conName (A.Axiom _ _ c _) = c conName (A.ScopedDecl _ (d:_)) = conName d conName _ = __IMPOSSIBLE__ _ -> return () -- Add the datatype to the signature with its constructors. It was previously -- added without them.- addConstant name (Defn name t (defaultDisplayForm name) 0 $+ addConstant name (Defn Relevant name t (defaultDisplayForm name) 0 $ dataDef { dataCons = map cname cs } ) computePolarity name where cname (A.ScopedDecl _ [d]) = cname d- cname (A.Axiom _ x _) = x+ cname (A.Axiom _ _ x _) = x cname _ = __IMPOSSIBLE__ -- constructors are axioms hideTel EmptyTel = EmptyTel@@ -141,8 +141,9 @@ checkConstructor d tel nofIxs s (A.ScopedDecl scope [con]) = do setScope scope checkConstructor d tel nofIxs s con-checkConstructor d tel nofIxs s con@(A.Axiom i c e) =+checkConstructor d tel nofIxs s con@(A.Axiom i _ c e) = traceCall (CheckConstructor d tel s con) $ do+ debugEnter c e t <- isType_ e n <- size <$> getContextTelescope debugEndsIn t d n@@ -150,11 +151,16 @@ debugFitsIn s t `fitsIn` s t' <- addForcingAnnotations t+ debugAdd c t' escapeContext (size tel) $ addConstant c- $ Defn c (telePi tel t') (defaultDisplayForm c) 0+ $ Defn Relevant c (telePi tel t') (defaultDisplayForm c) 0 $ Constructor (size tel) c d Nothing (Info.defAbstract i) Inductive where+ debugEnter c e =+ reportSDoc "tc.data.con" 5 $ vcat+ [ text "checking constructor" <+> prettyTCM c <+> text ":" <+> prettyTCM e+ ] debugEndsIn t d n = reportSDoc "tc.data.con" 15 $ vcat [ sep [ text "checking that"@@ -168,6 +174,10 @@ [ text "checking that the type fits in" , nest 2 $ prettyTCM s ]+ debugAdd c t =+ reportSDoc "tc.data.con" 5 $ vcat+ [ text "adding constructor" <+> prettyTCM c <+> text ":" <+> prettyTCM t+ ] checkConstructor _ _ _ _ _ = __IMPOSSIBLE__ -- constructors are axioms @@ -256,7 +266,7 @@ | d == d' -> return $ El s0 t' | otherwise -> fail $ "wrong datatype " ++ show d ++ " != " ++ show d' MetaV m vs -> do- Defn _ t _ _ Datatype{dataSort = s} <- getConstInfo d+ Defn _ _ t _ _ Datatype{dataSort = s} <- getConstInfo d ps <- newArgsMeta t noConstraints $ leqType (El s0 t') (El s (Def d ps)) -- TODO: need equalType? reduce $ El s0 t'
src/full/Agda/TypeChecking/Rules/Decl.hs view
@@ -50,7 +50,7 @@ checkDecl :: A.Declaration -> TCM () checkDecl d = do case d of- A.Axiom i x e -> checkAxiom i x e+ A.Axiom i rel x e -> checkAxiom i rel x e A.Field{} -> typeError FieldOutsideRecord A.Primitive i x e -> checkPrimitive i x e A.Definition i ts ds -> checkMutual i ts ds@@ -66,16 +66,16 @@ -- | Type check an axiom.-checkAxiom :: Info.DefInfo -> QName -> A.Expr -> TCM ()-checkAxiom _ x e = do+checkAxiom :: Info.DefInfo -> Relevance -> QName -> A.Expr -> TCM ()+checkAxiom _ rel x e = do t <- isType_ e reportSDoc "tc.decl.ax" 10 $ sep [ text "checked axiom"- , nest 2 $ prettyTCM x <+> text ":" <+> (prettyTCM =<< instantiateFull t)+ , nest 2 $ prettyTCM rel <> prettyTCM x <+> text ":" <+> (prettyTCM =<< instantiateFull t) ] -- Not safe. See Issue 330 -- t <- addForcingAnnotations t- addConstant x (Defn x t (defaultDisplayForm x) 0 $ Axiom Nothing)+ addConstant x (Defn rel x t (defaultDisplayForm x) 0 $ Axiom Nothing Nothing) solveSizeConstraints @@ -88,7 +88,8 @@ noConstraints $ equalType t t' let s = show $ nameConcrete $ qnameName x bindPrimitive s $ pf { primFunName = x }- addConstant x (Defn x t (defaultDisplayForm x) 0 $ Primitive (Info.defAbstract i) s Nothing)+ addConstant x (Defn Relevant x t (defaultDisplayForm x) 0 $+ Primitive (Info.defAbstract i) s Nothing Nothing) where nameString (Name _ x _ _) = show x @@ -155,6 +156,14 @@ reportSLn "tc.pragma.compile" 10 $ "Haskell type for " ++ show x ++ ": " ++ ty addHaskellCode x ty hs _ -> typeError $ GenericError "COMPILED directive only works on postulates."+ A.CompiledEpicPragma x ep -> do+ def <- getConstInfo x+ case theDef def of+ Axiom{} -> do+ --ty <- haskellType $ defType def+ --reportSLn "tc.pragma.compile" 10 $ "Haskell type for " ++ show x ++ ": " ++ ty+ addEpicCode x ep+ _ -> typeError $ GenericError "COMPILED_EPIC directive only works on postulates." A.OptionsPragma _ -> __IMPOSSIBLE__ -- not allowed here A.EtaPragma r -> modifySignature eta where@@ -179,10 +188,10 @@ checkTypeSignature (A.ScopedDecl scope ds) = do setScope scope mapM_ checkTypeSignature ds-checkTypeSignature (A.Axiom i x e) =+checkTypeSignature (A.Axiom i rel x e) = case Info.defAccess i of- PublicAccess -> inConcreteMode $ checkAxiom i x e- PrivateAccess -> inAbstractMode $ checkAxiom i x e+ PublicAccess -> inConcreteMode $ checkAxiom i rel x e+ PrivateAccess -> inAbstractMode $ checkAxiom i rel x e checkTypeSignature _ = __IMPOSSIBLE__ -- type signatures are always axioms @@ -266,5 +275,3 @@ -- the work is done when scope checking. checkImport :: Info.ModuleInfo -> ModuleName -> TCM () checkImport i x = return ()--
src/full/Agda/TypeChecking/Rules/Def.hs view
@@ -71,8 +71,9 @@ checkFunDef delayed i name cs = traceCall (CheckFunDef (getRange i) (qnameName name) cs) $ do -- TODO!! (qnameName)- -- Get the type of the function+ -- Get the type and relevance of the function t <- typeOfConst name+ rel <- relOfConst name reportSDoc "tc.def.fun" 10 $ sep [ text "checking body of" <+> prettyTCM name@@ -82,7 +83,7 @@ -- Check the clauses let check c = do- c <- checkClause t c+ c <- applyRelevanceToContext rel $ checkClause t c solveSizeConstraints return c cs <- mapM check cs@@ -91,17 +92,37 @@ unless (allEqual $ map (npats . translatedClause) cs) $ typeError DifferentArities + reportSDoc "tc.cc" 15 $ do+ sep [ text "clauses before rebindClause"+ , nest 2 $ prettyTCM (map (NamedClause name . translatedClause) cs)+ ]+ -- Annotate the clauses with which arguments are actually used. cs <- instantiateFull =<< mapM rebindClause cs+ -- Andreas, 2010-11-12+ -- rebindClause is the identity, and instantiateFull eta-contracts+ -- removing this eta-contraction fixes issue 361+ -- however, Data.Star.Decoration.gmapAll no longer type-checks+ -- possibly due to missing eta-contraction!? -- Check if the function is injective inv <- checkInjectivity name $ map translatedClause cs + reportSDoc "tc.cc" 15 $ do+ sep [ text "clauses before compilation"+ , nest 2 $ prettyTCM (map (NamedClause name . translatedClause) cs)+ ]+ -- Compile the clauses let cc = compileClauses cs + reportSDoc "tc.cc" 10 $ do+ sep [ text "compiled clauses of" <+> prettyTCM name+ , nest 2 $ text (show cc)+ ]+ -- Add the definition- addConstant name $ Defn name t (defaultDisplayForm name) 0+ addConstant name $ Defn rel name t (defaultDisplayForm name) 0 $ Function { funClauses = cs , funCompiled = cc@@ -110,6 +131,7 @@ , funAbstr = Info.defAbstract i , funPolarity = [] , funArgOccurrences = []+ , funProjection = Nothing } computePolarity name reportSDoc "tc.def.fun" 10 $ do@@ -220,7 +242,12 @@ text "proof = " <+> prettyTCM proofExpr, text "equ = " <+> prettyTCM t' ] handleRHS newRhs+ A.WithRHS aux es cs -> do+ reportSDoc "tc.with.top" 5 $+ text "TC.Rules.Def.checkclause reached A.WithRHS"+ reportSDoc "tc.with.top" 30 $+ text (show c) -- Infer the types of the with expressions vas <- mapM inferExpr es (vs0, as) <- instantiateFull (unzip vas)@@ -342,7 +369,7 @@ , prettyList $ map prettyTCM ts , prettyTCM dt ]- addConstant aux (Defn aux auxType [df] 0 $ Axiom Nothing)+ addConstant aux (Defn Relevant aux auxType [df] 0 $ Axiom Nothing Nothing) solveSizeConstraints reportSDoc "tc.with.top" 10 $ sep@@ -641,4 +668,3 @@ x <- freshName_ $ absName b addCtx x (Arg h Relevant $ sort Prop) $ stripLambdas (absBody b) _ -> typeError $ GenericError $ "Not a constructor: " ++ show c-
src/full/Agda/TypeChecking/Rules/LHS.hs view
@@ -253,7 +253,7 @@ sep [ text ":" <+> prettyTCM a , text "=" <+> prettyTCM v ]- addLetBinding x v a $ bindAsPatterns asb ret+ addLetBinding Relevant x v a $ bindAsPatterns asb ret -- | Rename the variables in a telescope using the names from a given pattern useNamesFromPattern :: [NamedArg A.Pattern] -> Telescope -> Telescope@@ -438,9 +438,7 @@ -} -- Andreas 2010-09-07 propagate relevance info to new vars- gamma' <- return $ if rel == Irrelevant then- fmap makeIrrelevant gamma'- else gamma'+ gamma' <- return $ fmap (\a -> a { argRelevance = rel }) gamma' {- reportSDoc "tc.lhs.top" 20 $ nest 2 $ vcat [ text "gamma' =" <+> text (show gamma')@@ -546,7 +544,7 @@ {- -- Andreas, 2010-09-09 -- temporary error message to find non-id perms let sorted (Perm _ xs) = xs == List.sort xs- unless (sorted (perm)) $ typeError $ GenericError $ "detected proper permutation " ++ show perm + unless (sorted (perm)) $ typeError $ GenericError $ "detected proper permutation " ++ show perm -} -- Compute the new dot pattern instantiations let ps0' = problemInPat p0 ++ qs' ++ problemInPat (absBody p1)
src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs view
@@ -56,4 +56,3 @@ NoInsertNeeded -> return Nothing implicitP = Arg Hidden Relevant . unnamed . A.ImplicitP . PatRange $ noRange-
src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs view
@@ -30,10 +30,11 @@ tel <- normalise tel - reportSDoc "tc.lhs.inst" 10 $ sep+ reportSDoc "tc.lhs.inst" 10 $ vcat [ text "instantiateTel " , nest 2 $ addCtxTel tel $ fsep $ punctuate comma $ map (maybe (text "_") prettyTCM) s- , nest 2 $ prettyTCM tel+ , nest 2 $ text "tel =" <+> prettyTCM tel+-- , nest 2 $ text "tel =" <+> text (show tel) ] -- Shrinking permutation (removing Justs) (and its complement, and reverse)@@ -41,10 +42,10 @@ psR = reverseP ps psC = Perm (size s) [ i | (i, Just _) <- zip [0..] $ reverse s ] - reportS "tc.lhs.inst" 10 $ unlines- [ "ps = " ++ show ps- , "psR = " ++ show psR- , "psC = " ++ show psC+ reportSDoc "tc.lhs.inst" 10 $ vcat+ [ nest 2 $ text $ "ps = " ++ show ps+ , nest 2 $ text $ "psR = " ++ show psR+ , nest 2 $ text $ "psC = " ++ show psC ] -- s' : Substitution Γσ@@ -60,8 +61,10 @@ let tel1 = flattenTel tel names1 = teleNames tel - reportSDoc "tc.lhs.inst" 15 $ nest 2 $- text "tel1 =" <+> brackets (fsep $ punctuate comma $ map prettyTCM tel1)+ reportSDoc "tc.lhs.inst" 15 $ nest 2 $ vcat+ [ text "tel1 =" <+> brackets (fsep $ punctuate comma $ map prettyTCM tel1)+-- , text "tel1 =" <+> text (show tel1)+ ] -- tel2 : [Type Γσ]Γ let tel2 = substs rho tel1@@ -132,4 +135,3 @@ A.ConP _ _ _ -> True A.LitP _ -> True _ -> False-
src/full/Agda/TypeChecking/Rules/LHS/Problem.hs view
@@ -53,4 +53,3 @@ mempty = Problem [] mempty EmptyTel Problem ps1 qs1 tel1 `mappend` Problem ps2 qs2 tel2 = Problem (ps1 ++ ps2) (mappend qs1 qs2) (abstract tel1 tel2)-
src/full/Agda/TypeChecking/Rules/LHS/Split.hs view
@@ -6,8 +6,10 @@ import Control.Monad.Error import Data.Monoid import Data.List-import Data.Traversable hiding (mapM)+import Data.Traversable hiding (mapM, sequence) +import Agda.Interaction.Options+ import Agda.Syntax.Common import Agda.Syntax.Literal import Agda.Syntax.Position@@ -24,7 +26,10 @@ import Agda.TypeChecking.Rules.LHS.Problem import Agda.TypeChecking.Rules.Term import Agda.TypeChecking.Monad.Builtin+import Agda.TypeChecking.Free +import Agda.Utils.List+import Agda.Utils.Monad import Agda.Utils.Permutation import Agda.Utils.Tuple @@ -74,6 +79,10 @@ p <- lift $ expandLitPattern p case asView $ namedThing $ unArg p of (xs, p@(A.LitP lit)) -> do+ -- Note that, in the presence of --without-K, this branch is+ -- based on the assumption that the types of literals are+ -- not indexed.+ -- Andreas, 2010-09-07 cannot split on irrelevant args when (argRelevance a == Irrelevant) $ typeError $ SplitOnIrrelevant p a@@ -126,6 +135,10 @@ , nest 2 $ text "pars =" <+> fsep (punctuate comma $ map prettyTCM pars) , nest 2 $ text "ixs =" <+> fsep (punctuate comma $ map prettyTCM ixs) ]++ whenM (optWithoutK <$> pragmaOptions) $+ wellFormedIndices pars ixs+ return $ Split mempty xs (fmap (Focus c args (getRange p) q i d pars ixs) a)@@ -138,4 +151,34 @@ Split p1 xs foc p2 <- underAbstraction a tel $ \tel -> splitP ps qs tel return $ Split (mappend p0 p1) xs foc p2 +-- | Checks that the indices are constructors applied to distinct+-- variables which do not occur free in the parameters. +wellFormedIndices+ :: MonadTCM tcm+ => [Arg Term] -- ^ Parameters.+ -> [Arg Term] -- ^ Indices.+ -> tcm ()+wellFormedIndices pars ixs = do+ pars <- normalise pars+ ixs <- normalise ixs+ vs <- case constructorApplications ixs of+ Nothing -> typeError $ IndicesNotConstructorApplications ixs+ Just vs -> return vs+ unless (fastDistinct vs) $+ typeError $ IndexVariablesNotDistinct ixs+ case filter snd $ zip vs (map (`freeIn` pars) vs) of+ [] -> return ()+ (v , _) : _ -> typeError $ IndexFreeInParameter v pars+ where+ -- | If the term consists solely of constructors applied to+ -- variables, then the variables are returned, and otherwise+ -- nothing.+ constructorApplication :: Term -> Maybe [Nat]+ constructorApplication (Var x []) = Just [x]+ constructorApplication (Con c args) = constructorApplications args+ constructorApplication _ = Nothing++ constructorApplications :: [Arg Term] -> Maybe [Nat]+ constructorApplications args =+ concat <$> mapM (constructorApplication . unArg) args
src/full/Agda/TypeChecking/Rules/Record.hs view
@@ -46,7 +46,7 @@ -- get type of record t <- instantiateFull =<< typeOfConst name bindParameters ps t $ \tel t0 -> do- -- t = tel -> t0 where t0 must be a sort s + -- t = tel -> t0 where t0 must be a sort s t0' <- normalise t0 s <- case unEl t0' of Sort s -> return s@@ -76,14 +76,14 @@ let contype = telePi ftel (raise (size ftel) rect) (hasNamedCon, conName, conInfo) <- case con of- Just (A.Axiom i c _) -> return (True, c, i)- Just _ -> __IMPOSSIBLE__- Nothing -> do+ Just (A.Axiom i _ c _) -> return (True, c, i)+ Just _ -> __IMPOSSIBLE__+ Nothing -> do m <- killRange <$> currentModule c <- qualify m <$> freshName_ "recCon-NOT-PRINTED" return (False, c, i) - addConstant name $ Defn name t0 (defaultDisplayForm name) 0+ addConstant name $ Defn Relevant name t0 (defaultDisplayForm name) 0 $ Record { recPars = 0 , recClause = Nothing , recCon = conName@@ -98,7 +98,7 @@ } addConstant conName $- Defn conName contype (defaultDisplayForm conName) 0 $+ Defn Relevant conName contype (defaultDisplayForm conName) 0 $ Constructor { conPars = 0 , conSrcCon = conName , conData = name@@ -148,10 +148,14 @@ [A.Declaration] -> TCM () checkRecordProjections m q tel ftel fs = checkProjs EmptyTel ftel fs where+ checkProjs :: Telescope -> Telescope -> [A.Declaration] -> TCM ()+ checkProjs _ _ [] = return ()+ checkProjs ftel1 ftel2 (A.ScopedDecl scope fs' : fs) = setScope scope >> checkProjs ftel1 ftel2 (fs' ++ fs)+ checkProjs ftel1 (ExtendTel _ ftel2) (A.Field info x (Arg h rel t) : fs) = do -- check the type (in the context of the telescope) -- the previous fields will be free in@@ -212,7 +216,7 @@ [ VarP "x" | _ <- [1..size ftel] ] nobind 0 = id nobind n = Bind . Abs "_" . nobind (n - 1)- body = nobind (size tel - 1)+ body = nobind (size ptel) $ nobind (size ftel1) $ Bind . Abs "x" $ nobind (size ftel2)@@ -225,22 +229,30 @@ , clauseBody = body } clause2 = Clauses Nothing clause+ cc = compileClauses [clause2]++ reportSDoc "tc.cc" 10 $ do+ sep [ text "compiled clauses of " <+> prettyTCM projname+ , nest 2 $ text (show cc)+ ]+ escapeContext (size tel) $ do- addConstant projname $ Defn projname (killRange finalt) (defaultDisplayForm projname) 0+ addConstant projname $ Defn rel projname (killRange finalt) (defaultDisplayForm projname) 0 $ Function { funClauses = [clause2]- , funCompiled = compileClauses [clause2]+ , funCompiled = cc , funDelayed = NotDelayed , funInv = NotInjective , funAbstr = ConcreteDef , funPolarity = [] , funArgOccurrences = map (const Unused) hps ++ [Negative]+ , funProjection = Just (size hps + 1)+ -- index of the record argument, start counting with 1 } computePolarity projname - checkProjs (abstract ftel1 $ ExtendTel (Arg h Relevant t)+ checkProjs (abstract ftel1 $ ExtendTel (Arg h rel t) $ Abs (show $ qnameName projname) EmptyTel ) (absBody ftel2) fs checkProjs ftel1 ftel2 (d : fs) = do checkDecl d checkProjs ftel1 ftel2 fs-
src/full/Agda/TypeChecking/Rules/Term.hs view
@@ -16,7 +16,7 @@ import qualified Agda.Syntax.Abstract as A import qualified Agda.Syntax.Abstract.Views as A import qualified Agda.Syntax.Info as A-import Agda.Syntax.Concrete.Pretty () -- just Pretty instances+import Agda.Syntax.Concrete.Pretty () -- only Pretty instances import Agda.Syntax.Common import Agda.Syntax.Fixity import Agda.Syntax.Internal@@ -78,7 +78,7 @@ -- | Force a type to be a Pi. Instantiates if necessary. The 'Hiding' is only -- used when instantiating a meta variable.-{-+ forcePi :: MonadTCM tcm => Hiding -> String -> Type -> tcm (Type, Constraints) forcePi h name (El s t) = do t' <- reduce t@@ -98,8 +98,8 @@ cs <- equalType (El s t') ty ty' <- reduce ty return (ty', cs)--} + --------------------------------------------------------------------------- -- * Telescopes ---------------------------------------------------------------------------@@ -190,18 +190,18 @@ Con c [] <- constructorForm =<< reduce (Con c []) return c +-- | @checkArguments' exph r args t0 t e k@ tries @checkArguments exph args t0 t@.+-- If it succeeds, it continues @k@ with the returned results. If it fails,+-- it registers a postponed typechecking problem and returns the resulting new+-- meta variable.+checkArguments' ::+ ExpandHidden -> Range -> [NamedArg A.Expr] -> Type -> Type -> A.Expr ->+ (Args -> Type -> Constraints -> TCM Term) -> TCM Term checkArguments' exph r args t0 t e k = do z <- runErrorT $ checkArguments exph r args t0 t case z of Right (vs, t1, cs) -> k vs t1 cs- Left t0 -> do- let unblock = do- t0 <- reduceB $ unEl t0- case t0 of- Blocked{} -> return False- NotBlocked MetaV{} -> return False- _ -> return True- postponeTypeCheckingProblem e t unblock+ Left t0 -> postponeTypeCheckingProblem e t (unblockedTester t0) -- | Type check an expression. checkExpr :: A.Expr -> Type -> TCM Term@@ -243,6 +243,7 @@ hiddenLambdaOrHole _ = False -- Variable or constant application+ -- Subcase: ambiguous constructor _ | Application (HeadCon cs@(_:_:_)) args <- appView e -> do -- First we should figure out which constructor we want. reportSLn "tc.check.term" 40 $ "Ambiguous constructor: " ++ show cs@@ -291,8 +292,10 @@ Just c -> checkConstructorApplication e t c args Nothing -> postponeTypeCheckingProblem e t unblock + -- Subcase: non-ambiguous constructor | Application (HeadCon [c]) args <- appView e -> checkConstructorApplication e t c args+ -- Subcase: defined symbol or variable. | Application hd args <- appView e -> checkHeadApplication e t hd args @@ -345,11 +348,14 @@ top <- currentModule let name = "absurd" aux <- qualify top <$> freshName (getRange i) name+ -- if we are in irrelevant position, the helper function+ -- is added as irrelevant+ rel <- irrelevant <$> asks envIrrelevant reportSDoc "tc.term.absurd" 10 $ vcat- [ text "Adding absurd function" <+> prettyTCM aux+ [ text "Adding absurd function" <+> prettyTCM rel <> prettyTCM aux , nest 2 $ text "of type" <+> prettyTCM t' ]- addConstant aux $ Defn aux t' (defaultDisplayForm aux) 0+ addConstant aux $ Defn rel aux t' (defaultDisplayForm aux) 0 $ Function { funClauses = [Clauses Nothing@@ -366,6 +372,7 @@ , funAbstr = ConcreteDef , funPolarity = [Covariant] , funArgOccurrences = [Unused]+ , funProjection = Nothing } blockTerm t' (Def aux []) $ return cs' | otherwise -> typeError $ WrongHidingInLambda t'@@ -381,8 +388,6 @@ v <- checkExpr e t1 return (teleLam tel v, cs) blockTerm t v (return cs)- where- name (Arg h r (x,_)) = Arg h r x A.Lam i (A.DomainFree h x) e0 -> do -- (t',cs) <- forcePi h (show x) t@@ -468,9 +473,12 @@ A.ETel _ -> __IMPOSSIBLE__ - A.DontCare -> __IMPOSSIBLE__+ A.DontCare -> -- can happen in the context of with functions+ return DontCare+ -- __IMPOSSIBLE__ A.ScopedExpr scope e -> setScope scope >> checkExpr e t+ e0@(A.QuoteGoal _ x e) -> do t' <- etaContract =<< normalise t let metas = foldTerm (\v -> case v of@@ -482,7 +490,7 @@ [] -> do quoted <- quoteType t' tmType <- agdaTermType- (v,ty) <- addLetBinding x quoted tmType (inferExpr e)+ (v,ty) <- addLetBinding Relevant x quoted tmType (inferExpr e) blockTerm t' v $ leqType ty t' -- | Infer the type of a head thing (variable, function symbol, or constructor)@@ -518,6 +526,10 @@ inferDef mkTerm x = traceCall (InferDef (getRange x) x) $ do d <- instantiateDef =<< getConstInfo x+ -- irrelevant defs are only allowed in irrelevant position+ when (defRelevance d == Irrelevant) $ do+ irr <- asks envIrrelevant+ unless irr $ typeError $ DefinitionIsIrrelevant x vs <- freeVarsToApply x verboseS "tc.term.def" 10 $ do ds <- mapM prettyTCM vs@@ -678,26 +690,32 @@ else case hd of HeadCon [c] -> do (f, t0) <- inferHead hd+ reportSDoc "tc.term.con" 5 $ vcat+ [ text "checkHeadApplication inferred" <+>+ prettyTCM c <+> text ":" <+> prettyTCM t0+ ] checkArguments' ExpandLast (getRange hd) args t0 t e $ \vs t1 cs -> do TelV eTel eType <- telView t- TelV fTel fType <- telView t1+ -- If the expected type @eType@ is a metavariable we have to make+ -- sure it's instantiated to the proper pi type+ TelV fTel fType <- telViewUpTo (size eTel) t1 blockTerm t (f vs) $ (cs ++) <$> do -- We know that the target type of the constructor (fType) -- does not depend on fTel so we can compare fType and eType -- first.- -- This will fail- when (size eTel > size fTel) $ compareTel CmpLeq eTel fTel >> return () - -- If the expected type is a metavariable we have to make- -- sure it's instantiated to the proper pi type- let (fTel0, fTel1) = telFromList -*- telFromList- $ splitAt (size eTel)- $ telToList fTel- fType' = abstract fTel1 fType+ when (size eTel > size fTel) $+ compareTel CmpLeq eTel fTel >> return () -- This will fail! - cs1 <- addCtxTel eTel $ leqType fType' eType- cs2 <- compareTel CmpLeq eTel fTel0+ reportSDoc "tc.term.con" 10 $ vcat+ [ text "checking" <+>+ prettyTCM fType <+> text "?<=" <+> prettyTCM eType+ ]+ cs1 <- addCtxTel eTel $ leqType fType eType++ cs2 <- compareTel CmpLeq eTel fTel return $ cs1 ++ cs2+ HeadDef c | Just c == (nameOfSharp <$> kit) -> do -- TODO: Handle coinductive constructors under lets. lets <- envLetBindings <$> ask@@ -718,7 +736,10 @@ -- signature. i <- currentMutualBlock tel <- getContextTelescope- addConstant c' (Defn c' t (defaultDisplayForm c') i $ Axiom Nothing)+ -- If we are in irrelevant position, add definition irrelevantly.+ -- TODO: is this sufficient?+ rel <- irrelevant <$> asks envIrrelevant+ addConstant c' (Defn rel c' t (defaultDisplayForm c') i $ Axiom Nothing Nothing) -- Define and type check the fresh function. ctx <- getContext@@ -736,7 +757,7 @@ , text "was translated into the application" , nest 2 $ prettyTCM e' , text "and the function"- , nest 2 $ prettyTCM c' <+> text ":"+ , nest 2 $ prettyTCM rel <> prettyTCM c' <+> text ":" , nest 4 $ prettyTCM (telePi tel t) , nest 2 $ prettyA clause <> text "." ]@@ -872,11 +893,11 @@ checkLetBindings = foldr (.) id . map checkLetBinding checkLetBinding :: A.LetBinding -> TCM a -> TCM a-checkLetBinding b@(A.LetBind i x t e) ret =+checkLetBinding b@(A.LetBind i rel x t e) ret = traceCallCPS_ (CheckLetBinding b) ret $ \ret -> do t <- isType_ t- v <- checkExpr e t- addLetBinding x v t ret+ v <- applyRelevanceToContext rel $ checkExpr e t+ addLetBinding rel x v t ret checkLetBinding (A.LetApply i x tel m args rd rm) ret = do -- Any variables in the context that doesn't belong to the current -- module should go with the new module.@@ -894,4 +915,3 @@ withAnonymousModule x new ret -- LetOpen is only used for highlighting and has no semantics checkLetBinding A.LetOpen{} ret = ret-
src/full/Agda/TypeChecking/Serialise.hs view
@@ -77,7 +77,7 @@ -- 32-bit machines). Word64 does not have these problems. currentInterfaceVersion :: Word64-currentInterfaceVersion = 20100927 * 10 + 0+currentInterfaceVersion = 20110217 * 10 + 0 type Node = [Int32] -- constructor tag (maybe omitted) and arg indices @@ -554,9 +554,9 @@ value n = MutId `fmap` value n instance EmbPrj Definition where- icode (Defn a b c d e) = icode5' a b c d e- value = vcase valu where valu [a, b, c, d, e] = valu5 Defn a b c d e- valu _ = malformed+ icode (Defn rel a b c d e) = icode6' rel a b c d e+ value = vcase valu where valu [rel, a, b, c, d, e] = valu6 Defn rel a b c d e+ valu _ = malformed instance EmbPrj HaskellRepresentation where icode (HsType a) = icode1 0 a@@ -590,19 +590,19 @@ valu _ = malformed instance EmbPrj Defn where- icode (Axiom a) = icode1 0 a- icode (Function a b c d e f g) = icode7 1 a b c d e f g+ icode (Axiom a b) = icode2 0 a b+ icode (Function a b c d e f g h) = icode8 1 a b c d e f g h icode (Datatype a b c d e f g h i j) = icode10 2 a b c d e f g h i j icode (Record a b c d e f g h i j k) = icode11 3 a b c d e f g h i j k icode (Constructor a b c d e f) = icode6 4 a b c d e f- icode (Primitive a b c) = icode3 5 a b c+ icode (Primitive a b c d) = icode4 5 a b c d value = vcase valu where- valu [0, a] = valu1 Axiom a- valu [1, a, b, c, d, e, f, g] = valu7 Function a b c d e f g+ valu [0, a, b] = valu2 Axiom a b+ valu [1, a, b, c, d, e, f, g, h] = valu8 Function a b c d e f g h valu [2, a, b, c, d, e, f, g, h, i, j] = valu10 Datatype a b c d e f g h i j valu [3, a, b, c, d, e, f, g, h, i, j, k] = valu11 Record a b c d e f g h i j k valu [4, a, b, c, d, e, f] = valu6 Constructor a b c d e f- valu [5, a, b, c] = valu3 Primitive a b c+ valu [5, a, b, c, d] = valu4 Primitive a b c d valu _ = malformed instance EmbPrj a => EmbPrj (Case a) where
src/full/Agda/TypeChecking/SizedTypes.hs view
@@ -113,13 +113,16 @@ computeSizeConstraint :: MonadTCM tcm => ConstraintClosure -> tcm (Maybe SizeConstraint) computeSizeConstraint cl = liftTCM $- enterClosure cl $ \(ValueCmp CmpLeq _ u v) -> do- (a, n) <- sizeExpr u- (b, m) <- sizeExpr v- return $ Just $ Leq a (m - n) b- `catchError` \err -> case errError err of- PatternErr _ -> return Nothing- _ -> throwError err+ enterClosure cl $ \c ->+ case c of+ ValueCmp CmpLeq _ u v -> do+ (a, n) <- sizeExpr u+ (b, m) <- sizeExpr v+ return $ Just $ Leq a (m - n) b+ `catchError` \err -> case errError err of+ PatternErr _ -> return Nothing+ _ -> throwError err+ _ -> __IMPOSSIBLE__ -- | Throws a 'patternViolation' if the term isn't a proper size expression. sizeExpr :: MonadTCM tcm => Term -> tcm (SizeExpr, Int)
src/full/Agda/TypeChecking/Substitute.hs view
@@ -40,7 +40,7 @@ Pi _ _ -> __IMPOSSIBLE__ Fun _ _ -> __IMPOSSIBLE__ Sort _ -> __IMPOSSIBLE__- DontCare -> __IMPOSSIBLE__ + DontCare -> __IMPOSSIBLE__ instance Apply Type where apply = piApply@@ -55,14 +55,18 @@ apply (ExtendTel _ tel) (t : ts) = absApp tel (unArg t) `apply` ts instance Apply Definition where- apply (Defn x t df m d) args = Defn x (piApply t args) df m (apply d args)+ apply (Defn rel x t df m d) args = Defn rel x (piApply t args) df m (apply d args) instance Apply Defn where apply d args = case d of Axiom{} -> d- Function{ funClauses = cs, funCompiled = cc, funInv = inv } ->- d { funClauses = apply cs args, funCompiled = apply cc args- , funInv = apply inv args }+ Function{ funClauses = cs, funCompiled = cc, funInv = inv+ , funProjection = mn } ->+ d { funClauses = apply cs args+ , funCompiled = apply cc args+ , funInv = apply inv args+ , funProjection = fmap (nonNeg . \ n -> n - size args) mn+ } where nonNeg n = if n >= 0 then n else __IMPOSSIBLE__ Datatype{ dataPars = np, dataClause = cl } -> d { dataPars = np - size args, dataClause = apply cl args } Record{ recPars = np, recConType = t, recClause = cl, recTel = tel } ->@@ -175,14 +179,18 @@ abstract (ExtendTel arg tel') tel = ExtendTel arg $ fmap (`abstract` tel) tel' instance Abstract Definition where- abstract tel (Defn x t df m d) = Defn x (abstract tel t) df m (abstract tel d)+ abstract tel (Defn rel x t df m d) = Defn rel x (abstract tel t) df m (abstract tel d) instance Abstract Defn where abstract tel d = case d of Axiom{} -> d- Function{ funClauses = cs, funCompiled = cc, funInv = inv } ->+ Function{ funClauses = cs, funCompiled = cc, funInv = inv+ , funProjection = mn } -> d { funClauses = abstract tel cs, funCompiled = abstract tel cc- , funInv = abstract tel inv }+ , funInv = abstract tel inv+ , funProjection = fmap ((+) (size tel)) mn+ -- index of record arg shifts back by number of new args+ } Datatype{ dataPars = np, dataClause = cl } -> d { dataPars = np + size tel, dataClause = abstract tel cl } Record{ recPars = np, recConType = t, recClause = cl, recTel = tel' } ->@@ -502,5 +510,3 @@ vs = freeVars (absBody s2) fv = flexibleVars vs rv = rigidVars vs--
src/full/Agda/TypeChecking/Telescope.hs view
@@ -119,14 +119,32 @@ m = genericLength $ takeWhile (`notElem` is) (reverse js) (tel1, tel2) = telFromList -*- telFromList $ genericSplitAt (n - m) $ telToList tel' +{- Andreas 2010-10-01: this comment seems stale. Where is the unsafe variant? -- | A safe variant of telView. +OLD CODE: telView :: MonadTCM tcm => Type -> tcm TelView telView t = do t <- reduce t case unEl t of Pi a (Abs x b) -> absV a x <$> telView b Fun a b -> absV a "_" <$> telView (raise 1 b)+ _ -> return $ TelV EmptyTel t+ where+ absV a x (TelV tel t) = TelV (ExtendTel a (Abs x tel)) t+-}+telView :: MonadTCM tcm => Type -> tcm TelView+telView = telViewUpTo (-1)++-- | @telViewUpTo n t@ takes off the first @n@ function types of @t@.+-- Takes off all if $n < 0$.+telViewUpTo :: MonadTCM tcm => Int -> Type -> tcm TelView+telViewUpTo 0 t = return $ TelV EmptyTel t+telViewUpTo n t = do+ t <- reduce t+ case unEl t of+ Pi a (Abs x b) -> absV a x <$> telViewUpTo (n-1) b+ Fun a b -> absV a "_" <$> telViewUpTo (n-1) (raise 1 b) _ -> return $ TelV EmptyTel t where absV a x (TelV tel t) = TelV (ExtendTel a (Abs x tel)) t
src/full/Agda/TypeChecking/Test/Generators.hs view
@@ -517,4 +517,3 @@ prop_wellScopedVars conf = forAllShrink (genC conf) (shrinkC conf) $ \t -> isWellScoped conf (t :: Term)-
src/full/Agda/TypeChecking/UniversePolymorphism.hs view
@@ -86,4 +86,3 @@ -- do something interesting with the solution addConstraints rest return ()-
src/full/Agda/TypeChecking/With.hs view
@@ -150,7 +150,7 @@ -- Compute the argument telescope for the constructor Con c [] <- constructorForm =<< normalise (Con c [])- Defn _ ct _ _ Constructor{conPars = np} <- getConstInfo c+ Defn _ _ ct _ _ Constructor{conPars = np} <- getConstInfo c let ct' = ct `apply` genericTake np us TelV tel' _ <- telView ct' @@ -289,6 +289,3 @@ constructorsInClause :: ConPos -> A.Clause -> [Range] constructorsInClause pos (A.Clause (A.LHS _ _ ps wps) rhs _) = []---
src/full/Agda/Utils/Char.hs view
@@ -12,4 +12,3 @@ octDigit :: Char -> Int octDigit = decDigit-
src/full/Agda/Utils/Either.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ ------------------------------------------------------------------------ -- | Utilities for the 'Either' type ------------------------------------------------------------------------@@ -12,6 +14,9 @@ import Agda.Utils.QuickCheck import Agda.Utils.TestHelpers +#include "../undefined.h"+import Agda.Utils.Impossible+ -- | Returns 'True' iff the argument is @'Right' x@ for some @x@. isRight :: Either a b -> Bool@@ -45,9 +50,12 @@ prop_allRight xs = allRight xs == if all isRight xs then- Right (map (\(Right x) -> x) xs)+ Right (map fromRight xs) else Left xs+ where+ fromRight (Right x) = x+ fromRight (Left _) = __IMPOSSIBLE__ ------------------------------------------------------------------------ -- All tests
src/full/Agda/Utils/Fresh.hs view
@@ -21,4 +21,3 @@ withFresh ret = do (i,e) <- asks nextFresh local (const e) $ ret i-
src/full/Agda/Utils/Hash.hs view
@@ -9,4 +9,3 @@ prime1 = 1230371 prime2 = 446441 prime3 = 275604541-
src/full/Agda/Utils/IO/Locale.hs view
@@ -13,17 +13,21 @@ ( print , putStr , putStrLn+ , stdoutFlush , hGetContents ) where import Prelude (Show, IO, String)-import System.IO (Handle)+import System.IO (Handle, hFlush, stdout) #if MIN_VERSION_base(4,2,0) import qualified Prelude import qualified System.IO as IO #else import qualified System.IO.UTF8 as UTF8 #endif++stdoutFlush :: IO ()+stdoutFlush = hFlush stdout -- | Prints the value.
src/full/Agda/Utils/List.hs view
@@ -8,9 +8,10 @@ import Agda.Utils.Tuple import Text.Show.Functions+import Data.Function import Data.List import Data.Maybe-import Data.Function+import qualified Data.Set as Set mhead :: [a] -> Maybe a mhead [] = Nothing@@ -60,6 +61,16 @@ distinct [] = True distinct (x:xs) = x `notElem` xs && distinct xs +-- | An optimised version of 'distinct'.+--+-- Precondition: The list's length must fit in an 'Int'.++fastDistinct :: Ord a => [a] -> Bool+fastDistinct xs = Set.size (Set.fromList xs) == length xs++prop_distinct_fastDistinct :: [Integer] -> Bool+prop_distinct_fastDistinct xs = distinct xs == fastDistinct xs+ -- | Checks if all the elements in the list are equal. Assumes that -- the 'Eq' instance stands for an equivalence relation. allEqual :: Eq a => [a] -> Bool@@ -136,7 +147,8 @@ tests :: IO Bool tests = runTests "Agda.Utils.List"- [ quickCheck' prop_groupBy'+ [ quickCheck' prop_distinct_fastDistinct+ , quickCheck' prop_groupBy' , quickCheck' prop_extractNthElement , quickCheck' prop_genericElemIndex ]
src/full/Agda/Utils/Map.hs view
@@ -37,4 +37,3 @@ -- | Filter a map based on the keys. filterKeys :: Ord k => (k -> Bool) -> Map k a -> Map k a filterKeys p = filterWithKey (const . p)-
src/full/Agda/Utils/Maybe.hs view
@@ -10,4 +10,3 @@ fromMaybeM :: Monad m => m a -> m (Maybe a) -> m a fromMaybeM m mm = maybe m return =<< mm-
src/full/Agda/Utils/Monad.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts, CPP #-} module Agda.Utils.Monad ( module Agda.Utils.Monad@@ -21,36 +21,6 @@ #include "../undefined.h" import Agda.Utils.Impossible --- Instances ----------------------------------------------------------------instance Applicative (Reader env) where- pure = return- (<*>) = ap--instance (Error e, Monad m) => Applicative (ErrorT e m) where- pure = return- (<*>) = ap--instance Monad m => Applicative (ReaderT env m) where- pure = return- (<*>) = ap--instance Monad m => Applicative (StateT s m) where- pure = return- (<*>) = ap--instance Monad m => Applicative (SS.StateT s m) where- pure = return- (<*>) = ap--instance (Monoid o, Monad m) => Applicative (WriterT o m) where- pure = return- (<*>) = ap--instance Applicative (State s) where- pure = return- (<*>) = ap- -- Monads ----------------------------------------------------------------- infixl 8 <.>@@ -138,8 +108,8 @@ -- Read ------------------------------------------------------------------- -readM :: (Monad m, Read a) => String -> m a+readM :: (Error e, MonadError e m, Read a) => String -> m a readM s = case reads s of [(x,"")] -> return x- _ -> fail $ "readM: parse error string " ++ s-+ _ ->+ throwError $ strMsg $ "readM: parse error string " ++ s
src/full/Agda/Utils/Permutation.hs view
@@ -18,14 +18,14 @@ showList :: String -> (a -> String) -> [a] -> String showList sep f [] = "" showList sep f [e] = f e- showList sep f (e:es) = f e ++ sep ++ showList sep f es + showList sep f (e:es) = f e ++ sep ++ showList sep f es instance Sized Permutation where size (Perm _ xs) = size xs -- | @permute [2,3,1] [x1,x2,x3] = [x2,x3,x1]@ -- More precisely, @permute indices list = sublist@, generates @sublist@--- from @list@ by picking the elements of list as indicated by @indices@. +-- from @list@ by picking the elements of list as indicated by @indices@. -- @permute [2,4,1] [x1,x2,x3,x4] = [x2,x4,x1]@ permute :: Permutation -> [a] -> [a] permute (Perm _ is) xs = map (xs !!!) is@@ -102,4 +102,3 @@ where xs = [ x | (x, []) <- g ] remove x g = [ (y, filter (/= x) ys) | (y, ys) <- g, x /= y ]-
src/full/Agda/Utils/Pointer.hs view
@@ -22,4 +22,3 @@ y <- f x store p y return y-
src/full/Agda/Utils/ReadP.hs view
@@ -1,4 +1,4 @@-{-# OPTIONS_GHC -fglasgow-exts #-} -- unboxed integers+{-# LANGUAGE MagicHash, Rank2Types #-} ----------------------------------------------------------------------------- -- |
src/full/Agda/Utils/SemiRing.hs view
@@ -13,4 +13,3 @@ otimes Nothing _ = Nothing otimes _ Nothing = Nothing otimes (Just x) (Just y) = Just (otimes x y)-
src/full/Agda/Utils/Size.hs view
@@ -18,4 +18,3 @@ instance Sized (Set a) where size = fromIntegral . Set.size-
src/full/Agda/Utils/Suffix.hs view
@@ -21,4 +21,3 @@ addSuffix s NoSuffix = s addSuffix s (Prime n) = s ++ replicate n '\'' addSuffix s (Index i) = s ++ show i-
src/full/Agda/Utils/TestHelpers.hs view
@@ -15,13 +15,17 @@ , maybeGen , maybeCoGen , listOfElements+ , two+ , three -- * Test driver. , runTests ) where -import Agda.Utils.QuickCheck+import Control.Monad import Data.List++import Agda.Utils.QuickCheck import qualified Agda.Utils.IO.Locale as LocIO ------------------------------------------------------------------------@@ -114,6 +118,16 @@ maybeCoGen :: (a -> Gen b -> Gen b) -> (Maybe a -> Gen b -> Gen b) maybeCoGen f Nothing = variant 0 maybeCoGen f (Just x) = variant 1 . f x++-- | Generates two elements.++two :: Gen a -> Gen (a, a)+two gen = liftM2 (,) gen gen++-- | Generates three elements.++three :: Gen a -> Gen (a, a, a)+three gen = liftM3 (,,) gen gen gen ------------------------------------------------------------------------ -- Test driver
src/full/Agda/Utils/Trie.hs view
@@ -79,4 +79,3 @@ prop_path ks m = collect (length $ modelPath ks m) $ lookupPath ks (modelToTrie m) == modelPath ks m-
src/full/Agda/Utils/Tuple.hs view
@@ -12,4 +12,3 @@ uncurry3 :: (a -> b -> c -> d) -> (a,b,c) -> d uncurry3 f (x,y,z) = f x y z-
src/full/Agda/Utils/Warshall.hs view
@@ -485,7 +485,7 @@ -- | Check that all transitive edges are added. prop_path n' = forAll (genGraph_ n) $ \g ->- forAll (replicateM 2 $ choose (0, n - 1)) $ \[i, j] ->+ forAll (two $ choose (0, n - 1)) $ \(i, j) -> forAll (genPath n i j g) $ \g' -> isJust (lookupEdge i j $ warshallG g') where@@ -498,7 +498,7 @@ -- | Check that no edges are added between components. prop_disjoint n' =- forAll (replicateM 2 $ genGraph_ n) $ \[g1, g2] ->+ forAll (two $ genGraph_ n) $ \(g1, g2) -> let g = Map.union (mapNodes Left g1) (mapNodes Right g2) g' = warshallG g in all disjoint (Map.assocs g')