diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -6,6 +6,54 @@
 and this project adheres to the
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
+## v0.9.0 — 2026-06-24
+
+Added:
+
+- **Typed holes and a structured goal/context query.** Write `?` (or a named `?goal`) for an unfilled subterm. By default `rzk typecheck` reports any hole as an error, so finished work and CI never admit holes. With `rzk typecheck --allow-holes` it instead prints, for each hole, its expected type (the goal) and its local context. The local context lists the term variables, cube variables, and tope assumptions in scope; the global environment is excluded. The same data is available to library consumers (the playground/game and the LSP) through `typecheckModulesWithHoles`, which returns structured `HoleInfo` values. Holes are checked only where their type is known, that is, in checking position. A hole in inference position is reported rather than guessed. When a hole is the argument of a shape-restricted function, its goal is shown as the shape `(s : I | ψ s ∧ φ s)` (the membership tope), and extension-type goals show their boundary `A [φ ↦ a]` (see [#237](https://github.com/rzk-lang/rzk/pull/237), [#240](https://github.com/rzk-lang/rzk/pull/240)).
+
+- **Hint inventory for a hole.** Alongside the goal and context, the query records the moves that fit. It offers three kinds of move. The first is type-directed *elimination candidates* over the hypotheses (a function applied to holes, a projection of a Σ, or path induction by `idJ`, see [#244](https://github.com/rzk-lang/rzk/pull/244)). The second is *introduction forms* that build the goal from its head (a λ, a pair, `refl`, or a tope constructor). The third, in a shape setting, is the context-driven `recBOT` (ex falso) and `recOR` case-splits (see [#245](https://github.com/rzk-lang/rzk/pull/245)). A caller may additionally allow-list named lemmas in scope, so they surface as candidates applied to holes (see [#256](https://github.com/rzk-lang/rzk/pull/256)). Pattern binders are restored throughout goals, errors, and candidates, so a goal reads `\ (t , s) → ?` rather than in terms of projections (see [#242](https://github.com/rzk-lang/rzk/pull/242), [#246](https://github.com/rzk-lang/rzk/pull/246)).
+
+- **Structured diagnostics.** Type errors and holes are now available as structured data, not only as a formatted string. A diagnostic in `Rzk.Diagnostic` carries a severity, a stable code, a source location, and a message. `rzk typecheck --json` emits all diagnostics (both type errors and holes) as JSON on stdout, for editor-agnostic tooling and CI (see [#238](https://github.com/rzk-lang/rzk/pull/238), [#243](https://github.com/rzk-lang/rzk/pull/243)). The language server consumes the same structured diagnostics. It shows each hole's goal and context as a warning rather than a hard error, in the spirit of Agda's yellow "unsolved" highlight, and it now reports all diagnostics for a file together. Source spans remain line-level.
+
+- **Goal-cell diagrams.** When a hole's goal is a shape (an arrow, triangle, or square), the query exposes an SVG of the cell the hole must inhabit, drawn from an abstract inhabitant of the goal. A new `render-hide-term` option draws the shape with the proof term hidden, keeping only the given boundary labels (see [#253](https://github.com/rzk-lang/rzk/pull/253)).
+
+- Experimental **cubical interval** `#!rzk II` (`#!rzk 𝕀`), a lattice cube added on top of the modal type system. This is the intended sound home for an amazing right adjoint `#!rzk √`, as flagged in the v0.8.0 release notes (see [#228](https://github.com/rzk-lang/rzk/pull/228)).
+
+Changed:
+
+- Experimental **modal syntax** is less noisy. A modal type is now written `#!rzk m A` instead of `#!rzk <| m | A |>`, and a modal binding is `#!rzk (x :m A)` (see [#227](https://github.com/rzk-lang/rzk/pull/227)). Modal bindings on Π-, Σ-, and λ-types are now primitive rather than sugar for `#!rzk let mod`, and modal extraction is restricted to the right-adjoint modalities (`#!rzk ♯`, `#!rzk ᵒᵖ`, `#!rzk _id`) (see [#248](https://github.com/rzk-lang/rzk/pull/248)).
+
+- Experimental: modalities are tracked through the tope layer, so the tope solver knows which topes are accessible under which modality (see [#230](https://github.com/rzk-lang/rzk/pull/230)).
+
+- The `#!rzk uses`/unused-variable check now keys off the definition as written rather than its weak head normal form. Reduction can drop or expose a variable occurrence, so a genuine use could be reported as unused, or a transitive dependency on an assumption hidden. Both are now classified from the written term (see [#255](https://github.com/rzk-lang/rzk/pull/255)).
+
+Other changes:
+
+- In lenient (`--allow-holes`) mode, we tolerate diagnostics that only a finished term must satisfy, so an in-progress sketch still typechecks. These are an unused `#!rzk uses`-variable (see [#249](https://github.com/rzk-lang/rzk/pull/249)), a hole-introduction binder that would shadow a name in scope (see [#250](https://github.com/rzk-lang/rzk/pull/250)), and a term whose type fails only around a hole (see [#251](https://github.com/rzk-lang/rzk/pull/251)). We also show the boundary in a `#!rzk recOR` branch goal (see [#252](https://github.com/rzk-lang/rzk/pull/252)) and accept holes in more positions (see [#239](https://github.com/rzk-lang/rzk/pull/239)).
+
+- Build `rzk` with `build-type: Simple` instead of `Custom`. Thus the package now builds under the **GHC WebAssembly backend** (a `Custom` `Setup.hs` cannot run there) and no longer requires BNFC, `alex`, or `happy` to install (e.g. from Hackage). The parser and lexer are still generated from `grammar/Syntax.cf`, but out of band: run `make -C rzk regen-parser` after editing the grammar. A new `Parser up-to-date` CI workflow regenerates from the grammar and fails on drift, and the WASM/GHCJS CI lanes no longer patch the package before building (see [#236](https://github.com/rzk-lang/rzk/pull/236)).
+
+Fixes:
+
+- A `#!rzk recOR` in the cube or tope layer is now a type error instead of a panic (see [#254](https://github.com/rzk-lang/rzk/pull/254)).
+- Check each `#!rzk recOR` branch against the expected type (see [#247](https://github.com/rzk-lang/rzk/pull/247)).
+- Warn about overhanging `#!rzk recOR` faces and reject disjoint (vacuous) ones, replacing two checks that were silently vacuous (see [#233](https://github.com/rzk-lang/rzk/pull/233)).
+- Check a term even under an absurd (`#!rzk recBOT`) context, so an ill-formed body is no longer admitted under a false hypothesis (see [#234](https://github.com/rzk-lang/rzk/pull/234)).
+- Experimental modal layer: several corrections (see [#258](https://github.com/rzk-lang/rzk/pull/258)). The coercion relation is completed with `#!rzk ♭ ⇒ ᵒᵖ` and `#!rzk ᵒᵖ ⇒ ♯`, so a flat variable is now accessible under `#!rzk ᵒᵖ`. The normal form of `#!rzk let mod` extracts only for the right-adjoint modalities, matching the typechecker. And `#!rzk unflipᵒᵖ` now expects an interval cube under `#!rzk ᵒᵖ` (i.e. `#!rzk ᵒᵖ 2` or `#!rzk ᵒᵖ 𝕀`) rather than a bare cube, mirroring `#!rzk flipᵒᵖ`.
+
+Documentation:
+
+- Remove a malicious `polyfill.io` dependency from the docs (see [#231](https://github.com/rzk-lang/rzk/pull/231)).
+
+CI / infrastructure:
+
+- Add a CI job that builds the `rzk` library with the GHC WebAssembly backend (see [#235](https://github.com/rzk-lang/rzk/pull/235)).
+- Import `RzkConfig` qualified (see [#232](https://github.com/rzk-lang/rzk/pull/232)).
+- Deploy the docs and the playground reliably on tag pushes, so a release publishes both (past releases sometimes skipped them).
+- Move the MkDocs typecheck and deploy into the GHC workflow and reuse the `rzk` binary built in the same run, so the docs are checked with the version they document rather than with an older release.
+- Build all four OS only on pull requests, tags, and `main`. A `develop` push, already validated by its pull request, builds Linux only. A per-ref concurrency group cancels a superseded pull-request run, but never a push or tag run that may be deploying.
+
 ## v0.8.0 — 2026-06-04
 
 Major changes:
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE CPP #-}
--- Source: https://github.com/haskell/cabal/issues/6726#issuecomment-918663262
-
--- | Custom Setup that runs bnfc to generate the language sub-libraries
--- for the parsers included in Ogma.
-module Main (main) where
-
-import           Distribution.Simple         (defaultMainWithHooks,
-                                              hookedPrograms, postConf,
-                                              preBuild, simpleUserHooks)
-import           Distribution.Simple.Program (Program (..), findProgramVersion,
-                                              simpleProgram)
-import           System.Process              (system)
-
--- | Run BNFC on the grammar before the actual build step.
---
--- All options for bnfc are hard-coded here.
-main :: IO ()
-main = defaultMainWithHooks $ simpleUserHooks
-  { hookedPrograms = [ bnfcProgram ]
-  , postConf       = \args flags packageDesc localBuildInfo -> do
-#ifndef mingw32_HOST_OS
-      _ <- system "bnfc -d -p Language.Rzk --generic --functor --text-token -o src/ grammar/Syntax.cf"
-      _ <- system "alex --ghc src/Language/Rzk/Syntax/Lex.x"
-      _ <- system "happy --array --info --ghc --coerce src/Language/Rzk/Syntax/Par.y"
-#endif
-      postConf simpleUserHooks args flags packageDesc localBuildInfo
-  , preBuild       = \args flags -> do
-#ifndef mingw32_HOST_OS
-      _ <- system "bnfc -d -p Language.Rzk --generic --functor --text-token -o src/ grammar/Syntax.cf"
-      _ <- system "alex --ghc src/Language/Rzk/Syntax/Lex.x"
-      _ <- system "happy --array --info --ghc --coerce src/Language/Rzk/Syntax/Par.y"
-#endif
-      preBuild simpleUserHooks args flags
-  }
-
--- | TODO: This should be in Cabal.Distribution.Simple.Program.Builtin.
-bnfcProgram :: Program
-bnfcProgram = (simpleProgram "bnfc")
-  { programFindVersion = findProgramVersion "--version" id
-  }
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -22,10 +22,15 @@
 import           Options.Generic
 import           System.Exit             (exitFailure, exitSuccess)
 
+import           Data.Aeson              (encode)
+import qualified Data.ByteString.Lazy.Char8 as BL8
 import           Data.Functor            (void, (<&>))
 import qualified Data.Text.IO            as T
 
 import           Paths_rzk               (version)
+import           Rzk.Diagnostic          (Diagnostic (..), Severity (..),
+                                          diagnoseHole, diagnoseTypeError,
+                                          ppHoleInfo)
 import           Rzk.Format              (formatFile, formatFileWrite,
                                           isWellFormattedFile)
 import           Rzk.Main
@@ -41,8 +46,18 @@
     <$> parseFields (Just "Check if the files are correctly formatted") (Just "check") (Just 'c') Nothing
     <*> parseFields (Just "Write formatted file to disk") (Just "write") (Just 'w') Nothing
 
+data TypecheckOptions = TypecheckOptions
+  { typecheckAllowHoles :: Bool
+  , typecheckJson       :: Bool
+  } deriving (Generic, Show, ParseRecord, Read, ParseField)
+
+instance ParseFields TypecheckOptions where
+  parseFields _ _ _ _ = TypecheckOptions
+    <$> parseFields (Just "Allow unsolved holes: report each hole's goal and local context instead of failing") (Just "allow-holes") (Just 'H') Nothing
+    <*> parseFields (Just "Output diagnostics (type errors and holes) as JSON on stdout") (Just "json") (Just 'j') Nothing
+
 data Command
-  = Typecheck [FilePath]
+  = Typecheck TypecheckOptions [FilePath]
   | Lsp
   | Format FormatOptions [FilePath]
   | Version
@@ -54,17 +69,36 @@
   withUtf8 $
 #endif
     getRecord "rzk: an experimental proof assistant for synthetic ∞-categories" >>= \case
-    Typecheck paths -> do
+    Typecheck (TypecheckOptions {typecheckAllowHoles = allowHolesFlag, typecheckJson = jsonFlag}) paths -> do
       modules <- parseRzkFilesOrStdin paths
-      case defaultTypeCheck (typecheckModulesWithLocation modules) of
-        Left err -> do
-          putStrLn "An error occurred when typechecking!"
-          putStrLn $ unlines
-            [ "Type Error:"
-            , ppTypeErrorInScopedContext' BottomUp err
-            ]
-          exitFailure
-        Right _decls -> putStrLn "Everything is ok!"
+      let reportError err = do
+            putStrLn "An error occurred when typechecking!"
+            putStrLn $ unlines
+              [ "Type Error:"
+              , ppTypeErrorInScopedContext' BottomUp err
+              ]
+      if jsonFlag
+        -- Machine-readable mode: emit every diagnostic (type errors as errors,
+        -- holes as hints) as a JSON array on stdout; progress goes to stderr.
+        -- Exit non-zero iff there is an error-severity diagnostic.
+        then do
+          let diagnostics = case typecheckModulesWithHoles modules of
+                Left err -> [diagnoseTypeError BottomUp err]
+                Right (_decls, errors, holes) ->
+                  map (diagnoseTypeError BottomUp) errors ++ map diagnoseHole holes
+          BL8.putStrLn (encode diagnostics)
+          when (any ((== SeverityError) . diagnosticSeverity) diagnostics) exitFailure
+        else if allowHolesFlag
+          then case typecheckModulesWithHoles modules of
+            Left err -> reportError err >> exitFailure
+            Right (_decls, errors, holes) -> do
+              forM_ holes (putStr . ppHoleInfo)
+              case errors of
+                [] -> putStrLn ("Everything is ok! (" <> show (length holes) <> " hole(s))")
+                _  -> do forM_ errors reportError; exitFailure
+          else case defaultTypeCheck (typecheckModulesWithLocation modules) of
+            Left err -> reportError err >> exitFailure
+            Right _decls -> putStrLn "Everything is ok!"
 
     Lsp ->
 #ifdef LSP_ENABLED
diff --git a/grammar/Syntax.cf b/grammar/Syntax.cf
--- a/grammar/Syntax.cf
+++ b/grammar/Syntax.cf
@@ -5,7 +5,7 @@
 
 token VarIdentToken ((char - ["-?!.\\;,#\"][)(}{><| \t\n\r"]) (char - ["\\;,#\"][)(}{><| \t\n\r"])*) ;
 
-token HoleIdentToken '?' ;
+token HoleIdentToken ('?' (char - ["\\;,#\"][)(}{><| \t\n\r"])*) ;
 
 Module. Module ::= LanguageDecl [Command] ;
 
@@ -70,7 +70,8 @@
 ParamPatternType.      Param ::= "(" [Pattern] ":" Term ")" ;
 ParamPatternShape.     Param ::= "(" [Pattern] ":" Term "|" Term ")" ;
 ParamPatternShapeDeprecated. Param ::= "{" Pattern ":" Term "|" Term "}" ;
-ParamPatternModalType. Param ::= "(" [Pattern] ":" Modality Term ")" ;
+ParamPatternModalType. Param ::= "(" [Pattern] ModalColon Term ")" ;
+ParamPatternModalShape. Param ::= "(" [Pattern] ModalColon Term "|" Term ")" ;
 separator nonempty Param "" ;
 
 -- Name introduction for let bindings
@@ -85,11 +86,12 @@
 ParamVarShapeDeprecated. ParamDecl ::= "{" "(" Pattern ":" Term ")" "|" Term "}" ;
 paramVarShapeDeprecated. ParamDecl ::= "{" Pattern ":" Term "|" Term "}" ;
 define paramVarShapeDeprecated pat cube tope = ParamVarShapeDeprecated pat cube tope ;
-ParamTermModalType.    ParamDecl ::= "(" Term ":" Modality Term ")" ;
+ParamTermModalType.    ParamDecl ::= "(" Term ModalColon Term ")" ;
+ParamTermModalShape.   ParamDecl ::= "(" Term ModalColon Term "|" Term ")" ;
 
 -- Parameter declaration for Sigma types
 SigmaParam.      SigmaParam ::= Pattern ":" Term ;
-SigmaParamModal. SigmaParam ::= Pattern ":" Modality Term ;
+SigmaParamModal. SigmaParam ::= Pattern ModalColon Term ;
 separator nonempty SigmaParam "," ;
 
 Restriction. Restriction ::= Term "↦" Term ;
@@ -108,6 +110,15 @@
 Single.  ModComp ::= Modality ;
 Comp.    ModComp ::= Modality "/" Modality ;
 
+-- Modal colon (combined : with modality, no space between : and modality)
+ModalColonFlat.        ModalColon ::= ":♭" ;
+ModalColonSharp.       ModalColon ::= ":♯" ;
+ModalColonOp.          ModalColon ::= ":ᵒᵖ" ;
+ModalColonId.          ModalColon ::= ":_id" ;
+ASCII_ModalColonFlat.  ModalColon ::= ":_b" ;
+ASCII_ModalColonSharp. ModalColon ::= ":_#" ;
+ASCII_ModalColonOp.    ModalColon ::= ":_op" ;
+
 -- Universes
 Universe.       Term7 ::= "U" ;
 UniverseCube.   Term7 ::= "CUBE" ;
@@ -118,6 +129,9 @@
 Cube2.          Term7 ::= "2" ;
 Cube2_0.        Term7 ::= "0₂" ;
 Cube2_1.        Term7 ::= "1₂" ;
+CubeI.          Term7 ::= "𝕀" ;
+CubeI_0.        Term7 ::= "0ᵢ" ;
+CubeI_1.        Term7 ::= "1ᵢ" ;
 CubeProduct.    Term5 ::= Term5 "×" Term6 ;
 -- Topes
 TopeTop.        Term7 ::= "⊤" ;
@@ -145,7 +159,7 @@
 -- Types
 TypeFun.        Term1 ::= ParamDecl "→" Term1 ;
 TypeSigma.      Term1 ::= "Σ" "(" Pattern ":" Term ")" "," Term1 ;
-TypeSigmaModal. Term1 ::= "Σ" "(" Pattern ":" Modality Term ")" "," Term1 ;
+TypeSigmaModal.    Term1 ::= "Σ" "(" Pattern ModalColon Term ")" "," Term1 ;
 TypeSigmaTuple. Term1 ::= "Σ" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ;
 TypeUnit.       Term7 ::= "Unit" ;
 TypeId.         Term1 ::= Term2 "=_{" Term "}" Term2 ;
@@ -159,7 +173,7 @@
 Pair.           Term7 ::= "(" Term "," Term ")" ;
 Tuple.          Term7 ::= "(" Term "," Term "," [Term] ")" ;
 ModApp.         Term7 ::= "mod" Modality Term7 ;
-ModType.        Term7 ::= "<|" Modality "|" Term "|>" ;
+ModType.        Term7 ::= Modality Term7 ;
 ModExtract.     Term6 ::= "$extract$" ModComp Term7 ;
 LetMod.         Term1 ::= "let" "mod" ModComp Bind ":=" Term "in" Term ;
 First.          Term6 ::= "π₁" Term7 ;
@@ -186,6 +200,9 @@
 ASCII_CubeUnitStar.   Term7 ::= "*_1" ;
 ASCII_Cube2_0.        Term7 ::= "0_2" ;
 ASCII_Cube2_1.        Term7 ::= "1_2" ;
+ASCII_CubeI.          Term7 ::= "II" ;
+ASCII_CubeI_0.        Term7 ::= "0_I" ;
+ASCII_CubeI_1.        Term7 ::= "1_I" ;
 
 ASCII_TopeTop.        Term7 ::= "TOP" ;
 ASCII_TopeBottom.     Term7 ::= "BOT" ;
@@ -196,7 +213,8 @@
 
 ASCII_TypeFun.        Term1 ::= ParamDecl "->" Term1 ;
 ASCII_TypeSigma.      Term1 ::= "Sigma" "(" Pattern ":" Term ")" "," Term1 ;
-ASCII_TypeSigmaModal. Term1 ::= "Sigma" "(" Pattern ":" Modality Term ")" "," Term1 ;
+ascii_TypeSigmaModal. Term1 ::= "Sigma" "(" Pattern ModalColon Term ")" "," Term1 ;
+define ascii_TypeSigmaModal p mc t r = TypeSigmaModal p mc t r ;
 ASCII_TypeSigmaTuple. Term1 ::= "Sigma" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ;
 
 ASCII_Lambda.         Term1 ::= "\\" [Param] "->" Term1 ;
diff --git a/rzk.cabal b/rzk.cabal
--- a/rzk.cabal
+++ b/rzk.cabal
@@ -1,11 +1,11 @@
-cabal-version: 1.24
+cabal-version: 2.0
 
--- This file has been generated from package.yaml by hpack version 0.39.1.
+-- This file has been generated from package.yaml by hpack version 0.39.6.
 --
 -- see: https://github.com/sol/hpack
 
 name:           rzk
-version:        0.8.0
+version:        0.9.0
 synopsis:       An experimental proof assistant for synthetic ∞-categories
 description:    Please see the README on GitHub at <https://github.com/rzk-lang/rzk#readme>
 category:       Dependent Types
@@ -16,15 +16,27 @@
 copyright:      2023-2025 Nikolai Kudasov
 license:        BSD3
 license-file:   LICENSE
-build-type:     Custom
+build-type:     Simple
 extra-source-files:
     grammar/Syntax.cf
     test/typecheck/SCHEMA.md
     test/typecheck/cases/happy-check.rzk
+    test/typecheck/cases/happy-flip-unflip.rzk
+    test/typecheck/cases/happy-interval-basics.rzk
+    test/typecheck/cases/happy-interval-subtyping.rzk
     test/typecheck/cases/happy-issue-9-relfunext2-id.rzk
     test/typecheck/cases/happy-modal-basics.rzk
+    test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk
+    test/typecheck/cases/happy-modal-flat-under-op.rzk
     test/typecheck/cases/happy-modal-inv.rzk
+    test/typecheck/cases/happy-modal-tope-unwrap.rzk
+    test/typecheck/cases/happy-modal-topes.rzk
+    test/typecheck/cases/happy-op-hom-to-hom.rzk
+    test/typecheck/cases/happy-recbot-term-wellformed.rzk
+    test/typecheck/cases/happy-recor-guard-exceeds-context.rzk
+    test/typecheck/cases/happy-recor-split-simplex-overhang.rzk
     test/typecheck/cases/happy-refl-path.rzk
+    test/typecheck/cases/happy-restrict-face-not-contained.rzk
     test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk
     test/typecheck/cases/happy-tope-high-dim-cubes.rzk
     test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk
@@ -36,21 +48,43 @@
     test/typecheck/cases/ill-bare-lambda-compute.rzk
     test/typecheck/cases/ill-bare-refl-compute.rzk
     test/typecheck/cases/ill-duplicate.rzk
+    test/typecheck/cases/ill-hole-infer.rzk
+    test/typecheck/cases/ill-hole-pattern-binder-names.rzk
+    test/typecheck/cases/ill-hole-recor-branch.rzk
+    test/typecheck/cases/ill-hole-unsolved.rzk
     test/typecheck/cases/ill-implicit.rzk
+    test/typecheck/cases/ill-interval-no-totality.rzk
+    test/typecheck/cases/ill-interval-subtyping.rzk
     test/typecheck/cases/ill-invalid-arg-type-bot.rzk
     test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk
     test/typecheck/cases/ill-issue-206-families-of-extension.rzk
     test/typecheck/cases/ill-issue-33-restriction-coherence.rzk
     test/typecheck/cases/ill-modal-b-no-dist.rzk
+    test/typecheck/cases/ill-modal-flat-no-commute.rzk
     test/typecheck/cases/ill-modal-not-modal.rzk
-    test/typecheck/cases/ill-modal-op-unaccessible.rzk
-    test/typecheck/cases/ill-modal-unaccessible.rzk
+    test/typecheck/cases/ill-modal-op-at-plain.rzk
+    test/typecheck/cases/ill-modal-op-under-flat.rzk
+    test/typecheck/cases/ill-modal-plain-under-flat.rzk
+    test/typecheck/cases/ill-modal-plain-under-op.rzk
+    test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.rzk
+    test/typecheck/cases/ill-modal-sharp-at-plain.rzk
+    test/typecheck/cases/ill-modal-sharp-bot-not-bot.rzk
+    test/typecheck/cases/ill-modal-sharp-recOR-plain-var.rzk
+    test/typecheck/cases/ill-modal-sharp-under-flat.rzk
+    test/typecheck/cases/ill-modal-sharp-under-op.rzk
+    test/typecheck/cases/ill-modal-tope-cross-modality.rzk
     test/typecheck/cases/ill-not-function.rzk
     test/typecheck/cases/ill-not-pair-first-unit.rzk
     test/typecheck/cases/ill-not-pair-second-unit.rzk
     test/typecheck/cases/ill-param-untyped-pattern.rzk
     test/typecheck/cases/ill-rec-or-overlap-incoherent.rzk
+    test/typecheck/cases/ill-recbot-term-not-function.rzk
+    test/typecheck/cases/ill-recbot-term-undefined.rzk
+    test/typecheck/cases/ill-recor-as-tope.rzk
+    test/typecheck/cases/ill-recor-coverage-required.rzk
+    test/typecheck/cases/ill-recor-guard-disjoint.rzk
     test/typecheck/cases/ill-render-latex-define.rzk
+    test/typecheck/cases/ill-restrict-face-disjoint.rzk
     test/typecheck/cases/ill-section-end-mismatch.rzk
     test/typecheck/cases/ill-section-not-closed.rzk
     test/typecheck/cases/ill-section-unexpected-end.rzk
@@ -68,6 +102,8 @@
     test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk
     test/typecheck/cases/ill-tope-param-lambda.rzk
     test/typecheck/cases/ill-tope-param-typefun.rzk
+    test/typecheck/cases/ill-tope-pattern-binder-bare.rzk
+    test/typecheck/cases/ill-tope-recOR-non-discrete.rzk
     test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk
     test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk
     test/typecheck/cases/ill-tope-subtle-tope-family-4d.rzk
@@ -84,11 +120,25 @@
     test/typecheck/cases/multimodule-first-error/lib.rzk
     test/typecheck/cases/multimodule-two-ok/lib.rzk
     test/typecheck/cases/multimodule-two-ok/user.rzk
+    test/typecheck/cases/uses-whnf-discarded.rzk
+    test/typecheck/cases/uses-whnf-masked-transitive.rzk
     test/typecheck/cases/happy-check.expect.yaml
+    test/typecheck/cases/happy-flip-unflip.expect.yaml
+    test/typecheck/cases/happy-interval-basics.expect.yaml
+    test/typecheck/cases/happy-interval-subtyping.expect.yaml
     test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml
     test/typecheck/cases/happy-modal-basics.expect.yaml
+    test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml
+    test/typecheck/cases/happy-modal-flat-under-op.expect.yaml
     test/typecheck/cases/happy-modal-inv.expect.yaml
+    test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml
+    test/typecheck/cases/happy-modal-topes.expect.yaml
+    test/typecheck/cases/happy-op-hom-to-hom.expect.yaml
+    test/typecheck/cases/happy-recbot-term-wellformed.expect.yaml
+    test/typecheck/cases/happy-recor-guard-exceeds-context.expect.yaml
+    test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml
     test/typecheck/cases/happy-refl-path.expect.yaml
+    test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml
     test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml
     test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml
     test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml
@@ -100,21 +150,43 @@
     test/typecheck/cases/ill-bare-lambda-compute.expect.yaml
     test/typecheck/cases/ill-bare-refl-compute.expect.yaml
     test/typecheck/cases/ill-duplicate.expect.yaml
+    test/typecheck/cases/ill-hole-infer.expect.yaml
+    test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml
+    test/typecheck/cases/ill-hole-recor-branch.expect.yaml
+    test/typecheck/cases/ill-hole-unsolved.expect.yaml
     test/typecheck/cases/ill-implicit.expect.yaml
+    test/typecheck/cases/ill-interval-no-totality.expect.yaml
+    test/typecheck/cases/ill-interval-subtyping.expect.yaml
     test/typecheck/cases/ill-invalid-arg-type-bot.expect.yaml
     test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml
     test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml
     test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml
     test/typecheck/cases/ill-modal-b-no-dist.expect.yaml
+    test/typecheck/cases/ill-modal-flat-no-commute.expect.yaml
     test/typecheck/cases/ill-modal-not-modal.expect.yaml
-    test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml
-    test/typecheck/cases/ill-modal-unaccessible.expect.yaml
+    test/typecheck/cases/ill-modal-op-at-plain.expect.yaml
+    test/typecheck/cases/ill-modal-op-under-flat.expect.yaml
+    test/typecheck/cases/ill-modal-plain-under-flat.expect.yaml
+    test/typecheck/cases/ill-modal-plain-under-op.expect.yaml
+    test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.expect.yaml
+    test/typecheck/cases/ill-modal-sharp-at-plain.expect.yaml
+    test/typecheck/cases/ill-modal-sharp-bot-not-bot.expect.yaml
+    test/typecheck/cases/ill-modal-sharp-recOR-plain-var.expect.yaml
+    test/typecheck/cases/ill-modal-sharp-under-flat.expect.yaml
+    test/typecheck/cases/ill-modal-sharp-under-op.expect.yaml
+    test/typecheck/cases/ill-modal-tope-cross-modality.expect.yaml
     test/typecheck/cases/ill-not-function.expect.yaml
     test/typecheck/cases/ill-not-pair-first-unit.expect.yaml
     test/typecheck/cases/ill-not-pair-second-unit.expect.yaml
     test/typecheck/cases/ill-param-untyped-pattern.expect.yaml
     test/typecheck/cases/ill-rec-or-overlap-incoherent.expect.yaml
+    test/typecheck/cases/ill-recbot-term-not-function.expect.yaml
+    test/typecheck/cases/ill-recbot-term-undefined.expect.yaml
+    test/typecheck/cases/ill-recor-as-tope.expect.yaml
+    test/typecheck/cases/ill-recor-coverage-required.expect.yaml
+    test/typecheck/cases/ill-recor-guard-disjoint.expect.yaml
     test/typecheck/cases/ill-render-latex-define.expect.yaml
+    test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml
     test/typecheck/cases/ill-section-end-mismatch.expect.yaml
     test/typecheck/cases/ill-section-not-closed.expect.yaml
     test/typecheck/cases/ill-section-unexpected-end.expect.yaml
@@ -132,6 +204,8 @@
     test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml
     test/typecheck/cases/ill-tope-param-lambda.expect.yaml
     test/typecheck/cases/ill-tope-param-typefun.expect.yaml
+    test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml
+    test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml
     test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml
     test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml
     test/typecheck/cases/ill-tope-subtle-tope-family-4d.expect.yaml
@@ -144,6 +218,8 @@
     test/typecheck/cases/ill-unify.expect.yaml
     test/typecheck/cases/ill-unset-option-unknown.expect.yaml
     test/typecheck/cases/ill-unused-assumption.expect.yaml
+    test/typecheck/cases/uses-whnf-discarded.expect.yaml
+    test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml
     test/typecheck/cases/literate-fence/expect.yaml
     test/typecheck/cases/multimodule-first-error/expect.yaml
     test/typecheck/cases/multimodule-two-ok/expect.yaml
@@ -156,12 +232,6 @@
   type: git
   location: https://github.com/rzk-lang/rzk
 
-custom-setup
-  setup-depends:
-      Cabal >=2.4.0.1 && <4.0
-    , base >=4.11.0.0 && <5.0
-    , process >=1.6.3.0
-
 flag lsp
   description: Build with LSP support (only available with GHC, not GHCJS).
   manual: True
@@ -179,24 +249,23 @@
       Language.Rzk.Syntax.Par
       Language.Rzk.Syntax.Print
       Rzk
+      Rzk.Diagnostic
       Rzk.Format
       Rzk.Main
       Rzk.Project.Config
       Rzk.TypeCheck
   other-modules:
       Paths_rzk
+  autogen-modules:
+      Paths_rzk
   hs-source-dirs:
       src
   default-extensions:
       DeriveDataTypeable
   ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path
-  build-tools:
-      alex >=3.2.4
-    , happy >=1.19.9
-  build-tool-depends:
-      BNFC:bnfc >=2.9.6.2
   build-depends:
       Glob >=0.9.3
+    , aeson >=1.4
     , array >=0.5.3.0
     , base >=4.7 && <5
     , bifunctors >=5.5.3
@@ -218,31 +287,30 @@
         Language.Rzk.VSCode.Lsp
         Language.Rzk.VSCode.Tokenize
     build-depends:
-        aeson >=1.4.2.0
+        aeson >=2.0.0.0
       , co-log-core >=0.3.2.0
       , data-default-class >=0.1.2.0
-      , filepath >=1.4.2.1
-      , lens >=4.17
-      , lsp >=2.2.0.0
-      , lsp-types >=2.0.2.0
-      , stm >=2.5.0.0
+      , filepath >=1.4.100.0
+      , lens >=5.0.1
+      , lsp >=2.4.0.0
+      , lsp-types >=2.1.1.0
+      , mtl >=2.3.1
+      , stm >=2.5.1.0
 
 executable rzk
   main-is: Main.hs
   other-modules:
       Paths_rzk
+  autogen-modules:
+      Paths_rzk
   hs-source-dirs:
       app
   default-extensions:
       DeriveDataTypeable
   ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N
-  build-tools:
-      alex >=3.2.4
-    , happy >=1.19.9
-  build-tool-depends:
-      BNFC:bnfc >=2.9.6.2
   build-depends:
       Glob >=0.9.3
+    , aeson >=1.4
     , array >=0.5.3.0
     , base >=4.7 && <5
     , bifunctors >=5.5.3
@@ -258,8 +326,8 @@
     cpp-options: -DLSP_ENABLED
   if !impl(ghcjs)
     build-depends:
-        optparse-generic >=1.4.0
-      , with-utf8 >=1.0.2.4
+        optparse-generic >=1.4.7
+      , with-utf8 >=1.0.3.0
 
 test-suite doctests
   type: exitcode-stdio-1.0
@@ -269,21 +337,18 @@
   default-extensions:
       DeriveDataTypeable
   ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path
-  build-tools:
-      alex >=3.2.4
-    , happy >=1.19.9
-  build-tool-depends:
-      BNFC:bnfc >=2.9.6.2
   build-depends:
       Glob >=0.9.3
     , QuickCheck >=2.14
+    , aeson >=1.4
     , array >=0.5.3.0
     , base >=4.11.0.0 && <5.0
     , bifunctors >=5.5.3
     , bytestring >=0.10.8.2
     , directory >=1.2.7.0
-    , doctest >=0.21.0
+    , doctest-parallel >=0.3
     , mtl >=2.3.1
+    , rzk
     , template-haskell >=2.14.0.0
     , text >=1.2.3.1
     , yaml >=0.11.0.0
@@ -295,19 +360,20 @@
   type: exitcode-stdio-1.0
   main-is: Spec.hs
   other-modules:
+      Rzk.DiagnosticSpec
       Rzk.FormatSpec
+      Rzk.HolesSpec
       Rzk.TypeCheckSpec
       Paths_rzk
+  autogen-modules:
+      Paths_rzk
   hs-source-dirs:
       test
   default-extensions:
       DeriveDataTypeable
   ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N
-  build-tools:
-      alex >=3.2.4
-    , happy >=1.19.9
   build-tool-depends:
-      BNFC:bnfc >=2.9.6.2
+      hspec-discover:hspec-discover
   build-depends:
       Glob >=0.9.3
     , aeson
diff --git a/src/Language/Rzk/Free/Syntax.hs b/src/Language/Rzk/Free/Syntax.hs
--- a/src/Language/Rzk/Free/Syntax.hs
+++ b/src/Language/Rzk/Free/Syntax.hs
@@ -11,6 +11,7 @@
 {-# LANGUAGE TypeSynonymInstances #-}
 module Language.Rzk.Free.Syntax where
 
+import           Data.Bifunctor      (bimap)
 import           Data.Bifunctor.TH
 import           Data.Char           (chr, ord)
 import           Data.Coerce
@@ -63,6 +64,41 @@
 fromVarIdent :: VarIdent -> Rzk.VarIdent
 fromVarIdent (VarIdent (Rzk.VarIdent (RzkPosition _file pos) ident)) = Rzk.VarIdent pos ident
 
+-- | The display name of a hole from its surface token text. The token includes
+-- the leading @?@; an anonymous hole (bare @?@) has no name.
+holeName :: T.Text -> Maybe VarIdent
+holeName tok =
+  case T.drop 1 tok of
+    name | T.null name -> Nothing
+         | otherwise   -> Just (fromString (T.unpack name))
+
+-- | The surface token text (including the leading @?@) for a hole name.
+holeIdentToken :: Maybe VarIdent -> T.Text
+holeIdentToken Nothing  = "?"
+holeIdentToken (Just x) = "?" <> T.pack (show x)
+
+-- | The name(s) a binder introduces. A binder may name a single (possibly
+-- anonymous) variable, or destructure a pair\/tuple via a pattern. The pattern
+-- structure is kept around purely so that goals, holes and error messages can
+-- show the user's original names (e.g. @t@ and @s@ for @\\ (t , s) -> …@)
+-- instead of projections of a fresh variable (e.g. @π₁ x₄@ and @π₂ x₄@).
+--
+-- Operationally a pair pattern still binds a /single/ variable; the components
+-- are projections of it (see 'toScopePattern'). 'Binder' only records the names
+-- so they can be restored when rendering.
+data Binder
+  = BinderVar (Maybe VarIdent)   -- ^ a single variable (@Nothing@ for @_@)
+  | BinderPair Binder Binder     -- ^ a pair pattern @(l , r)@
+  | BinderUnit                   -- ^ the unit pattern @unit@
+  deriving (Eq)
+
+-- | The single name of a binder, if it binds exactly one named variable.
+-- A pair\/unit pattern has no single name, so this is 'Nothing' for them.
+-- Used wherever the old @Maybe VarIdent@ binder name is still sufficient.
+binderName :: Binder -> Maybe VarIdent
+binderName (BinderVar mname) = mname
+binderName _                 = Nothing
+
 data TModality = Sharp | Flat | Op | Id deriving (Eq, Show)
 
 toModality :: Rzk.Modality -> TModality
@@ -97,6 +133,9 @@
     | Cube2F
     | Cube2_0F
     | Cube2_1F
+    | CubeIF 
+    | CubeI_0F 
+    | CubeI_1F
     | CubeProductF term term
     | CubeFlipF term
     | CubeUnflipF term
@@ -110,12 +149,12 @@
     | TopeUninvF term
     | RecBottomF
     | RecOrF [(term, term)]
-    | TypeFunF (Maybe VarIdent) term (Maybe scope) scope
-    | TypeSigmaF (Maybe VarIdent) term scope
+    | TypeFunF Binder TModality term (Maybe scope) scope
+    | TypeSigmaF Binder TModality term scope
     | TypeIdF term (Maybe term) term
     | AppF term term
-    | LetF (Maybe VarIdent) (Maybe term) term scope
-    | LambdaF (Maybe VarIdent) (Maybe (term, Maybe scope)) scope
+    | LetF Binder (Maybe term) term scope
+    | LambdaF Binder (Maybe (TModality, term, Maybe scope)) scope
     | PairF term term
     | FirstF term
     | SecondF term
@@ -128,7 +167,8 @@
     | TypeModalF TModality term
     | ModAppF TModality term
     | ModExtractF TModality TModality term
-    | LetModF (Maybe VarIdent) TModality TModality (Maybe term) term scope
+    | LetModF Binder TModality TModality (Maybe term) term scope
+    | HoleF (Maybe VarIdent)
     deriving (Eq, Functor, Foldable, Traversable)
 deriveBifunctor ''TermF
 deriveBifoldable ''TermF
@@ -263,7 +303,6 @@
 
       Rzk.ASCII_TypeFun loc param ret -> go (Rzk.TypeFun loc param ret)
       Rzk.ASCII_TypeSigma loc pat ty ret -> go (Rzk.TypeSigma loc pat ty ret)
-      Rzk.ASCII_TypeSigmaModal _loc pat md ty body -> go (Rzk.TypeSigmaModal _loc pat md ty body)
       Rzk.ASCII_TypeSigmaTuple loc p ps tN -> go (Rzk.TypeSigmaTuple loc p ps tN)
       Rzk.ASCII_Lambda loc pat ret -> go (Rzk.Lambda loc pat ret)
       Rzk.ASCII_TypeExtensionDeprecated loc shape type_ -> go (Rzk.TypeExtensionDeprecated loc shape type_)
@@ -281,6 +320,12 @@
       Rzk.Cube2 _loc -> Cube2
       Rzk.Cube2_0 _loc -> Cube2_0
       Rzk.Cube2_1 _loc -> Cube2_1
+      Rzk.CubeI _loc -> CubeI
+      Rzk.CubeI_0 _loc -> CubeI_0
+      Rzk.CubeI_1 _loc -> CubeI_1
+      Rzk.ASCII_CubeI _loc -> CubeI
+      Rzk.ASCII_CubeI_0 _loc -> CubeI_0
+      Rzk.ASCII_CubeI_1 _loc -> CubeI_1
       Rzk.CubeProduct _loc l r -> CubeProduct (go l) (go r)
       Rzk.TopeTop _loc -> TopeTop
       Rzk.TopeBottom _loc -> TopeBottom
@@ -311,41 +356,41 @@
       Rzk.ReflTermType _loc x tA -> Refl (Just (go x, Just (go tA)))
       Rzk.IdJ _loc a b c d e f -> IdJ (go a) (go b) (go c) (go d) (go e) (go f)
       Rzk.TypeAsc _loc x t -> TypeAsc (go x) (go t)
-      Rzk.TypeFun _loc (Rzk.ParamTermModalType loc' patTerm md ty) ret ->
-        let pat    = unsafeTermToPattern patTerm
-            letRet = Rzk.LetMod loc' (Rzk.Single loc' md)
-                       (Rzk.BindPattern loc' pat) (patternToTerm pat) ret
-        in go (Rzk.TypeFun _loc (Rzk.ParamTermType loc' patTerm (Rzk.ModType loc' md ty)) letRet)
+      Rzk.TypeFun _loc (Rzk.ParamTermModalType _loc' patTerm mc ty) ret ->
+        let pat = unsafeTermToPattern patTerm
+            md  = modalColonToTModality mc
+        in TypeFun (toBinder pat) md (go ty) Nothing (toScopePattern pat bvars ret)
+      Rzk.TypeFun _loc (Rzk.ParamTermModalShape _loc' patTerm mc cube tope) ret ->
+        let pat = unsafeTermToPattern patTerm
+            md  = modalColonToTModality mc
+        in TypeFun (toBinder pat) md (go cube) (Just (toScopePattern pat bvars tope)) (toScopePattern pat bvars ret)
       Rzk.TypeFun _loc (Rzk.ParamTermType _ patTerm arg) ret ->
         let pat = unsafeTermToPattern patTerm
-        in TypeFun (patternVar pat) (go arg) Nothing (toScopePattern pat bvars ret)
+        in TypeFun (toBinder pat) Id (go arg) Nothing (toScopePattern pat bvars ret)
       t@(Rzk.TypeFun loc (Rzk.ParamTermShape loc' patTerm cube tope) ret) ->
         let lint' = case tope of
               Rzk.App _loc fun arg | void arg == void patTerm ->
                 lint t (Rzk.TypeFun loc (Rzk.ParamTermType loc' patTerm fun) ret)
               _ -> id
             pat = unsafeTermToPattern patTerm
-        in lint' $ TypeFun (patternVar pat) (go cube) (Just (toScopePattern pat bvars tope)) (toScopePattern pat bvars ret)
+        in lint' $ TypeFun (toBinder pat) Id (go cube) (Just (toScopePattern pat bvars tope)) (toScopePattern pat bvars ret)
       Rzk.TypeFun _loc (Rzk.ParamType _ arg) ret ->
-        TypeFun Nothing (go arg) Nothing (toTerm (fmap S <$> bvars) ret)
+        TypeFun (BinderVar Nothing) Id (go arg) Nothing (toTerm (fmap S <$> bvars) ret)
 
       Rzk.TypeSigma _loc pat tA tB ->
-        TypeSigma (patternVar pat) (go tA) (toScopePattern pat bvars tB)
-
-      Rzk.TypeSigmaModal _loc pat md ty body ->
-        let letBody = Rzk.LetMod _loc (Rzk.Single _loc md)
-                        (Rzk.BindPattern _loc pat) (patternToTerm pat) body
-        in go (Rzk.TypeSigma _loc pat (Rzk.ModType _loc md ty) letBody)
+        TypeSigma (toBinder pat) Id (go tA) (toScopePattern pat bvars tB)
 
+      Rzk.TypeSigmaModal _loc pat mc ty body ->
+        let md = modalColonToTModality mc
+        in TypeSigma (toBinder pat) md (go ty) (toScopePattern pat bvars body)
 
-      Rzk.TypeSigmaTuple _loc (Rzk.SigmaParamModal loc' pat md ty) rest body ->
-        let tailSigma = case rest of
+      Rzk.TypeSigmaTuple _loc (Rzk.SigmaParamModal _loc' pat mc ty) rest body ->
+        let md = modalColonToTModality mc
+            tailSigma = case rest of
               []       -> body
               [sp]     -> sigmaParamToTypeSigma _loc sp body
               (sp:sps) -> Rzk.TypeSigmaTuple _loc sp sps body
-            letTail   = Rzk.LetMod loc' (Rzk.Single loc' md)
-                          (Rzk.BindPattern loc' pat) (patternToTerm pat) tailSigma
-        in go (Rzk.TypeSigma _loc pat (Rzk.ModType loc' md ty) letTail)
+        in TypeSigma (toBinder pat) md (go ty) (toScopePattern pat bvars tailSigma)
       Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ patA tA) (mp@(Rzk.SigmaParamModal{}) : rest) body ->
         go (Rzk.TypeSigma _loc patA tA (case rest of
               []  -> sigmaParamToTypeSigma _loc mp body
@@ -356,23 +401,25 @@
           patX = Rzk.PatternPair _loc patA patB
           tX = Rzk.TypeSigma _loc patA tA tB
       Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ pat tA) [] tB -> go (Rzk.TypeSigma _loc pat tA tB)
-      Rzk.Lambda _loc (Rzk.ParamPatternModalType _ [] _md _ty : params) body ->
+      Rzk.Lambda _loc (Rzk.ParamPatternModalType _ [] _mc _ty : params) body ->
         go (Rzk.Lambda _loc params body)
-      Rzk.Lambda _loc (Rzk.ParamPatternModalType loc' (pat:pats) md ty : params) body ->
-        let inner   = Rzk.Lambda _loc
-                        (if null pats then params
-                         else Rzk.ParamPatternModalType loc' pats md ty : params)
-                        body
-            letBody = Rzk.LetMod loc' (Rzk.Single loc' md)
-                        (Rzk.BindPattern loc' pat) (patternToTerm pat) inner
-        in go (Rzk.Lambda _loc [Rzk.ParamPatternType loc' [pat] (Rzk.ModType loc' md ty)] letBody)
+      Rzk.Lambda _loc (Rzk.ParamPatternModalType loc' (pat:pats) mc ty : params) body ->
+        let md = modalColonToTModality mc
+        in Lambda (toBinder pat) (Just (md, go ty, Nothing))
+             (toScopePattern pat bvars (Rzk.Lambda _loc (if null pats then params else Rzk.ParamPatternModalType loc' pats mc ty : params) body))
+      Rzk.Lambda _loc (Rzk.ParamPatternModalShape _ [] _mc _cube _tope : params) body ->
+        go (Rzk.Lambda _loc params body)
+      Rzk.Lambda _loc (Rzk.ParamPatternModalShape loc' (pat:pats) mc cube tope : params) body ->
+        let md = modalColonToTModality mc
+        in Lambda (toBinder pat) (Just (md, go cube, Just (toScopePattern pat bvars tope)))
+             (toScopePattern pat bvars (Rzk.Lambda _loc (if null pats then params else Rzk.ParamPatternModalShape loc' pats mc cube tope : params) body))
       Rzk.Lambda _loc [] body -> go body
       Rzk.Lambda _loc (Rzk.ParamPattern _ pat : params) body ->
-        Lambda (patternVar pat) Nothing (toScopePattern pat bvars (Rzk.Lambda _loc params body))
+        Lambda (toBinder pat) Nothing (toScopePattern pat bvars (Rzk.Lambda _loc params body))
       Rzk.Lambda _loc (Rzk.ParamPatternType _ [] _ty : params) body ->
         go (Rzk.Lambda _loc params body)
       Rzk.Lambda _loc (Rzk.ParamPatternType _ (pat:pats) ty : params) body ->
-        Lambda (patternVar pat) (Just (go ty, Nothing))
+        Lambda (toBinder pat) (Just (Id, go ty, Nothing))
           (toScopePattern pat bvars (Rzk.Lambda _loc (Rzk.ParamPatternType _loc pats ty : params) body))
       Rzk.Lambda _loc (Rzk.ParamPatternShape _ [] _cube _tope : params) body ->
         go (Rzk.Lambda _loc params body)
@@ -382,31 +429,36 @@
                 | null pats && void arg == void (patternToTerm pat) ->
                     lint t (Rzk.Lambda _loc (Rzk.ParamPatternType _loc' [pat] fun : params) body)
               _ -> id
-         in lint' $ Lambda (patternVar pat) (Just (go cube, Just (toScopePattern pat bvars tope)))
+         in lint' $ Lambda (toBinder pat) (Just (Id, go cube, Just (toScopePattern pat bvars tope)))
               (toScopePattern pat bvars (Rzk.Lambda _loc (Rzk.ParamPatternShape _loc' pats cube tope : params) body))
       Rzk.Let _loc (Rzk.BindPattern _ pat) val expr ->
-        Let (patternVar pat) Nothing (go val) (toScopePattern pat bvars expr)
+        Let (toBinder pat) Nothing (go val) (toScopePattern pat bvars expr)
       Rzk.Let _loc (Rzk.BindPatternType _ pat ty) val expr -> 
-        Let (patternVar pat) (Just (go ty)) (go val) (toScopePattern pat bvars expr)
+        Let (toBinder pat) (Just (go ty)) (go val) (toScopePattern pat bvars expr)
       Rzk.TypeRestricted _loc ty rs ->
         TypeRestricted (go ty) $ flip map rs $ \case
           Rzk.Restriction _loc tope term       -> (go tope, go term)
           Rzk.ASCII_Restriction _loc tope term -> (go tope, go term)
 
-      Rzk.Hole _loc _ident -> error "holes are not supported"
+      Rzk.Hole _loc (Rzk.HoleIdent _ (Rzk.HoleIdentToken tok)) ->
+        Hole (holeName tok)
       Rzk.ModApp _loc md body -> ModApp (toModality md) (go body)
       Rzk.ModType _loc md ty -> TypeModal (toModality md) (go ty)
       Rzk.ModExtract{} -> error "$extract$ is an internal term and cannot appear in source"
       Rzk.LetMod _loc comp (Rzk.BindPattern _ pat) val body ->
         let (ext, inn) = modCompToMods comp
-        in LetMod (patternVar pat) ext inn Nothing (go val) (toScopePattern pat bvars body)
+        in LetMod (toBinder pat) ext inn Nothing (go val) (toScopePattern pat bvars body)
       Rzk.LetMod _loc comp (Rzk.BindPatternType _ pat ty) val body ->
         let (ext, inn) = modCompToMods comp
-        in LetMod (patternVar pat) ext inn (Just (go ty)) (go val) (toScopePattern pat bvars body)
+        in LetMod (toBinder pat) ext inn (Just (go ty)) (go val) (toScopePattern pat bvars body)
 
-    patternVar (Rzk.PatternVar _loc (Rzk.VarIdent _ "_")) = Nothing
-    patternVar (Rzk.PatternVar _loc x)                    = Just (varIdent x)
-    patternVar _                                          = Nothing
+    -- Translate a surface pattern into a 'Binder', keeping the pair\/tuple
+    -- structure so the component names can be restored when rendering.
+    toBinder (Rzk.PatternVar _loc (Rzk.VarIdent _ "_")) = BinderVar Nothing
+    toBinder (Rzk.PatternVar _loc x)                    = BinderVar (Just (varIdent x))
+    toBinder (Rzk.PatternUnit _loc)                     = BinderUnit
+    toBinder (Rzk.PatternPair _loc l r)                 = BinderPair (toBinder l) (toBinder r)
+    toBinder (Rzk.PatternTuple loc p1 p2 ps)            = toBinder (desugarTuple loc (reverse ps) p2 p1)
 
 patternToTerm :: Rzk.Pattern -> Rzk.Term
 patternToTerm = ptt
@@ -418,6 +470,26 @@
       Rzk.PatternTuple loc p1 p2 ps -> patternToTerm (desugarTuple loc (reverse ps) p2 p1)
 
 
+modalColonModality :: Rzk.ModalColon -> Rzk.Modality
+modalColonModality = \case
+  Rzk.ModalColonFlat loc        -> Rzk.Flat loc
+  Rzk.ModalColonSharp loc       -> Rzk.Sharp loc
+  Rzk.ModalColonOp loc          -> Rzk.Op loc
+  Rzk.ModalColonId loc          -> Rzk.Id loc
+  Rzk.ASCII_ModalColonFlat loc  -> Rzk.Flat loc
+  Rzk.ASCII_ModalColonSharp loc -> Rzk.Sharp loc
+  Rzk.ASCII_ModalColonOp loc    -> Rzk.Op loc
+
+modalColonToTModality :: Rzk.ModalColon -> TModality
+modalColonToTModality = toModality . modalColonModality
+
+fromTModalityToModalColon :: TModality -> Rzk.ModalColon
+fromTModalityToModalColon = \case
+  Sharp -> Rzk.ModalColonSharp Nothing
+  Flat  -> Rzk.ModalColonFlat Nothing
+  Op    -> Rzk.ModalColonOp Nothing
+  Id    -> Rzk.ModalColonId Nothing
+
 unsafeTermToPattern :: Rzk.Term -> Rzk.Pattern
 unsafeTermToPattern = ttp
   where
@@ -431,8 +503,138 @@
 sigmaParamToTypeSigma :: Rzk.BNFC'Position -> Rzk.SigmaParam -> Rzk.Term -> Rzk.Term
 sigmaParamToTypeSigma loc sp body = case sp of
   Rzk.SigmaParam      _ pat ty      -> Rzk.TypeSigma      loc pat ty body
-  Rzk.SigmaParamModal _ pat md ty  -> Rzk.TypeSigmaModal loc pat md ty body
+  Rzk.SigmaParamModal _ pat mc ty  -> Rzk.TypeSigmaModal loc pat mc ty body
 
+-- | A projection step: first (@π₁@) or second (@π₂@) component.
+data Proj = PFst | PSnd
+  deriving (Eq)
+
+-- | Render a 'Binder' as a surface pattern (used to display the binder itself,
+-- e.g. @(t , s)@). Anonymous variables become @_@.
+binderToPattern :: Binder -> Rzk.Pattern
+binderToPattern (BinderVar Nothing)  = Rzk.PatternVar Nothing (fromVarIdent "_")
+binderToPattern (BinderVar (Just x)) = Rzk.PatternVar Nothing (fromVarIdent x)
+binderToPattern (BinderPair l r)     = Rzk.PatternPair Nothing (binderToPattern l) (binderToPattern r)
+binderToPattern BinderUnit           = Rzk.PatternUnit Nothing
+
+-- | A term that prints as the binder's surface pattern, e.g. the point
+-- @(t , s)@. Used to render a /bare/ occurrence of a pattern binder's variable
+-- (one not under a projection, e.g. the point in a shape tope @Δ² (t , s)@) as
+-- the pattern itself rather than the underlying single variable. A
+-- single-variable binder yields that variable.
+binderToTerm :: Binder -> Term VarIdent
+binderToTerm (BinderVar Nothing)  = Pure (fromString "_")
+binderToTerm (BinderVar (Just x)) = Pure x
+binderToTerm (BinderPair l r)     = Pair (binderToTerm l) (binderToTerm r)
+binderToTerm BinderUnit           = Unit
+
+-- | A 'VarIdent' that prints as the binder's surface pattern, e.g. @(t , s)@.
+-- Used to display a pattern binder in a hole's local context as the pattern
+-- itself rather than as the underlying single variable.
+binderDisplayName :: Binder -> VarIdent
+binderDisplayName = fromString . Rzk.printTree . binderToPattern
+
+-- | The named leaves of a binder, each paired with the projection path that
+-- reaches it from the bound variable. For example @(t , (a , b))@ yields
+-- @[([PFst], t), ([PSnd, PFst], a), ([PSnd, PSnd], b)]@.
+binderPaths :: Binder -> [([Proj], VarIdent)]
+binderPaths (BinderVar (Just x)) = [([], x)]
+binderPaths (BinderVar Nothing)  = []
+binderPaths BinderUnit           = []
+binderPaths (BinderPair l r)     =
+  [ (PFst : p, n) | (p, n) <- binderPaths l ] ++
+  [ (PSnd : p, n) | (p, n) <- binderPaths r ]
+
+-- | The names appearing in a binder.
+binderLeaves :: Binder -> [VarIdent]
+binderLeaves = map snd . binderPaths
+
+-- | Does this binder destructure a pair\/tuple (as opposed to naming a single
+-- variable or @_@)?
+binderIsCompound :: Binder -> Bool
+binderIsCompound BinderVar{} = False
+binderIsCompound _           = True
+
+-- | Refresh the named leaves of a binder so they avoid the given names (and one
+-- another). Anonymous leaves and the unit pattern are left unchanged.
+freshenBinderLeaves :: [VarIdent] -> Binder -> Binder
+freshenBinderLeaves used = snd . go used
+  where
+    go u (BinderVar (Just x)) = let x' = refreshVar u x in (x' : u, BinderVar (Just x'))
+    go u b@(BinderVar Nothing) = (u, b)
+    go u BinderUnit            = (u, BinderUnit)
+    go u (BinderPair l r)      =
+      let (u1, l') = go u l
+          (u2, r') = go u1 r
+      in (u2, BinderPair l' r')
+
+-- | Decompose a chain of projections applied to a variable into the projection
+-- path /from the variable outwards/, matching 'binderPaths'. The outermost
+-- projection is applied last, so it goes at the /end/ of the path: e.g.
+-- @π₂ (π₁ x)@ (select @π₁@ first, then @π₂@) becomes @Just ([PFst, PSnd], x)@.
+projChain :: Term a -> Maybe ([Proj], a)
+projChain (First t)  = (\(ps, r) -> (ps ++ [PFst], r)) <$> projChain t
+projChain (Second t) = (\(ps, r) -> (ps ++ [PSnd], r)) <$> projChain t
+projChain (Pure x)   = Just ([], x)
+projChain _          = Nothing
+
+-- | Replace projection chains rooted at a pattern binder with the binder's
+-- component name. Given a map from a (bound) variable to the named leaves of
+-- its binder, every @π₁/π₂@ chain that reaches a named leaf is rewritten to
+-- that name. Ordinary projections (of variables not bound by a pattern, or
+-- chains that do not reach a named leaf) are left untouched.
+foldBinderProjections :: Eq a => [(a, [([Proj], a)])] -> Term a -> Term a
+foldBinderProjections m = go
+  where
+    go t
+      | Just (ps, root) <- projChain t
+      , not (null ps)
+      , Just leaves <- lookup root m
+      , Just nm <- lookup ps leaves
+      = Pure nm
+    go (Free f) = Free (bimap goScope go f)
+    go (Pure x) = Pure x
+    goScope = foldBinderProjections (map liftEntry m)
+    liftEntry (k, leaves) = (S k, map (fmap S) leaves)
+
+-- | Replace bare uses of a pattern binder's variable with the pattern term
+-- (e.g. a whole point @(t , s)@ rather than the underlying single variable, in
+-- a tope @Δ² (t , s)@). Given a map from each (already display-named) variable
+-- to its binder, every free occurrence of a /compound/ binder's variable is
+-- expanded to its pattern. Complements 'foldBinderProjections', which folds
+-- /projections/ of such a variable; run this /after/ folding, so projections
+-- have already become component names and only bare uses remain.
+restorePatternVars :: [(VarIdent, Binder)] -> Term VarIdent -> Term VarIdent
+restorePatternVars binders = (>>= expand)
+  where
+    expand v = case lookup v binders of
+      Just b | binderIsCompound b -> binderToTerm b
+      _                           -> Pure v
+
+-- | Like 'projChain', but for type-annotated terms.
+projChainT :: TermT a -> Maybe ([Proj], a)
+projChainT (FirstT _ t)  = (\(ps, r) -> (ps ++ [PFst], r)) <$> projChainT t
+projChainT (SecondT _ t) = (\(ps, r) -> (ps ++ [PSnd], r)) <$> projChainT t
+projChainT (Pure x)      = Just ([], x)
+projChainT _             = Nothing
+
+-- | Like 'foldBinderProjections', but for type-annotated terms (e.g. those
+-- embedded in type errors). The annotation of a folded leaf is dropped, which
+-- is harmless: the result is only rendered, and a bare variable needs none.
+foldBinderProjectionsT :: Eq a => [(a, [([Proj], a)])] -> TermT a -> TermT a
+foldBinderProjectionsT m = go
+  where
+    go t
+      | Just (ps, root) <- projChainT t
+      , not (null ps)
+      , Just leaves <- lookup root m
+      , Just nm <- lookup ps leaves
+      = Pure nm
+    go (Free (AnnF info f)) = Free (AnnF (fmap go info) (bimap goScope go f))
+    go (Pure x) = Pure x
+    goScope = foldBinderProjectionsT (map liftEntry m)
+    liftEntry (k, leaves) = (S k, map (fmap S) leaves)
+
 fromTerm' :: Term' -> Rzk.Term
 fromTerm' t = fromTermWith' vars (defaultVarIdents \\ vars) t
   where vars = freeVars t
@@ -443,16 +645,53 @@
     f Z     = Pure x
     f (S z) = Pure z
 
+-- | Like 'fromScope'', but additionally restores pattern-binder component names
+-- inside the scope: projections of the bound variable @x@ are folded back to
+-- the names recorded in @binder@ (e.g. @π₁ x@ becomes @t@). For a binder that
+-- names a single variable this is exactly 'fromScope''.
+fromScopeBinder' :: Binder -> VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Rzk.Term
+fromScopeBinder' binder x used xs scope =
+  fromTermWith' (x : used) xs
+    (restorePattern (foldBinderProjections [(x, binderPaths binder)] (scope >>= f)))
+  where
+    f Z     = Pure x
+    f (S z) = Pure z
+    -- After projection chains have been folded to their component names, a bare
+    -- use of a pattern binder's variable (the whole point, e.g. in a shape tope
+    -- @Δ² (t , s)@) still reads as the placeholder; show it as the pattern.
+    restorePattern
+      | binderIsCompound binder = (>>= \v -> if v == x then binderToTerm binder else Pure v)
+      | otherwise               = id
+
 fromTermWith' :: [VarIdent] -> [VarIdent] -> Term' -> Rzk.Term
 fromTermWith' used vars = go
   where
-    withFresh Nothing f =
-      case vars of
-        x:xs -> f (x, xs)
+    -- Refresh a binder's named leaves against the names already in use and draw
+    -- fresh names for anonymous leaves from the remaining supply.
+    freshenBinder _    stream (BinderVar Nothing) =
+      case stream of
+        x:xs -> (BinderVar (Just x), xs)
         _    -> error "not enough fresh variables!"
-    withFresh (Just z) f = f (z', filter (/= z') vars)    -- FIXME: very inefficient filter
+    freshenBinder used' stream (BinderVar (Just z)) =
+      (BinderVar (Just z'), filter (/= z') stream)
+      where z' = refreshVar used' z
+    freshenBinder _    stream BinderUnit = (BinderUnit, stream)
+    freshenBinder used' stream (BinderPair l r) =
+      let (l', s1) = freshenBinder used' stream l
+          (r', s2) = freshenBinder (used' ++ binderLeaves l') s1 r
+      in (BinderPair l' r', s2)
+
+    -- Pick fresh names for a binder. Yields the bound variable's display name
+    -- (used as the De Bruijn placeholder), the freshened binder (for the
+    -- displayed pattern and for projection folding), and the remaining supply.
+    withFreshBinder z f =
+      case binder' of
+        BinderVar (Just x) -> f (x, binder', stream)
+        _ -> case stream of
+               x:xs -> f (x, binder', xs)
+               _    -> error "not enough fresh variables!"
       where
-        z' = refreshVar used z
+        (binder', stream) = freshenBinder used vars z
 
     loc = Nothing
 
@@ -475,6 +714,9 @@
       Cube2 -> Rzk.Cube2 loc
       Cube2_0 -> Rzk.Cube2_0 loc
       Cube2_1 -> Rzk.Cube2_1 loc
+      CubeI -> Rzk.CubeI loc
+      CubeI_0 -> Rzk.CubeI_0 loc
+      CubeI_1 -> Rzk.CubeI_1 loc
       CubeProduct l r -> Rzk.CubeProduct loc (go l) (go r)
       TopeTop -> Rzk.TopeTop loc
       TopeBottom -> Rzk.TopeBottom loc
@@ -489,28 +731,40 @@
       RecBottom -> Rzk.RecBottom loc
       RecOr rs -> Rzk.RecOr loc [ Rzk.Restriction loc (go tope) (go term) | (tope, term) <- rs ]
 
-      TypeFun z arg Nothing ret -> withFresh z $ \(x, xs) ->
-        Rzk.TypeFun loc (Rzk.ParamTermType loc (Rzk.Var loc (fromVarIdent x)) (go arg)) (fromScope' x used xs ret)
-      TypeFun z arg (Just tope) ret -> withFresh z $ \(x, xs) ->
-        Rzk.TypeFun loc (Rzk.ParamTermShape loc (Rzk.Var loc (fromVarIdent x)) (go arg) (fromScope' x used xs tope)) (fromScope' x used xs ret)
+      Hole mname -> Rzk.Hole loc (Rzk.HoleIdent loc (Rzk.HoleIdentToken (holeIdentToken mname)))
 
-      TypeSigma z a b -> withFresh z $ \(x, xs) ->
-        Rzk.TypeSigma loc (Rzk.PatternVar loc (fromVarIdent x)) (go a) (fromScope' x used xs b)
+      TypeFun z Id arg Nothing ret -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeFun loc (Rzk.ParamTermType loc (patternToTerm (binderToPattern z')) (go arg)) (fromScopeBinder' z' x used xs ret)
+      TypeFun z Id arg (Just tope) ret -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeFun loc (Rzk.ParamTermShape loc (patternToTerm (binderToPattern z')) (go arg) (fromScopeBinder' z' x used xs tope)) (fromScopeBinder' z' x used xs ret)
+      TypeFun z md arg Nothing ret -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeFun loc (Rzk.ParamTermModalType loc (patternToTerm (binderToPattern z')) (fromTModalityToModalColon md) (go arg)) (fromScopeBinder' z' x used xs ret)
+      TypeFun z md arg (Just tope) ret -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeFun loc (Rzk.ParamTermModalShape loc (patternToTerm (binderToPattern z')) (fromTModalityToModalColon md) (go arg) (fromScopeBinder' z' x used xs tope)) (fromScopeBinder' z' x used xs ret)
+
+      TypeSigma z Id a b -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeSigma loc (binderToPattern z') (go a) (fromScopeBinder' z' x used xs b)
+      TypeSigma z md a b -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.TypeSigmaModal loc (binderToPattern z') (fromTModalityToModalColon md) (go a) (fromScopeBinder' z' x used xs b)
       TypeId l (Just tA) r -> Rzk.TypeId loc (go l) (go tA) (go r)
       TypeId l Nothing r -> Rzk.TypeIdSimple loc (go l) (go r)
       App l r -> Rzk.App loc (go l) (go r)
 
-      Lambda z Nothing scope -> withFresh z $ \(x, xs) ->
-        Rzk.Lambda loc [Rzk.ParamPattern loc (Rzk.PatternVar loc (fromVarIdent x))] (fromScope' x used xs scope)
-      Lambda z (Just (ty, Nothing)) scope -> withFresh z $ \(x, xs) ->
-        Rzk.Lambda loc [Rzk.ParamPatternType loc [Rzk.PatternVar loc (fromVarIdent x)] (go ty)] (fromScope' x used xs scope)
-      Lambda z (Just (cube, Just tope)) scope -> withFresh z $ \(x, xs) ->
-        Rzk.Lambda loc [Rzk.ParamPatternShape loc [Rzk.PatternVar loc (fromVarIdent x)] (go cube) (fromScope' x used xs tope)] (fromScope' x used xs scope)
+      Lambda z Nothing scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Lambda loc [Rzk.ParamPattern loc (binderToPattern z')] (fromScopeBinder' z' x used xs scope)
+      Lambda z (Just (Id, ty, Nothing)) scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Lambda loc [Rzk.ParamPatternType loc [binderToPattern z'] (go ty)] (fromScopeBinder' z' x used xs scope)
+      Lambda z (Just (Id, cube, Just tope)) scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Lambda loc [Rzk.ParamPatternShape loc [binderToPattern z'] (go cube) (fromScopeBinder' z' x used xs tope)] (fromScopeBinder' z' x used xs scope)
+      Lambda z (Just (md, ty, Nothing)) scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Lambda loc [Rzk.ParamPatternModalType loc [binderToPattern z'] (fromTModalityToModalColon md) (go ty)] (fromScopeBinder' z' x used xs scope)
+      Lambda z (Just (md, cube, Just tope)) scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Lambda loc [Rzk.ParamPatternModalShape loc [binderToPattern z'] (fromTModalityToModalColon md) (go cube) (fromScopeBinder' z' x used xs tope)] (fromScopeBinder' z' x used xs scope)
       -- Lambda (Maybe (term, Maybe scope)) scope -> Rzk.Lambda loc (Maybe (term, Maybe scope)) scope
-      Let z Nothing val scope -> withFresh z $ \(x, xs) -> 
-        Rzk.Let loc (Rzk.BindPattern loc (Rzk.PatternVar loc (fromVarIdent  x))) (go val) (fromScope' x used xs scope)
-      Let z (Just ty) val scope -> withFresh z $ \(x, xs) -> 
-        Rzk.Let loc (Rzk.BindPatternType loc (Rzk.PatternVar loc (fromVarIdent  x)) (go ty)) (go val) (fromScope' x used xs scope)
+      Let z Nothing val scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Let loc (Rzk.BindPattern loc (binderToPattern z')) (go val) (fromScopeBinder' z' x used xs scope)
+      Let z (Just ty) val scope -> withFreshBinder z $ \(x, z', xs) ->
+        Rzk.Let loc (Rzk.BindPatternType loc (binderToPattern z') (go ty)) (go val) (fromScopeBinder' z' x used xs scope)
       Pair l r -> Rzk.Pair loc (go l) (go r)
       First term -> Rzk.First loc (go term)
       Second term -> Rzk.Second loc (go term)
@@ -526,14 +780,14 @@
       TypeModal m ty -> Rzk.ModType loc (goMod m) (go ty)
       ModApp m ty -> Rzk.ModApp loc (goMod m) (go ty)
       ModExtract ma mb t -> Rzk.ModExtract loc (Rzk.Comp loc (goMod ma) (goMod mb)) (go t)
-      LetMod z ext inn Nothing val scope -> withFresh z $ \(x, xs) ->
+      LetMod z ext inn Nothing val scope -> withFreshBinder z $ \(x, z', xs) ->
         Rzk.LetMod loc (modsToModComp ext inn)
-          (Rzk.BindPattern loc (Rzk.PatternVar loc (fromVarIdent x)))
-          (go val) (fromScope' x used xs scope)
-      LetMod z ext inn (Just ty) val scope -> withFresh z $ \(x, xs) ->
+          (Rzk.BindPattern loc (binderToPattern z'))
+          (go val) (fromScopeBinder' z' x used xs scope)
+      LetMod z ext inn (Just ty) val scope -> withFreshBinder z $ \(x, z', xs) ->
         Rzk.LetMod loc (modsToModComp ext inn)
-          (Rzk.BindPatternType loc (Rzk.PatternVar loc (fromVarIdent x)) (go ty))
-          (go val) (fromScope' x used xs scope)
+          (Rzk.BindPatternType loc (binderToPattern z') (go ty))
+          (go val) (fromScopeBinder' z' x used xs scope)
 
 
 defaultVarIdents :: [VarIdent]
@@ -543,6 +797,10 @@
   , let name = "x" <> map digitToSub (show n) ]
   where
     digitToSub c = chr ((ord c - ord '0') + ord '₀')
+
+-- $setup
+-- >>> :set -XOverloadedStrings
+-- >>> import qualified Data.Text as T
 
 -- | Given a list of used variable names in the current context,
 -- generate a unique fresh name based on a given one.
diff --git a/src/Language/Rzk/Syntax.hs b/src/Language/Rzk/Syntax.hs
--- a/src/Language/Rzk/Syntax.hs
+++ b/src/Language/Rzk/Syntax.hs
@@ -65,6 +65,10 @@
 
 data LineType = NonCode | CodeOf T.Text
 
+-- $setup
+-- >>> :set -XOverloadedStrings
+-- >>> import qualified Data.Text as T
+
 -- | Extract code for a given alias (e.g. "rzk" or "haskell") from a Markdown file
 -- by replacing any lines that do not belong to the code in that language with blank lines.
 -- This way the line numbers are preserved correctly from the original file.
diff --git a/src/Language/Rzk/Syntax/Abs.hs b/src/Language/Rzk/Syntax/Abs.hs
--- a/src/Language/Rzk/Syntax/Abs.hs
+++ b/src/Language/Rzk/Syntax/Abs.hs
@@ -1,4 +1,4 @@
--- File generated by the BNF Converter (bnfc 2.9.6.2).
+-- File generated by the BNF Converter (bnfc 2.9.6.3).
 
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric #-}
@@ -83,7 +83,8 @@
     | ParamPatternType a [Pattern' a] (Term' a)
     | ParamPatternShape a [Pattern' a] (Term' a) (Term' a)
     | ParamPatternShapeDeprecated a (Pattern' a) (Term' a) (Term' a)
-    | ParamPatternModalType a [Pattern' a] (Modality' a) (Term' a)
+    | ParamPatternModalType a [Pattern' a] (ModalColon' a) (Term' a)
+    | ParamPatternModalShape a [Pattern' a] (ModalColon' a) (Term' a) (Term' a)
   deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)
 
 type Bind = Bind' BNFC'Position
@@ -99,13 +100,14 @@
     | ParamTermShape a (Term' a) (Term' a) (Term' a)
     | ParamTermTypeDeprecated a (Pattern' a) (Term' a)
     | ParamVarShapeDeprecated a (Pattern' a) (Term' a) (Term' a)
-    | ParamTermModalType a (Term' a) (Modality' a) (Term' a)
+    | ParamTermModalType a (Term' a) (ModalColon' a) (Term' a)
+    | ParamTermModalShape a (Term' a) (ModalColon' a) (Term' a) (Term' a)
   deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)
 
 type SigmaParam = SigmaParam' BNFC'Position
 data SigmaParam' a
     = SigmaParam a (Pattern' a) (Term' a)
-    | SigmaParamModal a (Pattern' a) (Modality' a) (Term' a)
+    | SigmaParamModal a (Pattern' a) (ModalColon' a) (Term' a)
   deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)
 
 type Restriction = Restriction' BNFC'Position
@@ -130,6 +132,17 @@
     = Single a (Modality' a) | Comp a (Modality' a) (Modality' a)
   deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)
 
+type ModalColon = ModalColon' BNFC'Position
+data ModalColon' a
+    = ModalColonFlat a
+    | ModalColonSharp a
+    | ModalColonOp a
+    | ModalColonId a
+    | ASCII_ModalColonFlat a
+    | ASCII_ModalColonSharp a
+    | ASCII_ModalColonOp a
+  deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)
+
 type Term = Term' BNFC'Position
 data Term' a
     = Universe a
@@ -140,6 +153,9 @@
     | Cube2 a
     | Cube2_0 a
     | Cube2_1 a
+    | CubeI a
+    | CubeI_0 a
+    | CubeI_1 a
     | CubeProduct a (Term' a) (Term' a)
     | TopeTop a
     | TopeBottom a
@@ -156,7 +172,7 @@
     | RecOrDeprecated a (Term' a) (Term' a) (Term' a) (Term' a)
     | TypeFun a (ParamDecl' a) (Term' a)
     | TypeSigma a (Pattern' a) (Term' a) (Term' a)
-    | TypeSigmaModal a (Pattern' a) (Modality' a) (Term' a) (Term' a)
+    | TypeSigmaModal a (Pattern' a) (ModalColon' a) (Term' a) (Term' a)
     | TypeSigmaTuple a (SigmaParam' a) [SigmaParam' a] (Term' a)
     | TypeUnit a
     | TypeId a (Term' a) (Term' a) (Term' a)
@@ -185,6 +201,9 @@
     | ASCII_CubeUnitStar a
     | ASCII_Cube2_0 a
     | ASCII_Cube2_1 a
+    | ASCII_CubeI a
+    | ASCII_CubeI_0 a
+    | ASCII_CubeI_1 a
     | ASCII_TopeTop a
     | ASCII_TopeBottom a
     | ASCII_TopeEQ a (Term' a) (Term' a)
@@ -193,7 +212,6 @@
     | ASCII_TopeOr a (Term' a) (Term' a)
     | ASCII_TypeFun a (ParamDecl' a) (Term' a)
     | ASCII_TypeSigma a (Pattern' a) (Term' a) (Term' a)
-    | ASCII_TypeSigmaModal a (Pattern' a) (Modality' a) (Term' a) (Term' a)
     | ASCII_TypeSigmaTuple a (SigmaParam' a) [SigmaParam' a] (Term' a)
     | ASCII_Lambda a [Param' a] (Term' a)
     | ASCII_TypeExtensionDeprecated a (ParamDecl' a) (Term' a)
@@ -240,6 +258,9 @@
 ascii_CubeProduct :: a -> Term' a -> Term' a -> Term' a
 ascii_CubeProduct = \ _a l r -> CubeProduct _a l r
 
+ascii_TypeSigmaModal :: a -> Pattern' a -> ModalColon' a -> Term' a -> Term' a -> Term' a
+ascii_TypeSigmaModal = \ _a p mc t r -> TypeSigmaModal _a p mc t r
+
 unicode_TypeSigmaAlt :: a -> Pattern' a -> Term' a -> Term' a -> Term' a
 unicode_TypeSigmaAlt = \ _a pat fst snd -> TypeSigma _a pat fst snd
 
@@ -324,6 +345,7 @@
     ParamPatternShape p _ _ _ -> p
     ParamPatternShapeDeprecated p _ _ _ -> p
     ParamPatternModalType p _ _ _ -> p
+    ParamPatternModalShape p _ _ _ _ -> p
 
 instance HasPosition Bind where
   hasPosition = \case
@@ -338,6 +360,7 @@
     ParamTermTypeDeprecated p _ _ -> p
     ParamVarShapeDeprecated p _ _ _ -> p
     ParamTermModalType p _ _ _ -> p
+    ParamTermModalShape p _ _ _ _ -> p
 
 instance HasPosition SigmaParam where
   hasPosition = \case
@@ -364,6 +387,16 @@
     Single p _ -> p
     Comp p _ _ -> p
 
+instance HasPosition ModalColon where
+  hasPosition = \case
+    ModalColonFlat p -> p
+    ModalColonSharp p -> p
+    ModalColonOp p -> p
+    ModalColonId p -> p
+    ASCII_ModalColonFlat p -> p
+    ASCII_ModalColonSharp p -> p
+    ASCII_ModalColonOp p -> p
+
 instance HasPosition Term where
   hasPosition = \case
     Universe p -> p
@@ -374,6 +407,9 @@
     Cube2 p -> p
     Cube2_0 p -> p
     Cube2_1 p -> p
+    CubeI p -> p
+    CubeI_0 p -> p
+    CubeI_1 p -> p
     CubeProduct p _ _ -> p
     TopeTop p -> p
     TopeBottom p -> p
@@ -419,6 +455,9 @@
     ASCII_CubeUnitStar p -> p
     ASCII_Cube2_0 p -> p
     ASCII_Cube2_1 p -> p
+    ASCII_CubeI p -> p
+    ASCII_CubeI_0 p -> p
+    ASCII_CubeI_1 p -> p
     ASCII_TopeTop p -> p
     ASCII_TopeBottom p -> p
     ASCII_TopeEQ p _ _ -> p
@@ -427,7 +466,6 @@
     ASCII_TopeOr p _ _ -> p
     ASCII_TypeFun p _ _ -> p
     ASCII_TypeSigma p _ _ _ -> p
-    ASCII_TypeSigmaModal p _ _ _ _ -> p
     ASCII_TypeSigmaTuple p _ _ _ -> p
     ASCII_Lambda p _ _ -> p
     ASCII_TypeExtensionDeprecated p _ _ -> p
diff --git a/src/Language/Rzk/Syntax/Layout.hs b/src/Language/Rzk/Syntax/Layout.hs
--- a/src/Language/Rzk/Syntax/Layout.hs
+++ b/src/Language/Rzk/Syntax/Layout.hs
@@ -1,4 +1,4 @@
--- File generated by the BNF Converter (bnfc 2.9.6.2).
+-- File generated by the BNF Converter (bnfc 2.9.6.3).
 
 {-# OPTIONS_GHC -Wno-incomplete-patterns #-}
 
@@ -37,16 +37,16 @@
 layoutOpen, layoutClose, layoutSep :: [TokSymbol]
 layoutOpen  = List.nub $ mapMaybe (delimOpen  . snd) layoutWords
 layoutClose = List.nub $ mapMaybe (delimClose . snd) layoutWords
-layoutSep   = List.nub $ TokSymbol ";" 34 : map (delimSep . snd) layoutWords
+layoutSep   = List.nub $ TokSymbol ";" 45 : map (delimSep . snd) layoutWords
 
 parenOpen, parenClose :: [TokSymbol]
 parenOpen  =
   [ TokSymbol "(" 17
-  , TokSymbol "[" 49
+  , TokSymbol "[" 60
   ]
 parenClose =
   [ TokSymbol ")" 18
-  , TokSymbol "]" 52
+  , TokSymbol "]" 63
   ]
 
 -- | Report an error during layout resolution.
@@ -74,7 +74,7 @@
   res Nothing [if topLayout then Implicit topDelim Definitive 1 else Explicit]
   where
   topDelim :: LayoutDelimiters
-  topDelim = LayoutDelimiters (TokSymbol ";" 34) Nothing Nothing
+  topDelim = LayoutDelimiters (TokSymbol ";" 45) Nothing Nothing
 
   res :: Maybe Token -- ^ The previous token, if any.
       -> [Block]     -- ^ A stack of layout blocks.
diff --git a/src/Language/Rzk/Syntax/Lex.hs b/src/Language/Rzk/Syntax/Lex.hs
--- a/src/Language/Rzk/Syntax/Lex.hs
+++ b/src/Language/Rzk/Syntax/Lex.hs
@@ -29,21 +29,21 @@
 alex_tab_size = 8
 alex_base :: AlexAddr
 alex_base = AlexA#
-  "\xf8\xff\xff\xff\x98\xff\xff\xff\xa0\xff\xff\xff\x9a\xff\xff\xff\xf8\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\xa5\xff\xff\xff\xa6\xff\xff\xff\xa2\xff\xff\xff\x9d\xff\xff\xff\xa8\xff\xff\xff\xa1\xff\xff\xff\xac\xff\xff\xff\xe5\xff\xff\xff\xd3\xff\xff\xff\xb8\x01\x00\x00\x91\xff\xff\xff\x85\xff\xff\xff\x7e\xff\xff\xff\x2f\x02\x00\x00\x26\x03\x00\x00\x1d\x04\x00\x00\x14\x05\x00\x00\x71\xff\xff\xff\x54\x05\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x05\x00\x00\x06\x06\x00\x00\x9b\xff\xff\xff\x00\x00\x00\x00\x7f\xff\xff\xff\x7c\xff\xff\xff\x8c\xff\xff\xff\xa3\xff\xff\xff\xb3\xff\xff\xff\xa7\xff\xff\xff\xfd\x06\x00\x00\xad\xff\xff\xff\xbd\xff\xff\xff\xaf\xff\xff\xff\xfd\x01\x00\x00\xf4\x07\x00\x00\xeb\x08\x00\x00\xe2\x09\x00\x00\xd9\x0a\x00\x00\xbf\xff\xff\xff\xcc\xff\xff\xff\xcf\xff\xff\xff\xce\xff\xff\xff\xd1\xff\xff\xff\xd2\xff\xff\xff\xd4\xff\xff\xff\xd7\xff\xff\xff\xdb\xff\xff\xff\xe0\xff\xff\xff\xe1\xff\xff\xff\xe6\xff\xff\xff\xe8\xff\xff\xff\xeb\xff\xff\xff\xee\xff\xff\xff\xef\xff\xff\xff\xf5\xff\xff\xff\xe0\x01\x00\x00\xd0\x0b\x00\x00\xc7\x0c\x00\x00\xbe\x0d\x00\x00\xb5\x0e\x00\x00\xac\x0f\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x0f\x00\x00\xe2\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x11\x00\x00\x94\x11\x00\x00\xd4\x11\x00\x00\xa7\x12\x00\x00\x18\x13\x00\x00\x16\x12\x00\x00\x00\x00\x00\x00\x59\x13\x00\x00\xca\x13\x00\x00\x9d\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x15\x00\x00\x8b\x16\x00\x00\x82\x17\x00\x00\x79\x18\x00\x00\x70\x19\x00\x00\x67\x1a\x00\x00\x5e\x1b\x00\x00\x55\x1c\x00\x00\x4c\x1d\x00\x00\x43\x1e\x00\x00\x3a\x1f\x00\x00\x31\x20\x00\x00\x28\x21\x00\x00\x1f\x22\x00\x00\x16\x23\x00\x00\x0d\x24\x00\x00\xea\xff\xff\xff\x04\x25\x00\x00\xfb\x25\x00\x00\xf2\x26\x00\x00\x00\x00\x00\x00\xe7\xff\xff\xff\xe9\x27\x00\x00\x2c\x00\x00\x00\xf3\xff\xff\xff\x30\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\xe0\x28\x00\x00\x3d\x02\x00\x00\x00\x00\x00\x00\xd6\x29\x00\x00\x1b\x02\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xfd\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff\xfc\xff\xff\xff\xf4\xff\xff\xff\xb6\xff\xff\xff\xcd\x2a\x00\x00\xda\xff\xff\xff\xba\xff\xff\xff\xc4\x2b\x00\x00\xbb\x2c\x00\x00\xb2\x2d\x00\x00\xa9\x2e\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\xdd\x01\x00\x00\x07\x00\x00\x00\xce\x01\x00\x00\xcf\x01\x00\x00\xd1\x01\x00\x00\xcc\x01\x00\x00\xec\x01\x00\x00\xda\x01\x00\x00\xf4\x01\x00\x00\xe6\x01\x00\x00\xe8\x01\x00\x00\xea\x01\x00\x00\xa9\x2f\x00\x00\x29\x30\x00\x00\x2a\x30\x00\x00\xaa\x30\x00\x00\x2a\x31\x00\x00\xaa\x31\x00\x00\x2a\x32\x00\x00\xaa\x32\x00\x00\x2a\x33\x00\x00\xaa\x33\x00\x00\xfa\x01\x00\x00\xfb\x01\x00\x00"#
+  "\xf8\xff\xff\xff\x9f\xff\xff\xff\xa2\xff\xff\xff\x94\xff\xff\xff\xa4\xff\xff\xff\x78\x00\x00\x00\xf8\x00\x00\x00\x78\x01\x00\x00\xf8\x01\x00\x00\x78\x02\x00\x00\xf8\x02\x00\x00\x78\x03\x00\x00\xf8\x03\x00\x00\x78\x04\x00\x00\xf8\x04\x00\x00\x78\x05\x00\x00\x78\x06\x00\x00\xf8\x06\x00\x00\x96\xff\xff\xff\x97\xff\xff\xff\x98\xff\xff\xff\xa8\xff\xff\xff\x9a\xff\xff\xff\xae\xff\xff\xff\x9e\xff\xff\xff\xa3\xff\xff\xff\xa1\xff\xff\xff\x7e\xff\xff\xff\x6f\x07\x00\x00\x66\x08\x00\x00\x5d\x09\x00\x00\x54\x0a\x00\x00\x5f\xff\xff\xff\x83\xff\xff\xff\x4b\x0b\x00\x00\x61\xff\xff\xff\xaa\xff\xff\xff\xad\xff\xff\xff\xf1\xff\xff\xff\xb5\xff\xff\xff\xbe\xff\xff\xff\xbd\xff\xff\xff\xbf\xff\xff\xff\xb9\xff\xff\xff\xc3\xff\xff\xff\xc4\xff\xff\xff\xc9\xff\xff\xff\xd1\xff\xff\xff\xd9\xff\xff\xff\xda\xff\xff\xff\x5b\x07\x00\x00\x41\x0c\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x38\x0d\x00\x00\x0e\x00\x00\x00\x10\x00\x00\x00\xd5\xff\xff\xff\x15\x00\x00\x00\x2f\x0e\x00\x00\xd2\xff\xff\xff\x00\x00\x00\x00\x26\x0f\x00\x00\xd7\xff\xff\xff\x1d\x10\x00\x00\x14\x11\x00\x00\x0b\x12\x00\x00\x02\x13\x00\x00\xf9\x13\x00\x00\xf0\x14\x00\x00\xe7\x15\x00\x00\xde\x16\x00\x00\xd5\x17\x00\x00\xcc\x18\x00\x00\xc3\x19\x00\x00\xba\x1a\x00\x00\xb1\x1b\x00\x00\xa8\x1c\x00\x00\x9f\x1d\x00\x00\x96\x1e\x00\x00\x8d\x1f\x00\x00\x84\x20\x00\x00\x7b\x21\x00\x00\x00\x00\x00\x00\x4e\x22\x00\x00\xbd\x0b\x00\x00\xbd\x21\x00\x00\x00\x00\x00\x00\x8f\x22\x00\x00\x00\x23\x00\x00\xd3\x23\x00\x00\x41\x23\x00\x00\x14\x24\x00\x00\x85\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x25\x00\x00\xbb\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x26\x00\x00\xa9\x27\x00\x00\xa0\x28\x00\x00\x97\x29\x00\x00\x8e\x2a\x00\x00\x1a\x00\x00\x00\xed\xff\xff\xff\xe7\xff\xff\xff\xe6\xff\xff\xff\xe8\xff\xff\xff\xe5\xff\xff\xff\xea\xff\xff\xff\xf3\xff\xff\xff\xe3\xff\xff\xff\xe4\xff\xff\xff\xee\xff\xff\xff\xeb\xff\xff\xff\xec\xff\xff\xff\xf2\xff\xff\xff\xf4\xff\xff\xff\xef\xff\xff\xff\x85\x2b\x00\x00\x7c\x2c\x00\x00\x73\x2d\x00\x00\x6a\x2e\x00\x00\x29\x00\x00\x00\xf5\xff\xff\xff\xf6\xff\xff\xff\x00\x00\x00\x00\xab\x2e\x00\x00\x1c\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x2f\x00\x00\x5c\x30\x00\x00\xf0\xff\xff\xff\xf9\x06\x00\x00\xfd\x06\x00\x00\xfe\x06\x00\x00\xd3\x30\x00\x00\xf2\x06\x00\x00\x03\x07\x00\x00\xd8\xff\xff\xff\xc8\xff\xff\xff\xcb\xff\xff\xff\xd7\x06\x00\x00\xdd\xff\xff\xff\x00\x00\x00\x00\xff\x06\x00\x00\x14\x31\x00\x00\x85\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\xff\xff\xc5\x31\x00\x00\xe3\x06\x00\x00\xbc\x32\x00\x00\xb3\x33\x00\x00\xaa\x34\x00\x00\xa1\x35\x00\x00\xce\xff\xff\xff\xc5\x06\x00\x00\xdc\xff\xff\xff\xfc\x06\x00\x00\x08\x07\x00\x00\x05\x07\x00\x00\xa1\x36\x00\x00\x52\x07\x00\x00\x66\x07\x00\x00\x30\x07\x00\x00\x27\x07\x00\x00\x37\x07\x00\x00\x28\x07\x00\x00\x33\x07\x00\x00\x39\x07\x00\x00\x32\x07\x00\x00\x3c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x36\x00\x00\x61\x37\x00\x00\x35\x07\x00\x00"#
 
 alex_table :: AlexAddr
 alex_table = AlexA#
-  "\x00\x00\x7b\x00\x7b\x00\x7a\x00\x7a\x00\x7b\x00\x02\x00\x72\x00\x72\x00\x09\x00\x77\x00\x0d\x00\x76\x00\x72\x00\x72\x00\x0f\x00\x72\x00\x72\x00\x7d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x7b\x00\xff\xff\x4e\x00\x43\x00\x6b\x00\x13\x00\x29\x00\x6d\x00\x72\x00\x72\x00\x70\x00\x72\x00\x72\x00\x10\x00\xff\xff\x74\x00\x63\x00\x6f\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x2b\x00\x6d\x00\x32\x00\x71\x00\x72\x00\x2d\x00\x6c\x00\x72\x00\x5d\x00\x6d\x00\x14\x00\x6d\x00\x28\x00\x25\x00\x1a\x00\x6d\x00\x6d\x00\x6d\x00\x08\x00\x35\x00\x3a\x00\x34\x00\x9c\x00\x03\x00\x99\x00\xa7\x00\x80\x00\x39\x00\x41\x00\x23\x00\x40\x00\x6d\x00\x6d\x00\x0a\x00\x9a\x00\x0b\x00\x72\x00\x75\x00\x72\x00\x9b\x00\x61\x00\x95\x00\x37\x00\x72\x00\x72\x00\x8f\x00\x91\x00\x8d\x00\x11\x00\x55\x00\x18\x00\x49\x00\x83\x00\x7f\x00\x0c\x00\xa8\x00\x3d\x00\x42\x00\x84\x00\x44\x00\x15\x00\x87\x00\x16\x00\x93\x00\x88\x00\x72\x00\x01\x00\x38\x00\x79\x00\x78\x00\x72\x00\xa7\x00\x33\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\x12\x00\x26\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x24\x00\x1c\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x89\x00\x27\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x92\x00\xff\xff\x4e\x00\x3b\x00\x9a\x00\x94\x00\x36\x00\x4e\x00\x82\x00\x3f\x00\x0e\x00\x7b\x00\x7b\x00\x7b\x00\x7b\x00\x7b\x00\x0d\x00\x90\x00\x96\x00\x49\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x3e\x00\x81\x00\x8e\x00\x97\x00\xff\xff\xff\xff\x98\x00\x3c\x00\xff\xff\xa7\x00\x7b\x00\x85\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\x20\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\x05\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x2a\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x6d\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9e\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4d\x00\xa4\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x53\x00\xa3\x00\x4a\x00\x4a\x00\x4a\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\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\x4d\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\x5b\x00\x1b\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x54\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x59\x00\xa5\x00\x4f\x00\x4f\x00\x4f\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x59\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\x54\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\x57\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\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x54\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x59\x00\xa5\x00\x4f\x00\x4f\x00\x4f\x00\x56\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x21\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x6d\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x48\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x21\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x2c\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x6d\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x72\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7b\x00\x7a\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x05\x00\x9f\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x20\x00\xa0\x00\x1d\x00\x1d\x00\x1d\x00\x1f\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x86\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x89\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x04\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x9f\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\xa4\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x9e\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00"#
+  "\x00\x00\x35\x00\x35\x00\x36\x00\x36\x00\x35\x00\x3d\x00\x3c\x00\x04\x00\x3d\x00\x2b\x00\xb2\x00\x73\x00\x16\x00\x6b\x00\x18\x00\x74\x00\x14\x00\x1a\x00\xa7\x00\x21\x00\x22\x00\xa4\x00\x25\x00\x35\x00\xff\xff\x61\x00\x6c\x00\x44\x00\x81\x00\x27\x00\x29\x00\x3d\x00\x3d\x00\x40\x00\xad\x00\x3d\x00\xaa\x00\xff\xff\x3b\x00\x4c\x00\x41\x00\x42\x00\x01\x00\x2f\x00\x77\x00\x2c\x00\x6d\x00\x02\x00\x72\x00\x3e\x00\x3d\x00\x7f\x00\x43\x00\x3d\x00\x52\x00\x24\x00\xae\x00\x31\x00\x5a\x00\x2d\x00\xa9\x00\xb1\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x3d\x00\x3d\x00\x78\x00\x19\x00\x03\x00\xaf\x00\xb0\x00\x14\x00\x76\x00\x30\x00\x79\x00\x6f\x00\x2e\x00\x70\x00\xac\x00\x3d\x00\x3a\x00\x3d\x00\x35\x00\x4e\x00\x6e\x00\x28\x00\xb7\x00\x04\x00\x6b\x00\x3f\x00\x1c\x00\x15\x00\x71\x00\x9f\x00\x2a\x00\x17\x00\x75\x00\x12\x00\x3d\x00\x80\x00\x7a\x00\x42\x00\x6a\x00\x13\x00\x42\x00\xa1\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x37\x00\x38\x00\x3d\x00\x93\x00\x8d\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\xa8\x00\x90\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x92\x00\x9b\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x20\x00\x8f\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0e\x00\xb4\x00\xb4\x00\xb4\x00\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x05\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x10\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x07\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x88\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x09\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x0f\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x1b\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\xb6\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\x89\x00\xff\xff\x61\x00\x42\x00\x42\x00\x8b\x00\xa6\x00\x61\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\xa5\x00\x42\x00\x8e\x00\x91\x00\x9d\x00\x42\x00\xff\xff\x3d\x00\xff\xff\xff\xff\x33\x00\x3d\x00\xab\x00\xad\x00\xff\xff\xff\xff\x42\x00\x42\x00\xff\xff\x93\x00\x3d\x00\x3d\x00\x39\x00\x04\x00\x26\x00\x42\x00\x3d\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\xff\xff\xff\xff\xff\xff\x61\x00\x00\x00\x61\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x20\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x23\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\x56\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb3\x00\xb5\x00\x0f\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x99\x00\x97\x00\x0d\x00\x9a\x00\x9a\x00\x9a\x00\x98\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x35\x00\x36\x00\x36\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x3d\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x42\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x20\x00\x94\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x8a\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\xa3\x00\x96\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x66\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x42\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\xa3\x00\x96\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x88\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x87\x00\x09\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x83\x00\x0a\x00\x86\x00\x86\x00\x86\x00\x84\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x5b\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5b\x00\x05\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x56\x00\x06\x00\x60\x00\x60\x00\x60\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\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\x58\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\x54\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5b\x00\x05\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x5f\x00\x56\x00\x06\x00\x60\x00\x60\x00\x60\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x62\x00\x07\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x5c\x00\x08\x00\x65\x00\x65\x00\x65\x00\x5d\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\x42\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x87\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\x83\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x8c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\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\x97\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\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\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\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\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x9c\x00\x0c\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x57\x00\x58\x00\x0b\x00\xb4\x00\xb4\x00\xb4\x00\x59\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6e\x00\x67\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x66\x00\x6b\x00\x66\x00\x6e\x00\x64\x00\x3e\x00\x2d\x00\x82\x00\x96\x00\xa4\x00\xa5\x00\x92\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x82\x00\x80\x00\xa3\x00\x28\x00\x29\x00\x2a\x00\x3e\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xa6\x00\xad\x00\xa1\x00\xaf\x00\x82\x00\xa4\x00\x82\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x91\x00\x86\x00\x97\x00\x88\x00\x89\x00\x8a\x00\x81\x00\x82\x00\x81\x00\x75\x00\x73\x00\x75\x00\x73\x00\x73\x00\x6f\x00\x73\x00\x6d\x00\x69\x00\x69\x00\x65\x00\x99\x00\x65\x00\xa7\x00\xa8\x00\x65\x00\x63\x00\x63\x00\x5b\x00\x5c\x00\x5d\x00\x61\x00\x5f\x00\x2d\x00\x6f\x00\x73\x00\x2f\x00\x69\x00\x2d\x00\x66\x00\x2d\x00\x2d\x00\x69\x00\x74\x00\x62\x00\x61\x00\x68\x00\x6c\x00\x68\x00\x6c\x00\x75\x00\x72\x00\xb5\x00\x92\x00\x75\x00\x6f\x00\xb5\x00\x3e\x00\x61\x00\x6e\x00\x7b\x00\x7c\x00\x7d\x00\x6e\x00\x70\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\x09\x00\x0a\x00\x3d\x00\x6d\x00\x0d\x00\x22\x00\x72\x00\x70\x00\x6f\x00\x61\x00\x27\x00\x63\x00\x64\x00\x65\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6e\x00\x6c\x00\x61\x00\x74\x00\x20\x00\x70\x00\x22\x00\x23\x00\x73\x00\x77\x00\x75\x00\x76\x00\x28\x00\x29\x00\x65\x00\x74\x00\x2c\x00\x74\x00\x20\x00\x74\x00\x65\x00\x65\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\x5b\x00\x5c\x00\x5d\x00\x72\x00\xff\xff\x74\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\x6e\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\x69\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x6e\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x76\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\x7a\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x6b\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\x2d\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\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\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\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\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x72\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x78\x00\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
+  "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x67\x00\x65\x00\x74\x00\x65\x00\x74\x00\x74\x00\x74\x00\x65\x00\x74\x00\x61\x00\x72\x00\x70\x00\x6f\x00\x95\x00\xb5\x00\x92\x00\xb5\x00\x6d\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x70\x00\x2d\x00\x61\x00\x28\x00\x29\x00\x2a\x00\x6e\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x6e\x00\x77\x00\x6e\x00\x75\x00\x6c\x00\x6c\x00\x68\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x6f\x00\x68\x00\x61\x00\x2d\x00\x62\x00\x2d\x00\x69\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2f\x00\x73\x00\x6f\x00\x2d\x00\x61\x00\x63\x00\x65\x00\x63\x00\x69\x00\x69\x00\x61\x00\x65\x00\x63\x00\x64\x00\x65\x00\x5b\x00\x5c\x00\x5d\x00\x20\x00\x5f\x00\x65\x00\x6c\x00\x6f\x00\x6d\x00\x74\x00\x70\x00\x66\x00\x73\x00\x73\x00\x69\x00\x75\x00\x76\x00\x75\x00\x73\x00\x3d\x00\x73\x00\x73\x00\xa1\x00\x72\x00\x75\x00\xa4\x00\x75\x00\xa3\x00\x97\x00\xa2\x00\x81\x00\x96\x00\x7b\x00\x7c\x00\x7d\x00\x99\x00\x80\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\x09\x00\x0a\x00\xb5\x00\x82\x00\x0d\x00\x22\x00\x81\x00\x82\x00\x82\x00\x82\x00\x27\x00\x91\x00\xad\x00\x80\x00\xaf\x00\xa4\x00\xa5\x00\x86\x00\x82\x00\x88\x00\x89\x00\x8a\x00\x92\x00\x20\x00\x3e\x00\x22\x00\x23\x00\x2d\x00\x64\x00\x6e\x00\x6e\x00\x28\x00\x29\x00\xa7\x00\xa8\x00\x2c\x00\x99\x00\x66\x00\x6b\x00\x66\x00\x6e\x00\x65\x00\xa6\x00\x6e\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\x5b\x00\x5c\x00\x5d\x00\x72\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x78\x00\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x72\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\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\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\x2d\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x6b\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\x7a\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x76\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x6e\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\x69\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\x3b\x00\x3c\x00\xff\xff\x3e\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\x5b\x00\x5c\x00\x5d\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\x6e\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\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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#
-  "\x5e\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7d\x00\x58\x00\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1e\x00\x07\x00\x1e\x00\x07\x00\x22\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x22\x00\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\x4b\x00\x4c\x00\x4e\x00\x4e\x00\x4e\x00\x50\x00\x51\x00\x55\x00\x4b\x00\x4c\x00\x55\x00\x55\x00\x50\x00\x22\x00\x22\x00\x51\x00\x58\x00\x55\x00\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\x5e\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x5e\x00\x5e\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\xff\xff\xff\xff\xff\xff\x55\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+  "\x51\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\x61\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x95\x00\x51\x00\x51\x00\x51\x00\x51\x00\x95\x00\x51\x00\x51\x00\x95\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\x33\x00\xff\xff\xff\xff\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\xff\xff\xff\xff\x51\x00\xff\xff\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x52\x00\xff\xff\x5a\x00\x5f\x00\x5e\x00\x95\x00\x95\x00\x57\x00\x5a\x00\x5a\x00\x63\x00\x64\x00\x5a\x00\x5e\x00\x5f\x00\x61\x00\x61\x00\x61\x00\x63\x00\x64\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\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\x51\x00\x51\x00\x51\x00\x51\x00\xff\xff\xff\xff\xff\xff\x52\x00\x82\x00\x85\x00\x82\x00\x85\x00\x52\x00\x52\x00\x51\x00\x95\x00\x51\x00\x95\x00\x51\x00\x51\x00\x95\x00\x51\x00\x51\x00\x51\x00\x51\x00\x95\x00\x51\x00\x95\x00\xb3\x00\x99\x00\xb3\x00\x99\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x95\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x57\x00\x33\x00\x33\x00\xff\xff"#
 
-alex_accept = Data.Array.listArray (0 :: Int, 168)
+alex_accept = Data.Array.listArray (0 :: Int, 183)
   [ AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -66,15 +66,23 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
   , AlexAcc 48
   , AlexAcc 47
   , AlexAcc 46
   , AlexAcc 45
   , AlexAccNone
   , AlexAccNone
+  , AlexAcc 44
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
+  , AlexAcc 43
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -85,16 +93,41 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
-  , AlexAcc 44
   , AlexAccNone
   , AlexAccNone
-  , AlexAccNone
-  , AlexAcc 43
+  , AlexAccSkip
+  , AlexAccSkip
+  , AlexAccSkip
+  , AlexAccSkip
   , AlexAcc 42
   , AlexAcc 41
   , AlexAcc 40
   , AlexAcc 39
+  , AlexAcc 38
+  , AlexAcc 37
+  , AlexAcc 36
+  , AlexAcc 35
   , AlexAccNone
+  , AlexAcc 34
+  , AlexAcc 33
+  , AlexAcc 32
+  , AlexAcc 31
+  , AlexAcc 30
+  , AlexAcc 29
+  , AlexAcc 28
+  , AlexAcc 27
+  , AlexAcc 26
+  , AlexAcc 25
+  , AlexAcc 24
+  , AlexAcc 23
+  , AlexAcc 22
+  , AlexAcc 21
+  , AlexAcc 20
+  , AlexAcc 19
+  , AlexAcc 18
+  , AlexAcc 17
+  , AlexAcc 16
+  , AlexAcc 15
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -112,14 +145,12 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
-  , AlexAcc 38
-  , AlexAcc 37
-  , AlexAcc 36
-  , AlexAcc 35
-  , AlexAcc 34
   , AlexAccNone
-  , AlexAccNone
-  , AlexAccNone
+  , AlexAcc 14
+  , AlexAcc 13
+  , AlexAcc 12
+  , AlexAcc 11
+  , AlexAcc 10
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -136,40 +167,11 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
-  , AlexAcc 33
-  , AlexAcc 32
-  , AlexAcc 31
-  , AlexAcc 30
-  , AlexAcc 29
-  , AlexAcc 28
-  , AlexAcc 27
-  , AlexAcc 26
-  , AlexAcc 25
-  , AlexAcc 24
-  , AlexAcc 23
-  , AlexAcc 22
-  , AlexAcc 21
-  , AlexAcc 20
-  , AlexAcc 19
-  , AlexAcc 18
-  , AlexAcc 17
-  , AlexAcc 16
-  , AlexAccNone
-  , AlexAcc 15
-  , AlexAcc 14
-  , AlexAcc 13
-  , AlexAcc 12
-  , AlexAcc 11
-  , AlexAcc 10
   , AlexAcc 9
   , AlexAcc 8
   , AlexAcc 7
   , AlexAcc 6
   , AlexAcc 5
-  , AlexAccSkip
-  , AlexAccSkip
-  , AlexAccSkip
-  , AlexAccSkip
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -179,13 +181,13 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
   , AlexAcc 4
   , AlexAccNone
   , AlexAccNone
-  , AlexAcc 3
-  , AlexAcc 2
-  , AlexAcc 1
-  , AlexAcc 0
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -200,6 +202,10 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
+  , AlexAcc 3
+  , AlexAcc 2
+  , AlexAcc 1
+  , AlexAcc 0
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
@@ -213,6 +219,15 @@
   , AlexAccNone
   , AlexAccNone
   , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
+  , AlexAccNone
   ]
 
 alex_actions = Data.Array.array (0 :: Int, 49)
@@ -222,18 +237,18 @@
   , (45,alex_action_4)
   , (44,alex_action_4)
   , (43,alex_action_3)
-  , (42,alex_action_4)
-  , (41,alex_action_4)
-  , (40,alex_action_4)
-  , (39,alex_action_4)
-  , (38,alex_action_4)
-  , (37,alex_action_4)
-  , (36,alex_action_4)
-  , (35,alex_action_4)
-  , (34,alex_action_4)
-  , (33,alex_action_7)
-  , (32,alex_action_5)
-  , (31,alex_action_4)
+  , (42,alex_action_3)
+  , (41,alex_action_3)
+  , (40,alex_action_3)
+  , (39,alex_action_3)
+  , (38,alex_action_3)
+  , (37,alex_action_3)
+  , (36,alex_action_3)
+  , (35,alex_action_3)
+  , (34,alex_action_3)
+  , (33,alex_action_3)
+  , (32,alex_action_3)
+  , (31,alex_action_3)
   , (30,alex_action_4)
   , (29,alex_action_4)
   , (28,alex_action_4)
@@ -247,18 +262,18 @@
   , (20,alex_action_4)
   , (19,alex_action_4)
   , (18,alex_action_4)
-  , (17,alex_action_3)
-  , (16,alex_action_3)
-  , (15,alex_action_3)
-  , (14,alex_action_3)
-  , (13,alex_action_3)
-  , (12,alex_action_3)
-  , (11,alex_action_3)
-  , (10,alex_action_3)
-  , (9,alex_action_3)
-  , (8,alex_action_3)
-  , (7,alex_action_3)
-  , (6,alex_action_3)
+  , (17,alex_action_4)
+  , (16,alex_action_5)
+  , (15,alex_action_7)
+  , (14,alex_action_4)
+  , (13,alex_action_4)
+  , (12,alex_action_4)
+  , (11,alex_action_4)
+  , (10,alex_action_4)
+  , (9,alex_action_4)
+  , (8,alex_action_4)
+  , (7,alex_action_4)
+  , (6,alex_action_4)
   , (5,alex_action_3)
   , (4,alex_action_4)
   , (3,alex_action_4)
@@ -610,65 +625,70 @@
 -- | The keywords and symbols of the language organized as binary search tree.
 resWords :: BTree
 resWords =
-  b "\\" 50
-    (b "/\\" 25
-       (b "#unset-option" 13
+  b "TOP" 56
+    (b "0\7522" 28
+       (b "#variable" 14
           (b "#define" 7
              (b "#compute-nf" 4
                 (b "#check" 2 (b "#assume" 1 N N) (b "#compute" 3 N N))
                 (b "#def" 6 (b "#compute-whnf" 5 N N) N))
-             (b "#postulate" 10
-                (b "#lang" 9 (b "#end" 8 N N) N)
-                (b "#set-option" 12 (b "#section" 11 N N) N)))
-          (b "*" 19
-             (b "$extract$" 16
-                (b "#variables" 15 (b "#variable" 14 N N) N)
-                (b ")" 18 (b "(" 17 N N) N))
-             (b "," 22
-                (b "*\8321" 21 (b "*_1" 20 N N) N) (b "/" 24 (b "->" 23 N N) N))))
-       (b "=" 38
-          (b ":" 32
-             (b "1_2" 29
-                (b "0\8322" 27 (b "0_2" 26 N N) (b "1" 28 N N))
-                (b "2" 31 (b "1\8322" 30 N N) N))
-             (b "<" 35
-                (b ";" 34 (b ":=" 33 N N) N) (b "<|" 37 (b "<=" 36 N N) N)))
-          (b "Sigma" 44
-             (b ">" 41
-                (b "=_{" 40 (b "===" 39 N N) N) (b "CUBE" 43 (b "BOT" 42 N N) N))
-             (b "U" 47
-                (b "TOPE" 46 (b "TOP" 45 N N) N) (b "[" 49 (b "Unit" 48 N N) N)))))
-    (b "uninv_op" 75
-       (b "inv_op" 63
-          (b "as" 57
-             (b "_b" 54
-                (b "]" 52 (b "\\/" 51 N N) (b "_#" 53 N N))
-                (b "_op" 56 (b "_id" 55 N N) N))
-             (b "flip\7506\7510" 60
-                (b "flip_op" 59 (b "first" 58 N N) N)
-                (b "in" 62 (b "idJ" 61 N N) N)))
-          (b "refl" 69
-             (b "mod" 66
-                (b "let" 65 (b "inv\7506\7510" 64 N N) N)
-                (b "recOR" 68 (b "recBOT" 67 N N) N))
-             (b "second" 72
-                (b "rzk-1" 71 (b "refl_{" 70 N N) N)
-                (b "unflip\7506\7510" 74 (b "unflip_op" 73 N N) N))))
-       (b "\7506\7510" 88
-          (b "|>" 82
-             (b "{" 79
-                (b "unit" 77 (b "uninv\7506\7510" 76 N N) (b "uses" 78 N N))
-                (b "|->" 81 (b "|" 80 N N) N))
-             (b "\931" 85
-                (b "\215" 84 (b "}" 83 N N) N)
-                (b "\960\8322" 87 (b "\960\8321" 86 N N) N)))
-          (b "\8801" 94
-             (b "\8721" 91
-                (b "\8614" 90 (b "\8594" 89 N N) N)
-                (b "\8744" 93 (b "\8743" 92 N N) N))
-             (b "\8869" 97
-                (b "\8868" 96 (b "\8804" 95 N N) N)
-                (b "\9839" 99 (b "\9837" 98 N N) N)))))
+             (b "#section" 11
+                (b "#lang" 9 (b "#end" 8 N N) (b "#postulate" 10 N N))
+                (b "#unset-option" 13 (b "#set-option" 12 N N) N)))
+          (b "*\8321" 21
+             (b ")" 18
+                (b "$extract$" 16 (b "#variables" 15 N N) (b "(" 17 N N))
+                (b "*_1" 20 (b "*" 19 N N) N))
+             (b "/\\" 25
+                (b "->" 23 (b "," 22 N N) (b "/" 24 N N))
+                (b "0_I" 27 (b "0_2" 26 N N) N))))
+       (b ":\7506\7510" 42
+          (b "2" 35
+             (b "1_I" 32
+                (b "1" 30 (b "0\8322" 29 N N) (b "1_2" 31 N N))
+                (b "1\8322" 34 (b "1\7522" 33 N N) N))
+             (b ":_b" 39
+                (b ":=" 37 (b ":" 36 N N) (b ":_#" 38 N N))
+                (b ":_op" 41 (b ":_id" 40 N N) N)))
+          (b "===" 49
+             (b "<" 46
+                (b ":\9839" 44 (b ":\9837" 43 N N) (b ";" 45 N N))
+                (b "=" 48 (b "<=" 47 N N) N))
+             (b "CUBE" 53
+                (b ">" 51 (b "=_{" 50 N N) (b "BOT" 52 N N))
+                (b "Sigma" 55 (b "II" 54 N N) N)))))
+    (b "unflip_op" 84
+       (b "flip_op" 70
+          (b "]" 63
+             (b "[" 60
+                (b "U" 58 (b "TOPE" 57 N N) (b "Unit" 59 N N))
+                (b "\\/" 62 (b "\\" 61 N N) N))
+             (b "_op" 67
+                (b "_b" 65 (b "_#" 64 N N) (b "_id" 66 N N))
+                (b "first" 69 (b "as" 68 N N) N)))
+          (b "mod" 77
+             (b "inv_op" 74
+                (b "idJ" 72 (b "flip\7506\7510" 71 N N) (b "in" 73 N N))
+                (b "let" 76 (b "inv\7506\7510" 75 N N) N))
+             (b "refl_{" 81
+                (b "recOR" 79 (b "recBOT" 78 N N) (b "refl" 80 N N))
+                (b "second" 83 (b "rzk-1" 82 N N) N))))
+       (b "\7506\7510" 98
+          (b "|" 91
+             (b "unit" 88
+                (b "uninv_op" 86
+                   (b "unflip\7506\7510" 85 N N) (b "uninv\7506\7510" 87 N N))
+                (b "{" 90 (b "uses" 89 N N) N))
+             (b "\931" 95
+                (b "}" 93 (b "|->" 92 N N) (b "\215" 94 N N))
+                (b "\960\8322" 97 (b "\960\8321" 96 N N) N)))
+          (b "\8804" 105
+             (b "\8743" 102
+                (b "\8614" 100 (b "\8594" 99 N N) (b "\8721" 101 N N))
+                (b "\8801" 104 (b "\8744" 103 N N) N))
+             (b "\9837" 108
+                (b "\8869" 107 (b "\8868" 106 N N) N)
+                (b "\120128" 110 (b "\9839" 109 N N) N)))))
   where
   b s n = B bs (TS bs n)
     where
diff --git a/src/Language/Rzk/Syntax/Lex.x b/src/Language/Rzk/Syntax/Lex.x
deleted file mode 100644
--- a/src/Language/Rzk/Syntax/Lex.x
+++ /dev/null
@@ -1,315 +0,0 @@
--- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6.2).
-
--- Lexer definition for use with Alex 3
-{
-{-# OPTIONS -Wno-incomplete-patterns #-}
-{-# OPTIONS_GHC -w #-}
-
-{-# LANGUAGE PatternSynonyms #-}
-
-module Language.Rzk.Syntax.Lex where
-
-import Prelude
-
-import qualified Data.Text
-import qualified Data.Bits
-import Data.Char     (ord)
-import Data.Function (on)
-import Data.Word     (Word8)
-}
-
--- Predefined character classes
-
-$c = [A-Z\192-\222] # [\215]  -- capital isolatin1 letter (215 = \times)
-$s = [a-z\223-\255] # [\247]  -- small   isolatin1 letter (247 = \div  )
-$l = [$c $s]         -- letter
-$d = [0-9]           -- digit
-$i = [$l $d _ ']     -- identifier character
-$u = [. \n]          -- universal: any character
-
--- Symbols and non-identifier-like reserved words
-
-@rsyms = \ᵒ \ᵖ | "inv" \ᵒ \ᵖ | "uninv" \ᵒ \ᵖ | "flip" \ᵒ \ᵖ | "unflip" \ᵒ \ᵖ | \Σ | \π \₁ | \π \₂ | \# "lang" | \; | "rzk" \- "1" | \# "set" \- "option" | \= | \# "unset" \- "option" | \# "check" | \: | \# "compute" | \# "compute" \- "whnf" | \# "compute" \- "nf" | \# "postulate" | \# "assume" | \# "variable" | \# "variables" | \# "section" | \# "end" | \# "define" | \: \= | \# "def" | \( | \) | \, | \| | \{ | \} | \↦ | \♭ | \_ "b" | \♯ | \_ \# | \_ "op" | \_ "id" | \/ | "1" | \* \₁ | "2" | "0" \₂ | "1" \₂ | \× | \⊤ | \⊥ | \≡ | \≤ | \∧ | \∨ | \→ | \= \_ \{ | \[ | \] | \< | \> | \\ | \< \| | \| \> | \$ "extract" \$ | "refl" \_ \{ | \* | \* \_ "1" | "0" \_ "2" | "1" \_ "2" | \= \= \= | \< \= | \/ \\ | \\ \/ | \- \> | \| \- \> | \∑
-
-:-
-
--- Line comment "--"
-"--" [.]* ;
-
--- Block comment "{-" "-}"
-\{ \- [$u # \-]* \- ([$u # [\- \}]] [$u # \-]* \- | \-)* \} ;
-
--- Whitespace (skipped)
-$white+ ;
-
--- Symbols
-@rsyms
-    { tok (eitherResIdent TV) }
-
--- token VarIdentToken
-[$u # [\t \n \r \  \! \" \# \( \) \, \- \. \; \< \> \? \[ \\ \] \{ \| \}]] [$u # [\t \n \r \  \" \# \( \) \, \; \< \> \[ \\ \] \{ \| \}]] *
-    { tok (eitherResIdent T_VarIdentToken) }
-
--- token HoleIdentToken
-\?
-    { tok (eitherResIdent T_HoleIdentToken) }
-
--- Keywords and Ident
-$l $i*
-    { tok (eitherResIdent TV) }
-
--- String
-\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t | r | f)))* \"
-    { tok (TL . unescapeInitTail) }
-
-{
--- | Create a token with position.
-tok :: (Data.Text.Text -> Tok) -> (Posn -> Data.Text.Text -> Token)
-tok f p = PT p . f
-
--- | Token without position.
-data Tok
-  = TK {-# UNPACK #-} !TokSymbol  -- ^ Reserved word or symbol.
-  | TL !Data.Text.Text            -- ^ String literal.
-  | TI !Data.Text.Text            -- ^ Integer literal.
-  | TV !Data.Text.Text            -- ^ Identifier.
-  | TD !Data.Text.Text            -- ^ Float literal.
-  | TC !Data.Text.Text            -- ^ Character literal.
-  | T_VarIdentToken !Data.Text.Text
-  | T_HoleIdentToken !Data.Text.Text
-  deriving (Eq, Show, Ord)
-
--- | Smart constructor for 'Tok' for the sake of backwards compatibility.
-pattern TS :: Data.Text.Text -> Int -> Tok
-pattern TS t i = TK (TokSymbol t i)
-
--- | Keyword or symbol tokens have a unique ID.
-data TokSymbol = TokSymbol
-  { tsText :: Data.Text.Text
-      -- ^ Keyword or symbol text.
-  , tsID   :: !Int
-      -- ^ Unique ID.
-  } deriving (Show)
-
--- | Keyword/symbol equality is determined by the unique ID.
-instance Eq  TokSymbol where (==)    = (==)    `on` tsID
-
--- | Keyword/symbol ordering is determined by the unique ID.
-instance Ord TokSymbol where compare = compare `on` tsID
-
--- | Token with position.
-data Token
-  = PT  Posn Tok
-  | Err Posn
-  deriving (Eq, Show, Ord)
-
--- | Pretty print a position.
-printPosn :: Posn -> String
-printPosn (Pn _ l c) = "line " ++ show l ++ ", column " ++ show c
-
--- | Pretty print the position of the first token in the list.
-tokenPos :: [Token] -> String
-tokenPos (t:_) = printPosn (tokenPosn t)
-tokenPos []    = "end of file"
-
--- | Get the position of a token.
-tokenPosn :: Token -> Posn
-tokenPosn (PT p _) = p
-tokenPosn (Err p)  = p
-
--- | Get line and column of a token.
-tokenLineCol :: Token -> (Int, Int)
-tokenLineCol = posLineCol . tokenPosn
-
--- | Get line and column of a position.
-posLineCol :: Posn -> (Int, Int)
-posLineCol (Pn _ l c) = (l,c)
-
--- | Convert a token into "position token" form.
-mkPosToken :: Token -> ((Int, Int), Data.Text.Text)
-mkPosToken t = (tokenLineCol t, tokenText t)
-
--- | Convert a token to its text.
-tokenText :: Token -> Data.Text.Text
-tokenText t = case t of
-  PT _ (TS s _) -> s
-  PT _ (TL s)   -> Data.Text.pack (show s)
-  PT _ (TI s)   -> s
-  PT _ (TV s)   -> s
-  PT _ (TD s)   -> s
-  PT _ (TC s)   -> s
-  Err _         -> Data.Text.pack "#error"
-  PT _ (T_VarIdentToken s) -> s
-  PT _ (T_HoleIdentToken s) -> s
-
--- | Convert a token to a string.
-prToken :: Token -> String
-prToken t = Data.Text.unpack (tokenText t)
-
--- | Finite map from text to token organized as binary search tree.
-data BTree
-  = N -- ^ Nil (leaf).
-  | B Data.Text.Text Tok BTree BTree
-      -- ^ Binary node.
-  deriving (Show)
-
--- | Convert potential keyword into token or use fallback conversion.
-eitherResIdent :: (Data.Text.Text -> Tok) -> Data.Text.Text -> Tok
-eitherResIdent tv s = treeFind resWords
-  where
-  treeFind N = tv s
-  treeFind (B a t left right) =
-    case compare s a of
-      LT -> treeFind left
-      GT -> treeFind right
-      EQ -> t
-
--- | The keywords and symbols of the language organized as binary search tree.
-resWords :: BTree
-resWords =
-  b "\\" 50
-    (b "/\\" 25
-       (b "#unset-option" 13
-          (b "#define" 7
-             (b "#compute-nf" 4
-                (b "#check" 2 (b "#assume" 1 N N) (b "#compute" 3 N N))
-                (b "#def" 6 (b "#compute-whnf" 5 N N) N))
-             (b "#postulate" 10
-                (b "#lang" 9 (b "#end" 8 N N) N)
-                (b "#set-option" 12 (b "#section" 11 N N) N)))
-          (b "*" 19
-             (b "$extract$" 16
-                (b "#variables" 15 (b "#variable" 14 N N) N)
-                (b ")" 18 (b "(" 17 N N) N))
-             (b "," 22
-                (b "*\8321" 21 (b "*_1" 20 N N) N) (b "/" 24 (b "->" 23 N N) N))))
-       (b "=" 38
-          (b ":" 32
-             (b "1_2" 29
-                (b "0\8322" 27 (b "0_2" 26 N N) (b "1" 28 N N))
-                (b "2" 31 (b "1\8322" 30 N N) N))
-             (b "<" 35
-                (b ";" 34 (b ":=" 33 N N) N) (b "<|" 37 (b "<=" 36 N N) N)))
-          (b "Sigma" 44
-             (b ">" 41
-                (b "=_{" 40 (b "===" 39 N N) N) (b "CUBE" 43 (b "BOT" 42 N N) N))
-             (b "U" 47
-                (b "TOPE" 46 (b "TOP" 45 N N) N) (b "[" 49 (b "Unit" 48 N N) N)))))
-    (b "uninv_op" 75
-       (b "inv_op" 63
-          (b "as" 57
-             (b "_b" 54
-                (b "]" 52 (b "\\/" 51 N N) (b "_#" 53 N N))
-                (b "_op" 56 (b "_id" 55 N N) N))
-             (b "flip\7506\7510" 60
-                (b "flip_op" 59 (b "first" 58 N N) N)
-                (b "in" 62 (b "idJ" 61 N N) N)))
-          (b "refl" 69
-             (b "mod" 66
-                (b "let" 65 (b "inv\7506\7510" 64 N N) N)
-                (b "recOR" 68 (b "recBOT" 67 N N) N))
-             (b "second" 72
-                (b "rzk-1" 71 (b "refl_{" 70 N N) N)
-                (b "unflip\7506\7510" 74 (b "unflip_op" 73 N N) N))))
-       (b "\7506\7510" 88
-          (b "|>" 82
-             (b "{" 79
-                (b "unit" 77 (b "uninv\7506\7510" 76 N N) (b "uses" 78 N N))
-                (b "|->" 81 (b "|" 80 N N) N))
-             (b "\931" 85
-                (b "\215" 84 (b "}" 83 N N) N)
-                (b "\960\8322" 87 (b "\960\8321" 86 N N) N)))
-          (b "\8801" 94
-             (b "\8721" 91
-                (b "\8614" 90 (b "\8594" 89 N N) N)
-                (b "\8744" 93 (b "\8743" 92 N N) N))
-             (b "\8869" 97
-                (b "\8868" 96 (b "\8804" 95 N N) N)
-                (b "\9839" 99 (b "\9837" 98 N N) N)))))
-  where
-  b s n = B bs (TS bs n)
-    where
-    bs = Data.Text.pack s
-
--- | Unquote string literal.
-unescapeInitTail :: Data.Text.Text -> Data.Text.Text
-unescapeInitTail = Data.Text.pack . unesc . tail . Data.Text.unpack
-  where
-  unesc s = case s of
-    '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs
-    '\\':'n':cs  -> '\n' : unesc cs
-    '\\':'t':cs  -> '\t' : unesc cs
-    '\\':'r':cs  -> '\r' : unesc cs
-    '\\':'f':cs  -> '\f' : unesc cs
-    '"':[]       -> []
-    c:cs         -> c : unesc cs
-    _            -> []
-
--------------------------------------------------------------------
--- Alex wrapper code.
--- A modified "posn" wrapper.
--------------------------------------------------------------------
-
-data Posn = Pn !Int !Int !Int
-  deriving (Eq, Show, Ord)
-
-alexStartPos :: Posn
-alexStartPos = Pn 0 1 1
-
-alexMove :: Posn -> Char -> Posn
-alexMove (Pn a l c) '\t' = Pn (a+1)  l     (((c+7) `div` 8)*8+1)
-alexMove (Pn a l c) '\n' = Pn (a+1) (l+1)   1
-alexMove (Pn a l c) _    = Pn (a+1)  l     (c+1)
-
-type Byte = Word8
-
-type AlexInput = (Posn,     -- current position,
-                  Char,     -- previous char
-                  [Byte],   -- pending bytes on the current char
-                  Data.Text.Text)   -- current input string
-
-tokens :: Data.Text.Text -> [Token]
-tokens str = go (alexStartPos, '\n', [], str)
-    where
-      go :: AlexInput -> [Token]
-      go inp@(pos, _, _, str) =
-               case alexScan inp 0 of
-                AlexEOF                   -> []
-                AlexError (pos, _, _, _)  -> [Err pos]
-                AlexSkip  inp' len        -> go inp'
-                AlexToken inp' len act    -> act pos (Data.Text.take len str) : (go inp')
-
-alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
-alexGetByte (p, c, (b:bs), s) = Just (b, (p, c, bs, s))
-alexGetByte (p, _, [], s) =
-  case Data.Text.uncons s of
-    Nothing  -> Nothing
-    Just (c,s) ->
-             let p'     = alexMove p c
-                 (b:bs) = utf8Encode c
-              in p' `seq` Just (b, (p', c, bs, s))
-
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar (p, c, bs, s) = c
-
--- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
-utf8Encode :: Char -> [Word8]
-utf8Encode = map fromIntegral . go . ord
-  where
-  go oc
-   | oc <= 0x7f       = [oc]
-
-   | oc <= 0x7ff      = [ 0xc0 + (oc `Data.Bits.shiftR` 6)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-
-   | oc <= 0xffff     = [ 0xe0 + (oc `Data.Bits.shiftR` 12)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-   | otherwise        = [ 0xf0 + (oc `Data.Bits.shiftR` 18)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-}
diff --git a/src/Language/Rzk/Syntax/Par.hs b/src/Language/Rzk/Syntax/Par.hs
--- a/src/Language/Rzk/Syntax/Par.hs
+++ b/src/Language/Rzk/Syntax/Par.hs
@@ -38,2495 +38,2651 @@
   , pListRestriction
   , pModality
   , pModComp
-  , pTerm7
-  , pTerm5
-  , pTerm4
-  , pTerm3
-  , pTerm2
-  , pTerm6
-  , pTerm1
-  , pTerm
-  , pListTerm
-  ) where
-
-import Prelude
-
-import qualified Language.Rzk.Syntax.Abs
-import Language.Rzk.Syntax.Lex
-import qualified Data.Text
-import qualified Control.Monad as Happy_Prelude
-import qualified Data.Bool as Happy_Prelude
-import qualified Data.Function as Happy_Prelude
-import qualified Data.Int as Happy_Prelude
-import qualified Data.List as Happy_Prelude
-import qualified Data.Maybe as Happy_Prelude
-import qualified Data.String as Happy_Prelude
-import qualified Data.Tuple as Happy_Prelude
-import qualified GHC.Err as Happy_Prelude
-import qualified GHC.Num as Happy_Prelude
-import qualified Text.Show as Happy_Prelude
-import qualified Data.Array as Happy_Data_Array
-import qualified Data.Bits as Bits
-import qualified GHC.Exts as Happy_GHC_Exts
-import Control.Applicative(Applicative(..))
-import Control.Monad (ap)
-
--- parser produced by Happy Version 2.1.7
-
-newtype HappyAbsSyn  = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-newtype HappyWrap37 = HappyWrap37 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))
-happyIn37 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap37 x)
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn ) -> HappyWrap37
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-newtype HappyWrap38 = HappyWrap38 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))
-happyIn38 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap38 x)
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-newtype HappyWrap39 = HappyWrap39 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))
-happyIn39 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap39 x)
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-newtype HappyWrap40 = HappyWrap40 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))
-happyIn40 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap40 x)
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-newtype HappyWrap41 = HappyWrap41 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))
-happyIn41 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap41 x)
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-newtype HappyWrap42 = HappyWrap42 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))
-happyIn42 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap42 x)
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-newtype HappyWrap43 = HappyWrap43 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))
-happyIn43 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap43 x)
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-newtype HappyWrap44 = HappyWrap44 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))
-happyIn44 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap44 x)
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-newtype HappyWrap45 = HappyWrap45 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))
-happyIn45 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap45 x)
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-newtype HappyWrap46 = HappyWrap46 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))
-happyIn46 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap46 x)
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))
-happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))
-happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))
-happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))
-happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))
-happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))
-happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))
-happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))
-happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))
-happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))
-happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))
-happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))
-happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn ) -> HappyWrap58
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))
-happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn ) -> HappyWrap59
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))
-happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> HappyWrap60
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))
-happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> HappyWrap61
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))
-happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )
-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)
-{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn ) -> HappyWrap62
-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut62 #-}
-newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))
-happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )
-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)
-{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn ) -> HappyWrap63
-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut63 #-}
-newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)
-{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn ) -> HappyWrap64
-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut64 #-}
-newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)
-{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn ) -> HappyWrap65
-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut65 #-}
-newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)
-{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn ) -> HappyWrap66
-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut66 #-}
-newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)
-{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn ) -> HappyWrap67
-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut67 #-}
-newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)
-{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn ) -> HappyWrap68
-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut68 #-}
-newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)
-{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn ) -> HappyWrap69
-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut69 #-}
-newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)
-{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn ) -> HappyWrap70
-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut70 #-}
-newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
-happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)
-{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn ) -> HappyWrap71
-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut71 #-}
-newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))
-happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )
-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)
-{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn ) -> HappyWrap72
-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut72 #-}
-happyInTok :: (Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-{-# NOINLINE happyTokenStrings #-}
-happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0\8322'","'1'","'1_2'","'1\8322'","'2'","':'","':='","';'","'<'","'<='","'<|'","'='","'==='","'=_{'","'>'","'BOT'","'CUBE'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inv_op'","'inv\7506\7510'","'let'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'{'","'|'","'|->'","'|>'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8868'","'\8869'","'\9837'","'\9839'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\xf9\xff\xff\xff\xac\xff\xff\xff\xb2\xff\xff\xff\xb2\xff\xff\xff\x2e\x00\x00\x00\x34\x00\x00\x00\x65\x09\x00\x00\x65\x09\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\xf5\xff\xff\xff\xf5\xff\xff\xff\x30\x00\x00\x00\x95\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xb2\x00\x00\x00\xb2\x00\x00\x00\xee\x01\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\xf8\xff\xff\xff\xe3\xff\xff\xff\x45\x00\x00\x00\x61\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x3c\x00\x00\x00\xb2\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xff\xff\xff\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xad\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\x57\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\xde\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x41\x00\x00\x00\x5f\x00\x00\x00\x22\x01\x00\x00\x47\x00\x00\x00\x5f\x00\x00\x00\xaf\x01\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\xf6\xff\xff\xff\x5f\x00\x00\x00\xe4\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\xf9\x00\x00\x00\xb0\x00\x00\x00\x46\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x03\x01\x00\x00\xd1\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\xd1\x00\x00\x00\xaf\x01\x00\x00\x1b\x01\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\xee\x00\x00\x00\xb7\x00\x00\x00\xb7\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x34\x01\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\xb7\x00\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\x50\x01\x00\x00\x55\x01\x00\x00\x23\x01\x00\x00\x2f\x01\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x36\x01\x00\x00\x36\x01\x00\x00\x38\x01\x00\x00\x38\x01\x00\x00\x43\x01\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x43\x01\x00\x00\x58\x01\x00\x00\x53\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x65\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\xb8\x01\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\xd8\x01\x00\x00\x65\x09\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xe4\x01\x00\x00\x13\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xfc\x01\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xb2\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xf1\xff\xff\xff\xe3\x00\x00\x00\x47\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xf7\x01\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x47\x00\x00\x00\xee\x01\x00\x00\xfe\x01\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\xb7\x00\x00\x00\xd7\x01\x00\x00\x42\x00\x00\x00\x04\x01\x00\x00\xee\x01\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\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\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x08\x02\x00\x00\x14\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x34\x02\x00\x00\xb7\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x26\x02\x00\x00\xf2\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x47\x00\x00\x00\x2d\x02\x00\x00\x46\x02\x00\x00\x3b\x02\x00\x00\x48\x02\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x37\x02\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x6e\x00\x00\x00\xb6\x00\x00\x00\xbc\x00\x00\x00\x04\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x47\x00\x00\x00\x67\x02\x00\x00\x47\x00\x00\x00\x70\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x00\x00\x47\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\xb7\x00\x00\x00\xf0\xff\xff\xff\x5b\x00\x00\x00\x47\x00\x00\x00\x4e\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x64\x02\x00\x00\x91\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\x61\x02\x00\x00\x99\x02\x00\x00\x9b\x02\x00\x00\x47\x00\x00\x00\x0f\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xc0\x02\x00\x00\xc1\x02\x00\x00\xbf\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xd4\x02\x00\x00\xe2\x02\x00\x00\xe3\x02\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xf3\x02\x00\x00\x47\x00\x00\x00\xe7\x02\x00\x00\x47\x00\x00\x00\xf5\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x47\x00\x00\x00\xf8\x02\x00\x00\x47\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x16\x03\x00\x00\x14\x03\x00\x00\x23\x03\x00\x00\x24\x03\x00\x00\x25\x03\x00\x00\x26\x03\x00\x00\xf7\x02\x00\x00\xf9\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x0d\x03\x00\x00\x47\x00\x00\x00\x36\x03\x00\x00\x45\x03\x00\x00\x48\x03\x00\x00\x00\x00\x00\x00\x4a\x03\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x03\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x57\x03\x00\x00\x47\x00\x00\x00\x58\x03\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x18\x03\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x68\x03\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x69\x03\x00\x00\x47\x00\x00\x00\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\xa7\x01\x00\x00\x4c\x00\x00\x00\x29\x02\x00\x00\x69\x01\x00\x00\x89\x03\x00\x00\x87\x03\x00\x00\x96\x03\x00\x00\x66\x00\x00\x00\x86\x03\x00\x00\x97\x01\x00\x00\x42\x01\x00\x00\x75\x09\x00\x00\x7a\x02\x00\x00\x20\x02\x00\x00\x4c\x09\x00\x00\x1d\x09\x00\x00\x5e\x01\x00\x00\xe6\x01\x00\x00\x57\x01\x00\x00\xb5\x00\x00\x00\xab\x02\x00\x00\x56\x02\x00\x00\x97\x03\x00\x00\xb3\x00\x00\x00\x31\x01\x00\x00\x59\x08\x00\x00\x36\x02\x00\x00\x29\x08\x00\x00\xd9\x07\x00\x00\xed\x00\x00\x00\xeb\x06\x00\x00\x22\x03\x00\x00\x95\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\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x33\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\x69\x08\x00\x00\x98\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\x2f\x09\x00\x00\xbb\x01\x00\x00\xe1\x01\x00\x00\xaf\x08\x00\x00\x00\x00\x00\x00\xb7\x08\x00\x00\xca\x08\x00\x00\x81\x01\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x03\x00\x00\xcf\x08\x00\x00\xd4\x08\x00\x00\xd9\x08\x00\x00\xde\x08\x00\x00\xe7\x08\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xec\x08\x00\x00\xf1\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x08\x00\x00\x55\x03\x00\x00\x00\x00\x00\x00\xf6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x09\x00\x00\x00\x00\x00\x00\x77\x09\x00\x00\x57\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x02\x00\x00\x66\x03\x00\x00\x77\x03\x00\x00\x88\x03\x00\x00\x99\x03\x00\x00\xeb\x07\x00\x00\xee\x07\x00\x00\x16\x02\x00\x00\xfb\x07\x00\x00\x8b\x08\x00\x00\xa0\x03\x00\x00\xa1\x03\x00\x00\xfe\x07\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x7d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\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\xa7\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x51\x09\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\x78\x02\x00\x00\x00\x00\x00\x00\x3b\x08\x00\x00\xbc\x02\x00\x00\xbb\x03\x00\x00\xcc\x03\x00\x00\x89\x02\x00\x00\xab\x03\x00\x00\xa3\x08\x00\x00\xa9\x08\x00\x00\x00\x00\x00\x00\xe9\x07\x00\x00\xdd\x03\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\xfb\x08\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x09\x00\x00\x22\x02\x00\x00\xfc\x06\x00\x00\xf9\x07\x00\x00\x09\x08\x00\x00\x39\x08\x00\x00\x49\x08\x00\x00\x76\x08\x00\x00\x7d\x08\x00\x00\x86\x08\x00\x00\x9a\x08\x00\x00\x0d\x07\x00\x00\x1e\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\xcd\x02\x00\x00\x10\x04\x00\x00\x21\x04\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x07\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x43\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\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\x09\x09\x00\x00\x09\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\xa9\x04\x00\x00\x38\x09\x00\x00\x3a\x09\x00\x00\x43\x09\x00\x00\xa2\x03\x00\x00\xba\x04\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x08\x00\x00\x5b\x08\x00\x00\xef\x02\x00\x00\x13\x09\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x20\x05\x00\x00\x00\x00\x00\x00\x31\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x09\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x64\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x05\x00\x00\x97\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x05\x00\x00\x00\x00\x00\x00\xb9\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x09\x00\x00\x00\x00\x00\x00\xca\x05\x00\x00\x00\x00\x00\x00\xdb\x05\x00\x00\x00\x00\x00\x00\xec\x05\x00\x00\x00\x00\x00\x00\xfd\x05\x00\x00\x00\x00\x00\x00\x0e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x06\x00\x00\x00\x00\x00\x00\x30\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x07\x00\x00\x62\x07\x00\x00\x00\x00\x00\x00\x63\x06\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x07\x00\x00\x84\x07\x00\x00\x95\x07\x00\x00\xa6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x06\x00\x00\x00\x00\x00\x00\x96\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x07\x00\x00\x00\x00\x00\x00\xa7\x06\x00\x00\x00\x00\x00\x00\xb8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x06\x00\x00\x00\x00\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\xc0\xff\xff\xff\xbf\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xff\xff\xd9\xff\xff\xff\xda\xff\xff\xff\x7b\xff\xff\xff\x7a\xff\xff\xff\x00\x00\x00\x00\x57\xff\xff\xff\x6d\xff\xff\xff\x69\xff\xff\xff\x66\xff\xff\xff\x4b\xff\xff\xff\x71\xff\xff\xff\x42\xff\xff\xff\x41\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xff\xff\xff\x8f\xff\xff\xff\x77\xff\xff\xff\x8d\xff\xff\xff\x90\xff\xff\xff\x76\xff\xff\xff\x8c\xff\xff\xff\x8e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x74\xff\xff\xff\x92\xff\xff\xff\x00\x00\x00\x00\x75\xff\xff\xff\x91\xff\xff\xff\x93\xff\xff\xff\x86\xff\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\x89\xff\xff\xff\x00\x00\x00\x00\x7f\xff\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\x80\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x8a\xff\xff\xff\xdd\xff\xff\xff\xdc\xff\xff\xff\x00\x00\x00\x00\x4b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\x00\x00\x00\x00\x99\xff\xff\xff\x9b\xff\xff\xff\x96\xff\xff\xff\x97\xff\xff\xff\x98\xff\xff\xff\x9c\xff\xff\xff\x9a\xff\xff\xff\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\xff\xff\x00\x00\x00\x00\xa2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\xff\xff\xad\xff\xff\xff\x00\x00\x00\x00\xb4\xff\xff\xff\xaf\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xb6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\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\x00\x00\x00\x00\x00\x00\xbf\xff\xff\xff\x00\x00\x00\x00\xbf\xff\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\xd5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\xdb\xff\xff\xff\xd7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xff\xff\x00\x00\x00\x00\xc9\xff\xff\xff\xc0\xff\xff\xff\xc8\xff\xff\xff\xc0\xff\xff\xff\xc0\xff\xff\xff\xd0\xff\xff\xff\xcf\xff\xff\xff\xd1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\x00\x00\x00\x00\xae\xff\xff\xff\x00\x00\x00\x00\x5b\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\xff\xff\x59\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\xff\xff\x61\xff\xff\xff\x5e\xff\xff\xff\x5d\xff\xff\xff\x55\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xff\xff\xff\x63\xff\xff\xff\x00\x00\x00\x00\x60\xff\xff\xff\x5f\xff\xff\xff\x56\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xff\xff\xff\x4a\xff\xff\xff\x6e\xff\xff\xff\x6f\xff\xff\xff\x6c\xff\xff\xff\x6b\xff\xff\xff\x6a\xff\xff\xff\x68\xff\xff\xff\x67\xff\xff\xff\x65\xff\xff\xff\x43\xff\xff\xff\x40\xff\xff\xff\x5a\xff\xff\xff\x79\xff\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\x00\x00\x00\x00\x00\x00\x82\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xff\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\x4f\xff\xff\xff\x72\xff\xff\xff\x70\xff\xff\xff\x94\xff\xff\xff\x9d\xff\xff\xff\xa0\xff\xff\xff\x9f\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\xa1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\xff\xff\x00\x00\x00\x00\xc2\xff\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\xd6\xff\xff\xff\xca\xff\xff\xff\xcb\xff\xff\xff\xd4\xff\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\xd2\xff\xff\xff\xcc\xff\xff\xff\xc1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xff\xff\xff\x00\x00\x00\x00\xa3\xff\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\x88\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xff\xff\xff\x46\xff\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\x84\xff\xff\xff\x00\x00\x00\x00\xaa\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x73\xff\xff\xff\x85\xff\xff\xff\x81\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x50\xff\xff\xff\xbb\xff\xff\xff\x00\x00\x00\x00\xb3\xff\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\xcd\xff\xff\xff\x00\x00\x00\x00\xce\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\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\xa3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\xa5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x83\xff\xff\xff\xa9\xff\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\xa6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\xff\xff\xb2\xff\xff\xff\xb1\xff\xff\xff\xc4\xff\xff\xff\x00\x00\x00\x00\xc6\xff\xff\xff\x00\x00\x00\x00\xc7\xff\xff\xff\xc5\xff\xff\xff\x44\xff\xff\xff\x45\xff\xff\xff\x51\xff\xff\xff\x53\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xff\xff\xff\x00\x00\x00\x00\x47\xff\xff\xff\x49\xff\xff\xff\x00\x00\x00\x00\x48\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\x52\xff\xff\xff\x87\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\xff\xff\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\xff\xff\x11\x00\x00\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x13\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x12\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x14\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x13\x00\x00\x00\x1a\x00\x00\x00\x67\x00\x00\x00\x24\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x66\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x13\x00\x00\x00\x33\x00\x00\x00\x21\x00\x00\x00\x12\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x17\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x18\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x0a\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x18\x00\x00\x00\x50\x00\x00\x00\x5e\x00\x00\x00\x12\x00\x00\x00\x4e\x00\x00\x00\x52\x00\x00\x00\x50\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x21\x00\x00\x00\x55\x00\x00\x00\x5c\x00\x00\x00\x5b\x00\x00\x00\x02\x00\x00\x00\x51\x00\x00\x00\x04\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x5d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x18\x00\x00\x00\x66\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x14\x00\x00\x00\x51\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x27\x00\x00\x00\x12\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x26\x00\x00\x00\x29\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x5a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x66\x00\x00\x00\x33\x00\x00\x00\x12\x00\x00\x00\x48\x00\x00\x00\x54\x00\x00\x00\x4e\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x5a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x4f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x66\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x66\x00\x00\x00\x43\x00\x00\x00\x65\x00\x00\x00\x5a\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x55\x00\x00\x00\x5b\x00\x00\x00\x17\x00\x00\x00\x5c\x00\x00\x00\x68\x00\x00\x00\x4e\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x51\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x54\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x4e\x00\x00\x00\x12\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x66\x00\x00\x00\x50\x00\x00\x00\x12\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x68\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x12\x00\x00\x00\x66\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x66\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x21\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x12\x00\x00\x00\x50\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x12\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x4e\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x24\x00\x00\x00\x1b\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x59\x00\x00\x00\x50\x00\x00\x00\x20\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x17\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x13\x00\x00\x00\x68\x00\x00\x00\x12\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x66\x00\x00\x00\x66\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x66\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x21\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x12\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x4e\x00\x00\x00\x68\x00\x00\x00\x50\x00\x00\x00\x01\x00\x00\x00\x68\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x3e\x00\x00\x00\x14\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x15\x00\x00\x00\x66\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x4e\x00\x00\x00\x13\x00\x00\x00\x25\x00\x00\x00\x12\x00\x00\x00\x1b\x00\x00\x00\x28\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x23\x00\x00\x00\x18\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x68\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x65\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x3e\x00\x00\x00\x48\x00\x00\x00\x17\x00\x00\x00\x55\x00\x00\x00\x0c\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x68\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x07\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x66\x00\x00\x00\x01\x00\x00\x00\x5a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x0d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x23\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x21\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x15\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x3e\x00\x00\x00\x68\x00\x00\x00\x21\x00\x00\x00\x05\x00\x00\x00\x4f\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x4e\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x1b\x00\x00\x00\x66\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x21\x00\x00\x00\x20\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x15\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x17\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x51\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x3e\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x21\x00\x00\x00\x17\x00\x00\x00\x54\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x65\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x21\x00\x00\x00\x51\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x54\x00\x00\x00\x3f\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x53\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x2a\x00\x00\x00\x13\x00\x00\x00\x2a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x19\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x54\x00\x00\x00\x19\x00\x00\x00\x22\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x22\x00\x00\x00\x19\x00\x00\x00\x22\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x51\x00\x00\x00\x54\x00\x00\x00\x3f\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x54\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x08\x00\x00\x00\x07\x00\x00\x00\x0b\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x08\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x0d\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\xff\xff\xff\xff\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x0d\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x00\x00\x0c\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x20\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x0d\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\x0d\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x15\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x11\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0f\x00\x00\x00\x10\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\xff\xff\xff\xff\x0b\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0d\x00\x00\x00\x05\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\x0d\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\xaa\x00\x00\x00\x0e\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x88\x00\x00\x00\x0f\x01\x00\x00\x5c\x01\x00\x00\xd4\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x86\x01\x00\x00\xf9\x00\x00\x00\x60\x00\x00\x00\x3c\x00\x00\x00\x84\x01\x00\x00\x3d\x00\x00\x00\xf7\x00\x00\x00\x5f\x00\x00\x00\x85\x01\x00\x00\x31\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x6d\x01\x00\x00\x45\x00\x00\x00\x5a\x01\x00\x00\x7e\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x31\x01\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xff\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\xaa\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x16\x01\x00\x00\x58\x00\x00\x00\xf8\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\xd0\x00\x00\x00\x89\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x72\x00\x00\x00\x1e\x01\x00\x00\xd5\x00\x00\x00\x5c\x00\x00\x00\xd1\x00\x00\x00\x24\x00\x00\x00\x87\x01\x00\x00\xad\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\xfa\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x11\x01\x00\x00\x5f\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\xd4\x00\x00\x00\x6e\x01\x00\x00\x7f\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd7\x00\x00\x00\x7e\x00\x00\x00\xd8\x00\x00\x00\x3c\x00\x00\x00\xd7\x00\x00\x00\x3d\x00\x00\x00\xd8\x00\x00\x00\x95\x00\x00\x00\x96\x00\x00\x00\x00\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x5f\x00\x00\x00\x45\x00\x00\x00\xde\x00\x00\x00\xa8\x00\x00\x00\x1f\x01\x00\x00\x7f\x00\x00\x00\xf6\x00\x00\x00\x88\x00\x00\x00\x17\x01\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x95\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x4a\x01\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x5f\x00\x00\x00\x58\x00\x00\x00\xd0\x00\x00\x00\x5f\x00\x00\x00\xe8\x00\x00\x00\x23\x00\x00\x00\x12\x01\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\xd5\x00\x00\x00\xd1\x00\x00\x00\xf5\x00\x00\x00\x5c\x00\x00\x00\xff\xff\xff\xff\x7f\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x7c\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x7d\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x7f\x00\x00\x00\xf0\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x7f\x00\x00\x00\x5f\x00\x00\x00\x89\x00\x00\x00\xeb\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x7a\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xff\xff\xff\xff\x88\x00\x00\x00\x7e\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x88\x00\x00\x00\x5f\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x5f\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x48\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x46\x01\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xe5\x00\x00\x00\x58\x00\x00\x00\x6b\x00\x00\x00\xf3\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xdc\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd9\x00\x00\x00\x32\x00\x00\x00\x65\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\x5f\x00\x00\x00\x60\x00\x00\x00\xd3\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7f\x00\x00\x00\x7f\x00\x00\x00\x89\x00\x00\x00\x3c\x00\x00\x00\x28\x00\x00\x00\x3d\x00\x00\x00\x7f\x00\x00\x00\x72\x00\x00\x00\x89\x00\x00\x00\x63\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\xd2\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x0e\x01\x00\x00\xff\xff\xff\xff\x88\x00\x00\x00\xce\x00\x00\x00\x0f\x01\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x5f\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x10\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\xcf\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x65\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\x5a\x00\x00\x00\x5b\x00\x00\x00\xca\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\xc5\x00\x00\x00\x6a\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x90\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\x7f\x00\x00\x00\xff\xff\xff\xff\x89\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x49\x00\x00\x00\xd4\x00\x00\x00\xc3\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x23\x00\x00\x00\x82\x00\x00\x00\x7f\x00\x00\x00\x5f\x00\x00\x00\xaa\x00\x00\x00\xab\x00\x00\x00\x57\x00\x00\x00\x83\x00\x00\x00\xfb\x00\x00\x00\x65\x00\x00\x00\xca\x00\x00\x00\xfc\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xc2\x00\x00\x00\xab\xff\xff\xff\x95\x00\x00\x00\xb0\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\x00\x00\x3f\x00\x00\x00\x82\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\xe6\x00\x00\x00\x5f\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x91\x00\x00\x00\x6b\x01\x00\x00\x5f\x00\x00\x00\x49\x00\x00\x00\xa8\x00\x00\x00\x6c\x01\x00\x00\xd5\x00\x00\x00\x92\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x27\x00\x00\x00\xae\x00\x00\x00\xff\xff\xff\xff\xfd\x00\x00\x00\xfe\x00\x00\x00\xaf\x00\x00\x00\x57\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5f\x00\x00\x00\x23\x00\x00\x00\xab\xff\xff\xff\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x65\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xdc\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x41\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x95\x00\x00\x00\x37\x01\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\xed\x00\x00\x00\x6b\x00\x00\x00\x18\x01\x00\x00\x40\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x23\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x24\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x3e\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x49\x00\x00\x00\xff\xff\xff\xff\x3f\x01\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x3a\x01\x00\x00\x82\x00\x00\x00\x39\x01\x00\x00\x80\x00\x00\x00\x23\x00\x00\x00\xec\x00\x00\x00\x57\x00\x00\x00\x5e\x01\x00\x00\x79\x00\x00\x00\x65\x00\x00\x00\x28\x00\x00\x00\x5f\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x35\x01\x00\x00\x81\x00\x00\x00\x21\x01\x00\x00\x34\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x22\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x31\x01\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x23\x00\x00\x00\x21\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x91\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x1a\x01\x00\x00\x23\x00\x00\x00\xb9\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x13\x01\x00\x00\x64\x01\x00\x00\x23\x00\x00\x00\x63\x01\x00\x00\x49\x00\x00\x00\x8a\x00\x00\x00\xac\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x27\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x5d\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x57\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x0b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x60\x01\x00\x00\xaa\x00\x00\x00\xc0\x00\x00\x00\x58\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x68\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x56\x01\x00\x00\x57\x01\x00\x00\x54\x01\x00\x00\x55\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xa8\x01\x00\x00\x23\x00\x00\x00\x27\x00\x00\x00\x23\x00\x00\x00\x51\x01\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\xaa\x00\x00\x00\xb3\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x4d\x01\x00\x00\xaa\x00\x00\x00\xb1\x00\x00\x00\xaa\x00\x00\x00\x36\x01\x00\x00\x8f\x01\x00\x00\x8a\x00\x00\x00\x8d\x01\x00\x00\x8d\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x31\x01\x00\x00\x8b\x01\x00\x00\x89\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x2a\x01\x00\x00\x7a\x01\x00\x00\x78\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x1b\x01\x00\x00\x77\x01\x00\x00\x72\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x78\x00\x00\x00\x71\x01\x00\x00\xa7\x01\x00\x00\x70\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xa5\x01\x00\x00\xa4\x01\x00\x00\x2d\x01\x00\x00\xa3\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x9f\x01\x00\x00\xa0\x01\x00\x00\x67\x01\x00\x00\x9c\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x68\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x9b\x01\x00\x00\x9a\x01\x00\x00\x4e\x01\x00\x00\x99\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4f\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x96\x01\x00\x00\xbb\x01\x00\x00\x2d\x01\x00\x00\x94\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x80\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x92\x01\x00\x00\xbf\x01\x00\x00\x7d\x01\x00\x00\xbd\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xba\x01\x00\x00\xb9\x01\x00\x00\x72\x01\x00\x00\xb8\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x73\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb4\x01\x00\x00\xb7\x01\x00\x00\xb6\x01\x00\x00\xb5\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x60\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb2\x01\x00\x00\xb3\x01\x00\x00\xb0\x01\x00\x00\xae\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xf2\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xac\x01\x00\x00\xad\x01\x00\x00\xab\x01\x00\x00\xaa\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xe3\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd1\x01\x00\x00\xcd\x01\x00\x00\xca\x01\x00\x00\xc8\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd5\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd3\x01\x00\x00\xc6\x01\x00\x00\xd4\x01\x00\x00\xd6\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbf\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd8\x01\x00\x00\xa6\x00\x00\x00\xa8\x00\x00\x00\x93\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbe\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xa5\x00\x00\x00\xb6\x00\x00\x00\xb5\x00\x00\x00\x43\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbd\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x74\x00\x00\x00\xf0\x00\x00\x00\x3c\x01\x00\x00\xe5\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbc\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb2\x00\x00\x00\x3b\x01\x00\x00\x3a\x01\x00\x00\x29\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x25\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x17\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x69\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x66\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x65\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x64\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x58\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x52\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x42\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x41\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x89\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x87\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x78\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x75\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x6e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa7\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa5\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa1\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x96\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x94\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x90\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8f\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbd\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbb\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xb0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xae\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc8\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc6\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbf\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xcf\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xce\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd4\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd6\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x61\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x60\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xcd\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x26\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x09\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x08\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x82\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x67\x00\x00\x00\x7a\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x06\x01\x00\x00\x7a\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x81\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x28\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\xb7\x00\x00\x00\x28\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x28\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x28\x01\x00\x00\x28\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\xeb\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xcc\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe9\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe2\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe1\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe0\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xdf\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xda\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xd9\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x0c\x01\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xca\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7f\x01\x00\x00\x84\x00\x00\x00\x7b\x00\x00\x00\x74\x01\x00\x00\x14\x01\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x85\x00\x00\x00\xee\x00\x00\x00\x85\x00\x00\x00\xc8\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x85\x00\x00\x00\x48\x01\x00\x00\x85\x00\x00\x00\x46\x01\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x44\x01\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\xc5\x00\x00\x00\x8b\x00\x00\x00\x97\x01\x00\x00\x98\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x9b\x00\x00\x00\x9c\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\xa1\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\x23\x00\x00\x00\x8e\x00\x00\x00\xc3\x00\x00\x00\x1f\x01\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (33, 191) [
-        (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)
-        ]
-
-happyRuleArr :: HappyAddr
-happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x07\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x09\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x06\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x04\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x03\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x1b\x00\x00\x00\x0a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x0e\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x09\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x05\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x09\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00"#
-
-happyCatchStates :: [Happy_Prelude.Int]
-happyCatchStates = []
-
-happy_n_terms = 105 :: Happy_Prelude.Int
-happy_n_nonterms = 36 :: Happy_Prelude.Int
-
-happy_n_starts = 33 :: Happy_Prelude.Int
-
-happyReduce_33 = happySpecReduce_1  0# happyReduction_33
-happyReduction_33 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn37
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))
-        )}
-
-happyReduce_34 = happySpecReduce_1  1# happyReduction_34
-happyReduction_34 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn38
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))
-        )}
-
-happyReduce_35 = happySpecReduce_1  2# happyReduction_35
-happyReduction_35 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn39
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))
-        )}
-
-happyReduce_36 = happySpecReduce_2  3# happyReduction_36
-happyReduction_36 happy_x_2
-        happy_x_1
-         =  case happyOut44 happy_x_1 of { (HappyWrap44 happy_var_1) -> 
-        case happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> 
-        happyIn40
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))
-        )}}
-
-happyReduce_37 = happySpecReduce_1  4# happyReduction_37
-happyReduction_37 happy_x_1
-         =  case happyOut39 happy_x_1 of { (HappyWrap39 happy_var_1) -> 
-        happyIn41
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_38 = happySpecReduce_1  5# happyReduction_38
-happyReduction_38 happy_x_1
-         =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
-        happyIn42
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_39 = happySpecReduce_1  6# happyReduction_39
-happyReduction_39 happy_x_1
-         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
-        happyIn43
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_40 = happySpecReduce_2  6# happyReduction_40
-happyReduction_40 happy_x_2
-        happy_x_1
-         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
-        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
-        happyIn43
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
-        )}}
-
-happyReduce_41 = happySpecReduce_3  7# happyReduction_41
-happyReduction_41 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut45 happy_x_2 of { (HappyWrap45 happy_var_2) -> 
-        happyIn44
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_42 = happySpecReduce_1  8# happyReduction_42
-happyReduction_42 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn45
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_43 = happyReduce 4# 9# happyReduction_43
-happyReduction_43 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) -> 
-        case happyOut37 happy_x_4 of { (HappyWrap37 happy_var_4) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_44 = happySpecReduce_2  9# happyReduction_44
-happyReduction_44 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_45 = happyReduce 4# 9# happyReduction_45
-happyReduction_45 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_46 = happySpecReduce_2  9# happyReduction_46
-happyReduction_46 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_47 = happySpecReduce_2  9# happyReduction_47
-happyReduction_47 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_48 = happySpecReduce_2  9# happyReduction_48
-happyReduction_48 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_49 = happyReduce 6# 9# happyReduction_49
-happyReduction_49 (happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_50 = happyReduce 5# 9# happyReduction_50
-happyReduction_50 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_51 = happyReduce 4# 9# happyReduction_51
-happyReduction_51 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_52 = happyReduce 4# 9# happyReduction_52
-happyReduction_52 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_53 = happyReduce 4# 9# happyReduction_53
-happyReduction_53 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_54 = happySpecReduce_2  9# happyReduction_54
-happyReduction_54 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_55 = happySpecReduce_2  9# happyReduction_55
-happyReduction_55 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_56 = happyReduce 8# 9# happyReduction_56
-happyReduction_56 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}}}
-
-happyReduce_57 = happyReduce 7# 9# happyReduction_57
-happyReduction_57 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_58 = happyReduce 8# 9# happyReduction_58
-happyReduction_58 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}}}
-
-happyReduce_59 = happyReduce 7# 9# happyReduction_59
-happyReduction_59 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> 
-        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> 
-        happyIn46
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_60 = happySpecReduce_0  10# happyReduction_60
-happyReduction_60  =  happyIn47
-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])
-        )
-
-happyReduce_61 = happySpecReduce_3  10# happyReduction_61
-happyReduction_61 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> 
-        case happyOut47 happy_x_3 of { (HappyWrap47 happy_var_3) -> 
-        happyIn47
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_62 = happyReduce 4# 11# happyReduction_62
-happyReduction_62 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut43 happy_x_3 of { (HappyWrap43 happy_var_3) -> 
-        happyIn48
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))
-        ) `HappyStk` happyRest}}
-
-happyReduce_63 = happySpecReduce_0  11# happyReduction_63
-happyReduction_63  =  happyIn48
-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)
-        )
-
-happyReduce_64 = happySpecReduce_0  12# happyReduction_64
-happyReduction_64  =  happyIn49
-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)
-        )
-
-happyReduce_65 = happySpecReduce_1  12# happyReduction_65
-happyReduction_65 happy_x_1
-         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
-        happyIn49
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_66 = happySpecReduce_1  13# happyReduction_66
-happyReduction_66 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn50
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_67 = happySpecReduce_1  13# happyReduction_67
-happyReduction_67 happy_x_1
-         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
-        happyIn50
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_68 = happyReduce 5# 13# happyReduction_68
-happyReduction_68 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
-        case happyOut50 happy_x_4 of { (HappyWrap50 happy_var_4) -> 
-        happyIn50
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_69 = happyReduce 7# 13# happyReduction_69
-happyReduction_69 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
-        case happyOut50 happy_x_4 of { (HappyWrap50 happy_var_4) -> 
-        case happyOut53 happy_x_6 of { (HappyWrap53 happy_var_6) -> 
-        happyIn50
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_70 = happySpecReduce_1  14# happyReduction_70
-happyReduction_70 happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        happyIn51
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_71 = happySpecReduce_2  14# happyReduction_71
-happyReduction_71 happy_x_2
-        happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
-        happyIn51
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
-        )}}
-
-happyReduce_72 = happySpecReduce_1  15# happyReduction_72
-happyReduction_72 happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        happyIn52
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_73 = happySpecReduce_1  16# happyReduction_73
-happyReduction_73 happy_x_1
-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> 
-        happyIn53
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_74 = happySpecReduce_3  16# happyReduction_74
-happyReduction_74 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> 
-        case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> 
-        happyIn53
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_75 = happySpecReduce_1  17# happyReduction_75
-happyReduction_75 happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        happyIn54
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_76 = happyReduce 5# 17# happyReduction_76
-happyReduction_76 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn54
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_77 = happyReduce 7# 17# happyReduction_77
-happyReduction_77 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn54
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_78 = happyReduce 7# 17# happyReduction_78
-happyReduction_78 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn54
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_79 = happyReduce 6# 17# happyReduction_79
-happyReduction_79 (happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
-        case happyOut62 happy_x_4 of { (HappyWrap62 happy_var_4) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        happyIn54
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_80 = happySpecReduce_1  18# happyReduction_80
-happyReduction_80 happy_x_1
-         =  case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> 
-        happyIn55
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_81 = happySpecReduce_2  18# happyReduction_81
-happyReduction_81 happy_x_2
-        happy_x_1
-         =  case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> 
-        case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> 
-        happyIn55
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
-        )}}
-
-happyReduce_82 = happySpecReduce_1  19# happyReduction_82
-happyReduction_82 happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        happyIn56
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_83 = happySpecReduce_3  19# happyReduction_83
-happyReduction_83 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        happyIn56
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_84 = happySpecReduce_1  20# happyReduction_84
-happyReduction_84 happy_x_1
-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
-        happyIn57
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_85 = happyReduce 5# 20# happyReduction_85
-happyReduction_85 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_86 = happyReduce 7# 20# happyReduction_86
-happyReduction_86 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_87 = happyReduce 5# 20# happyReduction_87
-happyReduction_87 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_88 = happyReduce 9# 20# happyReduction_88
-happyReduction_88 (happy_x_9 `HappyStk`
-        happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_89 = happyReduce 7# 20# happyReduction_89
-happyReduction_89 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_90 = happyReduce 6# 20# happyReduction_90
-happyReduction_90 (happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut62 happy_x_4 of { (HappyWrap62 happy_var_4) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        happyIn57
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_91 = happySpecReduce_3  21# happyReduction_91
-happyReduction_91 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        happyIn58
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_92 = happyReduce 4# 21# happyReduction_92
-happyReduction_92 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
-        case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn58
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_93 = happySpecReduce_1  22# happyReduction_93
-happyReduction_93 happy_x_1
-         =  case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> 
-        happyIn59
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_94 = happySpecReduce_3  22# happyReduction_94
-happyReduction_94 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> 
-        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> 
-        happyIn59
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_95 = happySpecReduce_3  23# happyReduction_95
-happyReduction_95 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        happyIn60
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_96 = happySpecReduce_3  23# happyReduction_96
-happyReduction_96 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        happyIn60
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_97 = happySpecReduce_1  24# happyReduction_97
-happyReduction_97 happy_x_1
-         =  case happyOut60 happy_x_1 of { (HappyWrap60 happy_var_1) -> 
-        happyIn61
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_98 = happySpecReduce_3  24# happyReduction_98
-happyReduction_98 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut60 happy_x_1 of { (HappyWrap60 happy_var_1) -> 
-        case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> 
-        happyIn61
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_99 = happySpecReduce_1  25# happyReduction_99
-happyReduction_99 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_100 = happySpecReduce_1  25# happyReduction_100
-happyReduction_100 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_101 = happySpecReduce_1  25# happyReduction_101
-happyReduction_101 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_102 = happySpecReduce_1  25# happyReduction_102
-happyReduction_102 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_103 = happySpecReduce_1  25# happyReduction_103
-happyReduction_103 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_104 = happySpecReduce_1  25# happyReduction_104
-happyReduction_104 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_105 = happySpecReduce_1  25# happyReduction_105
-happyReduction_105 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn62
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_106 = happySpecReduce_1  26# happyReduction_106
-happyReduction_106 happy_x_1
-         =  case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> 
-        happyIn63
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_107 = happySpecReduce_3  26# happyReduction_107
-happyReduction_107 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> 
-        case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> 
-        happyIn63
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_108 = happySpecReduce_1  27# happyReduction_108
-happyReduction_108 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_109 = happySpecReduce_1  27# happyReduction_109
-happyReduction_109 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_110 = happySpecReduce_1  27# happyReduction_110
-happyReduction_110 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_111 = happySpecReduce_1  27# happyReduction_111
-happyReduction_111 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_112 = happySpecReduce_1  27# happyReduction_112
-happyReduction_112 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_113 = happySpecReduce_1  27# happyReduction_113
-happyReduction_113 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_114 = happySpecReduce_1  27# happyReduction_114
-happyReduction_114 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_115 = happySpecReduce_1  27# happyReduction_115
-happyReduction_115 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_116 = happySpecReduce_1  27# happyReduction_116
-happyReduction_116 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_117 = happySpecReduce_1  27# happyReduction_117
-happyReduction_117 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_118 = happySpecReduce_1  27# happyReduction_118
-happyReduction_118 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_119 = happyReduce 4# 27# 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 { happy_var_1 -> 
-        case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))
-        ) `HappyStk` happyRest}}
-
-happyReduce_120 = happyReduce 10# 27# happyReduction_120
-happyReduction_120 (happy_x_10 `HappyStk`
-        happy_x_9 `HappyStk`
-        happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> 
-        case happyOut71 happy_x_9 of { (HappyWrap71 happy_var_9) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOrDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_121 = happySpecReduce_1  27# happyReduction_121
-happyReduction_121 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_122 = happyReduce 5# 27# happyReduction_122
-happyReduction_122 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_123 = happyReduce 5# 27# happyReduction_123
-happyReduction_123 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_124 = happyReduce 7# 27# happyReduction_124
-happyReduction_124 (happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut72 happy_x_6 of { (HappyWrap72 happy_var_6) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_125 = happySpecReduce_3  27# happyReduction_125
-happyReduction_125 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut62 happy_x_2 of { (HappyWrap62 happy_var_2) -> 
-        case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))
-        )}}}
-
-happyReduce_126 = happyReduce 5# 27# happyReduction_126
-happyReduction_126 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut62 happy_x_2 of { (HappyWrap62 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_127 = happySpecReduce_1  27# happyReduction_127
-happyReduction_127 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_128 = happySpecReduce_1  27# happyReduction_128
-happyReduction_128 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_129 = happySpecReduce_3  27# happyReduction_129
-happyReduction_129 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_130 = happyReduce 5# 27# happyReduction_130
-happyReduction_130 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_131 = happyReduce 14# 27# happyReduction_131
-happyReduction_131 (happy_x_14 `HappyStk`
-        happy_x_13 `HappyStk`
-        happy_x_12 `HappyStk`
-        happy_x_11 `HappyStk`
-        happy_x_10 `HappyStk`
-        happy_x_9 `HappyStk`
-        happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> 
-        case happyOut71 happy_x_9 of { (HappyWrap71 happy_var_9) -> 
-        case happyOut71 happy_x_11 of { (HappyWrap71 happy_var_11) -> 
-        case happyOut71 happy_x_13 of { (HappyWrap71 happy_var_13) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))
-        ) `HappyStk` happyRest}}}}}}}
-
-happyReduce_132 = happySpecReduce_1  27# happyReduction_132
-happyReduction_132 happy_x_1
-         =  case happyOut41 happy_x_1 of { (HappyWrap41 happy_var_1) -> 
-        happyIn64
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_133 = happySpecReduce_1  27# happyReduction_133
-happyReduction_133 happy_x_1
-         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
-        happyIn64
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))
-        )}
-
-happyReduce_134 = happySpecReduce_3  27# happyReduction_134
-happyReduction_134 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))
-        )}}
-
-happyReduce_135 = happySpecReduce_1  27# happyReduction_135
-happyReduction_135 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_136 = happySpecReduce_1  27# happyReduction_136
-happyReduction_136 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_137 = happySpecReduce_1  27# happyReduction_137
-happyReduction_137 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_138 = happySpecReduce_1  27# happyReduction_138
-happyReduction_138 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_139 = happySpecReduce_1  27# happyReduction_139
-happyReduction_139 happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
-        )}
-
-happyReduce_140 = happyReduce 5# 27# happyReduction_140
-happyReduction_140 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        happyIn64
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_141 = happySpecReduce_3  28# happyReduction_141
-happyReduction_141 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> 
-        happyIn65
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_142 = happySpecReduce_1  28# happyReduction_142
-happyReduction_142 happy_x_1
-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
-        happyIn65
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_143 = happySpecReduce_3  28# happyReduction_143
-happyReduction_143 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> 
-        happyIn65
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_144 = happySpecReduce_3  29# happyReduction_144
-happyReduction_144 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
-        happyIn66
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_145 = happySpecReduce_3  29# happyReduction_145
-happyReduction_145 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
-        happyIn66
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_146 = happySpecReduce_1  29# happyReduction_146
-happyReduction_146 happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        happyIn66
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_147 = happySpecReduce_3  29# happyReduction_147
-happyReduction_147 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
-        happyIn66
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_148 = happySpecReduce_3  29# happyReduction_148
-happyReduction_148 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> 
-        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
-        happyIn66
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_149 = happySpecReduce_3  30# happyReduction_149
-happyReduction_149 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> 
-        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
-        happyIn67
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_150 = happySpecReduce_1  30# happyReduction_150
-happyReduction_150 happy_x_1
-         =  case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> 
-        happyIn67
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_151 = happySpecReduce_3  30# happyReduction_151
-happyReduction_151 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> 
-        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
-        happyIn67
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_152 = happySpecReduce_3  31# happyReduction_152
-happyReduction_152 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
-        case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> 
-        happyIn68
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_153 = happySpecReduce_1  31# happyReduction_153
-happyReduction_153 happy_x_1
-         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
-        happyIn68
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_154 = happySpecReduce_3  31# happyReduction_154
-happyReduction_154 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
-        case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> 
-        happyIn68
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_155 = happySpecReduce_2  32# happyReduction_155
-happyReduction_155 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_156 = happySpecReduce_2  32# happyReduction_156
-happyReduction_156 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_157 = happySpecReduce_2  32# happyReduction_157
-happyReduction_157 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_158 = happySpecReduce_2  32# happyReduction_158
-happyReduction_158 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_159 = happySpecReduce_2  32# happyReduction_159
-happyReduction_159 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_160 = happySpecReduce_2  32# happyReduction_160
-happyReduction_160 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_161 = happySpecReduce_2  32# happyReduction_161
-happyReduction_161 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_162 = happySpecReduce_2  32# happyReduction_162
-happyReduction_162 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_163 = happyReduce 4# 32# happyReduction_163
-happyReduction_163 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
-        case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> 
-        happyIn69
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        ) `HappyStk` happyRest}}
-
-happyReduce_164 = happySpecReduce_2  32# happyReduction_164
-happyReduction_164 happy_x_2
-        happy_x_1
-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))
-        )}}
-
-happyReduce_165 = happySpecReduce_3  32# happyReduction_165
-happyReduction_165 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut63 happy_x_2 of { (HappyWrap63 happy_var_2) -> 
-        case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))
-        )}}}
-
-happyReduce_166 = happySpecReduce_2  32# happyReduction_166
-happyReduction_166 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_167 = happySpecReduce_2  32# happyReduction_167
-happyReduction_167 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_168 = happySpecReduce_1  32# happyReduction_168
-happyReduction_168 happy_x_1
-         =  case happyOut64 happy_x_1 of { (HappyWrap64 happy_var_1) -> 
-        happyIn69
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_169 = happySpecReduce_2  32# happyReduction_169
-happyReduction_169 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_170 = happySpecReduce_2  32# happyReduction_170
-happyReduction_170 happy_x_2
-        happy_x_1
-         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
-        happyIn69
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
-        )}}
-
-happyReduce_171 = happySpecReduce_3  33# happyReduction_171
-happyReduction_171 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> 
-        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
-        happyIn70
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_172 = happyReduce 8# 33# happyReduction_172
-happyReduction_172 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_173 = happyReduce 9# 33# happyReduction_173
-happyReduction_173 (happy_x_9 `HappyStk`
-        happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        case happyOut70 happy_x_9 of { (HappyWrap70 happy_var_9) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_6) (snd happy_var_9))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_174 = happyReduce 8# 33# happyReduction_174
-happyReduction_174 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> 
-        case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_175 = happyReduce 5# 33# happyReduction_175
-happyReduction_175 (happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
-        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
-        case happyOut68 happy_x_5 of { (HappyWrap68 happy_var_5) -> 
-        happyIn70
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_176 = happySpecReduce_3  33# happyReduction_176
-happyReduction_176 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
-        case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> 
-        happyIn70
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_177 = happyReduce 6# 33# happyReduction_177
-happyReduction_177 (happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> 
-        case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_178 = happyReduce 4# 33# happyReduction_178
-happyReduction_178 (happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> 
-        case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_179 = happyReduce 8# 33# happyReduction_179
-happyReduction_179 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut63 happy_x_3 of { (HappyWrap63 happy_var_3) -> 
-        case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_180 = happySpecReduce_1  33# happyReduction_180
-happyReduction_180 happy_x_1
-         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
-        happyIn70
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_181 = happySpecReduce_3  33# happyReduction_181
-happyReduction_181 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> 
-        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
-        happyIn70
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_182 = happyReduce 8# 33# happyReduction_182
-happyReduction_182 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_183 = happyReduce 9# 33# happyReduction_183
-happyReduction_183 (happy_x_9 `HappyStk`
-        happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> 
-        case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> 
-        case happyOut70 happy_x_9 of { (HappyWrap70 happy_var_9) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_6) (snd happy_var_9))
-        ) `HappyStk` happyRest}}}}}
-
-happyReduce_184 = happyReduce 8# 33# happyReduction_184
-happyReduction_184 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> 
-        case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_185 = happyReduce 4# 33# 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 { happy_var_1 -> 
-        case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> 
-        case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
-        ) `HappyStk` happyRest}}}
-
-happyReduce_186 = happyReduce 8# 33# happyReduction_186
-happyReduction_186 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> 
-        case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_187 = happyReduce 8# 33# happyReduction_187
-happyReduction_187 (happy_x_8 `HappyStk`
-        happy_x_7 `HappyStk`
-        happy_x_6 `HappyStk`
-        happy_x_5 `HappyStk`
-        happy_x_4 `HappyStk`
-        happy_x_3 `HappyStk`
-        happy_x_2 `HappyStk`
-        happy_x_1 `HappyStk`
-        happyRest)
-         = case happyOutTok happy_x_1 of { happy_var_1 -> 
-        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> 
-        case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> 
-        case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> 
-        happyIn70
-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
-        ) `HappyStk` happyRest}}}}
-
-happyReduce_188 = happySpecReduce_3  34# happyReduction_188
-happyReduction_188 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
-        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
-        happyIn71
-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyReduce_189 = happySpecReduce_1  34# happyReduction_189
-happyReduction_189 happy_x_1
-         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> 
-        happyIn71
-                 ((fst happy_var_1, (snd happy_var_1))
-        )}
-
-happyReduce_190 = happySpecReduce_1  35# happyReduction_190
-happyReduction_190 happy_x_1
-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
-        happyIn72
-                 ((fst happy_var_1, (:[]) (snd happy_var_1))
-        )}
-
-happyReduce_191 = happySpecReduce_3  35# happyReduction_191
-happyReduction_191 happy_x_3
-        happy_x_2
-        happy_x_1
-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
-        case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> 
-        happyIn72
-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
-        )}}
-
-happyTerminalToTok term = case term of {
-        PT _ (TS _ 1) -> 2#;
-        PT _ (TS _ 2) -> 3#;
-        PT _ (TS _ 3) -> 4#;
-        PT _ (TS _ 4) -> 5#;
-        PT _ (TS _ 5) -> 6#;
-        PT _ (TS _ 6) -> 7#;
-        PT _ (TS _ 7) -> 8#;
-        PT _ (TS _ 8) -> 9#;
-        PT _ (TS _ 9) -> 10#;
-        PT _ (TS _ 10) -> 11#;
-        PT _ (TS _ 11) -> 12#;
-        PT _ (TS _ 12) -> 13#;
-        PT _ (TS _ 13) -> 14#;
-        PT _ (TS _ 14) -> 15#;
-        PT _ (TS _ 15) -> 16#;
-        PT _ (TS _ 16) -> 17#;
-        PT _ (TS _ 17) -> 18#;
-        PT _ (TS _ 18) -> 19#;
-        PT _ (TS _ 19) -> 20#;
-        PT _ (TS _ 20) -> 21#;
-        PT _ (TS _ 21) -> 22#;
-        PT _ (TS _ 22) -> 23#;
-        PT _ (TS _ 23) -> 24#;
-        PT _ (TS _ 24) -> 25#;
-        PT _ (TS _ 25) -> 26#;
-        PT _ (TS _ 26) -> 27#;
-        PT _ (TS _ 27) -> 28#;
-        PT _ (TS _ 28) -> 29#;
-        PT _ (TS _ 29) -> 30#;
-        PT _ (TS _ 30) -> 31#;
-        PT _ (TS _ 31) -> 32#;
-        PT _ (TS _ 32) -> 33#;
-        PT _ (TS _ 33) -> 34#;
-        PT _ (TS _ 34) -> 35#;
-        PT _ (TS _ 35) -> 36#;
-        PT _ (TS _ 36) -> 37#;
-        PT _ (TS _ 37) -> 38#;
-        PT _ (TS _ 38) -> 39#;
-        PT _ (TS _ 39) -> 40#;
-        PT _ (TS _ 40) -> 41#;
-        PT _ (TS _ 41) -> 42#;
-        PT _ (TS _ 42) -> 43#;
-        PT _ (TS _ 43) -> 44#;
-        PT _ (TS _ 44) -> 45#;
-        PT _ (TS _ 45) -> 46#;
-        PT _ (TS _ 46) -> 47#;
-        PT _ (TS _ 47) -> 48#;
-        PT _ (TS _ 48) -> 49#;
-        PT _ (TS _ 49) -> 50#;
-        PT _ (TS _ 50) -> 51#;
-        PT _ (TS _ 51) -> 52#;
-        PT _ (TS _ 52) -> 53#;
-        PT _ (TS _ 53) -> 54#;
-        PT _ (TS _ 54) -> 55#;
-        PT _ (TS _ 55) -> 56#;
-        PT _ (TS _ 56) -> 57#;
-        PT _ (TS _ 57) -> 58#;
-        PT _ (TS _ 58) -> 59#;
-        PT _ (TS _ 59) -> 60#;
-        PT _ (TS _ 60) -> 61#;
-        PT _ (TS _ 61) -> 62#;
-        PT _ (TS _ 62) -> 63#;
-        PT _ (TS _ 63) -> 64#;
-        PT _ (TS _ 64) -> 65#;
-        PT _ (TS _ 65) -> 66#;
-        PT _ (TS _ 66) -> 67#;
-        PT _ (TS _ 67) -> 68#;
-        PT _ (TS _ 68) -> 69#;
-        PT _ (TS _ 69) -> 70#;
-        PT _ (TS _ 70) -> 71#;
-        PT _ (TS _ 71) -> 72#;
-        PT _ (TS _ 72) -> 73#;
-        PT _ (TS _ 73) -> 74#;
-        PT _ (TS _ 74) -> 75#;
-        PT _ (TS _ 75) -> 76#;
-        PT _ (TS _ 76) -> 77#;
-        PT _ (TS _ 77) -> 78#;
-        PT _ (TS _ 78) -> 79#;
-        PT _ (TS _ 79) -> 80#;
-        PT _ (TS _ 80) -> 81#;
-        PT _ (TS _ 81) -> 82#;
-        PT _ (TS _ 82) -> 83#;
-        PT _ (TS _ 83) -> 84#;
-        PT _ (TS _ 84) -> 85#;
-        PT _ (TS _ 85) -> 86#;
-        PT _ (TS _ 86) -> 87#;
-        PT _ (TS _ 87) -> 88#;
-        PT _ (TS _ 88) -> 89#;
-        PT _ (TS _ 89) -> 90#;
-        PT _ (TS _ 90) -> 91#;
-        PT _ (TS _ 91) -> 92#;
-        PT _ (TS _ 92) -> 93#;
-        PT _ (TS _ 93) -> 94#;
-        PT _ (TS _ 94) -> 95#;
-        PT _ (TS _ 95) -> 96#;
-        PT _ (TS _ 96) -> 97#;
-        PT _ (TS _ 97) -> 98#;
-        PT _ (TS _ 98) -> 99#;
-        PT _ (TS _ 99) -> 100#;
-        PT _ (TL _) -> 101#;
-        PT _ (T_VarIdentToken _) -> 102#;
-        PT _ (T_HoleIdentToken _) -> 103#;
-        _ -> -1#;
-        }
-{-# NOINLINE happyTerminalToTok #-}
-
-happyLex kend  _kmore []       = kend notHappyAtAll []
-happyLex _kend kmore  (tk:tks) = kmore (happyTerminalToTok tk) tk tks
-{-# INLINE happyLex #-}
-
-happyNewToken action sts stk = happyLex (\tk -> happyDoAction 104# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)
-
-happyReport 104# tk explist resume tks = happyReport' tks explist resume
-happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))
-
-
-happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)
-happyThen = ((>>=))
-happyReturn :: () => a -> (Err a)
-happyReturn = (return)
-happyThen1 m k tks = ((>>=)) m (\a -> k a tks)
-happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))
-happyReturn1 :: () => a -> b -> (Err a)
-happyReturn1 = \a tks -> (return) a
-happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)
-happyReport' = (\tokens expected resume -> happyError tokens)
-
-happyAbort :: () => [(Token)] -> (Err a)
-happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"
-
-pModule_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap40 x') = happyOut40 x} in x'))
-
-pHoleIdent_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap41 x') = happyOut41 x} in x'))
-
-pVarIdent_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap42 x') = happyOut42 x} in x'))
-
-pListVarIdent_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap43 x') = happyOut43 x} in x'))
-
-pLanguageDecl_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap44 x') = happyOut44 x} in x'))
-
-pLanguage_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap45 x') = happyOut45 x} in x'))
-
-pCommand_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap46 x') = happyOut46 x} in x'))
-
-pListCommand_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap47 x') = happyOut47 x} in x'))
-
-pDeclUsedVars_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap48 x') = happyOut48 x} in x'))
-
-pSectionName_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap49 x') = happyOut49 x} in x'))
-
-pPattern_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))
-
-pListPattern_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))
-
-pPattern1_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))
-
-pListPattern1_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))
-
-pParam_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))
-
-pListParam_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))
-
-pBind_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))
-
-pParamDecl_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))
-
-pSigmaParam_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))
-
-pListSigmaParam_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))
-
-pRestriction_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))
-
-pListRestriction_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))
-
-pModality_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))
-
-pModComp_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))
-
-pTerm7_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))
-
-pTerm5_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))
-
-pTerm4_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))
-
-pTerm3_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))
-
-pTerm2_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))
-
-pTerm6_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))
-
-pTerm1_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))
-
-pTerm_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))
-
-pListTerm_internal tks = happySomeParser where
- happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))
-
-happySeq = happyDontSeq
-
-
-type Err = Either String
-
-happyError :: [Token] -> Err a
-happyError ts = Left $
-  "syntax error at " ++ tokenPos ts ++
-  case ts of
-    []      -> []
-    [Err _] -> " due to lexer error"
-    t:_     -> " before `" ++ (prToken t) ++ "'"
-
-myLexer :: Data.Text.Text -> [Token]
-myLexer = tokens
-
--- Entrypoints
-
-pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module
-pModule = fmap snd . pModule_internal
-
-pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent
-pHoleIdent = fmap snd . pHoleIdent_internal
-
-pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent
-pVarIdent = fmap snd . pVarIdent_internal
-
-pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]
-pListVarIdent = fmap snd . pListVarIdent_internal
-
-pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl
-pLanguageDecl = fmap snd . pLanguageDecl_internal
-
-pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language
-pLanguage = fmap snd . pLanguage_internal
-
-pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command
-pCommand = fmap snd . pCommand_internal
-
-pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]
-pListCommand = fmap snd . pListCommand_internal
-
-pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars
-pDeclUsedVars = fmap snd . pDeclUsedVars_internal
-
-pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName
-pSectionName = fmap snd . pSectionName_internal
-
-pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
-pPattern = fmap snd . pPattern_internal
-
-pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
-pListPattern = fmap snd . pListPattern_internal
-
-pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
-pPattern1 = fmap snd . pPattern1_internal
-
-pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
-pListPattern1 = fmap snd . pListPattern1_internal
-
-pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param
-pParam = fmap snd . pParam_internal
-
-pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]
-pListParam = fmap snd . pListParam_internal
-
-pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind
-pBind = fmap snd . pBind_internal
-
-pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl
-pParamDecl = fmap snd . pParamDecl_internal
-
-pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam
-pSigmaParam = fmap snd . pSigmaParam_internal
-
-pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]
-pListSigmaParam = fmap snd . pListSigmaParam_internal
-
-pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction
-pRestriction = fmap snd . pRestriction_internal
-
-pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]
-pListRestriction = fmap snd . pListRestriction_internal
-
-pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality
-pModality = fmap snd . pModality_internal
-
-pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp
-pModComp = fmap snd . pModComp_internal
+  , pModalColon
+  , pTerm7
+  , pTerm5
+  , pTerm4
+  , pTerm3
+  , pTerm2
+  , pTerm6
+  , pTerm1
+  , pTerm
+  , pListTerm
+  ) where
+
+import Prelude
+
+import qualified Language.Rzk.Syntax.Abs
+import Language.Rzk.Syntax.Lex
+import qualified Data.Text
+import qualified Control.Monad as Happy_Prelude
+import qualified Data.Bool as Happy_Prelude
+import qualified Data.Function as Happy_Prelude
+import qualified Data.Int as Happy_Prelude
+import qualified Data.List as Happy_Prelude
+import qualified Data.Maybe as Happy_Prelude
+import qualified Data.String as Happy_Prelude
+import qualified Data.Tuple as Happy_Prelude
+import qualified GHC.Err as Happy_Prelude
+import qualified GHC.Num as Happy_Prelude
+import qualified Text.Show as Happy_Prelude
+import qualified Data.Array as Happy_Data_Array
+import qualified Data.Bits as Bits
+import qualified GHC.Exts as Happy_GHC_Exts
+import Control.Applicative(Applicative(..))
+import Control.Monad (ap)
+
+-- parser produced by Happy Version 2.2
+
+newtype HappyAbsSyn  = HappyAbsSyn HappyAny
+#if __GLASGOW_HASKELL__ >= 607
+type HappyAny = Happy_GHC_Exts.Any
+#else
+type HappyAny = forall a . a
+#endif
+newtype HappyWrap38 = HappyWrap38 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))
+happyIn38 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )
+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap38 x)
+{-# INLINE happyIn38 #-}
+happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut38 #-}
+newtype HappyWrap39 = HappyWrap39 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))
+happyIn39 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )
+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap39 x)
+{-# INLINE happyIn39 #-}
+happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut39 #-}
+newtype HappyWrap40 = HappyWrap40 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))
+happyIn40 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )
+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap40 x)
+{-# INLINE happyIn40 #-}
+happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut40 #-}
+newtype HappyWrap41 = HappyWrap41 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))
+happyIn41 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )
+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap41 x)
+{-# INLINE happyIn41 #-}
+happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut41 #-}
+newtype HappyWrap42 = HappyWrap42 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))
+happyIn42 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )
+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap42 x)
+{-# INLINE happyIn42 #-}
+happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut42 #-}
+newtype HappyWrap43 = HappyWrap43 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))
+happyIn43 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )
+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap43 x)
+{-# INLINE happyIn43 #-}
+happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut43 #-}
+newtype HappyWrap44 = HappyWrap44 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))
+happyIn44 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )
+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap44 x)
+{-# INLINE happyIn44 #-}
+happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut44 #-}
+newtype HappyWrap45 = HappyWrap45 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))
+happyIn45 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )
+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap45 x)
+{-# INLINE happyIn45 #-}
+happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut45 #-}
+newtype HappyWrap46 = HappyWrap46 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))
+happyIn46 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )
+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap46 x)
+{-# INLINE happyIn46 #-}
+happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut46 #-}
+newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))
+happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )
+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)
+{-# INLINE happyIn47 #-}
+happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut47 #-}
+newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))
+happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )
+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)
+{-# INLINE happyIn48 #-}
+happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut48 #-}
+newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))
+happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )
+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)
+{-# INLINE happyIn49 #-}
+happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut49 #-}
+newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))
+happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )
+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)
+{-# INLINE happyIn50 #-}
+happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut50 #-}
+newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))
+happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )
+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)
+{-# INLINE happyIn51 #-}
+happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut51 #-}
+newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))
+happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )
+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)
+{-# INLINE happyIn52 #-}
+happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut52 #-}
+newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))
+happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )
+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)
+{-# INLINE happyIn53 #-}
+happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut53 #-}
+newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))
+happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )
+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)
+{-# INLINE happyIn54 #-}
+happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut54 #-}
+newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))
+happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )
+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)
+{-# INLINE happyIn55 #-}
+happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut55 #-}
+newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))
+happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )
+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)
+{-# INLINE happyIn56 #-}
+happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut56 #-}
+newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))
+happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )
+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)
+{-# INLINE happyIn57 #-}
+happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut57 #-}
+newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))
+happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )
+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)
+{-# INLINE happyIn58 #-}
+happyOut58 :: (HappyAbsSyn ) -> HappyWrap58
+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut58 #-}
+newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))
+happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )
+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)
+{-# INLINE happyIn59 #-}
+happyOut59 :: (HappyAbsSyn ) -> HappyWrap59
+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut59 #-}
+newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))
+happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )
+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)
+{-# INLINE happyIn60 #-}
+happyOut60 :: (HappyAbsSyn ) -> HappyWrap60
+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut60 #-}
+newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))
+happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )
+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)
+{-# INLINE happyIn61 #-}
+happyOut61 :: (HappyAbsSyn ) -> HappyWrap61
+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut61 #-}
+newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))
+happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )
+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)
+{-# INLINE happyIn62 #-}
+happyOut62 :: (HappyAbsSyn ) -> HappyWrap62
+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut62 #-}
+newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))
+happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )
+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)
+{-# INLINE happyIn63 #-}
+happyOut63 :: (HappyAbsSyn ) -> HappyWrap63
+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut63 #-}
+newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))
+happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )
+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)
+{-# INLINE happyIn64 #-}
+happyOut64 :: (HappyAbsSyn ) -> HappyWrap64
+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut64 #-}
+newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon))
+happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon)) -> (HappyAbsSyn )
+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)
+{-# INLINE happyIn65 #-}
+happyOut65 :: (HappyAbsSyn ) -> HappyWrap65
+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut65 #-}
+newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)
+{-# INLINE happyIn66 #-}
+happyOut66 :: (HappyAbsSyn ) -> HappyWrap66
+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut66 #-}
+newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)
+{-# INLINE happyIn67 #-}
+happyOut67 :: (HappyAbsSyn ) -> HappyWrap67
+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut67 #-}
+newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)
+{-# INLINE happyIn68 #-}
+happyOut68 :: (HappyAbsSyn ) -> HappyWrap68
+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut68 #-}
+newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)
+{-# INLINE happyIn69 #-}
+happyOut69 :: (HappyAbsSyn ) -> HappyWrap69
+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut69 #-}
+newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)
+{-# INLINE happyIn70 #-}
+happyOut70 :: (HappyAbsSyn ) -> HappyWrap70
+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut70 #-}
+newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)
+{-# INLINE happyIn71 #-}
+happyOut71 :: (HappyAbsSyn ) -> HappyWrap71
+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut71 #-}
+newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)
+{-# INLINE happyIn72 #-}
+happyOut72 :: (HappyAbsSyn ) -> HappyWrap72
+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut72 #-}
+newtype HappyWrap73 = HappyWrap73 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))
+happyIn73 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )
+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap73 x)
+{-# INLINE happyIn73 #-}
+happyOut73 :: (HappyAbsSyn ) -> HappyWrap73
+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut73 #-}
+newtype HappyWrap74 = HappyWrap74 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))
+happyIn74 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )
+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap74 x)
+{-# INLINE happyIn74 #-}
+happyOut74 :: (HappyAbsSyn ) -> HappyWrap74
+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut74 #-}
+happyInTok :: (Token) -> (HappyAbsSyn )
+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn ) -> (Token)
+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+{-# NOINLINE happyTokenStrings #-}
+happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0_I'","'0\7522'","'0\8322'","'1'","'1_2'","'1_I'","'1\7522'","'1\8322'","'2'","':'","':='","':_#'","':_b'","':_id'","':_op'","':\7506\7510'","':\9837'","':\9839'","';'","'<'","'<='","'='","'==='","'=_{'","'>'","'BOT'","'CUBE'","'II'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inv_op'","'inv\7506\7510'","'let'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'{'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8868'","'\8869'","'\9837'","'\9839'","'\120128'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\xf9\xff\xff\xff\xae\xff\xff\xff\xbe\xff\xff\xff\xbe\xff\xff\xff\x2b\x00\x00\x00\x06\x00\x00\x00\xaa\x0a\x00\x00\xaa\x0a\x00\x00\x30\x00\x00\x00\x48\x00\x00\x00\xf5\xff\xff\xff\xf5\xff\xff\xff\xf5\xff\xff\xff\xf5\xff\xff\xff\x11\x00\x00\x00\x11\x00\x00\x00\xf5\xff\xff\xff\x52\x00\x00\x00\xf5\xff\xff\xff\xf5\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xfb\x00\x00\x00\xfb\x00\x00\x00\xc5\x0a\x00\x00\x30\x02\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x13\x00\x00\x00\xe2\xff\xff\xff\xd7\xff\xff\xff\x74\x01\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x8b\x00\x00\x00\xfb\x00\x00\x00\xf0\xff\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\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x17\x01\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x07\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x30\x02\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x19\x01\x00\x00\x30\x02\x00\x00\x30\x02\x00\x00\x00\x00\x00\x00\x1a\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\xa5\x00\x00\x00\x27\x00\x00\x00\xa5\x00\x00\x00\x12\x01\x00\x00\xf0\xff\xff\xff\xa5\x00\x00\x00\xd2\x01\x00\x00\xa5\x00\x00\x00\xa5\x00\x00\x00\xa8\x00\x00\x00\xa5\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00\x00\xd7\x00\x00\x00\xd7\x00\x00\x00\x39\x01\x00\x00\xde\x00\x00\x00\xb8\xff\xff\xff\xde\x00\x00\x00\x00\x00\x00\x00\x99\x0a\x00\x00\x3b\x01\x00\x00\xe4\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\xe4\x00\x00\x00\xd2\x01\x00\x00\x34\x01\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\xec\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x00\x00\xf3\x00\x00\x00\xf3\x00\x00\x00\x12\x00\x00\x00\xf3\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\xf3\x00\x00\x00\x5b\x01\x00\x00\x4b\x01\x00\x00\x09\x01\x00\x00\x11\x01\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\x11\x01\x00\x00\x11\x01\x00\x00\x11\x01\x00\x00\x11\x01\x00\x00\x11\x01\x00\x00\x1d\x01\x00\x00\x1d\x01\x00\x00\x16\x01\x00\x00\x16\x01\x00\x00\x15\x01\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x5f\x01\x00\x00\x42\x01\x00\x00\x4d\x01\x00\x00\x4d\x01\x00\x00\x4d\x01\x00\x00\x4d\x01\x00\x00\xaa\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\xa4\x01\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\xc6\x01\x00\x00\xaa\x0a\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x01\x00\x00\x69\x00\x00\x00\xa3\x0a\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\xf9\x01\x00\x00\x12\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xfb\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\x06\x01\x00\x00\xb4\x00\x00\x00\xf0\xff\xff\xff\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xec\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xff\xff\xff\xf0\xff\xff\xff\x30\x02\x00\x00\xf2\x01\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x12\x00\x00\x00\x78\x00\x00\x00\x32\x0a\x00\x00\x30\x02\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x38\x00\x00\x00\x38\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xac\x0a\x00\x00\x05\x02\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x07\x02\x00\x00\x12\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x14\x02\x00\x00\xf2\xff\xff\xff\xf0\xff\xff\xff\x00\x00\x00\x00\x7a\x00\x00\x00\xf0\xff\xff\xff\xb5\x0a\x00\x00\x12\x02\x00\x00\xbe\x0a\x00\x00\x20\x02\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\xd2\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\x12\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\x00\x00\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x1e\x00\x00\x00\x57\x00\x00\x00\x80\x00\x00\x00\xea\x01\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x02\x00\x00\xf0\xff\xff\xff\x38\x02\x00\x00\xf0\xff\xff\xff\x39\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\xf1\xff\xff\xff\x6b\x00\x00\x00\x00\x00\x00\x00\x24\x01\x00\x00\xb4\x00\x00\x00\x12\x00\x00\x00\xf0\xff\xff\xff\x12\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x50\x00\x00\x00\xf0\xff\xff\xff\x03\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x2c\x02\x00\x00\x49\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x48\x02\x00\x00\x4f\x02\x00\x00\x71\x00\x00\x00\x2d\x01\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x71\x02\x00\x00\x72\x02\x00\x00\x6f\x02\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x70\x02\x00\x00\x00\x00\x00\x00\x77\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x78\x02\x00\x00\x82\x02\x00\x00\x83\x02\x00\x00\x9e\x02\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\x74\x02\x00\x00\xf0\xff\xff\xff\x8d\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x93\x02\x00\x00\xf0\xff\xff\xff\x94\x02\x00\x00\xf0\xff\xff\xff\x5e\x02\x00\x00\xaa\x02\x00\x00\xb5\x02\x00\x00\xb6\x02\x00\x00\xc1\x02\x00\x00\xc2\x02\x00\x00\xc3\x02\x00\x00\xcc\x02\x00\x00\xcd\x02\x00\x00\x8f\x02\x00\x00\x98\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xa5\x02\x00\x00\xf0\xff\xff\xff\xd9\x02\x00\x00\xde\x02\x00\x00\xec\x02\x00\x00\xf2\x02\x00\x00\xf3\x02\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf1\x02\x00\x00\xf0\xff\xff\xff\xf7\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\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\xb9\x02\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x11\x03\x00\x00\xf0\xff\xff\xff\x21\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\x55\x01\x00\x00\xad\x00\x00\x00\x98\x01\x00\x00\xb5\x00\x00\x00\x30\x03\x00\x00\x32\x03\x00\x00\x2f\x03\x00\x00\x0e\x00\x00\x00\x2e\x03\x00\x00\xc7\x01\x00\x00\x15\x00\x00\x00\x9a\x01\x00\x00\xba\x0a\x00\x00\x6b\x01\x00\x00\x0d\x01\x00\x00\x87\x02\x00\x00\x99\x01\x00\x00\xa0\x01\x00\x00\xc9\x01\x00\x00\xba\x01\x00\x00\x31\x03\x00\x00\xc9\x02\x00\x00\x22\x03\x00\x00\x9e\x00\x00\x00\x24\x03\x00\x00\x41\x01\x00\x00\x9f\x09\x00\x00\x99\x09\x00\x00\x68\x09\x00\x00\x15\x09\x00\x00\x54\x02\x00\x00\x22\x08\x00\x00\x42\x03\x00\x00\x8c\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\x72\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x58\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\xfe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x02\x00\x00\x3c\x03\x00\x00\xdb\x09\x00\x00\x00\x00\x00\x00\xec\x09\x00\x00\xf1\x09\x00\x00\xf7\x01\x00\x00\x23\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x03\x00\x00\xf7\x09\x00\x00\xfc\x09\x00\x00\x02\x0a\x00\x00\x0a\x0a\x00\x00\x15\x0a\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x1b\x0a\x00\x00\x20\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x0a\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00\x26\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x0a\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\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\xdc\x00\x00\x00\x90\x03\x00\x00\xa6\x03\x00\x00\xb7\x03\x00\x00\xcd\x03\x00\x00\x9b\x01\x00\x00\xb9\x01\x00\x00\x25\x02\x00\x00\xd8\x01\x00\x00\xff\x02\x00\x00\x49\x03\x00\x00\x4b\x03\x00\x00\xf6\x01\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x03\x00\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x03\x00\x00\x00\x00\x00\x00\x5b\x03\x00\x00\x5c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x35\x02\x00\x00\x00\x00\x00\x00\x96\x0a\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x4d\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\xf4\x03\x00\x00\x05\x04\x00\x00\x1b\x04\x00\x00\x2c\x04\x00\x00\xfd\x02\x00\x00\x50\x03\x00\x00\x76\x02\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\x26\x09\x00\x00\x42\x04\x00\x00\x27\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x0a\x00\x00\x00\x00\x00\x00\xd6\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x2b\x0a\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x0a\x00\x00\x00\x00\x00\x00\x54\x03\x00\x00\x31\x0a\x00\x00\xa2\x02\x00\x00\x38\x08\x00\x00\x36\x09\x00\x00\x47\x09\x00\x00\x78\x09\x00\x00\x89\x09\x00\x00\xaa\x09\x00\x00\xbd\x09\x00\x00\xc8\x09\x00\x00\xce\x09\x00\x00\x00\x00\x00\x00\x49\x08\x00\x00\x5a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x04\x00\x00\x00\x00\x00\x00\x7a\x04\x00\x00\x90\x04\x00\x00\xa1\x04\x00\x00\xb7\x04\x00\x00\x55\x03\x00\x00\x00\x00\x00\x00\x6b\x08\x00\x00\x7c\x08\x00\x00\x00\x00\x00\x00\x5b\x02\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x57\x03\x00\x00\x00\x00\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x0a\x00\x00\x39\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x16\x05\x00\x00\x2c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x05\x00\x00\x53\x05\x00\x00\x82\x0a\x00\x00\x84\x0a\x00\x00\x8d\x0a\x00\x00\x73\x03\x00\x00\x64\x05\x00\x00\x7a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x05\x00\x00\x00\x00\x00\x00\xa1\x05\x00\x00\x00\x00\x00\x00\xb2\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x09\x00\x00\x4b\x0a\x00\x00\xc8\x05\x00\x00\x61\x0a\x00\x00\xd9\x05\x00\x00\xef\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x16\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x0a\x00\x00\x3d\x06\x00\x00\x4e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x75\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x06\x00\x00\x9c\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x0a\x00\x00\x00\x00\x00\x00\xc3\x06\x00\x00\x00\x00\x00\x00\xd9\x06\x00\x00\xea\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x11\x07\x00\x00\x00\x00\x00\x00\x27\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x07\x00\x00\x00\x00\x00\x00\x4e\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x08\x00\x00\x9e\x08\x00\x00\xaf\x08\x00\x00\x00\x00\x00\x00\x86\x07\x00\x00\x00\x00\x00\x00\x9c\x07\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\xd1\x08\x00\x00\xe2\x08\x00\x00\xf3\x08\x00\x00\x04\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x07\x00\x00\x00\x00\x00\x00\xc3\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x07\x00\x00\x00\x00\x00\x00\xea\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x07\x00\x00\x00\x00\x00\x00\x11\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xff\xff\xbf\xff\xff\xff\xbe\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xff\xff\xd8\xff\xff\xff\xd9\xff\xff\xff\x6e\xff\xff\xff\x6d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x47\xff\xff\xff\x5d\xff\xff\xff\x59\xff\xff\xff\x56\xff\xff\xff\x3b\xff\xff\xff\x61\xff\xff\xff\x32\xff\xff\xff\x31\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\xff\xff\x85\xff\xff\xff\x6a\xff\xff\xff\x67\xff\xff\xff\x80\xff\xff\xff\x83\xff\xff\xff\x86\xff\xff\xff\x69\xff\xff\xff\x66\xff\xff\xff\x7f\xff\xff\xff\x82\xff\xff\xff\x84\xff\xff\xff\x00\x00\x00\x00\x64\xff\xff\xff\x88\xff\xff\xff\x68\xff\xff\xff\x00\x00\x00\x00\x65\xff\xff\xff\x87\xff\xff\xff\x89\xff\xff\xff\x79\xff\xff\xff\x00\x00\x00\x00\x96\xff\xff\xff\x98\xff\xff\xff\x93\xff\xff\xff\x94\xff\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\x7c\xff\xff\xff\x00\x00\x00\x00\x72\xff\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\x73\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\x00\x00\x00\x00\x7e\xff\xff\xff\x7d\xff\xff\xff\x99\xff\xff\xff\x97\xff\xff\xff\x81\xff\xff\xff\xdc\xff\xff\xff\xdb\xff\xff\xff\x00\x00\x00\x00\x3b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x8c\xff\xff\xff\x8d\xff\xff\xff\x8a\xff\xff\xff\x8e\xff\xff\xff\x90\xff\xff\xff\x8f\xff\xff\xff\x92\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\xff\xff\xff\x00\x00\x00\x00\x9f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xff\xff\xff\xab\xff\xff\xff\x00\x00\x00\x00\xb3\xff\xff\xff\xad\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\xb5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\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\x00\x00\x00\x00\x00\x00\xbe\xff\xff\xff\x00\x00\x00\x00\xbe\xff\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\xd4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xff\xff\xda\xff\xff\xff\xd6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\xff\xff\x00\x00\x00\x00\xc8\xff\xff\xff\xbf\xff\xff\xff\xc7\xff\xff\xff\xbf\xff\xff\xff\xbf\xff\xff\xff\xcf\xff\xff\xff\xce\xff\xff\xff\xd0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xff\xff\x00\x00\x00\x00\xb7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\xac\xff\xff\xff\x00\x00\x00\x00\x4b\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xff\xff\xff\x49\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\xff\xff\xff\x51\xff\xff\xff\x4e\xff\xff\xff\x4d\xff\xff\xff\x45\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\xff\xff\xff\x53\xff\xff\xff\x00\x00\x00\x00\x50\xff\xff\xff\x4f\xff\xff\xff\x46\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x44\xff\xff\xff\x3a\xff\xff\xff\x5e\xff\xff\xff\x5f\xff\xff\xff\x5c\xff\xff\xff\x5b\xff\xff\xff\x5a\xff\xff\xff\x58\xff\xff\xff\x57\xff\xff\xff\x55\xff\xff\xff\x33\xff\xff\xff\x30\xff\xff\xff\x4a\xff\xff\xff\x00\x00\x00\x00\x6c\xff\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\x00\x00\x75\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\xff\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\x3f\xff\xff\xff\x62\xff\xff\xff\x60\xff\xff\xff\x91\xff\xff\xff\x9a\xff\xff\xff\x9d\xff\xff\xff\x9c\xff\xff\xff\xa1\xff\xff\xff\xa0\xff\xff\xff\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xff\xff\xff\x00\x00\x00\x00\xc1\xff\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\xd5\xff\xff\xff\xc9\xff\xff\xff\xca\xff\xff\xff\xd3\xff\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\xd1\xff\xff\xff\xcb\xff\xff\xff\xc0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xff\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\x00\x00\x7b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xff\xff\xff\x36\xff\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\xa3\xff\xff\xff\x00\x00\x00\x00\x77\xff\xff\xff\x00\x00\x00\x00\xa8\xff\xff\xff\x00\x00\x00\x00\x63\xff\xff\xff\x78\xff\xff\xff\xa1\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xff\xff\xff\xa1\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\xa1\xff\xff\xff\x00\x00\x00\x00\x40\xff\xff\xff\xba\xff\xff\xff\x00\x00\x00\x00\xaf\xff\xff\xff\x00\x00\x00\x00\xb2\xff\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\xcc\xff\xff\xff\x00\x00\x00\x00\xcd\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\xff\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\xa2\xff\xff\xff\x76\xff\xff\xff\xa7\xff\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\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\xae\xff\xff\xff\xb1\xff\xff\xff\xb0\xff\xff\xff\xc3\xff\xff\xff\x00\x00\x00\x00\xc5\xff\xff\xff\x00\x00\x00\x00\xc6\xff\xff\xff\xc4\xff\xff\xff\x34\xff\xff\xff\x35\xff\xff\xff\x41\xff\xff\xff\x42\xff\xff\xff\x43\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xff\xff\xff\x00\x00\x00\x00\x37\xff\xff\xff\x38\xff\xff\xff\x39\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xff\xff\xff\x7a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xff\xff\xff"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\xff\xff\x11\x00\x00\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x13\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x12\x00\x00\x00\x31\x00\x00\x00\x17\x00\x00\x00\x33\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x5d\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x45\x00\x00\x00\x65\x00\x00\x00\x12\x00\x00\x00\x2f\x00\x00\x00\x72\x00\x00\x00\x3f\x00\x00\x00\x0d\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x1a\x00\x00\x00\x3e\x00\x00\x00\x71\x00\x00\x00\x12\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x0a\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x18\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x25\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x68\x00\x00\x00\x5b\x00\x00\x00\x14\x00\x00\x00\x5c\x00\x00\x00\x59\x00\x00\x00\x5d\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x5e\x00\x00\x00\x4e\x00\x00\x00\x66\x00\x00\x00\x65\x00\x00\x00\x31\x00\x00\x00\x53\x00\x00\x00\x33\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x59\x00\x00\x00\x71\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x12\x00\x00\x00\x59\x00\x00\x00\x59\x00\x00\x00\x5b\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x59\x00\x00\x00\x71\x00\x00\x00\x5b\x00\x00\x00\x67\x00\x00\x00\x12\x00\x00\x00\x25\x00\x00\x00\x71\x00\x00\x00\x13\x00\x00\x00\x18\x00\x00\x00\x17\x00\x00\x00\x2f\x00\x00\x00\x71\x00\x00\x00\x71\x00\x00\x00\x13\x00\x00\x00\x12\x00\x00\x00\x64\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x5a\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x71\x00\x00\x00\x18\x00\x00\x00\x17\x00\x00\x00\x12\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x5f\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x13\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x25\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x25\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5c\x00\x00\x00\x5b\x00\x00\x00\x5e\x00\x00\x00\x02\x00\x00\x00\x59\x00\x00\x00\x04\x00\x00\x00\x5b\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x71\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x14\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x5c\x00\x00\x00\x71\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x64\x00\x00\x00\x59\x00\x00\x00\x5c\x00\x00\x00\x5b\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x59\x00\x00\x00\x71\x00\x00\x00\x5b\x00\x00\x00\x64\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x70\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x2f\x00\x00\x00\x71\x00\x00\x00\x5c\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x71\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x0d\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x17\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x73\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x12\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x5f\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x73\x00\x00\x00\x13\x00\x00\x00\x0d\x00\x00\x00\x73\x00\x00\x00\x14\x00\x00\x00\x17\x00\x00\x00\x11\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x12\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x13\x00\x00\x00\x30\x00\x00\x00\x19\x00\x00\x00\x32\x00\x00\x00\x17\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x13\x00\x00\x00\x2f\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x17\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x73\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x17\x00\x00\x00\x73\x00\x00\x00\x17\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x73\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x19\x00\x00\x00\x49\x00\x00\x00\x07\x00\x00\x00\x1c\x00\x00\x00\x63\x00\x00\x00\x73\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x17\x00\x00\x00\x73\x00\x00\x00\x5f\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x01\x00\x00\x00\x59\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x63\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x73\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x71\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x12\x00\x00\x00\x71\x00\x00\x00\x73\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x18\x00\x00\x00\x70\x00\x00\x00\x1c\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x53\x00\x00\x00\x71\x00\x00\x00\x14\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x49\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x73\x00\x00\x00\x21\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x05\x00\x00\x00\x59\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x31\x00\x00\x00\x5a\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x12\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x25\x00\x00\x00\x25\x00\x00\x00\x1c\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x71\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x17\x00\x00\x00\x25\x00\x00\x00\x14\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x19\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x49\x00\x00\x00\x17\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x21\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x05\x00\x00\x00\x59\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x63\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x5e\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x15\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x12\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x40\x00\x00\x00\x25\x00\x00\x00\x1c\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x70\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x25\x00\x00\x00\x2f\x00\x00\x00\x05\x00\x00\x00\x5e\x00\x00\x00\x5c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x0d\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x19\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x1c\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x21\x00\x00\x00\x4a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x49\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x34\x00\x00\x00\x13\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x34\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x59\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x63\x00\x00\x00\x0d\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x21\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x26\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x14\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x19\x00\x00\x00\x5e\x00\x00\x00\x13\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x14\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x5e\x00\x00\x00\x14\x00\x00\x00\x4a\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x5c\x00\x00\x00\x17\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x5e\x00\x00\x00\x17\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x19\x00\x00\x00\x14\x00\x00\x00\x13\x00\x00\x00\x1c\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x21\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x0b\x00\x00\x00\x08\x00\x00\x00\x19\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x19\x00\x00\x00\x14\x00\x00\x00\x0b\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x1b\x00\x00\x00\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xff\xff\xff\xff\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xff\xff\xff\xff\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x19\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x1c\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\x21\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\x13\x00\x00\x00\xff\xff\xff\xff\x1c\x00\x00\x00\xff\xff\xff\xff\x17\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x0d\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\xff\xff\xff\xff\x0f\x00\x00\x00\x10\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\xff\xff\xff\xff\x0b\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x0d\x00\x00\x00\x25\x00\x00\x00\x0f\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xb9\x00\x00\x00\x99\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x8d\x00\x00\x00\xe7\x00\x00\x00\x6d\x01\x00\x00\xe8\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\xe0\x00\x00\x00\x24\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x00\x00\x8d\x00\x00\x00\x88\x00\x00\x00\x2e\x01\x00\x00\x05\x01\x00\x00\xe1\x00\x00\x00\xee\x00\x00\x00\x42\x00\x00\x00\x6e\x00\x00\x00\x06\x01\x00\x00\x9f\x00\x00\x00\x97\x00\x00\x00\x8d\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x08\x01\x00\x00\x4b\x00\x00\x00\x6d\x00\x00\x00\x97\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xb9\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x0f\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5b\x01\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x07\x01\x00\x00\x62\x00\x00\x00\xe4\x00\x00\x00\x9a\x01\x00\x00\x8e\x00\x00\x00\xe0\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x2f\x01\x00\x00\xf8\x00\x00\x00\x67\x00\x00\x00\xe1\x00\x00\x00\xe7\x00\x00\x00\xb7\x00\x00\x00\xe8\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x8e\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x8e\x00\x00\x00\x6d\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x97\x00\x00\x00\x8e\x00\x00\x00\x8e\x00\x00\x00\x98\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x8e\x00\x00\x00\x6d\x00\x00\x00\x98\x00\x00\x00\x09\x01\x00\x00\x8d\x00\x00\x00\x59\x01\x00\x00\x6d\x00\x00\x00\x97\x01\x00\x00\x26\x01\x00\x00\x41\x01\x00\x00\x42\x00\x00\x00\x6d\x00\x00\x00\x6d\x00\x00\x00\x80\x01\x00\x00\x97\x00\x00\x00\x10\x01\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\xa4\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x6d\x00\x00\x00\x22\x01\x00\x00\x41\x01\x00\x00\x97\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xe5\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x7c\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x6b\x01\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x57\x01\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x8d\x01\x00\x00\x62\x00\x00\x00\x8e\x01\x00\x00\x25\x00\x00\x00\x8e\x00\x00\x00\xbc\x00\x00\x00\x98\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x24\x00\x00\x00\x81\x00\x00\x00\x82\x00\x00\x00\x6d\x00\x00\x00\xb9\x00\x00\x00\xba\x00\x00\x00\xe4\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x8e\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x34\x00\x00\x00\x73\x00\x00\x00\x98\x01\x00\x00\x6d\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x27\x01\x00\x00\x8e\x00\x00\x00\x81\x01\x00\x00\x98\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x8e\x00\x00\x00\x6d\x00\x00\x00\x98\x00\x00\x00\x23\x01\x00\x00\x24\x00\x00\x00\x81\x00\x00\x00\x02\x01\x00\x00\x24\x00\x00\x00\xb9\x00\x00\x00\xcf\x00\x00\x00\x42\x00\x00\x00\x6d\x00\x00\x00\x7d\x01\x00\x00\xa4\x00\x00\x00\xbf\x00\x00\x00\x24\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x88\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x6d\x00\x00\x00\xa4\x00\x00\x00\x48\x01\x00\x00\xec\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x04\x01\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\xff\xff\xff\xff\x54\x00\x00\x00\x55\x00\x00\x00\x00\x01\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\xe5\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x81\x00\x00\x00\x28\x01\x00\x00\x88\x00\x00\x00\xb9\x00\x00\x00\xc2\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\xff\xff\xff\xff\x1f\x01\x00\x00\x93\x00\x00\x00\xff\xff\xff\xff\xe4\x00\x00\x00\x20\x01\x00\x00\x98\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x73\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\xfb\x00\x00\x00\xf5\x00\x00\x00\xec\x00\x00\x00\xe9\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x95\x01\x00\x00\x0a\x01\x00\x00\xe3\x00\x00\x00\x0b\x01\x00\x00\x96\x01\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x7e\x01\x00\x00\x42\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x7f\x01\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\xff\xff\xff\xff\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\xdb\x00\x00\x00\xe2\x00\x00\x00\xff\xff\xff\xff\xdd\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\xff\xff\xff\xbd\x00\x00\x00\xd9\x00\x00\x00\x29\x00\x00\x00\x53\x00\x00\x00\xbe\x00\x00\x00\x78\x00\x00\x00\x66\x00\x00\x00\xff\xff\xff\xff\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\xd4\x00\x00\x00\xff\xff\xff\xff\xe5\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x24\x00\x00\x00\x61\x00\x00\x00\x24\x00\x00\x00\xd2\x00\x00\x00\xb9\x00\x00\x00\xc0\x00\x00\x00\x88\x00\x00\x00\x0c\x01\x00\x00\x0d\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x66\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x99\x00\x00\x00\xd1\x00\x00\x00\x9a\x00\x00\x00\x9b\x00\x00\x00\xff\xff\xff\xff\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\xff\xff\xff\xff\x73\x00\x00\x00\x6d\x00\x00\x00\xff\xff\xff\xff\x36\x00\x00\x00\x37\x00\x00\x00\x29\x00\x00\x00\xa9\xff\xff\xff\x24\x00\x00\x00\x0d\x01\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\xbb\x00\x00\x00\x88\x00\x00\x00\x88\x00\x00\x00\xca\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x42\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x91\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x92\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\xdb\x00\x00\x00\xb7\x00\x00\x00\x6d\x00\x00\x00\x8f\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x2a\x00\x00\x00\x53\x00\x00\x00\xc9\x00\x00\x00\x88\x00\x00\x00\xff\xff\xff\xff\x90\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x89\x00\x00\x00\x24\x00\x00\x00\x51\x01\x00\x00\x24\x00\x00\x00\x52\x01\x00\x00\xa0\x00\x00\x00\x61\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xa1\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x89\x00\x00\x00\x66\x00\x00\x00\xa9\xff\xff\xff\x24\x00\x00\x00\x50\x01\x00\x00\x4f\x01\x00\x00\xa4\x00\x00\x00\xc7\x00\x00\x00\x8e\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x73\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x29\x00\x00\x00\x4b\x01\x00\x00\x4a\x01\x00\x00\xd9\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x6d\x00\x00\x00\xc3\x00\x00\x00\x88\x00\x00\x00\x88\x00\x00\x00\x46\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x42\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x91\x00\x00\x00\xd5\x00\x00\x00\xd6\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\xf6\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\xdb\x00\x00\x00\x41\x01\x00\x00\x31\x01\x00\x00\x00\x01\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x29\x00\x00\x00\x2a\x01\x00\x00\x24\x00\x00\x00\x2a\x00\x00\x00\x53\x00\x00\x00\x74\x01\x00\x00\x88\x00\x00\x00\x71\x01\x00\x00\x90\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x89\x00\x00\x00\x24\x00\x00\x00\x6e\x01\x00\x00\x24\x00\x00\x00\x67\x01\x00\x00\xa0\x00\x00\x00\x61\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x00\x00\x3f\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xc8\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x33\x01\x00\x00\x66\x00\x00\x00\x24\x00\x00\x00\x65\x01\x00\x00\x64\x01\x00\x00\x5e\x01\x00\x00\xb9\x00\x00\x00\x47\x01\x00\x00\x34\x01\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x73\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x29\x00\x00\x00\x62\x01\x00\x00\xa1\x01\x00\x00\xfd\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x24\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x24\x00\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x9f\x01\x00\x00\x9d\x01\x00\x00\x42\x00\x00\x00\x88\x00\x00\x00\x8b\x01\x00\x00\x9b\x01\x00\x00\x9d\x00\x00\x00\xd2\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x91\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x29\x00\x00\x00\x6f\x01\x00\x00\x88\x01\x00\x00\x2a\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x71\x00\x00\x00\x89\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x53\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x83\x01\x00\x00\xb8\x01\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x82\x01\x00\x00\xb7\x01\x00\x00\xb6\x01\x00\x00\xb5\x01\x00\x00\xb2\x01\x00\x00\x24\x00\x00\x00\x61\x00\x00\x00\xb1\x01\x00\x00\xaf\x01\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x66\x00\x00\x00\x93\x00\x00\x00\xae\x01\x00\x00\xad\x01\x00\x00\x38\x01\x00\x00\x94\x00\x00\x00\x95\x00\x00\x00\xa6\x01\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x28\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\xac\x01\x00\x00\xab\x01\x00\x00\xa4\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xd3\x01\x00\x00\xd1\x01\x00\x00\x29\x00\x00\x00\xcf\x01\x00\x00\xce\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x1b\x01\x00\x00\x28\x00\x00\x00\xcd\x01\x00\x00\xcc\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xb9\x01\x00\x00\xcb\x01\x00\x00\xca\x01\x00\x00\xc9\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x29\x00\x00\x00\xc8\x01\x00\x00\xc7\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x86\x00\x00\x00\xc6\x01\x00\x00\x28\x00\x00\x00\xc3\x01\x00\x00\xc1\x01\x00\x00\x84\x00\x00\x00\x41\x01\x00\x00\x29\x00\x00\x00\xc5\x01\x00\x00\xc0\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x86\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x24\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xbf\x01\x00\x00\xa0\x00\x00\x00\xbe\x01\x00\x00\xbd\x01\x00\x00\xbc\x01\x00\x00\xde\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xc6\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xdc\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x84\x00\x00\x00\x3a\x01\x00\x00\x29\x00\x00\x00\xe4\x01\x00\x00\xe6\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x86\x00\x00\x00\x29\x00\x00\x00\x28\x00\x00\x00\xe5\x01\x00\x00\x2a\x00\x00\x00\x84\x00\x00\x00\x2b\x01\x00\x00\x29\x00\x00\x00\xe8\x01\x00\x00\x37\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2c\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xea\x01\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xb7\x00\x00\x00\xb4\x00\x00\x00\xa2\x00\x00\x00\xb5\x00\x00\x00\x83\x00\x00\x00\xf5\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x79\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xdd\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x87\x00\x00\x00\xc5\x00\x00\x00\x29\x00\x00\x00\xc4\x00\x00\x00\xc1\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x86\x00\x00\x00\x29\x00\x00\x00\x28\x00\x00\x00\x4d\x01\x00\x00\xfc\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x6e\x00\x00\x00\x4c\x01\x00\x00\x4b\x01\x00\x00\x43\x01\x00\x00\x39\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x1d\x01\x00\x00\x74\x01\x00\x00\x29\x00\x00\x00\x67\x01\x00\x00\x54\x01\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x01\x01\x00\x00\xdd\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x42\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x3e\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x3d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x3c\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x78\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x76\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x6e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x6b\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x60\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5e\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x53\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x1a\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x11\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x10\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x72\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\x71\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xe0\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xdf\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xde\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xd9\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xd8\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xd7\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xd6\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x2f\x00\x00\x00\xd5\x01\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x36\x01\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x19\x01\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x01\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x93\x01\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x24\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x17\x01\x00\x00\xdb\x00\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x24\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x76\x00\x00\x00\x29\x00\x00\x00\xd4\x00\x00\x00\x74\x00\x00\x00\x2a\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x14\x01\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x2a\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x2a\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xfb\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xf8\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xf1\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xf0\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xef\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xee\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x29\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\xe9\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x20\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x21\x01\x00\x00\x89\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x8a\x00\x00\x00\x92\x01\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x01\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\x8a\x00\x00\x00\x90\x01\x00\x00\x8a\x00\x00\x00\x85\x01\x00\x00\x24\x00\x00\x00\x32\x01\x00\x00\x24\x00\x00\x00\x24\x01\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x93\x00\x00\x00\x88\x00\x00\x00\x93\x00\x00\x00\x88\x00\x00\x00\x94\x00\x00\x00\xfe\x00\x00\x00\x94\x00\x00\x00\xd7\x00\x00\x00\x24\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x88\x00\x00\x00\x94\x00\x00\x00\x59\x01\x00\x00\x94\x00\x00\x00\x57\x01\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x88\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x94\x00\x00\x00\x55\x01\x00\x00\x88\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x46\x01\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x62\x01\x00\x00\x9a\x00\x00\x00\xa9\x01\x00\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\x00\x00\xaa\x00\x00\x00\xab\x00\x00\x00\xac\x00\x00\x00\xad\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\xb2\x00\x00\x00\xb3\x00\x00\x00\xb4\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x88\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x99\x00\x00\x00\x45\x01\x00\x00\x9c\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x76\x01\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x69\x01\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x66\x01\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (34, 207) [
+        (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)
+        ]
+
+happyRuleArr :: HappyAddr
+happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x07\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x09\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x03\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x1c\x00\x00\x00\x0a\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x07\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x0e\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x06\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x08\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x03\x00\x00\x00"#
+
+happyCatchStates :: [Happy_Prelude.Int]
+happyCatchStates = []
+
+happy_n_terms = 116 :: Happy_Prelude.Int
+happy_n_nonterms = 37 :: Happy_Prelude.Int
+
+happy_n_starts = 34 :: Happy_Prelude.Int
+
+happyReduce_34 = happySpecReduce_1  0# happyReduction_34
+happyReduction_34 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn38
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))
+        )}
+
+happyReduce_35 = happySpecReduce_1  1# happyReduction_35
+happyReduction_35 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn39
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))
+        )}
+
+happyReduce_36 = happySpecReduce_1  2# happyReduction_36
+happyReduction_36 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn40
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))
+        )}
+
+happyReduce_37 = happySpecReduce_2  3# happyReduction_37
+happyReduction_37 happy_x_2
+        happy_x_1
+         =  case happyOut45 happy_x_1 of { (HappyWrap45 happy_var_1) -> 
+        case happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> 
+        happyIn41
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_38 = happySpecReduce_1  4# happyReduction_38
+happyReduction_38 happy_x_1
+         =  case happyOut40 happy_x_1 of { (HappyWrap40 happy_var_1) -> 
+        happyIn42
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_39 = happySpecReduce_1  5# happyReduction_39
+happyReduction_39 happy_x_1
+         =  case happyOut39 happy_x_1 of { (HappyWrap39 happy_var_1) -> 
+        happyIn43
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_40 = happySpecReduce_1  6# happyReduction_40
+happyReduction_40 happy_x_1
+         =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
+        happyIn44
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_41 = happySpecReduce_2  6# happyReduction_41
+happyReduction_41 happy_x_2
+        happy_x_1
+         =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
+        case happyOut44 happy_x_2 of { (HappyWrap44 happy_var_2) -> 
+        happyIn44
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_42 = happySpecReduce_3  7# happyReduction_42
+happyReduction_42 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut46 happy_x_2 of { (HappyWrap46 happy_var_2) -> 
+        happyIn45
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_43 = happySpecReduce_1  8# happyReduction_43
+happyReduction_43 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn46
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_44 = happyReduce 4# 9# happyReduction_44
+happyReduction_44 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
+        case happyOut38 happy_x_4 of { (HappyWrap38 happy_var_4) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_45 = happySpecReduce_2  9# happyReduction_45
+happyReduction_45 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_46 = happyReduce 4# 9# happyReduction_46
+happyReduction_46 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_47 = happySpecReduce_2  9# happyReduction_47
+happyReduction_47 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_48 = happySpecReduce_2  9# happyReduction_48
+happyReduction_48 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_49 = happySpecReduce_2  9# happyReduction_49
+happyReduction_49 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_50 = happyReduce 6# 9# happyReduction_50
+happyReduction_50 (happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_51 = happyReduce 5# 9# happyReduction_51
+happyReduction_51 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_52 = happyReduce 4# 9# happyReduction_52
+happyReduction_52 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut44 happy_x_2 of { (HappyWrap44 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_53 = happyReduce 4# 9# happyReduction_53
+happyReduction_53 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_54 = happyReduce 4# 9# happyReduction_54
+happyReduction_54 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut44 happy_x_2 of { (HappyWrap44 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_55 = happySpecReduce_2  9# happyReduction_55
+happyReduction_55 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_56 = happySpecReduce_2  9# happyReduction_56
+happyReduction_56 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_57 = happyReduce 8# 9# happyReduction_57
+happyReduction_57 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        case happyOut73 happy_x_8 of { (HappyWrap73 happy_var_8) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}}}
+
+happyReduce_58 = happyReduce 7# 9# happyReduction_58
+happyReduction_58 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut73 happy_x_7 of { (HappyWrap73 happy_var_7) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_59 = happyReduce 8# 9# happyReduction_59
+happyReduction_59 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        case happyOut73 happy_x_8 of { (HappyWrap73 happy_var_8) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}}}
+
+happyReduce_60 = happyReduce 7# 9# happyReduction_60
+happyReduction_60 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> 
+        case happyOut49 happy_x_3 of { (HappyWrap49 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut73 happy_x_7 of { (HappyWrap73 happy_var_7) -> 
+        happyIn47
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_61 = happySpecReduce_0  10# happyReduction_61
+happyReduction_61  =  happyIn48
+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])
+        )
+
+happyReduce_62 = happySpecReduce_3  10# happyReduction_62
+happyReduction_62 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut47 happy_x_1 of { (HappyWrap47 happy_var_1) -> 
+        case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
+        happyIn48
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_63 = happyReduce 4# 11# happyReduction_63
+happyReduction_63 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut44 happy_x_3 of { (HappyWrap44 happy_var_3) -> 
+        happyIn49
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))
+        ) `HappyStk` happyRest}}
+
+happyReduce_64 = happySpecReduce_0  11# happyReduction_64
+happyReduction_64  =  happyIn49
+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)
+        )
+
+happyReduce_65 = happySpecReduce_0  12# happyReduction_65
+happyReduction_65  =  happyIn50
+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)
+        )
+
+happyReduce_66 = happySpecReduce_1  12# happyReduction_66
+happyReduction_66 happy_x_1
+         =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
+        happyIn50
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_67 = happySpecReduce_1  13# happyReduction_67
+happyReduction_67 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn51
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_68 = happySpecReduce_1  13# happyReduction_68
+happyReduction_68 happy_x_1
+         =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
+        happyIn51
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_69 = happyReduce 5# 13# happyReduction_69
+happyReduction_69 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
+        case happyOut51 happy_x_4 of { (HappyWrap51 happy_var_4) -> 
+        happyIn51
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_70 = happyReduce 7# 13# happyReduction_70
+happyReduction_70 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
+        case happyOut51 happy_x_4 of { (HappyWrap51 happy_var_4) -> 
+        case happyOut54 happy_x_6 of { (HappyWrap54 happy_var_6) -> 
+        happyIn51
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_71 = happySpecReduce_1  14# happyReduction_71
+happyReduction_71 happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        happyIn52
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_72 = happySpecReduce_2  14# happyReduction_72
+happyReduction_72 happy_x_2
+        happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> 
+        happyIn52
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_73 = happySpecReduce_1  15# happyReduction_73
+happyReduction_73 happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        happyIn53
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_74 = happySpecReduce_1  16# happyReduction_74
+happyReduction_74 happy_x_1
+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> 
+        happyIn54
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_75 = happySpecReduce_3  16# happyReduction_75
+happyReduction_75 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> 
+        case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> 
+        happyIn54
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_76 = happySpecReduce_1  17# happyReduction_76
+happyReduction_76 happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        happyIn55
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_77 = happyReduce 5# 17# happyReduction_77
+happyReduction_77 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn55
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_78 = happyReduce 7# 17# happyReduction_78
+happyReduction_78 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn55
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_79 = happyReduce 7# 17# happyReduction_79
+happyReduction_79 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn55
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_80 = happyReduce 5# 17# happyReduction_80
+happyReduction_80 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> 
+        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn55
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_81 = happyReduce 7# 17# happyReduction_81
+happyReduction_81 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> 
+        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn55
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_82 = happySpecReduce_1  18# happyReduction_82
+happyReduction_82 happy_x_1
+         =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> 
+        happyIn56
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_83 = happySpecReduce_2  18# happyReduction_83
+happyReduction_83 happy_x_2
+        happy_x_1
+         =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> 
+        case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> 
+        happyIn56
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_84 = happySpecReduce_1  19# happyReduction_84
+happyReduction_84 happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        happyIn57
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_85 = happySpecReduce_3  19# happyReduction_85
+happyReduction_85 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        happyIn57
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_86 = happySpecReduce_1  20# happyReduction_86
+happyReduction_86 happy_x_1
+         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
+        happyIn58
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_87 = happyReduce 5# 20# happyReduction_87
+happyReduction_87 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_88 = happyReduce 7# 20# happyReduction_88
+happyReduction_88 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_89 = happyReduce 5# 20# happyReduction_89
+happyReduction_89 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_90 = happyReduce 9# 20# happyReduction_90
+happyReduction_90 (happy_x_9 `HappyStk`
+        happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut73 happy_x_8 of { (HappyWrap73 happy_var_8) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_91 = happyReduce 7# 20# happyReduction_91
+happyReduction_91 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_92 = happyReduce 5# 20# happyReduction_92
+happyReduction_92 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_93 = happyReduce 7# 20# happyReduction_93
+happyReduction_93 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn58
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_94 = happySpecReduce_3  21# happyReduction_94
+happyReduction_94 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        happyIn59
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_95 = happySpecReduce_3  21# happyReduction_95
+happyReduction_95 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
+        case happyOut65 happy_x_2 of { (HappyWrap65 happy_var_2) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        happyIn59
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))
+        )}}}
+
+happyReduce_96 = happySpecReduce_1  22# happyReduction_96
+happyReduction_96 happy_x_1
+         =  case happyOut59 happy_x_1 of { (HappyWrap59 happy_var_1) -> 
+        happyIn60
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_97 = happySpecReduce_3  22# happyReduction_97
+happyReduction_97 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut59 happy_x_1 of { (HappyWrap59 happy_var_1) -> 
+        case happyOut60 happy_x_3 of { (HappyWrap60 happy_var_3) -> 
+        happyIn60
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_98 = happySpecReduce_3  23# happyReduction_98
+happyReduction_98 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        happyIn61
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_99 = happySpecReduce_3  23# happyReduction_99
+happyReduction_99 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        happyIn61
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_100 = happySpecReduce_1  24# happyReduction_100
+happyReduction_100 happy_x_1
+         =  case happyOut61 happy_x_1 of { (HappyWrap61 happy_var_1) -> 
+        happyIn62
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_101 = happySpecReduce_3  24# happyReduction_101
+happyReduction_101 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut61 happy_x_1 of { (HappyWrap61 happy_var_1) -> 
+        case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> 
+        happyIn62
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_102 = happySpecReduce_1  25# happyReduction_102
+happyReduction_102 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_103 = happySpecReduce_1  25# happyReduction_103
+happyReduction_103 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_104 = happySpecReduce_1  25# happyReduction_104
+happyReduction_104 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_105 = happySpecReduce_1  25# happyReduction_105
+happyReduction_105 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_106 = happySpecReduce_1  25# happyReduction_106
+happyReduction_106 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_107 = happySpecReduce_1  25# happyReduction_107
+happyReduction_107 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_108 = happySpecReduce_1  25# happyReduction_108
+happyReduction_108 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn63
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_109 = happySpecReduce_1  26# happyReduction_109
+happyReduction_109 happy_x_1
+         =  case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> 
+        happyIn64
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_110 = happySpecReduce_3  26# happyReduction_110
+happyReduction_110 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> 
+        case happyOut63 happy_x_3 of { (HappyWrap63 happy_var_3) -> 
+        happyIn64
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_111 = happySpecReduce_1  27# happyReduction_111
+happyReduction_111 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_112 = happySpecReduce_1  27# happyReduction_112
+happyReduction_112 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_113 = happySpecReduce_1  27# happyReduction_113
+happyReduction_113 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_114 = happySpecReduce_1  27# happyReduction_114
+happyReduction_114 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonId (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_115 = happySpecReduce_1  27# happyReduction_115
+happyReduction_115 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_116 = happySpecReduce_1  27# happyReduction_116
+happyReduction_116 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_117 = happySpecReduce_1  27# happyReduction_117
+happyReduction_117 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn65
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_118 = happySpecReduce_1  28# happyReduction_118
+happyReduction_118 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_119 = happySpecReduce_1  28# happyReduction_119
+happyReduction_119 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_120 = happySpecReduce_1  28# happyReduction_120
+happyReduction_120 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_121 = happySpecReduce_1  28# happyReduction_121
+happyReduction_121 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_122 = happySpecReduce_1  28# happyReduction_122
+happyReduction_122 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_123 = happySpecReduce_1  28# happyReduction_123
+happyReduction_123 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_124 = happySpecReduce_1  28# happyReduction_124
+happyReduction_124 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_125 = happySpecReduce_1  28# happyReduction_125
+happyReduction_125 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_126 = happySpecReduce_1  28# happyReduction_126
+happyReduction_126 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_127 = happySpecReduce_1  28# happyReduction_127
+happyReduction_127 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_128 = happySpecReduce_1  28# happyReduction_128
+happyReduction_128 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_129 = happySpecReduce_1  28# happyReduction_129
+happyReduction_129 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_130 = happySpecReduce_1  28# happyReduction_130
+happyReduction_130 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_131 = happySpecReduce_1  28# happyReduction_131
+happyReduction_131 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_132 = happyReduce 4# 28# happyReduction_132
+happyReduction_132 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))
+        ) `HappyStk` happyRest}}
+
+happyReduce_133 = happyReduce 10# 28# happyReduction_133
+happyReduction_133 (happy_x_10 `HappyStk`
+        happy_x_9 `HappyStk`
+        happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut73 happy_x_7 of { (HappyWrap73 happy_var_7) -> 
+        case happyOut73 happy_x_9 of { (HappyWrap73 happy_var_9) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOrDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_134 = happySpecReduce_1  28# happyReduction_134
+happyReduction_134 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_135 = happyReduce 5# 28# happyReduction_135
+happyReduction_135 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut58 happy_x_2 of { (HappyWrap58 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_136 = happyReduce 5# 28# happyReduction_136
+happyReduction_136 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_137 = happyReduce 7# 28# happyReduction_137
+happyReduction_137 (happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut74 happy_x_6 of { (HappyWrap74 happy_var_6) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_138 = happySpecReduce_3  28# happyReduction_138
+happyReduction_138 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut63 happy_x_2 of { (HappyWrap63 happy_var_2) -> 
+        case happyOut66 happy_x_3 of { (HappyWrap66 happy_var_3) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))
+        )}}}
+
+happyReduce_139 = happySpecReduce_2  28# happyReduction_139
+happyReduction_139 happy_x_2
+        happy_x_1
+         =  case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn66
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ModType (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_140 = happySpecReduce_1  28# happyReduction_140
+happyReduction_140 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_141 = happySpecReduce_1  28# happyReduction_141
+happyReduction_141 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_142 = happySpecReduce_3  28# happyReduction_142
+happyReduction_142 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_143 = happyReduce 5# 28# happyReduction_143
+happyReduction_143 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_144 = happyReduce 14# 28# happyReduction_144
+happyReduction_144 (happy_x_14 `HappyStk`
+        happy_x_13 `HappyStk`
+        happy_x_12 `HappyStk`
+        happy_x_11 `HappyStk`
+        happy_x_10 `HappyStk`
+        happy_x_9 `HappyStk`
+        happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut73 happy_x_7 of { (HappyWrap73 happy_var_7) -> 
+        case happyOut73 happy_x_9 of { (HappyWrap73 happy_var_9) -> 
+        case happyOut73 happy_x_11 of { (HappyWrap73 happy_var_11) -> 
+        case happyOut73 happy_x_13 of { (HappyWrap73 happy_var_13) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))
+        ) `HappyStk` happyRest}}}}}}}
+
+happyReduce_145 = happySpecReduce_1  28# happyReduction_145
+happyReduction_145 happy_x_1
+         =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
+        happyIn66
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_146 = happySpecReduce_1  28# happyReduction_146
+happyReduction_146 happy_x_1
+         =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
+        happyIn66
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))
+        )}
+
+happyReduce_147 = happySpecReduce_3  28# happyReduction_147
+happyReduction_147 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut73 happy_x_2 of { (HappyWrap73 happy_var_2) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))
+        )}}
+
+happyReduce_148 = happySpecReduce_1  28# happyReduction_148
+happyReduction_148 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_149 = happySpecReduce_1  28# happyReduction_149
+happyReduction_149 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_150 = happySpecReduce_1  28# happyReduction_150
+happyReduction_150 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_151 = happySpecReduce_1  28# happyReduction_151
+happyReduction_151 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_152 = happySpecReduce_1  28# happyReduction_152
+happyReduction_152 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_153 = happySpecReduce_1  28# happyReduction_153
+happyReduction_153 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_154 = happySpecReduce_1  28# happyReduction_154
+happyReduction_154 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_155 = happySpecReduce_1  28# happyReduction_155
+happyReduction_155 happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))
+        )}
+
+happyReduce_156 = happyReduce 5# 28# happyReduction_156
+happyReduction_156 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut58 happy_x_2 of { (HappyWrap58 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        happyIn66
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_157 = happySpecReduce_3  29# happyReduction_157
+happyReduction_157 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
+        happyIn67
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_158 = happySpecReduce_1  29# happyReduction_158
+happyReduction_158 happy_x_1
+         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
+        happyIn67
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_159 = happySpecReduce_3  29# happyReduction_159
+happyReduction_159 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> 
+        happyIn67
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_160 = happySpecReduce_3  30# happyReduction_160
+happyReduction_160 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
+        happyIn68
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_161 = happySpecReduce_3  30# happyReduction_161
+happyReduction_161 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
+        happyIn68
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_162 = happySpecReduce_1  30# happyReduction_162
+happyReduction_162 happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        happyIn68
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_163 = happySpecReduce_3  30# happyReduction_163
+happyReduction_163 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
+        happyIn68
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_164 = happySpecReduce_3  30# happyReduction_164
+happyReduction_164 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> 
+        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> 
+        happyIn68
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_165 = happySpecReduce_3  31# happyReduction_165
+happyReduction_165 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
+        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> 
+        happyIn69
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_166 = happySpecReduce_1  31# happyReduction_166
+happyReduction_166 happy_x_1
+         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
+        happyIn69
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_167 = happySpecReduce_3  31# happyReduction_167
+happyReduction_167 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> 
+        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> 
+        happyIn69
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_168 = happySpecReduce_3  32# happyReduction_168
+happyReduction_168 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
+        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
+        happyIn70
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_169 = happySpecReduce_1  32# happyReduction_169
+happyReduction_169 happy_x_1
+         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
+        happyIn70
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_170 = happySpecReduce_3  32# happyReduction_170
+happyReduction_170 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> 
+        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
+        happyIn70
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_171 = happySpecReduce_2  33# happyReduction_171
+happyReduction_171 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_172 = happySpecReduce_2  33# happyReduction_172
+happyReduction_172 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_173 = happySpecReduce_2  33# happyReduction_173
+happyReduction_173 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_174 = happySpecReduce_2  33# happyReduction_174
+happyReduction_174 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_175 = happySpecReduce_2  33# happyReduction_175
+happyReduction_175 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_176 = happySpecReduce_2  33# happyReduction_176
+happyReduction_176 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_177 = happySpecReduce_2  33# happyReduction_177
+happyReduction_177 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_178 = happySpecReduce_2  33# happyReduction_178
+happyReduction_178 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_179 = happyReduce 4# 33# happyReduction_179
+happyReduction_179 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
+        case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> 
+        happyIn71
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        ) `HappyStk` happyRest}}
+
+happyReduce_180 = happySpecReduce_2  33# happyReduction_180
+happyReduction_180 happy_x_2
+        happy_x_1
+         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))
+        )}}
+
+happyReduce_181 = happySpecReduce_3  33# happyReduction_181
+happyReduction_181 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> 
+        case happyOut66 happy_x_3 of { (HappyWrap66 happy_var_3) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))
+        )}}}
+
+happyReduce_182 = happySpecReduce_2  33# happyReduction_182
+happyReduction_182 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_183 = happySpecReduce_2  33# happyReduction_183
+happyReduction_183 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_184 = happySpecReduce_1  33# happyReduction_184
+happyReduction_184 happy_x_1
+         =  case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> 
+        happyIn71
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_185 = happySpecReduce_2  33# happyReduction_185
+happyReduction_185 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_186 = happySpecReduce_2  33# happyReduction_186
+happyReduction_186 happy_x_2
+        happy_x_1
+         =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> 
+        happyIn71
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))
+        )}}
+
+happyReduce_187 = happySpecReduce_3  34# happyReduction_187
+happyReduction_187 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> 
+        case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> 
+        happyIn72
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_188 = happyReduce 8# 34# happyReduction_188
+happyReduction_188 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_189 = happyReduce 8# 34# happyReduction_189
+happyReduction_189 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut65 happy_x_4 of { (HappyWrap65 happy_var_4) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_190 = happyReduce 8# 34# happyReduction_190
+happyReduction_190 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> 
+        case happyOut60 happy_x_5 of { (HappyWrap60 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_191 = happyReduce 5# 34# happyReduction_191
+happyReduction_191 (happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> 
+        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> 
+        case happyOut70 happy_x_5 of { (HappyWrap70 happy_var_5) -> 
+        happyIn72
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_192 = happySpecReduce_3  34# happyReduction_192
+happyReduction_192 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> 
+        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> 
+        happyIn72
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_193 = happyReduce 6# 34# happyReduction_193
+happyReduction_193 (happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> 
+        case happyOut73 happy_x_4 of { (HappyWrap73 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_194 = happyReduce 4# 34# happyReduction_194
+happyReduction_194 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> 
+        case happyOut72 happy_x_4 of { (HappyWrap72 happy_var_4) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_195 = happyReduce 8# 34# happyReduction_195
+happyReduction_195 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> 
+        case happyOut57 happy_x_4 of { (HappyWrap57 happy_var_4) -> 
+        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> 
+        case happyOut73 happy_x_8 of { (HappyWrap73 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_196 = happySpecReduce_1  34# happyReduction_196
+happyReduction_196 happy_x_1
+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> 
+        happyIn72
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_197 = happySpecReduce_3  34# happyReduction_197
+happyReduction_197 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> 
+        case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> 
+        happyIn72
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_198 = happyReduce 8# 34# happyReduction_198
+happyReduction_198 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_199 = happyReduce 8# 34# happyReduction_199
+happyReduction_199 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut65 happy_x_4 of { (HappyWrap65 happy_var_4) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}}
+
+happyReduce_200 = happyReduce 8# 34# happyReduction_200
+happyReduction_200 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> 
+        case happyOut60 happy_x_5 of { (HappyWrap60 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_201 = happyReduce 4# 34# happyReduction_201
+happyReduction_201 (happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> 
+        case happyOut72 happy_x_4 of { (HappyWrap72 happy_var_4) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))
+        ) `HappyStk` happyRest}}}
+
+happyReduce_202 = happyReduce 8# 34# happyReduction_202
+happyReduction_202 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut51 happy_x_3 of { (HappyWrap51 happy_var_3) -> 
+        case happyOut73 happy_x_5 of { (HappyWrap73 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_203 = happyReduce 8# 34# happyReduction_203
+happyReduction_203 (happy_x_8 `HappyStk`
+        happy_x_7 `HappyStk`
+        happy_x_6 `HappyStk`
+        happy_x_5 `HappyStk`
+        happy_x_4 `HappyStk`
+        happy_x_3 `HappyStk`
+        happy_x_2 `HappyStk`
+        happy_x_1 `HappyStk`
+        happyRest)
+         = case happyOutTok happy_x_1 of { happy_var_1 -> 
+        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> 
+        case happyOut60 happy_x_5 of { (HappyWrap60 happy_var_5) -> 
+        case happyOut72 happy_x_8 of { (HappyWrap72 happy_var_8) -> 
+        happyIn72
+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))
+        ) `HappyStk` happyRest}}}}
+
+happyReduce_204 = happySpecReduce_3  35# happyReduction_204
+happyReduction_204 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> 
+        case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> 
+        happyIn73
+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyReduce_205 = happySpecReduce_1  35# happyReduction_205
+happyReduction_205 happy_x_1
+         =  case happyOut72 happy_x_1 of { (HappyWrap72 happy_var_1) -> 
+        happyIn73
+                 ((fst happy_var_1, (snd happy_var_1))
+        )}
+
+happyReduce_206 = happySpecReduce_1  36# happyReduction_206
+happyReduction_206 happy_x_1
+         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> 
+        happyIn74
+                 ((fst happy_var_1, (:[]) (snd happy_var_1))
+        )}
+
+happyReduce_207 = happySpecReduce_3  36# happyReduction_207
+happyReduction_207 happy_x_3
+        happy_x_2
+        happy_x_1
+         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> 
+        case happyOut74 happy_x_3 of { (HappyWrap74 happy_var_3) -> 
+        happyIn74
+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))
+        )}}
+
+happyTerminalToTok term = case term of {
+        PT _ (TS _ 1) -> 2#;
+        PT _ (TS _ 2) -> 3#;
+        PT _ (TS _ 3) -> 4#;
+        PT _ (TS _ 4) -> 5#;
+        PT _ (TS _ 5) -> 6#;
+        PT _ (TS _ 6) -> 7#;
+        PT _ (TS _ 7) -> 8#;
+        PT _ (TS _ 8) -> 9#;
+        PT _ (TS _ 9) -> 10#;
+        PT _ (TS _ 10) -> 11#;
+        PT _ (TS _ 11) -> 12#;
+        PT _ (TS _ 12) -> 13#;
+        PT _ (TS _ 13) -> 14#;
+        PT _ (TS _ 14) -> 15#;
+        PT _ (TS _ 15) -> 16#;
+        PT _ (TS _ 16) -> 17#;
+        PT _ (TS _ 17) -> 18#;
+        PT _ (TS _ 18) -> 19#;
+        PT _ (TS _ 19) -> 20#;
+        PT _ (TS _ 20) -> 21#;
+        PT _ (TS _ 21) -> 22#;
+        PT _ (TS _ 22) -> 23#;
+        PT _ (TS _ 23) -> 24#;
+        PT _ (TS _ 24) -> 25#;
+        PT _ (TS _ 25) -> 26#;
+        PT _ (TS _ 26) -> 27#;
+        PT _ (TS _ 27) -> 28#;
+        PT _ (TS _ 28) -> 29#;
+        PT _ (TS _ 29) -> 30#;
+        PT _ (TS _ 30) -> 31#;
+        PT _ (TS _ 31) -> 32#;
+        PT _ (TS _ 32) -> 33#;
+        PT _ (TS _ 33) -> 34#;
+        PT _ (TS _ 34) -> 35#;
+        PT _ (TS _ 35) -> 36#;
+        PT _ (TS _ 36) -> 37#;
+        PT _ (TS _ 37) -> 38#;
+        PT _ (TS _ 38) -> 39#;
+        PT _ (TS _ 39) -> 40#;
+        PT _ (TS _ 40) -> 41#;
+        PT _ (TS _ 41) -> 42#;
+        PT _ (TS _ 42) -> 43#;
+        PT _ (TS _ 43) -> 44#;
+        PT _ (TS _ 44) -> 45#;
+        PT _ (TS _ 45) -> 46#;
+        PT _ (TS _ 46) -> 47#;
+        PT _ (TS _ 47) -> 48#;
+        PT _ (TS _ 48) -> 49#;
+        PT _ (TS _ 49) -> 50#;
+        PT _ (TS _ 50) -> 51#;
+        PT _ (TS _ 51) -> 52#;
+        PT _ (TS _ 52) -> 53#;
+        PT _ (TS _ 53) -> 54#;
+        PT _ (TS _ 54) -> 55#;
+        PT _ (TS _ 55) -> 56#;
+        PT _ (TS _ 56) -> 57#;
+        PT _ (TS _ 57) -> 58#;
+        PT _ (TS _ 58) -> 59#;
+        PT _ (TS _ 59) -> 60#;
+        PT _ (TS _ 60) -> 61#;
+        PT _ (TS _ 61) -> 62#;
+        PT _ (TS _ 62) -> 63#;
+        PT _ (TS _ 63) -> 64#;
+        PT _ (TS _ 64) -> 65#;
+        PT _ (TS _ 65) -> 66#;
+        PT _ (TS _ 66) -> 67#;
+        PT _ (TS _ 67) -> 68#;
+        PT _ (TS _ 68) -> 69#;
+        PT _ (TS _ 69) -> 70#;
+        PT _ (TS _ 70) -> 71#;
+        PT _ (TS _ 71) -> 72#;
+        PT _ (TS _ 72) -> 73#;
+        PT _ (TS _ 73) -> 74#;
+        PT _ (TS _ 74) -> 75#;
+        PT _ (TS _ 75) -> 76#;
+        PT _ (TS _ 76) -> 77#;
+        PT _ (TS _ 77) -> 78#;
+        PT _ (TS _ 78) -> 79#;
+        PT _ (TS _ 79) -> 80#;
+        PT _ (TS _ 80) -> 81#;
+        PT _ (TS _ 81) -> 82#;
+        PT _ (TS _ 82) -> 83#;
+        PT _ (TS _ 83) -> 84#;
+        PT _ (TS _ 84) -> 85#;
+        PT _ (TS _ 85) -> 86#;
+        PT _ (TS _ 86) -> 87#;
+        PT _ (TS _ 87) -> 88#;
+        PT _ (TS _ 88) -> 89#;
+        PT _ (TS _ 89) -> 90#;
+        PT _ (TS _ 90) -> 91#;
+        PT _ (TS _ 91) -> 92#;
+        PT _ (TS _ 92) -> 93#;
+        PT _ (TS _ 93) -> 94#;
+        PT _ (TS _ 94) -> 95#;
+        PT _ (TS _ 95) -> 96#;
+        PT _ (TS _ 96) -> 97#;
+        PT _ (TS _ 97) -> 98#;
+        PT _ (TS _ 98) -> 99#;
+        PT _ (TS _ 99) -> 100#;
+        PT _ (TS _ 100) -> 101#;
+        PT _ (TS _ 101) -> 102#;
+        PT _ (TS _ 102) -> 103#;
+        PT _ (TS _ 103) -> 104#;
+        PT _ (TS _ 104) -> 105#;
+        PT _ (TS _ 105) -> 106#;
+        PT _ (TS _ 106) -> 107#;
+        PT _ (TS _ 107) -> 108#;
+        PT _ (TS _ 108) -> 109#;
+        PT _ (TS _ 109) -> 110#;
+        PT _ (TS _ 110) -> 111#;
+        PT _ (TL _) -> 112#;
+        PT _ (T_VarIdentToken _) -> 113#;
+        PT _ (T_HoleIdentToken _) -> 114#;
+        _ -> -1#;
+        }
+{-# NOINLINE happyTerminalToTok #-}
+
+happyLex kend  _kmore []       = kend notHappyAtAll []
+happyLex _kend kmore  (tk:tks) = kmore (happyTerminalToTok tk) tk tks
+{-# INLINE happyLex #-}
+
+happyNewToken action sts stk = happyLex (\tk -> happyDoAction 115# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)
+
+happyReport 115# tk explist resume tks = happyReport' tks explist resume
+happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))
+
+
+happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)
+happyThen = ((>>=))
+happyReturn :: () => a -> (Err a)
+happyReturn = (return)
+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)
+happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))
+happyReturn1 :: () => a -> b -> (Err a)
+happyReturn1 = \a tks -> (return) a
+happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)
+happyReport' = (\tokens expected resume -> happyError tokens)
+
+happyAbort :: () => [(Token)] -> (Err a)
+happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"
+
+pModule_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap41 x') = happyOut41 x} in x'))
+
+pHoleIdent_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap42 x') = happyOut42 x} in x'))
+
+pVarIdent_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap43 x') = happyOut43 x} in x'))
+
+pListVarIdent_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap44 x') = happyOut44 x} in x'))
+
+pLanguageDecl_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap45 x') = happyOut45 x} in x'))
+
+pLanguage_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap46 x') = happyOut46 x} in x'))
+
+pCommand_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap47 x') = happyOut47 x} in x'))
+
+pListCommand_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap48 x') = happyOut48 x} in x'))
+
+pDeclUsedVars_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap49 x') = happyOut49 x} in x'))
+
+pSectionName_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))
+
+pPattern_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))
+
+pListPattern_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))
+
+pPattern1_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))
+
+pListPattern1_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))
+
+pParam_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))
+
+pListParam_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))
+
+pBind_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))
+
+pParamDecl_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))
+
+pSigmaParam_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))
+
+pListSigmaParam_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))
+
+pRestriction_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))
+
+pListRestriction_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))
+
+pModality_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))
+
+pModComp_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))
+
+pModalColon_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))
+
+pTerm7_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))
+
+pTerm5_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))
+
+pTerm4_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))
+
+pTerm3_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))
+
+pTerm2_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))
+
+pTerm6_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))
+
+pTerm1_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))
+
+pTerm_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap73 x') = happyOut73 x} in x'))
+
+pListTerm_internal tks = happySomeParser where
+ happySomeParser = happyThen (happyDoParse 33# tks) (\x -> happyReturn (let {(HappyWrap74 x') = happyOut74 x} in x'))
+
+happySeq = happyDontSeq
+
+
+type Err = Either String
+
+happyError :: [Token] -> Err a
+happyError ts = Left $
+  "syntax error at " ++ tokenPos ts ++
+  case ts of
+    []      -> []
+    [Err _] -> " due to lexer error"
+    t:_     -> " before `" ++ (prToken t) ++ "'"
+
+myLexer :: Data.Text.Text -> [Token]
+myLexer = tokens
+
+-- Entrypoints
+
+pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module
+pModule = fmap snd . pModule_internal
+
+pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent
+pHoleIdent = fmap snd . pHoleIdent_internal
+
+pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent
+pVarIdent = fmap snd . pVarIdent_internal
+
+pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]
+pListVarIdent = fmap snd . pListVarIdent_internal
+
+pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl
+pLanguageDecl = fmap snd . pLanguageDecl_internal
+
+pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language
+pLanguage = fmap snd . pLanguage_internal
+
+pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command
+pCommand = fmap snd . pCommand_internal
+
+pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]
+pListCommand = fmap snd . pListCommand_internal
+
+pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars
+pDeclUsedVars = fmap snd . pDeclUsedVars_internal
+
+pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName
+pSectionName = fmap snd . pSectionName_internal
+
+pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
+pPattern = fmap snd . pPattern_internal
+
+pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
+pListPattern = fmap snd . pListPattern_internal
+
+pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
+pPattern1 = fmap snd . pPattern1_internal
+
+pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
+pListPattern1 = fmap snd . pListPattern1_internal
+
+pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param
+pParam = fmap snd . pParam_internal
+
+pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]
+pListParam = fmap snd . pListParam_internal
+
+pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind
+pBind = fmap snd . pBind_internal
+
+pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl
+pParamDecl = fmap snd . pParamDecl_internal
+
+pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam
+pSigmaParam = fmap snd . pSigmaParam_internal
+
+pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]
+pListSigmaParam = fmap snd . pListSigmaParam_internal
+
+pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction
+pRestriction = fmap snd . pRestriction_internal
+
+pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]
+pListRestriction = fmap snd . pListRestriction_internal
+
+pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality
+pModality = fmap snd . pModality_internal
+
+pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp
+pModComp = fmap snd . pModComp_internal
+
+pModalColon :: [Token] -> Err Language.Rzk.Syntax.Abs.ModalColon
+pModalColon = fmap snd . pModalColon_internal
 
 pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
 pTerm7 = fmap snd . pTerm7_internal
diff --git a/src/Language/Rzk/Syntax/Par.y b/src/Language/Rzk/Syntax/Par.y
deleted file mode 100644
--- a/src/Language/Rzk/Syntax/Par.y
+++ /dev/null
@@ -1,575 +0,0 @@
--- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6.2).
-
--- Parser definition for use with Happy
-{
-{-# OPTIONS_GHC -Wno-incomplete-patterns -Wno-overlapping-patterns #-}
-{-# LANGUAGE PatternSynonyms #-}
-
-module Language.Rzk.Syntax.Par
-  ( happyError
-  , myLexer
-  , pModule
-  , pHoleIdent
-  , pVarIdent
-  , pListVarIdent
-  , pLanguageDecl
-  , pLanguage
-  , pCommand
-  , pListCommand
-  , pDeclUsedVars
-  , pSectionName
-  , pPattern
-  , pListPattern
-  , pPattern1
-  , pListPattern1
-  , pParam
-  , pListParam
-  , pBind
-  , pParamDecl
-  , pSigmaParam
-  , pListSigmaParam
-  , pRestriction
-  , pListRestriction
-  , pModality
-  , pModComp
-  , pTerm7
-  , pTerm5
-  , pTerm4
-  , pTerm3
-  , pTerm2
-  , pTerm6
-  , pTerm1
-  , pTerm
-  , pListTerm
-  ) where
-
-import Prelude
-
-import qualified Language.Rzk.Syntax.Abs
-import Language.Rzk.Syntax.Lex
-import qualified Data.Text
-
-}
-
-%name pModule_internal Module
-%name pHoleIdent_internal HoleIdent
-%name pVarIdent_internal VarIdent
-%name pListVarIdent_internal ListVarIdent
-%name pLanguageDecl_internal LanguageDecl
-%name pLanguage_internal Language
-%name pCommand_internal Command
-%name pListCommand_internal ListCommand
-%name pDeclUsedVars_internal DeclUsedVars
-%name pSectionName_internal SectionName
-%name pPattern_internal Pattern
-%name pListPattern_internal ListPattern
-%name pPattern1_internal Pattern1
-%name pListPattern1_internal ListPattern1
-%name pParam_internal Param
-%name pListParam_internal ListParam
-%name pBind_internal Bind
-%name pParamDecl_internal ParamDecl
-%name pSigmaParam_internal SigmaParam
-%name pListSigmaParam_internal ListSigmaParam
-%name pRestriction_internal Restriction
-%name pListRestriction_internal ListRestriction
-%name pModality_internal Modality
-%name pModComp_internal ModComp
-%name pTerm7_internal Term7
-%name pTerm5_internal Term5
-%name pTerm4_internal Term4
-%name pTerm3_internal Term3
-%name pTerm2_internal Term2
-%name pTerm6_internal Term6
-%name pTerm1_internal Term1
-%name pTerm_internal Term
-%name pListTerm_internal ListTerm
--- no lexer declaration
-%monad { Err } { (>>=) } { return }
-%tokentype {Token}
-%token
-  '#assume'        { PT _ (TS _ 1)             }
-  '#check'         { PT _ (TS _ 2)             }
-  '#compute'       { PT _ (TS _ 3)             }
-  '#compute-nf'    { PT _ (TS _ 4)             }
-  '#compute-whnf'  { PT _ (TS _ 5)             }
-  '#def'           { PT _ (TS _ 6)             }
-  '#define'        { PT _ (TS _ 7)             }
-  '#end'           { PT _ (TS _ 8)             }
-  '#lang'          { PT _ (TS _ 9)             }
-  '#postulate'     { PT _ (TS _ 10)            }
-  '#section'       { PT _ (TS _ 11)            }
-  '#set-option'    { PT _ (TS _ 12)            }
-  '#unset-option'  { PT _ (TS _ 13)            }
-  '#variable'      { PT _ (TS _ 14)            }
-  '#variables'     { PT _ (TS _ 15)            }
-  '$extract$'      { PT _ (TS _ 16)            }
-  '('              { PT _ (TS _ 17)            }
-  ')'              { PT _ (TS _ 18)            }
-  '*'              { PT _ (TS _ 19)            }
-  '*_1'            { PT _ (TS _ 20)            }
-  '*₁'             { PT _ (TS _ 21)            }
-  ','              { PT _ (TS _ 22)            }
-  '->'             { PT _ (TS _ 23)            }
-  '/'              { PT _ (TS _ 24)            }
-  '/\\'            { PT _ (TS _ 25)            }
-  '0_2'            { PT _ (TS _ 26)            }
-  '0₂'             { PT _ (TS _ 27)            }
-  '1'              { PT _ (TS _ 28)            }
-  '1_2'            { PT _ (TS _ 29)            }
-  '1₂'             { PT _ (TS _ 30)            }
-  '2'              { PT _ (TS _ 31)            }
-  ':'              { PT _ (TS _ 32)            }
-  ':='             { PT _ (TS _ 33)            }
-  ';'              { PT _ (TS _ 34)            }
-  '<'              { PT _ (TS _ 35)            }
-  '<='             { PT _ (TS _ 36)            }
-  '<|'             { PT _ (TS _ 37)            }
-  '='              { PT _ (TS _ 38)            }
-  '==='            { PT _ (TS _ 39)            }
-  '=_{'            { PT _ (TS _ 40)            }
-  '>'              { PT _ (TS _ 41)            }
-  'BOT'            { PT _ (TS _ 42)            }
-  'CUBE'           { PT _ (TS _ 43)            }
-  'Sigma'          { PT _ (TS _ 44)            }
-  'TOP'            { PT _ (TS _ 45)            }
-  'TOPE'           { PT _ (TS _ 46)            }
-  'U'              { PT _ (TS _ 47)            }
-  'Unit'           { PT _ (TS _ 48)            }
-  '['              { PT _ (TS _ 49)            }
-  '\\'             { PT _ (TS _ 50)            }
-  '\\/'            { PT _ (TS _ 51)            }
-  ']'              { PT _ (TS _ 52)            }
-  '_#'             { PT _ (TS _ 53)            }
-  '_b'             { PT _ (TS _ 54)            }
-  '_id'            { PT _ (TS _ 55)            }
-  '_op'            { PT _ (TS _ 56)            }
-  'as'             { PT _ (TS _ 57)            }
-  'first'          { PT _ (TS _ 58)            }
-  'flip_op'        { PT _ (TS _ 59)            }
-  'flipᵒᵖ'         { PT _ (TS _ 60)            }
-  'idJ'            { PT _ (TS _ 61)            }
-  'in'             { PT _ (TS _ 62)            }
-  'inv_op'         { PT _ (TS _ 63)            }
-  'invᵒᵖ'          { PT _ (TS _ 64)            }
-  'let'            { PT _ (TS _ 65)            }
-  'mod'            { PT _ (TS _ 66)            }
-  'recBOT'         { PT _ (TS _ 67)            }
-  'recOR'          { PT _ (TS _ 68)            }
-  'refl'           { PT _ (TS _ 69)            }
-  'refl_{'         { PT _ (TS _ 70)            }
-  'rzk-1'          { PT _ (TS _ 71)            }
-  'second'         { PT _ (TS _ 72)            }
-  'unflip_op'      { PT _ (TS _ 73)            }
-  'unflipᵒᵖ'       { PT _ (TS _ 74)            }
-  'uninv_op'       { PT _ (TS _ 75)            }
-  'uninvᵒᵖ'        { PT _ (TS _ 76)            }
-  'unit'           { PT _ (TS _ 77)            }
-  'uses'           { PT _ (TS _ 78)            }
-  '{'              { PT _ (TS _ 79)            }
-  '|'              { PT _ (TS _ 80)            }
-  '|->'            { PT _ (TS _ 81)            }
-  '|>'             { PT _ (TS _ 82)            }
-  '}'              { PT _ (TS _ 83)            }
-  '×'              { PT _ (TS _ 84)            }
-  'Σ'              { PT _ (TS _ 85)            }
-  'π₁'             { PT _ (TS _ 86)            }
-  'π₂'             { PT _ (TS _ 87)            }
-  'ᵒᵖ'             { PT _ (TS _ 88)            }
-  '→'              { PT _ (TS _ 89)            }
-  '↦'              { PT _ (TS _ 90)            }
-  '∑'              { PT _ (TS _ 91)            }
-  '∧'              { PT _ (TS _ 92)            }
-  '∨'              { PT _ (TS _ 93)            }
-  '≡'              { PT _ (TS _ 94)            }
-  '≤'              { PT _ (TS _ 95)            }
-  '⊤'              { PT _ (TS _ 96)            }
-  '⊥'              { PT _ (TS _ 97)            }
-  '♭'              { PT _ (TS _ 98)            }
-  '♯'              { PT _ (TS _ 99)            }
-  L_quoted         { PT _ (TL _)               }
-  L_VarIdentToken  { PT _ (T_VarIdentToken _)  }
-  L_HoleIdentToken { PT _ (T_HoleIdentToken _) }
-
-%%
-
-String  :: { (Language.Rzk.Syntax.Abs.BNFC'Position, String) }
-String   : L_quoted { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) $1))) }
-
-VarIdentToken :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken) }
-VarIdentToken  : L_VarIdentToken { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText $1)) }
-
-HoleIdentToken :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken) }
-HoleIdentToken  : L_HoleIdentToken { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText $1)) }
-
-Module :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module) }
-Module
-  : LanguageDecl ListCommand { (fst $1, Language.Rzk.Syntax.Abs.Module (fst $1) (snd $1) (snd $2)) }
-
-HoleIdent :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent) }
-HoleIdent
-  : HoleIdentToken { (fst $1, Language.Rzk.Syntax.Abs.HoleIdent (fst $1) (snd $1)) }
-
-VarIdent :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent) }
-VarIdent
-  : VarIdentToken { (fst $1, Language.Rzk.Syntax.Abs.VarIdent (fst $1) (snd $1)) }
-
-ListVarIdent :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]) }
-ListVarIdent
-  : VarIdent { (fst $1, (:[]) (snd $1)) }
-  | VarIdent ListVarIdent { (fst $1, (:) (snd $1) (snd $2)) }
-
-LanguageDecl :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl) }
-LanguageDecl
-  : '#lang' Language ';' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-
-Language :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language) }
-Language
-  : 'rzk-1' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-
-Command :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command) }
-Command
-  : '#set-option' String '=' String { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '#unset-option' String { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#check' Term ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '#compute' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#compute-whnf' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#compute-nf' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#postulate' VarIdent DeclUsedVars ListParam ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $4) (snd $6)) }
-  | '#postulate' VarIdent DeclUsedVars ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $5)) }
-  | '#assume' ListVarIdent ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '#variable' VarIdent ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '#variables' ListVarIdent ':' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '#section' SectionName { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#end' SectionName { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | '#define' VarIdent DeclUsedVars ListParam ':' Term ':=' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $4) (snd $6) (snd $8)) }
-  | '#define' VarIdent DeclUsedVars ':' Term ':=' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $5) (snd $7)) }
-  | '#def' VarIdent DeclUsedVars ListParam ':' Term ':=' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $4) (snd $6) (snd $8)) }
-  | '#def' VarIdent DeclUsedVars ':' Term ':=' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3) (snd $5) (snd $7)) }
-
-ListCommand :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]) }
-ListCommand
-  : {- empty -} { (Language.Rzk.Syntax.Abs.BNFC'NoPosition, []) }
-  | Command ';' ListCommand { (fst $1, (:) (snd $1) (snd $3)) }
-
-DeclUsedVars :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars) }
-DeclUsedVars
-  : 'uses' '(' ListVarIdent ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3)) }
-  | {- empty -} { (Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition) }
-
-SectionName :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName) }
-SectionName
-  : {- empty -} { (Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition) }
-  | VarIdent { (fst $1, Language.Rzk.Syntax.Abs.SomeSectionName (fst $1) (snd $1)) }
-
-Pattern :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern) }
-Pattern
-  : 'unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | VarIdent { (fst $1, Language.Rzk.Syntax.Abs.PatternVar (fst $1) (snd $1)) }
-  | '(' Pattern ',' Pattern ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '(' Pattern ',' Pattern ',' ListPattern1 ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-
-ListPattern :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]) }
-ListPattern
-  : Pattern { (fst $1, (:[]) (snd $1)) }
-  | Pattern ListPattern { (fst $1, (:) (snd $1) (snd $2)) }
-
-Pattern1 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern) }
-Pattern1 : Pattern { (fst $1, (snd $1)) }
-
-ListPattern1 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]) }
-ListPattern1
-  : Pattern1 { (fst $1, (:[]) (snd $1)) }
-  | Pattern1 ',' ListPattern1 { (fst $1, (:) (snd $1) (snd $3)) }
-
-Param :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param) }
-Param
-  : Pattern { (fst $1, Language.Rzk.Syntax.Abs.ParamPattern (fst $1) (snd $1)) }
-  | '(' ListPattern ':' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '(' ListPattern ':' Term '|' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | '{' Pattern ':' Term '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | '(' ListPattern ':' Modality Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $5)) }
-
-ListParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]) }
-ListParam
-  : Param { (fst $1, (:[]) (snd $1)) }
-  | Param ListParam { (fst $1, (:) (snd $1) (snd $2)) }
-
-Bind :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind) }
-Bind
-  : Pattern { (fst $1, Language.Rzk.Syntax.Abs.BindPattern (fst $1) (snd $1)) }
-  | Pattern ':' Term { (fst $1, Language.Rzk.Syntax.Abs.BindPatternType (fst $1) (snd $1) (snd $3)) }
-
-ParamDecl :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl) }
-ParamDecl
-  : Term6 { (fst $1, Language.Rzk.Syntax.Abs.ParamType (fst $1) (snd $1)) }
-  | '(' Term ':' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '(' Term ':' Term '|' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | '{' Pattern ':' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '{' '(' Pattern ':' Term ')' '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | '{' Pattern ':' Term '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | '(' Term ':' Modality Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $5)) }
-
-SigmaParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam) }
-SigmaParam
-  : Pattern ':' Term { (fst $1, Language.Rzk.Syntax.Abs.SigmaParam (fst $1) (snd $1) (snd $3)) }
-  | Pattern ':' Modality Term { (fst $1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst $1) (snd $1) (snd $3) (snd $4)) }
-
-ListSigmaParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]) }
-ListSigmaParam
-  : SigmaParam { (fst $1, (:[]) (snd $1)) }
-  | SigmaParam ',' ListSigmaParam { (fst $1, (:) (snd $1) (snd $3)) }
-
-Restriction :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction) }
-Restriction
-  : Term '↦' Term { (fst $1, Language.Rzk.Syntax.Abs.Restriction (fst $1) (snd $1) (snd $3)) }
-  | Term '|->' Term { (fst $1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst $1) (snd $1) (snd $3)) }
-
-ListRestriction :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]) }
-ListRestriction
-  : Restriction { (fst $1, (:[]) (snd $1)) }
-  | Restriction ',' ListRestriction { (fst $1, (:) (snd $1) (snd $3)) }
-
-Modality :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality) }
-Modality
-  : '♭' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '_b' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '♯' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '_#' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'ᵒᵖ' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '_op' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '_id' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-
-ModComp :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp) }
-ModComp
-  : Modality { (fst $1, Language.Rzk.Syntax.Abs.Single (fst $1) (snd $1)) }
-  | Modality '/' Modality { (fst $1, Language.Rzk.Syntax.Abs.Comp (fst $1) (snd $1) (snd $3)) }
-
-Term7 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term7
-  : 'U' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'CUBE' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'TOPE' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '1' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '*₁' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '2' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '0₂' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '1₂' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '⊤' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '⊥' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'recBOT' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'recOR' '(' ListRestriction ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3)) }
-  | 'recOR' '(' Term ',' Term ',' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.RecOrDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $7) (snd $9)) }
-  | 'Unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '<' ParamDecl '→' Term '>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '(' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '(' Term ',' Term ',' ListTerm ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | 'mod' Modality Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3)) }
-  | '<|' Modality '|' Term '|>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | 'unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'refl' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'refl_{' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'refl_{' Term ':' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $7) (snd $9) (snd $11) (snd $13)) }
-  | HoleIdent { (fst $1, Language.Rzk.Syntax.Abs.Hole (fst $1) (snd $1)) }
-  | VarIdent { (fst $1, Language.Rzk.Syntax.Abs.Var (fst $1) (snd $1)) }
-  | '(' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), (snd $2)) }
-  | '*_1' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '0_2' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '1_2' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'TOP' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | 'BOT' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }
-  | '<' ParamDecl '->' Term '>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-
-Term5 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term5
-  : Term5 '×' Term6 { (fst $1, Language.Rzk.Syntax.Abs.CubeProduct (fst $1) (snd $1) (snd $3)) }
-  | Term6 { (fst $1, (snd $1)) }
-  | Term5 '*' Term6 { (fst $1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst $1) (snd $1) (snd $3)) }
-
-Term4 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term4
-  : Term5 '≡' Term5 { (fst $1, Language.Rzk.Syntax.Abs.TopeEQ (fst $1) (snd $1) (snd $3)) }
-  | Term5 '≤' Term5 { (fst $1, Language.Rzk.Syntax.Abs.TopeLEQ (fst $1) (snd $1) (snd $3)) }
-  | Term5 { (fst $1, (snd $1)) }
-  | Term5 '===' Term5 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst $1) (snd $1) (snd $3)) }
-  | Term5 '<=' Term5 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst $1) (snd $1) (snd $3)) }
-
-Term3 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term3
-  : Term4 '∧' Term3 { (fst $1, Language.Rzk.Syntax.Abs.TopeAnd (fst $1) (snd $1) (snd $3)) }
-  | Term4 { (fst $1, (snd $1)) }
-  | Term4 '/\\' Term3 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst $1) (snd $1) (snd $3)) }
-
-Term2 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term2
-  : Term3 '∨' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TopeOr (fst $1) (snd $1) (snd $3)) }
-  | Term3 { (fst $1, (snd $1)) }
-  | Term3 '\\/' Term2 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst $1) (snd $1) (snd $3)) }
-
-Term6 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term6
-  : 'invᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'inv_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'uninvᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'uninv_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'flipᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'flip_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'unflipᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'unflip_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | Term6 '[' ListRestriction ']' { (fst $1, Language.Rzk.Syntax.Abs.TypeRestricted (fst $1) (snd $1) (snd $3)) }
-  | Term6 Term7 { (fst $1, Language.Rzk.Syntax.Abs.App (fst $1) (snd $1) (snd $2)) }
-  | '$extract$' ModComp Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3)) }
-  | 'π₁' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'π₂' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | Term7 { (fst $1, (snd $1)) }
-  | 'first' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-  | 'second' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }
-
-Term1 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term1
-  : ParamDecl '→' Term1 { (fst $1, Language.Rzk.Syntax.Abs.TypeFun (fst $1) (snd $1) (snd $3)) }
-  | 'Σ' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | 'Σ' '(' Pattern ':' Modality Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $6) (snd $9)) }
-  | 'Σ' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | Term2 '=_{' Term '}' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeId (fst $1) (snd $1) (snd $3) (snd $5)) }
-  | Term2 '=' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst $1) (snd $1) (snd $3)) }
-  | 'let' Bind ':=' Term 'in' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }
-  | '\\' ListParam '→' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | 'let' 'mod' ModComp Bind ':=' Term 'in' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $4) (snd $6) (snd $8)) }
-  | Term2 { (fst $1, (snd $1)) }
-  | ParamDecl '->' Term1 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst $1) (snd $1) (snd $3)) }
-  | 'Sigma' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | 'Sigma' '(' Pattern ':' Modality Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $6) (snd $9)) }
-  | 'Sigma' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | '\\' ListParam '->' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }
-  | '∑' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-  | '∑' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }
-
-Term :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }
-Term
-  : Term2 'as' Term1 { (fst $1, Language.Rzk.Syntax.Abs.TypeAsc (fst $1) (snd $1) (snd $3)) }
-  | Term1 { (fst $1, (snd $1)) }
-
-ListTerm :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]) }
-ListTerm
-  : Term { (fst $1, (:[]) (snd $1)) }
-  | Term ',' ListTerm { (fst $1, (:) (snd $1) (snd $3)) }
-
-{
-
-type Err = Either String
-
-happyError :: [Token] -> Err a
-happyError ts = Left $
-  "syntax error at " ++ tokenPos ts ++
-  case ts of
-    []      -> []
-    [Err _] -> " due to lexer error"
-    t:_     -> " before `" ++ (prToken t) ++ "'"
-
-myLexer :: Data.Text.Text -> [Token]
-myLexer = tokens
-
--- Entrypoints
-
-pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module
-pModule = fmap snd . pModule_internal
-
-pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent
-pHoleIdent = fmap snd . pHoleIdent_internal
-
-pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent
-pVarIdent = fmap snd . pVarIdent_internal
-
-pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]
-pListVarIdent = fmap snd . pListVarIdent_internal
-
-pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl
-pLanguageDecl = fmap snd . pLanguageDecl_internal
-
-pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language
-pLanguage = fmap snd . pLanguage_internal
-
-pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command
-pCommand = fmap snd . pCommand_internal
-
-pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]
-pListCommand = fmap snd . pListCommand_internal
-
-pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars
-pDeclUsedVars = fmap snd . pDeclUsedVars_internal
-
-pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName
-pSectionName = fmap snd . pSectionName_internal
-
-pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
-pPattern = fmap snd . pPattern_internal
-
-pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
-pListPattern = fmap snd . pListPattern_internal
-
-pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern
-pPattern1 = fmap snd . pPattern1_internal
-
-pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]
-pListPattern1 = fmap snd . pListPattern1_internal
-
-pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param
-pParam = fmap snd . pParam_internal
-
-pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]
-pListParam = fmap snd . pListParam_internal
-
-pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind
-pBind = fmap snd . pBind_internal
-
-pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl
-pParamDecl = fmap snd . pParamDecl_internal
-
-pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam
-pSigmaParam = fmap snd . pSigmaParam_internal
-
-pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]
-pListSigmaParam = fmap snd . pListSigmaParam_internal
-
-pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction
-pRestriction = fmap snd . pRestriction_internal
-
-pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]
-pListRestriction = fmap snd . pListRestriction_internal
-
-pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality
-pModality = fmap snd . pModality_internal
-
-pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp
-pModComp = fmap snd . pModComp_internal
-
-pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm7 = fmap snd . pTerm7_internal
-
-pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm5 = fmap snd . pTerm5_internal
-
-pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm4 = fmap snd . pTerm4_internal
-
-pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm3 = fmap snd . pTerm3_internal
-
-pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm2 = fmap snd . pTerm2_internal
-
-pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm6 = fmap snd . pTerm6_internal
-
-pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm1 = fmap snd . pTerm1_internal
-
-pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term
-pTerm = fmap snd . pTerm_internal
-
-pListTerm :: [Token] -> Err [Language.Rzk.Syntax.Abs.Term]
-pListTerm = fmap snd . pListTerm_internal
-}
-
diff --git a/src/Language/Rzk/Syntax/Print.hs b/src/Language/Rzk/Syntax/Print.hs
--- a/src/Language/Rzk/Syntax/Print.hs
+++ b/src/Language/Rzk/Syntax/Print.hs
@@ -1,4 +1,4 @@
--- File generated by the BNF Converter (bnfc 2.9.6.2).
+-- File generated by the BNF Converter (bnfc 2.9.6.3).
 
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
@@ -211,7 +211,8 @@
     Language.Rzk.Syntax.Abs.ParamPatternType _ patterns term -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 term, doc (showString ")")])
     Language.Rzk.Syntax.Abs.ParamPatternShape _ patterns term1 term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString ")")])
     Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated _ pattern_ term1 term2 -> prPrec i 0 (concatD [doc (showString "{"), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString "}")])
-    Language.Rzk.Syntax.Abs.ParamPatternModalType _ patterns modality term -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 modality, prt 0 term, doc (showString ")")])
+    Language.Rzk.Syntax.Abs.ParamPatternModalType _ patterns modalcolon term -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, prt 0 modalcolon, prt 0 term, doc (showString ")")])
+    Language.Rzk.Syntax.Abs.ParamPatternModalShape _ patterns modalcolon term1 term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, prt 0 modalcolon, prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString ")")])
 
 instance Print [Language.Rzk.Syntax.Abs.Param' a] where
   prt _ [] = concatD []
@@ -230,12 +231,13 @@
     Language.Rzk.Syntax.Abs.ParamTermShape _ term1 term2 term3 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "|"), prt 0 term3, doc (showString ")")])
     Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated _ pattern_ term -> prPrec i 0 (concatD [doc (showString "{"), prt 0 pattern_, doc (showString ":"), prt 0 term, doc (showString "}")])
     Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated _ pattern_ term1 term2 -> prPrec i 0 (concatD [doc (showString "{"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString "|"), prt 0 term2, doc (showString "}")])
-    Language.Rzk.Syntax.Abs.ParamTermModalType _ term1 modality term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, doc (showString ":"), prt 0 modality, prt 0 term2, doc (showString ")")])
+    Language.Rzk.Syntax.Abs.ParamTermModalType _ term1 modalcolon term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, prt 0 modalcolon, prt 0 term2, doc (showString ")")])
+    Language.Rzk.Syntax.Abs.ParamTermModalShape _ term1 modalcolon term2 term3 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, prt 0 modalcolon, prt 0 term2, doc (showString "|"), prt 0 term3, doc (showString ")")])
 
 instance Print (Language.Rzk.Syntax.Abs.SigmaParam' a) where
   prt i = \case
     Language.Rzk.Syntax.Abs.SigmaParam _ pattern_ term -> prPrec i 0 (concatD [prt 0 pattern_, doc (showString ":"), prt 0 term])
-    Language.Rzk.Syntax.Abs.SigmaParamModal _ pattern_ modality term -> prPrec i 0 (concatD [prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term])
+    Language.Rzk.Syntax.Abs.SigmaParamModal _ pattern_ modalcolon term -> prPrec i 0 (concatD [prt 0 pattern_, prt 0 modalcolon, prt 0 term])
 
 instance Print [Language.Rzk.Syntax.Abs.SigmaParam' a] where
   prt _ [] = concatD []
@@ -267,6 +269,16 @@
     Language.Rzk.Syntax.Abs.Single _ modality -> prPrec i 0 (concatD [prt 0 modality])
     Language.Rzk.Syntax.Abs.Comp _ modality1 modality2 -> prPrec i 0 (concatD [prt 0 modality1, doc (showString "/"), prt 0 modality2])
 
+instance Print (Language.Rzk.Syntax.Abs.ModalColon' a) where
+  prt i = \case
+    Language.Rzk.Syntax.Abs.ModalColonFlat _ -> prPrec i 0 (concatD [doc (showString ":\9837")])
+    Language.Rzk.Syntax.Abs.ModalColonSharp _ -> prPrec i 0 (concatD [doc (showString ":\9839")])
+    Language.Rzk.Syntax.Abs.ModalColonOp _ -> prPrec i 0 (concatD [doc (showString ":\7506\7510")])
+    Language.Rzk.Syntax.Abs.ModalColonId _ -> prPrec i 0 (concatD [doc (showString ":_id")])
+    Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat _ -> prPrec i 0 (concatD [doc (showString ":_b")])
+    Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp _ -> prPrec i 0 (concatD [doc (showString ":_#")])
+    Language.Rzk.Syntax.Abs.ASCII_ModalColonOp _ -> prPrec i 0 (concatD [doc (showString ":_op")])
+
 instance Print (Language.Rzk.Syntax.Abs.Term' a) where
   prt i = \case
     Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 7 (concatD [doc (showString "U")])
@@ -277,6 +289,9 @@
     Language.Rzk.Syntax.Abs.Cube2 _ -> prPrec i 7 (concatD [doc (showString "2")])
     Language.Rzk.Syntax.Abs.Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0\8322")])
     Language.Rzk.Syntax.Abs.Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1\8322")])
+    Language.Rzk.Syntax.Abs.CubeI _ -> prPrec i 7 (concatD [doc (showString "\120128")])
+    Language.Rzk.Syntax.Abs.CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0\7522")])
+    Language.Rzk.Syntax.Abs.CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1\7522")])
     Language.Rzk.Syntax.Abs.CubeProduct _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\215"), prt 6 term2])
     Language.Rzk.Syntax.Abs.TopeTop _ -> prPrec i 7 (concatD [doc (showString "\8868")])
     Language.Rzk.Syntax.Abs.TopeBottom _ -> prPrec i 7 (concatD [doc (showString "\8869")])
@@ -293,7 +308,7 @@
     Language.Rzk.Syntax.Abs.RecOrDeprecated _ term1 term2 term3 term4 -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ")")])
     Language.Rzk.Syntax.Abs.TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "\8594"), prt 1 term])
     Language.Rzk.Syntax.Abs.TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])
-    Language.Rzk.Syntax.Abs.TypeSigmaModal _ pattern_ modality term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])
+    Language.Rzk.Syntax.Abs.TypeSigmaModal _ pattern_ modalcolon term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, prt 0 modalcolon, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])
     Language.Rzk.Syntax.Abs.TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term])
     Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 7 (concatD [doc (showString "Unit")])
     Language.Rzk.Syntax.Abs.TypeId _ term1 term2 term3 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "=_{"), prt 0 term2, doc (showString "}"), prt 2 term3])
@@ -306,7 +321,7 @@
     Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")])
     Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")])
     Language.Rzk.Syntax.Abs.ModApp _ modality term -> prPrec i 7 (concatD [doc (showString "mod"), prt 0 modality, prt 7 term])
-    Language.Rzk.Syntax.Abs.ModType _ modality term -> prPrec i 7 (concatD [doc (showString "<|"), prt 0 modality, doc (showString "|"), prt 0 term, doc (showString "|>")])
+    Language.Rzk.Syntax.Abs.ModType _ modality term -> prPrec i 7 (concatD [prt 0 modality, prt 7 term])
     Language.Rzk.Syntax.Abs.ModExtract _ modcomp term -> prPrec i 6 (concatD [doc (showString "$extract$"), prt 0 modcomp, prt 7 term])
     Language.Rzk.Syntax.Abs.LetMod _ modcomp bind term1 term2 -> prPrec i 1 (concatD [doc (showString "let"), doc (showString "mod"), prt 0 modcomp, prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "in"), prt 0 term2])
     Language.Rzk.Syntax.Abs.First _ term -> prPrec i 6 (concatD [doc (showString "\960\8321"), prt 7 term])
@@ -322,6 +337,9 @@
     Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar _ -> prPrec i 7 (concatD [doc (showString "*_1")])
     Language.Rzk.Syntax.Abs.ASCII_Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0_2")])
     Language.Rzk.Syntax.Abs.ASCII_Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1_2")])
+    Language.Rzk.Syntax.Abs.ASCII_CubeI _ -> prPrec i 7 (concatD [doc (showString "II")])
+    Language.Rzk.Syntax.Abs.ASCII_CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0_I")])
+    Language.Rzk.Syntax.Abs.ASCII_CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1_I")])
     Language.Rzk.Syntax.Abs.ASCII_TopeTop _ -> prPrec i 7 (concatD [doc (showString "TOP")])
     Language.Rzk.Syntax.Abs.ASCII_TopeBottom _ -> prPrec i 7 (concatD [doc (showString "BOT")])
     Language.Rzk.Syntax.Abs.ASCII_TopeEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "==="), prt 5 term2])
@@ -330,7 +348,6 @@
     Language.Rzk.Syntax.Abs.ASCII_TopeOr _ term1 term2 -> prPrec i 2 (concatD [prt 3 term1, doc (showString "\\/"), prt 2 term2])
     Language.Rzk.Syntax.Abs.ASCII_TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "->"), prt 1 term])
     Language.Rzk.Syntax.Abs.ASCII_TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])
-    Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal _ pattern_ modality term1 term2 -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])
     Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term])
     Language.Rzk.Syntax.Abs.ASCII_Lambda _ params term -> prPrec i 1 (concatD [doc (showString "\\"), prt 0 params, doc (showString "->"), prt 1 term])
     Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated _ paramdecl term -> prPrec i 7 (concatD [doc (showString "<"), prt 0 paramdecl, doc (showString "->"), prt 0 term, doc (showString ">")])
diff --git a/src/Language/Rzk/VSCode/Env.hs b/src/Language/Rzk/VSCode/Env.hs
--- a/src/Language/Rzk/VSCode/Env.hs
+++ b/src/Language/Rzk/VSCode/Env.hs
@@ -4,7 +4,7 @@
 import           Control.Monad.Reader
 import           Language.LSP.Server
 import           Language.Rzk.Free.Syntax   (VarIdent)
-import           Language.Rzk.VSCode.Config (ServerConfig)
+import qualified Language.Rzk.VSCode.Config as RzkConfig
 import           Rzk.TypeCheck              (Decl', TypeErrorInScopedContext)
 
 data RzkCachedModule = RzkCachedModule
@@ -24,7 +24,7 @@
   return RzkEnv
     { rzkEnvTypecheckCache = typecheckCache }
 
-type LSP = LspT ServerConfig (ReaderT RzkEnv IO)
+type LSP = LspT RzkConfig.ServerConfig (ReaderT RzkEnv IO)
 
 -- | Override the cache with given typechecked modules.
 cacheTypecheckedModules :: RzkTypecheckCache -> LSP ()
diff --git a/src/Language/Rzk/VSCode/Handlers.hs b/src/Language/Rzk/VSCode/Handlers.hs
--- a/src/Language/Rzk/VSCode/Handlers.hs
+++ b/src/Language/Rzk/VSCode/Handlers.hs
@@ -26,6 +26,7 @@
 import           Control.Monad.IO.Class        (MonadIO (..))
 import           Data.Default.Class
 import           Data.List                     (isSuffixOf, sort, (\\))
+import qualified Data.List.NonEmpty            as NE
 import           Data.Maybe                    (fromMaybe, isNothing)
 import qualified Data.Text                     as T
 import qualified Data.Yaml                     as Yaml
@@ -49,10 +50,11 @@
 import           Language.Rzk.Syntax           (Module, VarIdent' (VarIdent),
                                                 parseModuleFile,
                                                 parseModuleSafe, printTree)
-import           Language.Rzk.VSCode.Config    (ServerConfig (ServerConfig, formatEnabled))
+import qualified Language.Rzk.VSCode.Config    as RzkConfig
 import           Language.Rzk.VSCode.Env
 import           Language.Rzk.VSCode.Logging
 import           Language.Rzk.VSCode.Tokenize  (tokenizeModule)
+import qualified Rzk.Diagnostic                as Diag
 import           Rzk.Format                    (format)
 import           Rzk.Project.Config            (ProjectConfig (include))
 import           Rzk.TypeCheck
@@ -118,10 +120,12 @@
           logDebug (tshow (length modifiedFiles) <> " files have been modified")
 
           (parseErrors, parsedModules) <- liftIO $ collectErrors <$> parseFiles modifiedFiles
+          -- Run in lenient hole mode so holes are collected (and surfaced as
+          -- hints) rather than reported as errors while editing.
           tcResults <- liftIO $ try $ evaluate $
-            defaultTypeCheck (typecheckModulesWithLocationIncremental cachedModules parsedModules)
+            defaultTypeCheckWithHoles (typecheckModulesWithLocationIncremental cachedModules parsedModules)
 
-          (typeErrors, _checkedModules) <- case tcResults of
+          (typeErrors, holeInfos) <- case tcResults of
             Left (ex :: SomeException) -> do
               -- Just a warning to be logged in the "Output" panel and not shown to the user as an error message
               --  because exceptions are expected when the file has invalid syntax
@@ -130,13 +134,14 @@
             Right (Left err) -> do
               logError ("An impossible error happened! Please report a bug:\n" <> T.pack (ppTypeErrorInScopedContext' BottomUp err))
               return ([err], [])    -- sort of impossible
-            Right (Right (checkedModules, errors)) -> do
+            Right (Right ((checkedModules, errors), foundHoles)) -> do
                 -- cache well-typed modules
                 logInfo (tshow (length checkedModules) <> " modules successfully typechecked")
                 logInfo (tshow (length errors) <> " errors found")
+                logInfo (tshow (length foundHoles) <> " holes found")
                 let checkedModules' = map (\(path, decls) -> (path, RzkCachedModule decls (filter ((== path) . filepathOfTypeError) errors))) checkedModules
                 cacheTypecheckedModules checkedModules'
-                return (errors, checkedModules)
+                return (errors, foundHoles)
 
           -- Reset all published diags
           -- TODO: remove this after properly grouping by path below, after which there can be an empty list of errors
@@ -148,13 +153,22 @@
           forM_ parseErrors $ \(path, err) -> do
             publishDiagnostics maxDiagnosticCount (filePathToNormalizedUri path) Nothing (partitionBySource [diagnosticOfParseError err])
 
-          -- TODO: collect all errors for one file in one list
-
-          -- Report typechecking errors to the client
-          forM_ typeErrors $ \err -> do
-            let errPath = filepathOfTypeError err
-                errDiagnostic = diagnosticOfTypeError err
-            publishDiagnostics maxDiagnosticCount (filePathToNormalizedUri errPath) Nothing (partitionBySource [errDiagnostic])
+          -- Report typechecking errors and holes to the client, grouped by file
+          -- so all diagnostics for a file are published in a single call
+          -- (publishDiagnostics replaces a source's diagnostics per URI, so
+          -- publishing them one at a time would clobber all but the last).
+          let errDiagnostics  = [ (filepathOfTypeError err, diagnosticOfTypeError err)
+                                | err <- typeErrors ]
+              holeDiagnostics = [ (path, diagnosticOfHole hole)
+                                | hole <- holeInfos
+                                , Just path <- [holeLocation hole >>= locationFilePath] ]
+              -- group by file path (NE.groupAllWith sorts then groups, and
+              -- yields NonEmpty groups so taking the key is total)
+              diagnosticsByFile =
+                map (\grp -> (fst (NE.head grp), map snd (NE.toList grp))) $
+                NE.groupAllWith fst (errDiagnostics <> holeDiagnostics)
+          forM_ diagnosticsByFile $ \(path, diags) ->
+            publishDiagnostics maxDiagnosticCount (filePathToNormalizedUri path) Nothing (partitionBySource diags)
   where
     filepathOfTypeError :: TypeErrorInScopedContext var -> FilePath
     filepathOfTypeError (PlainTypeError err) =
@@ -163,29 +177,38 @@
         _         -> error "the impossible happened! Please contact Abdelrahman immediately!!!"
     filepathOfTypeError (ScopedTypeError _orig err) = filepathOfTypeError err
 
-    diagnosticOfTypeError :: TypeErrorInScopedContext VarIdent -> Diagnostic
-    diagnosticOfTypeError err = Diagnostic
-                      (Range (Position line 0) (Position line 99)) -- 99 to reach end of line and be visible until we actually have information about it
-                      (Just DiagnosticSeverity_Error)
-                      (Just $ InR "type-error") -- diagnostic code
+    -- Map a structured library diagnostic to an LSP diagnostic. The range is
+    -- line-level (whole line), reflecting the granularity rzk currently retains.
+    lspDiagnosticOf :: Diag.Diagnostic -> Diagnostic
+    lspDiagnosticOf d = Diagnostic
+                      (Range (Position line 0) (Position line 99)) -- 99 to reach end of line and be visible until we actually have column information
+                      (Just (lspSeverity (Diag.diagnosticSeverity d)))
+                      (Just (InR (T.pack (Diag.diagnosticCode d))))
                       Nothing                   -- diagnostic description
                       (Just "rzk")              -- A human-readable string describing the source of this diagnostic
-                      (T.pack msg)
+                      (T.pack (Diag.diagnosticMessage d))
                       Nothing                   -- tags
                       (Just [])                 -- related information
                       Nothing                   -- data that is preserved between different calls
       where
-        msg = ppTypeErrorInScopedContext' TopDown err
-
-        extractLineNumber :: TypeErrorInScopedContext var -> Maybe Int
-        extractLineNumber (PlainTypeError e)    = do
-          loc <- location (typeErrorContext e)
+        line = fromIntegral $ fromMaybe 0 $ do
+          loc <- Diag.diagnosticLocation d
           lineNo <- locationLine loc
           return (lineNo - 1) -- VS Code indexes lines from 0, but locationLine starts with 1
-        extractLineNumber (ScopedTypeError _ e) = extractLineNumber e
 
-        line = fromIntegral $ fromMaybe 0 $ extractLineNumber err
+    lspSeverity :: Diag.Severity -> DiagnosticSeverity
+    lspSeverity = \case
+      Diag.SeverityError       -> DiagnosticSeverity_Error
+      Diag.SeverityWarning     -> DiagnosticSeverity_Warning
+      Diag.SeverityInformation -> DiagnosticSeverity_Information
+      Diag.SeverityHint        -> DiagnosticSeverity_Hint
 
+    diagnosticOfTypeError :: TypeErrorInScopedContext VarIdent -> Diagnostic
+    diagnosticOfTypeError = lspDiagnosticOf . Diag.diagnoseTypeError TopDown
+
+    diagnosticOfHole :: HoleInfo -> Diagnostic
+    diagnosticOfHole = lspDiagnosticOf . Diag.diagnoseHole
+
     diagnosticOfParseError :: T.Text -> Diagnostic
     diagnosticOfParseError err = Diagnostic (Range (Position errLine errColumnStart) (Position errLine errColumnEnd))
                       (Just DiagnosticSeverity_Error)
@@ -283,7 +306,7 @@
 formatDocument req res = do
   let doc = req ^. params . textDocument . uri . to toNormalizedUri
   logInfo $ "Formatting document: " <> T.pack (show doc)
-  ServerConfig {formatEnabled = fmtEnabled} <- getConfig
+  RzkConfig.ServerConfig {RzkConfig.formatEnabled = fmtEnabled} <- getConfig
   if fmtEnabled then do
     mdoc <- getVirtualFile doc
     possibleEdits <- case virtualFileText <$> mdoc of
diff --git a/src/Language/Rzk/VSCode/Lsp.hs b/src/Language/Rzk/VSCode/Lsp.hs
--- a/src/Language/Rzk/VSCode/Lsp.hs
+++ b/src/Language/Rzk/VSCode/Lsp.hs
@@ -13,7 +13,7 @@
 
 import           Data.Aeson                    (Result (Error, Success),
                                                 fromJSON)
-import           Language.Rzk.VSCode.Config    (ServerConfig (..))
+import qualified Language.Rzk.VSCode.Config    as RzkConfig
 import           Language.Rzk.VSCode.Env
 import           Language.Rzk.VSCode.Handlers
 
@@ -75,5 +75,5 @@
       , staticHandlers = const handlers
       , interpretHandler = \env -> Iso (flip runReaderT rzkEnv . runLspT env) liftIO
       , options = defaultOptions { optTextDocumentSync = Just syncOptions }
-      , defaultConfig = def :: ServerConfig
+      , defaultConfig = def :: RzkConfig.ServerConfig
       }
diff --git a/src/Language/Rzk/VSCode/Tokenize.hs b/src/Language/Rzk/VSCode/Tokenize.hs
--- a/src/Language/Rzk/VSCode/Tokenize.hs
+++ b/src/Language/Rzk/VSCode/Tokenize.hs
@@ -62,10 +62,15 @@
     [ tokenizePattern pat
     , tokenizeTerm cube
     , tokenizeTope tope ]
-  ParamPatternModalType _loc pats md ty -> concat
+  ParamPatternModalType _loc pats mc ty -> concat
     [ foldMap tokenizePattern pats
-    , tokenizeModality md
+    , tokenizeModalColon mc
     , tokenizeTerm ty ]
+  ParamPatternModalShape _loc pats mc cube tope -> concat
+    [ foldMap tokenizePattern pats
+    , tokenizeModalColon mc
+    , tokenizeTerm cube
+    , tokenizeTope tope ]
 
 tokenizePattern :: Pattern -> [SemanticTokenAbsolute]
 tokenizePattern = \case
@@ -103,6 +108,13 @@
       Cube2_1{}            -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
       ASCII_Cube2_1{}      -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
 
+      CubeI{}              -> mkToken term SemanticTokenTypes_Enum [SemanticTokenModifiers_DefaultLibrary]
+      CubeI_0{}            -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
+      ASCII_CubeI_0{}      -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
+      CubeI_1{}            -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
+      ASCII_CubeI_1{}      -> mkToken term SemanticTokenTypes_EnumMember [SemanticTokenModifiers_DefaultLibrary]
+      ASCII_CubeI{}        -> mkToken term SemanticTokenTypes_Enum [SemanticTokenModifiers_DefaultLibrary]
+
       CubeProduct _loc l r -> foldMap go [l, r]
 
       TopeTop{}            -> mkToken term SemanticTokenTypes_String [SemanticTokenModifiers_DefaultLibrary]
@@ -135,20 +147,15 @@
         [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]
         , tokenizePattern pat
         , foldMap go [a, b] ]
-      TypeSigmaModal loc pat md a b -> concat
+      TypeSigmaModal loc pat mc a b -> concat
         [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]
         , tokenizePattern pat
-        , tokenizeModality md
+        , tokenizeModalColon mc
         , foldMap go [a, b] ]
       ASCII_TypeSigma loc pat a b -> concat
         [ mkToken (VarIdent loc "Sigma") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]
         , tokenizePattern pat
         , foldMap go [a, b] ]
-      ASCII_TypeSigmaModal loc pat md a b -> concat
-        [ mkToken (VarIdent loc "Sigma") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]
-        , tokenizePattern pat
-        , tokenizeModality md
-        , foldMap go [a, b] ]
       TypeSigmaTuple loc p ps tN -> concat
         [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]
         , foldMap tokenizeSigmaParam (p : ps)
@@ -239,11 +246,14 @@
     , tokenizeTerm cube
     , tokenizeTope tope
     ]
-  ParamTermModalType _loc pat md type_ -> concat
-    [ tokenizeTerm pat
-    , tokenizeModality md
-    , tokenizeTerm type_ ]
+  ParamTermModalType _loc pat mc type_ -> concat
+    [ tokenizeTerm pat, tokenizeModalColon mc, tokenizeTerm type_ ]
+  ParamTermModalShape _loc pat mc cube tope -> concat
+    [ tokenizeTerm pat, tokenizeModalColon mc, tokenizeTerm cube, tokenizeTope tope ]
 
+tokenizeModalColon :: ModalColon -> [SemanticTokenAbsolute]
+tokenizeModalColon mc = mkToken mc SemanticTokenTypes_Decorator []
+
 tokenizeModality :: Modality -> [SemanticTokenAbsolute]
 tokenizeModality md = mkToken md SemanticTokenTypes_Decorator []
 
@@ -257,9 +267,9 @@
   SigmaParam _loc pat type_ -> concat
     [ tokenizePattern pat
     , tokenizeTerm type_ ]
-  SigmaParamModal _loc pat md type_ -> concat
+  SigmaParamModal _loc pat mc type_ -> concat
     [ tokenizePattern pat
-    , tokenizeModality md
+    , tokenizeModalColon mc
     , tokenizeTerm type_ ]
 
 mkToken :: (HasPosition a, Print a) => a -> SemanticTokenTypes -> [SemanticTokenModifiers] -> [SemanticTokenAbsolute]
diff --git a/src/Rzk/Diagnostic.hs b/src/Rzk/Diagnostic.hs
new file mode 100644
--- /dev/null
+++ b/src/Rzk/Diagnostic.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE LambdaCase        #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards   #-}
+
+-- | Structured diagnostics for rzk: type errors and holes as data (severity,
+-- a stable code, a source location, and a message) rather than a single
+-- pre-formatted string. The core library produces these; the LSP maps them to
+-- LSP diagnostics, and the CLI can emit them as JSON (@rzk typecheck --json@).
+--
+-- Locations are line-level: rzk currently retains only file + line at the point
+-- an error is produced (the column is discarded, and core terms keep no
+-- per-node position), so diagnostics point at the enclosing command's line.
+module Rzk.Diagnostic where
+
+import           Data.Aeson           (ToJSON (..), Value (String), object,
+                                       (.=))
+
+import           Language.Rzk.Free.Syntax (VarIdent)
+import           Rzk.TypeCheck
+
+-- | Diagnostic severity, mirroring the usual LSP levels.
+data Severity
+  = SeverityError
+  | SeverityWarning
+  | SeverityInformation
+  | SeverityHint
+  deriving (Eq, Show)
+
+-- | A structured diagnostic. Independent of any editor protocol: the LSP maps
+-- it to its own @Diagnostic@, and the CLI serialises it as JSON.
+--
+-- == JSON wire format (@rzk typecheck --json@)
+--
+-- This is a stable format that downstream tools (e.g. richer LSP hovers) pin
+-- to. Each diagnostic is an object:
+--
+-- > { "severity": "error" | "warning" | "information" | "hint"
+-- > , "code":     <string>           -- "hole", or a TypeError tag (e.g. "TypeErrorUnify")
+-- > , "location": { "file": <string|null>, "line": <int|null> } | null
+-- > , "message":  <string>           -- human-facing prose (the CLI/LSP display text)
+-- > , "hole":     <HoleData> | null  -- present only for hole diagnostics (see 'HoleData')
+-- > }
+--
+-- The @message@ field is kept for back-compat (the LSP and the CLI human mode
+-- use it). Structured consumers should read the @hole@ object instead of
+-- parsing @message@. For non-hole diagnostics @hole@ is @null@.
+data Diagnostic = Diagnostic
+  { diagnosticSeverity :: Severity
+  , diagnosticCode     :: String            -- ^ stable category, e.g. @\"TypeErrorUnify\"@ or @\"hole\"@
+  , diagnosticLocation :: Maybe LocationInfo -- ^ file + line (line-level granularity)
+  , diagnosticMessage  :: String
+  , diagnosticHole     :: Maybe HoleData     -- ^ structured hole payload ('Nothing' for type errors)
+  } deriving (Eq, Show)
+
+-- | The structured payload of a hole diagnostic: the goal and local context as
+-- already-rendered display strings (the same strings the LSP/CLI show, i.e.
+-- @show@ = @printTree@ on the underlying terms). Consumers render hole panels
+-- from these fields directly, without parsing the human-facing @message@.
+--
+-- == JSON wire format
+--
+-- > { "name":     <string|null>                 -- the ?name, if the hole was named
+-- > , "goal":     <string>                       -- the expected type (the goal)
+-- > , "shape":    { "binder": <string>, "tope": <string> } | null
+-- > , "termVars": [ { "name": <string>, "type": <string> }, ... ]
+-- > , "cubeVars": [ { "name": <string>, "type": <string> }, ... ]
+-- > , "topes":    [ <string>, ... ]              -- local tope assumptions (excludes ⊤)
+-- > }
+--
+-- Notes for consumers:
+--
+-- * @shape@ is non-null only for a shape-restricted /argument/ goal, where the
+--   goal reads @(binder : goal | tope)@. For an /extension/ type the boundary is
+--   already part of @goal@ (a restricted type @A [ … ↦ … ]@), and @shape@ is
+--   @null@ — read the boundary out of @goal@.
+-- * @cubeVars@ names can be patterns like @\"(t, s)\"@ (pair-pattern binders);
+--   they are display strings, not single identifiers.
+data HoleData = HoleData
+  { holeDataName     :: Maybe String           -- ^ the @?name@, if named
+  , holeDataGoal     :: String                 -- ^ the goal (expected type)
+  , holeDataShape    :: Maybe (String, String) -- ^ (binder, tope) for a shape-argument goal
+  , holeDataTermVars :: [(String, String)]     -- ^ local hypotheses: (name, type)
+  , holeDataCubeVars :: [(String, String)]     -- ^ local cube variables: (name, type)
+  , holeDataTopes    :: [String]               -- ^ local tope assumptions (excluding ⊤)
+  } deriving (Eq, Show)
+
+instance ToJSON Severity where
+  toJSON = String . \case
+    SeverityError       -> "error"
+    SeverityWarning     -> "warning"
+    SeverityInformation -> "information"
+    SeverityHint        -> "hint"
+
+-- | Encode a location as JSON. A plain helper rather than a @ToJSON@ instance,
+-- to avoid an orphan instance ('LocationInfo' is defined in "Rzk.TypeCheck").
+locationToJSON :: LocationInfo -> Value
+locationToJSON (LocationInfo path line) = object
+  [ "file" .= path
+  , "line" .= line
+  ]
+
+instance ToJSON Diagnostic where
+  toJSON Diagnostic{..} = object
+    [ "severity" .= diagnosticSeverity
+    , "code"     .= diagnosticCode
+    , "location" .= fmap locationToJSON diagnosticLocation
+    , "message"  .= diagnosticMessage
+    , "hole"     .= diagnosticHole
+    ]
+
+instance ToJSON HoleData where
+  toJSON HoleData{..} = object
+    [ "name"     .= holeDataName
+    , "goal"     .= holeDataGoal
+    , "shape"    .= fmap shapeToJSON holeDataShape
+    , "termVars" .= map entryToJSON holeDataTermVars
+    , "cubeVars" .= map entryToJSON holeDataCubeVars
+    , "topes"    .= holeDataTopes
+    ]
+    where
+      shapeToJSON (binder, tope) = object [ "binder" .= binder, "tope" .= tope ]
+      entryToJSON (name, ty)     = object [ "name" .= name, "type" .= ty ]
+
+-- | A stable tag for a type error, used as its diagnostic code. Independent of
+-- the variable type, so it survives the scoped-error unfolding.
+typeErrorTag :: TypeError var -> String
+typeErrorTag = \case
+  TypeErrorOther{}                 -> "TypeErrorOther"
+  TypeErrorUnify{}                 -> "TypeErrorUnify"
+  TypeErrorUnifyTerms{}            -> "TypeErrorUnifyTerms"
+  TypeErrorNotPair{}               -> "TypeErrorNotPair"
+  TypeErrorNotModal{}              -> "TypeErrorNotModal"
+  TypeErrorModalityMismatch{}      -> "TypeErrorModalityMismatch"
+  TypeErrorUnaccessibleVar{}       -> "TypeErrorUnaccessibleVar"
+  TypeErrorNotTypeInModal{}        -> "TypeErrorNotTypeInModal"
+  TypeErrorNotFunction{}           -> "TypeErrorNotFunction"
+  TypeErrorUnexpectedLambda{}      -> "TypeErrorUnexpectedLambda"
+  TypeErrorUnexpectedPair{}        -> "TypeErrorUnexpectedPair"
+  TypeErrorUnexpectedRefl{}        -> "TypeErrorUnexpectedRefl"
+  TypeErrorCannotInferBareLambda{} -> "TypeErrorCannotInferBareLambda"
+  TypeErrorCannotInferBareRefl{}   -> "TypeErrorCannotInferBareRefl"
+  TypeErrorCannotInferHole{}       -> "TypeErrorCannotInferHole"
+  TypeErrorUnsolvedHole{}          -> "TypeErrorUnsolvedHole"
+  TypeErrorUndefined{}             -> "TypeErrorUndefined"
+  TypeErrorTopeNotSatisfied{}      -> "TypeErrorTopeNotSatisfied"
+  TypeErrorTopeContextDisjoint{}   -> "TypeErrorTopeContextDisjoint"
+  TypeErrorTopesNotEquivalent{}    -> "TypeErrorTopesNotEquivalent"
+  TypeErrorInvalidArgumentType{}   -> "TypeErrorInvalidArgumentType"
+  TypeErrorDuplicateTopLevel{}     -> "TypeErrorDuplicateTopLevel"
+  TypeErrorUnusedVariable{}        -> "TypeErrorUnusedVariable"
+  TypeErrorUnusedUsedVariables{}   -> "TypeErrorUnusedUsedVariables"
+  TypeErrorImplicitAssumption{}    -> "TypeErrorImplicitAssumption"
+
+-- | The tag of a scoped type error (peels the binder layers; the tag does not
+-- depend on the variable type).
+typeErrorTagInScopedContext :: TypeErrorInScopedContext var -> String
+typeErrorTagInScopedContext = \case
+  PlainTypeError e    -> typeErrorTag (typeErrorError e)
+  ScopedTypeError _ e -> typeErrorTagInScopedContext e
+
+-- | The source location of a scoped type error (the enclosing command's line).
+locationOfTypeError :: TypeErrorInScopedContext var -> Maybe LocationInfo
+locationOfTypeError = \case
+  PlainTypeError e    -> location (typeErrorContext e)
+  ScopedTypeError _ e -> locationOfTypeError e
+
+-- | A structured diagnostic for a type error. The message is the usual
+-- formatted error text; severity is always 'SeverityError'.
+diagnoseTypeError :: OutputDirection -> TypeErrorInScopedContext VarIdent -> Diagnostic
+diagnoseTypeError dir err = Diagnostic
+  { diagnosticSeverity = SeverityError
+  , diagnosticCode     = typeErrorTagInScopedContext err
+  , diagnosticLocation = locationOfTypeError err
+  , diagnosticMessage  = ppTypeErrorInScopedContext' dir err
+  , diagnosticHole     = Nothing
+  }
+
+-- | A structured diagnostic for a hole, carrying the hole's goal and local
+-- context. A hole is an unfilled obligation, so it is a 'SeverityWarning' —
+-- mirroring Agda's yellow \"unsolved\" highlight, and visible in the editor's
+-- problems panel (unlike 'SeverityHint', which editors render almost
+-- invisibly). Finished work still rejects holes outright: the strict default
+-- of @rzk typecheck@ reports them as errors (cf. Agda's @--safe@).
+diagnoseHole :: HoleInfo -> Diagnostic
+diagnoseHole hole = Diagnostic
+  { diagnosticSeverity = SeverityWarning
+  , diagnosticCode     = "hole"
+  , diagnosticLocation = holeLocation hole
+  , diagnosticMessage  = ppHoleInfo hole
+  , diagnosticHole     = Just (holeData hole)
+  }
+
+-- | The structured payload of a hole: its goal and local context rendered to
+-- display strings (the same rendering 'ppHoleInfo' uses, but kept as separate
+-- fields rather than concatenated into prose). See 'HoleData'.
+holeData :: HoleInfo -> HoleData
+holeData HoleInfo{..} = HoleData
+  { holeDataName     = fmap show holeName
+  , holeDataGoal     = show holeGoal
+  , holeDataShape    = fmap (\(s, tope) -> (show s, show tope)) holeGoalShape
+  , holeDataTermVars = map entry holeTermVars
+  , holeDataCubeVars = map entry holeCubeVars
+  , holeDataTopes    = map show holeTopes
+  }
+  where
+    entry e = (show (holeEntryName e), show (holeEntryType e))
+
+-- | Render a hole's goal and local context (the structured query) for display,
+-- separating term variables, cube variables, and tope assumptions.
+ppHoleInfo :: HoleInfo -> String
+ppHoleInfo HoleInfo{..} = unlines $
+  [ "Hole" <> maybe "" (\name -> " ?" <> show name) holeName
+      <> maybe "" (\loc -> " at " <> ppLocationInfo loc) holeLocation
+  , "  goal:"
+  , "    " <> goalStr
+  ]
+  <> section "context" holeTermVars
+  <> section "cube variables" holeCubeVars
+  <> (if null holeTopes
+        then []
+        else "  tope context:" : [ "    " <> show t | t <- holeTopes ])
+  where
+    -- a shape goal reads (binder : cube | tope); otherwise just the type
+    goalStr = case holeGoalShape of
+      Nothing        -> show holeGoal
+      Just (s, tope) -> "(" <> show s <> " : " <> show holeGoal <> " | " <> show tope <> ")"
+    section title entries
+      | null entries = []
+      | otherwise = ("  " <> title <> ":")
+          : [ "    " <> show (holeEntryName e) <> " : " <> show (holeEntryType e)
+            | e <- entries ]
+
+ppLocationInfo :: LocationInfo -> String
+ppLocationInfo (LocationInfo mpath mline) =
+  maybe "<input>" id mpath <> maybe "" ((":" <>) . show) mline
diff --git a/src/Rzk/Format.hs b/src/Rzk/Format.hs
--- a/src/Rzk/Format.hs
+++ b/src/Rzk/Format.hs
@@ -91,7 +91,13 @@
       , ("*_1", "*₁")
       , ("0_2", "0₂")
       , ("1_2", "1₂")
+      , ("II", "𝕀")
+      , ("0_I", "0ᵢ")
+      , ("1_I", "1ᵢ")
       , ("*", "×")
+      , (":_b", ":♭")
+      , (":_#", ":♯")
+      , (":_op", ":ᵒᵖ")
       , ("_b", "♭")
       , ("_#", "♯")
       , ("_op", "ᵒᵖ")
diff --git a/src/Rzk/Main.hs b/src/Rzk/Main.hs
--- a/src/Rzk/Main.hs
+++ b/src/Rzk/Main.hs
@@ -12,6 +12,7 @@
 import qualified Data.Yaml            as Yaml
 import           System.Directory     (doesPathExist)
 import           System.FilePath.Glob (glob)
+import           System.IO            (hPutStrLn, stderr)
 
 import qualified Language.Rzk.Syntax  as Rzk
 import           Rzk.Project.Config
@@ -70,7 +71,7 @@
     rzkYamlExists <- doesPathExist rzkYamlPath
     if rzkYamlExists
       then do
-        putStrLn ("Using Rzk project stucture specified in " <> rzkYamlPath)
+        hPutStrLn stderr ("Using Rzk project stucture specified in " <> rzkYamlPath)
         paths <- extractFilesFromRzkYaml rzkYamlPath
         when (null paths) (error $ "No Rzk files specified in the config file at " <> rzkYamlPath)
         parseRzkFilesOrStdin paths
@@ -81,7 +82,7 @@
   paths -> do
     expandedPaths <- foldMap globNonEmpty paths
     forM expandedPaths $ \path -> do
-      putStrLn ("Loading file " <> path)
+      hPutStrLn stderr ("Loading file " <> path)
       result <- Rzk.parseModule <$> T.readFile path
       case result of
         Left err -> do
diff --git a/src/Rzk/TypeCheck.hs b/src/Rzk/TypeCheck.hs
--- a/src/Rzk/TypeCheck.hs
+++ b/src/Rzk/TypeCheck.hs
@@ -11,3667 +11,4815 @@
 import           Control.Monad            (forM, forM_, join, unless, when)
 import           Control.Monad.Except
 import           Control.Monad.Reader
-import           Data.Bifunctor           (first)
-import           Data.List                (intercalate, intersect, nub, tails,
-                                           (\\))
-import           Data.Maybe               (catMaybes, fromMaybe, isNothing,
-                                           mapMaybe)
-import           Data.String              (IsString (..))
-import           Data.Tuple               (swap)
-
-import           Free.Scoped
-import           Language.Rzk.Free.Syntax
-import qualified Language.Rzk.Syntax      as Rzk
-
-import           Debug.Trace
-import           Unsafe.Coerce
-
--- $setup
--- >>> :set -XOverloadedStrings
-
--- | Parse and 'unsafeInferStandalone''.
-instance IsString TermT' where
-  fromString = unsafeInferStandalone' . fromString
-
-defaultTypeCheck
-  :: TypeCheck var a
-  -> Either (TypeErrorInScopedContext var) a
-defaultTypeCheck tc = runExcept (runReaderT tc emptyContext)
-
--- FIXME: merge with VarInfo
-data Decl var = Decl
-  { declName         :: var
-  , declType         :: TermT var
-  , declValue        :: Maybe (TermT var)
-  , declIsAssumption :: Bool
-  , declUsedVars     :: [var]
-  , declLocation     :: Maybe LocationInfo
-  } deriving Eq
-
-type Decl' = Decl VarIdent
-
-typecheckModulesWithLocationIncremental
-  :: [(FilePath, [Decl'])]    -- ^ Cached declarations (only those that do not need rechecking).
-  -> [(FilePath, Rzk.Module)] -- ^ New modules to check
-  -> TypeCheck VarIdent ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent])
-typecheckModulesWithLocationIncremental cached modulesToTypecheck = do
-  let decls = foldMap snd cached
-  localDeclsPrepared decls $ do
-    (checked, errors) <- typecheckModulesWithLocation' modulesToTypecheck
-    return (cached <> checked, errors)
-
-typecheckModulesWithLocation' :: [(FilePath, Rzk.Module)] -> TypeCheck VarIdent ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent])
-typecheckModulesWithLocation' = \case
-  [] -> return ([], [])
-  m@(path, _) : ms -> do
-    (decls, errs) <- typecheckModuleWithLocation m
-    case errs of
-      _:_ -> return ([(path, decls)], errs)
-      _ -> do
-        localDeclsPrepared decls $ do
-          (decls', errors) <- typecheckModulesWithLocation' ms
-          return ((path, decls) : decls', errors)
-
-typecheckModulesWithLocation :: [(FilePath, Rzk.Module)] -> TypeCheck VarIdent [(FilePath, [Decl'])]
-typecheckModulesWithLocation = \case
-  [] -> return []
-  m@(path, _) : ms -> do
-    (decls, errs) <- typecheckModuleWithLocation m
-    case errs of
-      err : _ -> do
-        throwError err
-      [] -> localDeclsPrepared decls $
-        ((path, decls) :) <$> typecheckModulesWithLocation ms
-
-typecheckModules :: [Rzk.Module] -> TypeCheck VarIdent [Decl']
-typecheckModules = \case
-  [] -> return []
-  m : ms -> do
-    (decls, errs) <- typecheckModule Nothing m
-    case errs of
-      err : _ -> do
-        throwError err
-      _ -> do
-        localDeclsPrepared decls $
-          (decls <>) <$> typecheckModules ms
-
-typecheckModuleWithLocation :: (FilePath, Rzk.Module) -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
-typecheckModuleWithLocation (path, module_) = do
-  traceTypeCheck Normal ("Checking module from " <> path) $ do
-    withLocation (LocationInfo { locationFilePath = Just path, locationLine = Nothing }) $
-      typecheckModule (Just path) module_
-
-countCommands :: Integral a => [Rzk.Command] -> a
-countCommands = fromIntegral . length
-
-typecheckModule :: Maybe FilePath -> Rzk.Module -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
-typecheckModule path (Rzk.Module _moduleLoc _lang commands) =
-  withSection Nothing (go 1 commands) $ -- FIXME: use module name? or anonymous section?
-    return ([], [])
-  where
-    totalCommands = countCommands commands
-
-    go :: Integer -> [Rzk.Command] -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
-    go _i [] = return ([], [])
-
-    go  i (command@(Rzk.CommandUnsetOption _loc optionName) : moreCommands) = do
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Unsetting option " <> optionName) $ do
-        withCommand command $ do
-          unsetOption optionName $
-            go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandSetOption _loc optionName optionValue) : moreCommands) = do
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Setting option " <> optionName <> " = " <> optionValue ) $ do
-        withCommand command $ do
-          setOption optionName optionValue $
-            go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandDefine _loc name (Rzk.DeclUsedVars _ vars) params ty term) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Checking #define " <> Rzk.printTree name ) $ do
-        withCommand command $ do
-          mapM_ checkDefinedVar (varIdentAt path <$> vars)
-          paramDecls <- concat <$> mapM paramToParamDecl params
-          ty' <- typecheck (toTerm' (addParamDecls paramDecls ty)) universeT >>= whnfT
-          term' <- typecheck (toTerm' (addParams params term)) ty' >>= whnfT
-          loc <- asks location
-          let decl = Decl (varIdentAt path name) ty' (Just term') False (varIdentAt path <$> vars) loc
-          fmap (first (decl :)) $
-            localDeclPrepared decl $ do
-              Context{..} <- ask
-              termSVG <-
-                case renderBackend of
-                  Just RenderSVG -> renderTermSVG (Pure (varIdentAt path name))
-                  Just RenderLaTeX -> issueTypeError $ TypeErrorOther "\"latex\" rendering is not yet supported"
-                  Nothing -> pure Nothing
-              maybe id trace termSVG $ do
-                go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandPostulate _loc name (Rzk.DeclUsedVars _ vars) params ty) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Checking #postulate " <> Rzk.printTree name) $ do
-        withCommand command $ do
-          mapM_ checkDefinedVar (varIdentAt path <$> vars)
-          paramDecls <- concat <$> mapM paramToParamDecl params
-          ty' <- typecheck (toTerm' (addParamDecls paramDecls ty)) universeT >>= whnfT
-          loc <- asks location
-          let decl = Decl (varIdentAt path name) ty' Nothing False (varIdentAt path <$> vars) loc
-          fmap (first (decl :)) $
-            localDeclPrepared decl $
-              go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandCheck _loc term ty) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Checking " <> Rzk.printTree term <> " : " <> Rzk.printTree ty ) $ do
-        withCommand command $ do
-          ty' <- typecheck (toTerm' ty) universeT >>= whnfT
-          _term' <- typecheck (toTerm' term) ty'
-          go (i + 1) moreCommands
-
-    go  i (Rzk.CommandCompute loc term : moreCommands) =
-      go i (Rzk.CommandComputeWHNF loc term : moreCommands)
-
-    go  i (command@(Rzk.CommandComputeNF _loc term) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Computing NF for " <> Rzk.printTree term) $ do
-        withCommand command $ do
-          term' <- infer (toTerm' term) >>= nfT
-          traceTypeCheck Normal ("  " <> show (untyped term')) $ do
-            go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandComputeWHNF _loc term) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Computing WHNF for " <> Rzk.printTree term) $ do
-        withCommand command $ do
-          term' <- infer (toTerm' term) >>= whnfT
-          traceTypeCheck Normal ("  " <> show (untyped term')) $ do
-            go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandAssume _loc names ty) : moreCommands) =
-      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
-          <> " Checking #assume " <> intercalate " " [ Rzk.printTree name | name <- names ] ) $ do
-        withCommand command $ do
-          ty' <- typecheck (toTerm' ty) universeT
-          loc <- asks location
-          let decls = [ Decl (varIdentAt path name) ty' Nothing True [] loc | name <- names ]
-          fmap (first (decls <>)) $
-            localDeclsPrepared decls $
-              go (i + 1) moreCommands
-
-    go  i (command@(Rzk.CommandSection _loc name) : moreCommands) = do
-      withCommand command $ do
-        (sectionCommands, moreCommands') <- splitSectionCommands name moreCommands
-        withSection (Just name) (go i sectionCommands) $ do
-          go (i + countCommands sectionCommands) moreCommands'
-
-    go  _i (command@(Rzk.CommandSectionEnd _loc endName) : _moreCommands) = do
-      withCommand command $
-        issueTypeError $ TypeErrorOther $
-          "unexpected #end " <> Rzk.printTree endName <> ", no section was declared!"
-
-
-splitSectionCommands :: Rzk.SectionName -> [Rzk.Command] -> TypeCheck var ([Rzk.Command], [Rzk.Command])
-splitSectionCommands name [] =
-  issueTypeError (TypeErrorOther $ "Section " <> Rzk.printTree name <> " is not closed with an #end")
-splitSectionCommands name (Rzk.CommandSection _loc name' : moreCommands) = do
-  (cs1, cs2) <- splitSectionCommands name' moreCommands
-  (cs3, cs4) <- splitSectionCommands name cs2
-  return (cs1 <> cs3, cs4)
-splitSectionCommands name (Rzk.CommandSectionEnd _loc endName : moreCommands) = do
-  when (Rzk.printTree name /= Rzk.printTree endName) $
-    issueTypeError $ TypeErrorOther $
-      "unexpected #end " <> Rzk.printTree endName <> ", expecting #end " <> Rzk.printTree name
-  return ([], moreCommands)
-splitSectionCommands name (command : moreCommands) = do
-  (cs1, cs2) <- splitSectionCommands name moreCommands
-  return (command : cs1, cs2)
-
-setOption :: String -> String -> TypeCheck var a -> TypeCheck var a
-setOption "verbosity" = \case
-  "debug"   -> localVerbosity Debug
-  "normal"  -> localVerbosity Normal
-  "silent"  -> localVerbosity Silent
-  _ -> const $
-    issueTypeError $ TypeErrorOther "unknown verbosity level (use \"debug\", \"normal\", or \"silent\")"
-setOption "render" = \case
-  "svg"   -> localRenderBackend (Just RenderSVG)
-  "latex" -> localRenderBackend (Just RenderLaTeX)
-  "none"  -> localRenderBackend Nothing
-  _ -> const $
-    issueTypeError $ TypeErrorOther "unknown render backend (use \"svg\", \"latex\", or \"none\")"
-setOption optionName = const $ const $
-  issueTypeError $ TypeErrorOther ("unknown option " <> show optionName)
-
-unsetOption :: String -> TypeCheck var a -> TypeCheck var a
-unsetOption "verbosity" = localVerbosity (verbosity emptyContext)
-unsetOption "render" = localRenderBackend (renderBackend emptyContext)
-unsetOption optionName = const $
-  issueTypeError $ TypeErrorOther ("unknown option " <> show optionName)
-
-paramToParamDecl :: Rzk.Param -> TypeCheck var [Rzk.ParamDecl]
-paramToParamDecl (Rzk.ParamPatternShapeDeprecated loc pat cube tope) = pure
-  [ Rzk.ParamTermShape loc (patternToTerm pat) cube tope ]
-paramToParamDecl (Rzk.ParamPatternShape loc pats cube tope) = pure
-  [ Rzk.ParamTermShape loc (patternToTerm pat) cube tope | pat <- pats]
-paramToParamDecl (Rzk.ParamPatternType loc pats ty) = pure
-  [ Rzk.ParamTermType loc (patternToTerm pat) ty | pat <- pats ]
-paramToParamDecl Rzk.ParamPattern{} = issueTypeError $
-  TypeErrorOther "untyped pattern in parameters"
-paramToParamDecl (Rzk.ParamPatternModalType loc pats md ty) = pure
-  [ Rzk.ParamTermModalType loc (patternToTerm pat) md ty | pat <- pats ] 
-
-addParamDecls :: [Rzk.ParamDecl] -> Rzk.Term -> Rzk.Term
-addParamDecls [] = id
-addParamDecls (paramDecl : paramDecls)
-  = Rzk.TypeFun Nothing paramDecl . addParamDecls paramDecls
-
-addParams :: [Rzk.Param] -> Rzk.Term -> Rzk.Term
-addParams []     = id
-addParams params = Rzk.Lambda Nothing params
-
-data TypeError var
-  = TypeErrorOther String
-  | TypeErrorUnify (TermT var) (TermT var) (TermT var)
-  | TypeErrorUnifyTerms (TermT var) (TermT var)
-  | TypeErrorNotPair (TermT var) (TermT var)
-  | TypeErrorNotModal (Term var) TModality (TermT var)
-  | TypeErrorModalityMismatch TModality TModality (Term var)
-  | TypeErrorUnaccessibleVar var TModality TModality
-  | TypeErrorNotTypeInModal (TermT var)
-  | TypeErrorNotFunction (TermT var) (TermT var)
-  | TypeErrorUnexpectedLambda (Term var) (TermT var)
-  | TypeErrorUnexpectedPair (Term var) (TermT var)
-  | TypeErrorUnexpectedRefl (Term var) (TermT var)
-  | TypeErrorCannotInferBareLambda (Term var)
-  | TypeErrorCannotInferBareRefl (Term var)
-  | TypeErrorUndefined var
-  | TypeErrorTopeNotSatisfied [TermT var] (TermT var)
-  | TypeErrorTopesNotEquivalent (TermT var) (TermT var)
-  | TypeErrorInvalidArgumentType (Term var) (TermT var)
-  | TypeErrorDuplicateTopLevel [VarIdent] VarIdent
-  | TypeErrorUnusedVariable var (TermT var)
-  | TypeErrorUnusedUsedVariables [var] var
-  | TypeErrorImplicitAssumption (var, TermT var) var
-  deriving (Functor, Foldable)
-
-data TypeErrorInContext var = TypeErrorInContext
-  { typeErrorError   :: TypeError var
-  , typeErrorContext :: Context var
-  } deriving (Functor, Foldable)
-
-data TypeErrorInScopedContext var
-  = PlainTypeError (TypeErrorInContext var)
-  | ScopedTypeError (Maybe VarIdent) (TypeErrorInScopedContext (Inc var))
-  deriving (Functor, Foldable)
-
-type TypeError' = TypeError VarIdent
-
-ppTypeError' :: TypeError' -> String
-ppTypeError' = \case
-  TypeErrorOther msg -> msg
-  TypeErrorUnify term expected actual -> block TopDown
-    [ "cannot unify expected type"
-    , "  " <> show (untyped expected)
-    , "with actual type"
-    , "  " <> show (untyped actual)
-    , "for term"
-    , "  " <> show (untyped term) ]
-  TypeErrorUnifyTerms expected actual -> block TopDown
-    [ "cannot unify term"
-    , "  " <> show (untyped expected)
-    , "with term"
-    , "  " <> show (untyped actual) ]
-  TypeErrorNotPair term ty -> block TopDown
-    [ "expected a cube product or dependent pair"
-    , "but got type"
-    , "  " <> show (untyped ty)
-    , "for term"
-    , "  " <> show (untyped term)
-    , case ty of
-        TypeFunT{} -> "\nPerhaps the term is applied to too few arguments?"
-        _          -> ""
-    ]
-  TypeErrorNotModal term m ty -> block TopDown
-    [ "expected modal type with <| " ++ show m ++ " | ? |>"
-    , "but got type"
-    , "  " <> show (untyped ty)
-    , "for term"
-    , "  " <> show term
-    ]
-  TypeErrorModalityMismatch expected actual term -> block TopDown
-    [ "modality mismatch"
-    , "  expected " <> show expected
-    , "  but got  " <> show actual
-    , "for term"
-    , "  " <> show term
-    ]
-  TypeErrorUnaccessibleVar _var varMod locks -> block TopDown
-    [ "variable is not accessible"
-    , "  variable has modality " <> show varMod
-    , "  but is used under locks " <> show locks
-    ]
-  TypeErrorNotTypeInModal ty -> block TopDown
-    [ "expected a type inside modal type"
-    , "but got"
-    , "  " <> show (untyped ty)
-    ]
-
-  TypeErrorUnexpectedLambda term ty -> block TopDown
-    [ "unexpected lambda abstraction"
-    , "  " <> show term
-    , "when typechecking against a non-function type"
-    , "  " <> show ty
-    ]
-  TypeErrorUnexpectedPair term ty -> block TopDown
-    [ "unexpected pair"
-    , "  " <> show term
-    , "when typechecking against a type that is not a product or a dependent sum"
-    , "  " <> show ty
-    ]
-  TypeErrorUnexpectedRefl term ty -> block TopDown
-    [ "unexpected refl"
-    , "  " <> show term
-    , "when typechecking against a type that is not an identity type"
-    , "  " <> show ty
-    ]
-
-  TypeErrorNotFunction term ty -> block TopDown
-    [ "expected a function or extension type"
-    , "but got type"
-    , "  " <> show (untyped ty)
-    , "for term"
-    , "  " <> show (untyped term)
-    , case term of
-        AppT _ty f _x -> "\nPerhaps the term\n  " <> show (untyped f) <> "\nis applied to too many arguments?"
-        _ -> ""
-    ]
-  TypeErrorCannotInferBareLambda term -> block TopDown
-    [ "cannot infer the type of the argument"
-    , "in lambda abstraction"
-    , "  " <> show term
-    ]
-  TypeErrorCannotInferBareRefl term -> block TopDown
-    [ "cannot infer the type of term"
-    , "  " <> show term
-    ]
-  TypeErrorUndefined var -> block TopDown
-    [ "undefined variable: " <> show (Pure var :: Term') ]
-  TypeErrorTopeNotSatisfied topes tope -> block TopDown
-    [ "local context is not included in (does not entail) the tope"
-    , "  " <> show (untyped tope)
-    , "in local context (normalised)"
-    , intercalate "\n" (map ("  " <>) (map show topes))
-    , intercalate "\n" (map ("  " <>) (map show (generateTopesForPoints (allTopePoints tope))))] -- FIXME: remove
-  TypeErrorTopesNotEquivalent expected actual -> block TopDown
-    [ "expected tope"
-    , "  " <> show (untyped expected)
-    , "but got"
-    , "  " <> show (untyped actual) ]
-
-  TypeErrorInvalidArgumentType argType argKind -> block TopDown
-    [ "invalid function parameter type"
-    , "  " <> show argType
-    , "function parameter can be a cube, a shape, or a type"
-    , "but given parameter type has type"
-    , "  " <> show (untyped argKind)
-    ]
-
-  TypeErrorDuplicateTopLevel previous lastName -> block TopDown
-    [ "duplicate top-level definition"
-    , "  " <> ppVarIdentWithLocation lastName
-    , "previous top-level definitions found at"
-    , intercalate "\n"
-      [ "  " <> ppVarIdentWithLocation name
-      | name <- previous ]
-    ]
-
-  TypeErrorUnusedVariable name type_ -> block TopDown
-    [ "unused variable"
-    , "  " <> Rzk.printTree (getVarIdent name) <> " : " <> show (untyped type_)
-    ]
-
-  TypeErrorUnusedUsedVariables vars name -> block TopDown
-    [ "unused variables"
-    , "  " <> intercalate " " (map (Rzk.printTree . getVarIdent) vars)
-    , "declared as used in definition of"
-    , "  " <> Rzk.printTree (getVarIdent name)
-    ]
-
-  TypeErrorImplicitAssumption (a, aType) name -> block TopDown
-    [ "implicit assumption"
-    , "  " <> Rzk.printTree (getVarIdent a) <> " : " <> show (untyped aType)
-    , "used in definition of"
-    , "  " <> Rzk.printTree (getVarIdent name)
-    ]
-
-
-ppTypeErrorInContext :: OutputDirection -> TypeErrorInContext VarIdent -> String
-ppTypeErrorInContext dir TypeErrorInContext{..} = block dir
-  [ ppTypeError' typeErrorError
-  , ""
-  , ppContext' dir typeErrorContext
-  ]
-
-ppTypeErrorInScopedContextWith'
-  :: OutputDirection
-  -> [VarIdent]
-  -> [VarIdent]
-  -> TypeErrorInScopedContext VarIdent
-  -> String
-ppTypeErrorInScopedContextWith' dir used vars = \case
-  PlainTypeError err -> ppTypeErrorInContext dir err
-  ScopedTypeError orig err -> withFresh orig $ \(x, xs) ->
-    ppTypeErrorInScopedContextWith' dir (x:used) xs $ fmap (g x) err
-  where
-    g x Z     = x
-    g _ (S y) = y
-
-    withFresh Nothing f =
-      case vars of
-        x:xs -> f (x, xs)
-        _    -> panicImpossible "not enough fresh variables"
-    withFresh (Just z) f = f (z', filter (/= z') vars)    -- FIXME: very inefficient filter
-      where
-        z' = refreshVar used z -- FIXME: inefficient
-
-ppTypeErrorInScopedContext' :: OutputDirection -> TypeErrorInScopedContext VarIdent -> String
-ppTypeErrorInScopedContext' dir err =
-  ppTypeErrorInScopedContextWith' dir vars (defaultVarIdents \\ vars) err
-  where
-    vars = nub (foldMap pure err)
-
-issueWarning :: String -> TypeCheck var ()
-issueWarning message = do
-  trace ("Warning: " <> message) $
-    return ()
-
-fromTypeError :: TypeError var -> TypeCheck var (TypeErrorInScopedContext var)
-fromTypeError err = do
-  context <- ask
-  return $ PlainTypeError $ TypeErrorInContext
-    { typeErrorError = err
-    , typeErrorContext = context
-    }
-
-issueTypeError :: TypeError var -> TypeCheck var a
-issueTypeError err = fromTypeError err >>= throwError
-
-panicImpossible :: String -> a
-panicImpossible msg = error $ unlines
-  [ "PANIC! Impossible happened (" <> msg <> ")!"
-  , "Please, report a bug at https://github.com/rzk-lang/rzk/issues"
-    -- TODO: add details and/or instructions how to produce an artifact for reproducing
-  ]
-
-data Action var
-  = ActionTypeCheck (Term var) (TermT var)
-  | ActionUnify (TermT var) (TermT var) (TermT var)
-  | ActionUnifyTerms (TermT var) (TermT var)
-  | ActionInfer (Term var)
-  | ActionContextEntailedBy [TermT var] (TermT var)
-  | ActionContextEntails [TermT var] (TermT var)
-  | ActionContextEquiv [TermT var] [TermT var]
-  | ActionWHNF (TermT var)
-  | ActionNF (TermT var)
-  | ActionCheckCoherence (TermT var, TermT var) (TermT var, TermT var)
-  | ActionCloseSection (Maybe Rzk.SectionName)
-  | ActionCheckLetValue (Maybe VarIdent)
-  deriving (Functor, Foldable)
-
-type Action' = Action VarIdent
-
-ppTermInContext :: Eq var => TermT var -> TypeCheck var String
-ppTermInContext term =  do
-  vars <- freeVarsT_ term
-  let mapping = zip vars defaultVarIdents
-      toRzkVarIdent origs var = fromMaybe "_" $
-        join (lookup var origs) <|> lookup var mapping
-  origs <- asks varOrigs
-  return (show (untyped (toRzkVarIdent origs <$> term)))
-
-ppSomeAction :: Eq var => [(var, Maybe VarIdent)] -> Int -> Action var -> String
-ppSomeAction origs n action = ppAction n (toRzkVarIdent <$> action)
-  where
-    vars = nub (foldMap pure action)
-    mapping = zip vars defaultVarIdents
-    toRzkVarIdent var = fromMaybe "_" $
-      join (lookup var origs) <|> lookup var mapping
-
-ppAction :: Int -> Action' -> String
-ppAction n = unlines . map (replicate (2 * n) ' ' <>) . \case
-  ActionTypeCheck term ty ->
-    [ "typechecking"
-    , "  " <> show term
-    , "against type"
-    , "  " <> show (untyped ty) ]
-
-  ActionUnify term expected actual ->
-    [ "unifying expected type"
-    , "  " <> show (untyped expected)
-    , "with actual type"
-    , "  " <> show (untyped actual)
-    , "for term"
-    , "  " <> show (untyped term) ]
-
-  ActionUnifyTerms expected actual ->
-    [ "unifying term (expected)"
-    , "  " <> show expected
-    , "with term (actual)"
-    , "  " <> show actual ]
-
-  ActionInfer term ->
-    [ "inferring type for term"
-    , "  " <> show term ]
-
-  ActionContextEntailedBy ctxTopes term ->
-    [ "checking if local context"
-    , intercalate "\n" (map (("  " <>) . show . untyped) ctxTopes)
-    , "includes (is entailed by) restriction tope"
-    , "  " <> show (untyped term) ]
-
-  ActionContextEntails ctxTopes term ->
-    [ "checking if local context"
-    , intercalate "\n" (map (("  " <>) . show . untyped) ctxTopes)
-    , "is included in (entails) the tope"
-    , "  " <> show (untyped term) ]
-
-  ActionContextEquiv ctxTopes terms ->
-    [ "checking if local context"
-    , intercalate "\n" (map (("  " <>) . show . untyped) ctxTopes)
-    , "is equivalent to the union of the topes"
-    , intercalate "\n" (map (("  " <>) . show . untyped) terms) ]
-
-  ActionWHNF term ->
-    [ "computing WHNF for term"
-    , "  " <> show term ]
-
-  ActionNF term ->
-    [ "computing normal form for term"
-    , "  " <> show (untyped term) ]
-
-  ActionCheckCoherence (ltope, lterm) (rtope, rterm) ->
-    [ "checking coherence for"
-    , "  " <> show (untyped ltope)
-    , "  |-> " <> show (untyped lterm)
-    , "and"
-    , "  " <> show (untyped rtope)
-    , "  |-> " <> show (untyped rterm) ]
-
-  ActionCloseSection Nothing ->
-    [ "closing the file"
-    , "and collecting assumptions (variables)" ]
-  ActionCloseSection (Just sectionName) ->
-    [ "closing #section " <> Rzk.printTree sectionName
-    , "and collecting assumptions (variables)"]
-
-  ActionCheckLetValue orig ->
-    [ "checking the local definition "
-        <> maybe "_" (Rzk.printTree . getVarIdent) orig ]
-
-
-traceAction' :: Int -> Action' -> a -> a
-traceAction' n action = trace ("[debug]\n" <> ppAction n action)
-
-unsafeTraceAction' :: Int -> Action var -> a -> a
-unsafeTraceAction' n = traceAction' n . unsafeCoerce
-
-data LocationInfo = LocationInfo
-  { locationFilePath :: Maybe FilePath
-  , locationLine     :: Maybe Int
-  } deriving (Eq)
-
-data Verbosity
-  = Debug
-  | Normal
-  | Silent
-  deriving (Eq, Ord)
-
-trace' :: Verbosity -> Verbosity -> String -> a -> a
-trace' msgLevel currentLevel
-  | currentLevel <= msgLevel = trace
-  | otherwise                = const id
-
-traceTypeCheck :: Verbosity -> String -> TypeCheck var a -> TypeCheck var a
-traceTypeCheck msgLevel msg tc = do
-  Context{..} <- ask
-  trace' msgLevel verbosity msg tc
-
-localVerbosity :: Verbosity -> TypeCheck var a -> TypeCheck var a
-localVerbosity v = local $ \Context{..} -> Context { verbosity = v, .. }
-
-localRenderBackend :: Maybe RenderBackend -> TypeCheck var a -> TypeCheck var a
-localRenderBackend v = local $ \Context{..} -> Context { renderBackend = v, .. }
-
-data Covariance
-  = Covariant     -- ^ Positive position.
-  | Contravariant -- ^ Negative position.
-  | Invariant     -- ^ Unknown position.
-
-data RenderBackend
-  = RenderSVG
-  | RenderLaTeX
-
-data ScopeInfo var = ScopeInfo
-  { scopeName :: Maybe Rzk.SectionName
-  , scopeVars :: [(var, VarInfo var)]
-  } deriving (Functor, Foldable)
-
-addVarToScope :: var -> VarInfo var -> ScopeInfo var -> ScopeInfo var
-addVarToScope var info ScopeInfo{..} = ScopeInfo
-  { scopeVars = (var, info) : scopeVars, .. }
-
-addModalityToScope :: TModality -> ScopeInfo var -> ScopeInfo var
-addModalityToScope md ScopeInfo{..} = ScopeInfo
-  { scopeVars = map (\(var, VarInfo{..}) -> (var, VarInfo{ modAccum = comp modAccum md, ..})) scopeVars, .. }
-
-data VarInfo var = VarInfo
-  { varType                :: TermT var
-  , varValue               :: Maybe (TermT var)
-  , varModality            :: TModality
-  , modAccum               :: TModality
-  , varOrig                :: Maybe VarIdent
-  , varIsAssumption        :: Bool -- FIXME: perhaps, introduce something like decl kind?
-  , varIsTopLevel          :: Bool
-  , varDeclaredAssumptions :: [var]
-  , varLocation            :: Maybe LocationInfo
-  } deriving (Functor, Foldable)
-
-
-class ModeTheory m where
-    iden :: m
-    comp :: m -> m -> m
-    coe :: m -> m -> Bool
-
-instance ModeTheory TModality where
-  iden = Id
-
-  comp Flat Flat   = Flat
-  comp Flat Sharp  = Flat
-  comp Flat Op     = Flat
-  comp Op Flat     = Flat
-  comp Sharp Sharp = Sharp
-  comp Sharp Flat  = Sharp
-  comp Sharp Op    = Sharp
-  comp Op Sharp    = Sharp
-  comp Op Op       = Id
-  comp Id m        = m
-  comp m Id        = m
-
-  coe Flat Id    = True
-  coe Id Sharp   = True
-  coe Flat Sharp = True
-  coe a b        = a == b
-
-data Context var = Context
-  { localScopes            :: [ScopeInfo var]
-  , localTopes             :: [TermT var]
-  , localTopesNF           :: [TermT var]
-  , localTopesNFUnion      :: [[TermT var]]
-  , localTopesEntailBottom :: Bool
-  , actionStack            :: [Action var]
-  , currentCommand         :: Maybe Rzk.Command
-  , location               :: Maybe LocationInfo
-  , verbosity              :: Verbosity
-  , covariance             :: Covariance
-  , renderBackend          :: Maybe RenderBackend
-  } deriving (Functor, Foldable)
-
-addVarInCurrentScope :: var -> VarInfo var -> Context var -> Context var
-addVarInCurrentScope var info Context{..} = Context
-  { localScopes =
-      case localScopes of
-        []             -> [ScopeInfo Nothing [(var, info)]]
-        scope : scopes -> addVarToScope var info scope : scopes
-  , .. }
-
-applyModalityToScopes :: TModality -> [ScopeInfo var] -> [ScopeInfo var]
-applyModalityToScopes md scopes = map (addModalityToScope md) scopes
-
-applyModality :: TModality -> Context var -> Context var
-applyModality md Context{..} = Context { localScopes = applyModalityToScopes md localScopes, .. }
-
-emptyContext :: Context var
-emptyContext = Context
-  { localScopes = [ScopeInfo Nothing []]
-  , localTopes = [topeTopT]
-  , localTopesNF = [topeTopT]
-  , localTopesNFUnion = [[topeTopT]]
-  , localTopesEntailBottom = False
-  , actionStack = []
-  , currentCommand = Nothing
-  , location = Nothing
-  , verbosity = Normal
-  , covariance = Covariant
-  , renderBackend = Nothing
-  }
-
-askCurrentScope :: TypeCheck var (ScopeInfo var)
-askCurrentScope = asks localScopes >>= \case
-  []              -> panicImpossible "no current scope available"
-  scope : _scopes -> pure scope
-
-varInfos :: Context var -> [(var, VarInfo var)]
-varInfos Context{..} = concatMap scopeVars localScopes
-
-varTypes :: Context var -> [(var, TermT var)]
-varTypes = map (fmap varType) . varInfos
-
-varValues :: Context var -> [(var, Maybe (TermT var))]
-varValues = map (fmap varValue) . varInfos
-
-varOrigs :: Context var -> [(var, Maybe VarIdent)]
-varOrigs = map (fmap varOrig) . varInfos
-
-varModalities :: Context var -> [(var, TModality)]
-varModalities = map (fmap varModality) . varInfos
-
-varLocks :: Context var -> [(var, TModality)]
-varLocks = map (fmap modAccum) . varInfos
-
-varTopLevels :: Context var -> [(var, Bool)]
-varTopLevels = map (fmap varIsTopLevel) . varInfos
-
-withPartialDecls
-  :: TypeCheck VarIdent ([Decl'], [err])
-  -> TypeCheck VarIdent ([Decl'], [err])
-  -> TypeCheck VarIdent ([Decl'], [err])
-withPartialDecls tc next = do
-  (decls, errs) <- tc
-  if null errs
-    then first (decls <>)
-      <$> localDeclsPrepared decls next
-    else return (decls, errs)
-
-withSection
-  :: Maybe Rzk.SectionName
-  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
-  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
-  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
-withSection name sectionBody =
-  withPartialDecls $ startSection name $ do
-    (decls, errs) <- sectionBody
-    localDeclsPrepared decls $
-      performing (ActionCloseSection name) $ do
-        result <- (Right <$> endSection errs) `catchError` (return . Left)
-        case result of
-          Left err              -> return ([], errs <> [err])
-          Right (decls', errs') -> return (decls', errs')
-        -- (\ decls' -> (decls', errs)) <$> endSection errs
-
-startSection :: Maybe Rzk.SectionName -> TypeCheck VarIdent a -> TypeCheck VarIdent a
-startSection name = local $ \Context{..} -> Context
-  { localScopes = ScopeInfo { scopeName = name, scopeVars = [] } : localScopes
-  , .. }
-
-endSection :: [TypeErrorInScopedContext VarIdent] -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
-endSection errs = askCurrentScope >>= scopeToDecls errs
-
-scopeToDecls :: Eq var => [TypeErrorInScopedContext var] -> ScopeInfo var -> TypeCheck var ([Decl var], [TypeErrorInScopedContext var])
-scopeToDecls errs ScopeInfo{..} = do
-  (decls, errs') <- collectScopeDecls errs [] scopeVars
-  -- only issue unused variable errors if there were no errors prior in the section
-  -- when (null errs) $ do
-  unusedErrors <- forM decls $ \Decl{..} -> do
-    let unusedUsedVars = declUsedVars `intersect` map fst scopeVars
-    if null errs && not (null unusedUsedVars)
-      then do
-        err <- local (\c -> c { location = declLocation }) $
-          fromTypeError (TypeErrorUnusedUsedVariables unusedUsedVars declName)
-        return [err]
-      else return []
-  return (decls, errs' <> concat unusedErrors)
-
-insertExplicitAssumptionFor
-  :: Eq var => var -> (var, VarInfo var) -> TermT var -> TermT var
-insertExplicitAssumptionFor a (declName, VarInfo{..}) term =
-  term >>= \case
-    y | y == declName -> appT varType (Pure declName) (Pure a)
-      | otherwise     -> Pure y
-
-insertExplicitAssumptionFor'
-  :: Eq var => var -> (var, VarInfo var) -> VarInfo var -> VarInfo var
-insertExplicitAssumptionFor' a decl VarInfo{..}
-  | varIsAssumption = VarInfo{..}
-  | otherwise = VarInfo
-      { varType = insertExplicitAssumptionFor a decl varType
-      , varValue = insertExplicitAssumptionFor a decl <$> varValue
-      , varIsAssumption = varIsAssumption
-      , varIsTopLevel = varIsTopLevel
-      , varModality = varModality
-      , modAccum = modAccum
-      , varOrig = varOrig
-      , varDeclaredAssumptions = varDeclaredAssumptions
-      , varLocation = varLocation
-      }
-
-makeAssumptionExplicit
-  :: Eq var
-  => (var, VarInfo var)
-  -> [(var, VarInfo var)]
-  -> TypeCheck var (Bool, [(var, VarInfo var)])
-makeAssumptionExplicit _ [] = pure (False {- UNUSED -}, [])
-makeAssumptionExplicit assumption@(a, aInfo) ((x, xInfo) : xs) = do
-  varsInType <- freeVarsT_ (varType xInfo)
-  varsInBody <- concat <$> traverse freeVarsT_ (varValue xInfo)
-  let xFreeVars = varsInBody <> varsInType
-  let hasAssumption = a `elem` xFreeVars
-  xType <- typeOfVar x
-  xValue <- valueOfVar x
-  let assumptionInType = a `elem` freeVars (untyped xType)
-      assumptionInBody = a `elem` foldMap (freeVars . untyped) xValue
-      implicitAssumption = and
-        [ hasAssumption
-        , not (assumptionInType || assumptionInBody)
-        , a `notElem` varDeclaredAssumptions xInfo ]
-  if hasAssumption
-     then do
-       when implicitAssumption $ do
-         issueTypeError $ TypeErrorImplicitAssumption (a, varType aInfo) x
-       (_used, xs'') <- makeAssumptionExplicit (a, aInfo) xs'
-       return (True {- USED -}, (x, xInfo') : xs'')
-     else do
-       (used, xs'') <- makeAssumptionExplicit assumption xs
-       return (used, (x, xInfo) : xs'')
-  where
-    xType' = typeFunT (varOrig aInfo) (varType aInfo) Nothing (abstract a (varType xInfo))
-    xInfo' = VarInfo
-      { varType = xType'
-      , varValue = fmap (lambdaT xType' (varOrig aInfo) Nothing . abstract a) (varValue xInfo)
-      , varIsAssumption = varIsAssumption xInfo
-      , varIsTopLevel = varIsTopLevel xInfo
-      , varModality = Id
-      , modAccum = Id
-      , varOrig = varOrig xInfo
-      , varDeclaredAssumptions = varDeclaredAssumptions xInfo \\ [a]
-      , varLocation = varLocation xInfo
-      }
-    xs' = map (fmap (insertExplicitAssumptionFor' a (x, xInfo))) xs
-
-collectScopeDecls :: Eq var => [TypeErrorInScopedContext var] -> [(var, VarInfo var)] -> [(var, VarInfo var)] -> TypeCheck var ([Decl var], [TypeErrorInScopedContext var])
-collectScopeDecls errs recentVars (decl@(var, VarInfo{..}) : vars)
-  | varIsAssumption = do
-      (used, recentVars') <- makeAssumptionExplicit decl recentVars
-      -- only issue unused vars error if there were no other errors previously
-      -- when (null errs) $ do
-      unusedErr <-
-        if null errs && not used
-          then local (\c -> c { location = varLocation }) $
-            pure <$> fromTypeError (TypeErrorUnusedVariable var varType)
-          else return []
-      collectScopeDecls (errs <> unusedErr) recentVars' vars
-  | otherwise = do
-      collectScopeDecls errs (decl : recentVars) vars
-collectScopeDecls errs recentVars [] = do
-  loc <- asks location
-  return (toDecl loc <$> recentVars, errs)
-  where
-    toDecl loc (var, VarInfo{..}) = Decl
-      { declName = var
-      , declType = varType
-      , declValue = varValue
-      , declIsAssumption = varIsAssumption
-      , declUsedVars = varDeclaredAssumptions
-      , declLocation = updatePosition (varOrig >>= fmap fst . Rzk.hasPosition . fromVarIdent) <$> loc -- FIXME
-      }
-    updatePosition Nothing l       = l
-    updatePosition (Just lineNo) l = l { locationLine = Just lineNo }
-
-abstractAssumption :: Eq var => (var, VarInfo var) -> Decl var -> Decl var
-abstractAssumption (var, VarInfo{..}) Decl{..} = Decl
-  { declName = declName
-  , declType = typeFunT varOrig varType Nothing (abstract var declType)
-  , declValue = (\body -> lambdaT newDeclType varOrig Nothing (abstract var body)) <$> declValue
-  , declIsAssumption = declIsAssumption
-  , declUsedVars = declUsedVars
-  , declLocation = declLocation
-  }
-  where
-    newDeclType = typeFunT varOrig varType Nothing (abstract var declType)
-
-data OutputDirection = TopDown | BottomUp
-  deriving (Eq)
-
-block :: OutputDirection -> [String] -> String
-block TopDown  = intercalate "\n"
-block BottomUp = intercalate "\n" . reverse
-
-namedBlock :: OutputDirection -> String -> [String] -> String
-namedBlock dir name lines_ = block dir $
-  name : map indent lines_
-  where
-    indent = intercalate "\n" . (map ("  " ++)) . lines
-
-ppContext' :: OutputDirection -> Context VarIdent -> String
-ppContext' dir ctx@Context{..} = block dir $ dropWhile null
-  [ block TopDown
-    [ case location of
-        _ | dir == TopDown -> "" -- FIXME
-        Just (LocationInfo (Just path) (Just lineNo)) ->
-          path <> " (line " <> show lineNo <> "):"
-        Just (LocationInfo (Just path) _) ->
-          path <> ":"
-        _  -> ""
-    , case currentCommand of
-        Just (Rzk.CommandDefine _loc name _vars _params _ty _term) ->
-          "  Error occurred when checking\n    #define " <> Rzk.printTree name
-        Just (Rzk.CommandPostulate _loc name _vars _params _ty ) ->
-          "  Error occurred when checking\n    #postulate " <> Rzk.printTree name
-        Just (Rzk.CommandCheck _loc term ty) ->
-          "  Error occurred when checking\n    " <> Rzk.printTree term <> " : " <> Rzk.printTree ty
-        Just (Rzk.CommandCompute _loc term) ->
-          "  Error occurred when computing\n    " <> Rzk.printTree term
-        Just (Rzk.CommandComputeNF _loc term) ->
-          "  Error occurred when computing NF for\n    " <> Rzk.printTree term
-        Just (Rzk.CommandComputeWHNF _loc term) ->
-          "  Error occurred when computing WHNF for\n    " <> Rzk.printTree term
-        Just (Rzk.CommandSetOption _loc optionName _optionValue) ->
-          "  Error occurred when trying to set option\n    #set-option " <> show optionName
-        Just command@Rzk.CommandUnsetOption{} ->
-          "  Error occurred when trying to unset option\n    " <> Rzk.printTree command
-        Just command@Rzk.CommandAssume{} ->
-          "  Error occurred when checking assumption\n    " <> Rzk.printTree command
-        Just (Rzk.CommandSection _loc name) ->
-          "  Error occurred when checking\n    #section " <> Rzk.printTree name
-        Just (Rzk.CommandSectionEnd _loc name) ->
-          "  Error occurred when checking\n    #end " <> Rzk.printTree name
-        Nothing -> "  Error occurred outside of any command!"
-    ]
-  , ""
-  , case filter (/= topeTopT) localTopes of
-      [] -> "Local tope context is unrestricted (⊤)."
-      localTopes' -> namedBlock TopDown "Local tope context:"
-        [ "  " <> show (untyped tope)
-        | tope <- localTopes' ]
-  , ""
-  , block dir
-    [ "when " <> ppAction 0 action
-    | action <- actionStack ]
-  , namedBlock TopDown "Definitions in context:"
-    [ block dir
-      [ show (Pure x :: Term') <> " : " <> show (untyped ty)
-      | (x, ty) <- reverse (varTypes ctx) ] ]
-  ]
-
-doesShadowName :: VarIdent -> TypeCheck var [VarIdent]
-doesShadowName name = asks $ \ctx ->
-  filter (name ==) (mapMaybe snd (varOrigs ctx))
-
-checkTopLevelDuplicate :: VarIdent -> TypeCheck var ()
-checkTopLevelDuplicate name = do
-  doesShadowName name >>= \case
-    []         -> return ()
-    collisions -> issueTypeError $
-      TypeErrorDuplicateTopLevel collisions name
-
-checkNameShadowing :: VarIdent -> TypeCheck var ()
-checkNameShadowing name = do
-  doesShadowName name >>= \case
-    [] -> return ()
-    collisions -> issueWarning $
-      Rzk.printTree (getVarIdent name) <> " shadows an existing definition:"
-      <> unlines
-        [ "  " <> ppVarIdentWithLocation name
-        , "previous top-level definitions found at"
-        , intercalate "\n"
-          [ "  " <> ppVarIdentWithLocation prev | prev <- collisions ] ]
-
-withLocation :: LocationInfo -> TypeCheck var a -> TypeCheck var a
-withLocation loc = local $ \Context{..} -> Context { location = Just loc, .. }
-
-withCommand :: Rzk.Command -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent]) -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
-withCommand command tc = local f $ do
-  result <- (Right <$> tc) `catchError` (return . Left)
-  case result of
-    Left err            -> return ([], [err])
-    Right (decls, errs) -> return (decls, errs)
-  where
-    f Context{..} = Context
-      { currentCommand = Just command
-      , location = updatePosition (Rzk.hasPosition command) <$> location
-      , .. }
-    updatePosition pos loc = loc { locationLine = fst <$> pos }
-
-localDecls :: [Decl VarIdent] -> TypeCheck VarIdent a -> TypeCheck VarIdent a
-localDecls []             = id
-localDecls (decl : decls) = localDecl decl . localDecls decls
-
-localDeclsPrepared :: [Decl VarIdent] -> TypeCheck VarIdent a -> TypeCheck VarIdent a
-localDeclsPrepared [] = id
-localDeclsPrepared (decl : decls) = localDeclPrepared decl . localDeclsPrepared decls
-
-localDecl :: Decl VarIdent -> TypeCheck VarIdent a -> TypeCheck VarIdent a
-localDecl (Decl x ty term isAssumption vars loc) tc = do
-  ty' <- whnfT ty
-  term' <- traverse whnfT term
-  localDeclPrepared (Decl x ty' term' isAssumption vars loc) tc
-
-localDeclPrepared :: Decl VarIdent -> TypeCheck VarIdent a -> TypeCheck VarIdent a
-localDeclPrepared (Decl x ty term isAssumption vars loc) tc = do
-  checkTopLevelDuplicate x
-  local update tc
-  where
-    update = addVarInCurrentScope x VarInfo
-      { varType = ty
-      , varValue = term
-      , varOrig = Just x
-      , varModality  = Id
-      , modAccum = Id
-      , varIsAssumption = isAssumption
-      , varIsTopLevel = True
-      , varDeclaredAssumptions = vars
-      , varLocation = loc
-      }
-
-type TypeCheck var = ReaderT (Context var) (Except (TypeErrorInScopedContext var))
-
-freeVarsT_ :: Eq var => TermT var -> TypeCheck var [var]
-freeVarsT_ term = do
-  types <- asks varTypes
-  let typeOfVar' x =
-        case lookup x types of
-          Nothing -> panicImpossible "undefined variable"
-          Just ty -> ty
-  return (freeVarsT typeOfVar' term)
-
-traceStartAndFinish :: Show a => String -> a -> a
-traceStartAndFinish tag = trace ("start [" <> tag <> "]") .
-  (\x -> trace ("finish [" <> tag <> "] with " <> show x) x)
-
-entail :: Eq var => [TermT var] -> TermT var -> Bool
-entail topes tope = all (`solveRHS` tope) $
-  saturateTopes (allTopePoints tope) <$>
-    simplifyLHSwithDisjunctions topes'
-  where
-    topes' = nubTermT (topes <> generateTopesForPoints (allTopePoints tope))
-
-entailM :: Eq var => [TermT var] -> TermT var -> TypeCheck var Bool
-entailM topes tope = do
-  -- genTopes <- generateTopesForPointsM (allTopePoints tope)
-  discreteAxioms <- generateTopesForModalCubeVarsM
-  invAxioms <- mapM nfTope (concatMap generateInvAxioms topes)
-  let flipAxioms  = concatMap generateFlipAxioms topes
-      flatAxioms  = concatMap generateFlatAxioms topes
-      sharpAxioms = concatMap generateSharpAxioms topes
-      topes'    = nubTermT (topes <> discreteAxioms <> flipAxioms <> invAxioms <> flatAxioms <> sharpAxioms)
-      topes''   = simplifyLHSwithDisjunctions topes'
-      topes'''  = saturateTopes (allTopePoints tope) <$> topes''
-  prettyTopes <- mapM ppTermInContext (saturateTopes (allTopePoints tope) (simplifyLHS topes'))
-  prettyTope <- ppTermInContext tope
-  traceTypeCheck Debug
-    ("entail " <> intercalate ", " prettyTopes <> " |- " <> prettyTope) $
-      and <$> mapM (`solveRHSM` tope) topes'''
-
-generateFlipAxioms :: TermT var -> [TermT var]
-generateFlipAxioms = \case
-  TopeEQT _ t Cube2_0T{} -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_1T]
-  TopeEQT _ Cube2_0T{} t -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_1T]
-  TopeEQT _ t Cube2_1T{} -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_0T]
-  TopeEQT _ Cube2_1T{} t -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_0T]
-  _ -> []
-
-generateInvAxioms :: TermT var -> [TermT var]
-generateInvAxioms = \case
-  TypeModalT _ Op inner -> [topeUninvT inner]
-  t -> [typeModalT topeT Op (topeInvT t)]
-
-
-generateFlatAxioms :: TermT var -> [TermT var]
-generateFlatAxioms = \case
-  TypeModalT _ Flat inner -> [inner]
-  _ -> []
-
-
-generateSharpAxioms :: TermT var -> [TermT var]
-generateSharpAxioms = \case
-  t -> [typeModalT topeT Sharp t]
-
-generateTopesForModalCubeVarsM :: Eq var => TypeCheck var [TermT var]
-generateTopesForModalCubeVarsM = do
-  infos <- asks varInfos
-  fmap (nubTermT . concat) $ forM infos $ \(var, info) -> do
-    ty' <- whnfT (varType info)
-    case ty' of
-      TypeModalT _ Flat inner -> do
-        inner' <- whnfT inner
-        if inner' == cube2T
-          then do
-            let pt = modExtractT cube2T Id Flat (Pure var)
-            return [topeOrT (topeEQT pt cube2_0T) (topeEQT pt cube2_1T)]
-          else return []
-      _ -> return []
-
-entailTraceM :: Eq var => [TermT var] -> TermT var -> TypeCheck var Bool
-entailTraceM topes tope = do
-  topes' <- mapM ppTermInContext topes
-  tope' <- ppTermInContext tope
-  result <- trace ("entail " <> intercalate ", " topes' <> " |- " <> tope') $
-        topes `entailM` tope
-  return $ trace ("  " <> show result) result
-
-nubTermT :: Eq var => [TermT var] -> [TermT var]
-nubTermT []     = []
-nubTermT (t:ts) = t : nubTermT (filter (/= t) ts)
-
-saturateTopes :: Eq var => [TermT var] -> [TermT var] -> [TermT var]
-saturateTopes _points topes = saturateWith
-  (\tope ts -> tope `elem` ts)
-  generateTopes
-  topes
-
--- FIXME: cleanup
-saturateWith :: (a -> [a] -> Bool) -> ([a] -> [a] -> [a]) -> [a] -> [a]
-saturateWith elem' step zs = go (nub' zs) []
-  where
-    go lastNew xs
-      | null new = lastNew
-      | otherwise = lastNew <> go new xs'
-      where
-        xs' = lastNew <> xs
-        new = filter (not . (`elem'` xs')) (nub' $ step lastNew xs)
-    nub' []     = []
-    nub' (x:xs) = x : nub' (filter (not . (`elem'` [x])) xs)
-
-generateTopes :: Eq var => [TermT var] -> [TermT var] -> [TermT var]
-generateTopes newTopes oldTopes
-  | topeBottomT `elem` newTopes = []
-  | topeEQT cube2_0T cube2_1T `elem` newTopes = [topeBottomT]
-  | length oldTopes > 100 = []    -- FIXME
-  | otherwise = concat
-      [  -- symmetry EQ
-        [ topeEQT y x | TopeEQT _ty x y <- newTopes ]
-        -- transitivity EQ (1)
-      , [ topeEQT x z
-        | TopeEQT _ty x y : newTopes' <- tails newTopes
-        , TopeEQT _ty y' z <- newTopes' <> oldTopes
-        , y == y' ]
-        -- transitivity EQ (2)
-      , [ topeEQT x z
-        | TopeEQT _ty y z : newTopes' <- tails newTopes
-        , TopeEQT _ty x y' <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- transitivity LEQ (1)
-      , [ topeLEQT x z
-        | TopeLEQT _ty x y : newTopes' <- tails newTopes
-        , TopeLEQT _ty y' z <- newTopes' <> oldTopes
-        , y == y' ]
-        -- transitivity LEQ (2)
-      , [ topeLEQT x z
-        | TopeLEQT _ty y z : newTopes' <- tails newTopes
-        , TopeLEQT _ty x y' <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- antisymmetry LEQ
-      , [ topeEQT x y
-        | TopeLEQT _ty x y : newTopes' <- tails newTopes
-        , TopeLEQT _ty y' x' <- newTopes' <> oldTopes
-        , y == y'
-        , x == x' ]
-
-        -- FIXME: special case of substitution of EQ
-        -- transitivity EQ-LEQ (1)
-      , [ topeLEQT x z
-        | TopeEQT  _ty y z : newTopes' <- tails newTopes
-        , TopeLEQT _ty x y' <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- FIXME: special case of substitution of EQ
-        -- transitivity EQ-LEQ (2)
-      , [ topeLEQT x z
-        | TopeEQT  _ty x y : newTopes' <- tails newTopes
-        , TopeLEQT _ty y' z <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- FIXME: special case of substitution of EQ
-        -- transitivity EQ-LEQ (3)
-      , [ topeLEQT x z
-        | TopeLEQT  _ty y z : newTopes' <- tails newTopes
-        , TopeEQT _ty x y' <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- FIXME: special case of substitution of EQ
-        -- transitivity EQ-LEQ (4)
-      , [ topeLEQT x z
-        | TopeLEQT  _ty x y : newTopes' <- tails newTopes
-        , TopeEQT _ty y' z <- newTopes' <> oldTopes
-        , y == y' ]
-
-        -- FIXME: consequence of LEM for LEQ and antisymmetry for LEQ
-      , [ topeEQT x y | TopeLEQT _ty x y@Cube2_0T{} <- newTopes ]
-        -- FIXME: consequence of LEM for LEQ and antisymmetry for LEQ
-      , [ topeEQT x y | TopeLEQT _ty x@Cube2_1T{} y <- newTopes ]
-      ]
-
-generateTopesForPoints :: Eq var => [TermT var] -> [TermT var]
-generateTopesForPoints points = nubTermT $ concat
-  [ [ topeOrT (topeLEQT x y) (topeLEQT y x)
-    | x : points' <- tails (filter (`notElem` [cube2_0T, cube2_1T]) points)
-    , y <- points'
-    , x /= y ]
-  ]
-
-generateTopesForPointsM :: Eq var => [TermT var] -> TypeCheck var [TermT var]
-generateTopesForPointsM points = do
-  let pairs = nub $ concat
-        [ [ (x, y)
-          | x : points' <- tails (filter (`notElem` [cube2_0T, cube2_1T]) points)
-          , y <- points'
-          , x /= y ]
-        ]
-  stars <- forM points $ \x -> do 
-    xType <- typeOf x 
-    return $ if (xType == cubeUnitT) 
-      then [topeEQT x cubeUnitStarT] 
-      else []
-  topes <- forM pairs $ \(x, y) -> do
-    xType <- typeOf x
-    yType <- typeOf y
-    return $ if (xType == cube2T) && (yType == cube2T)
-      then [topeOrT (topeLEQT x y) (topeLEQT y x)]
-      else []
-  return (concat (topes ++ stars))
-
-allTopePoints :: Eq var => TermT var -> [TermT var]
-allTopePoints = nubTermT . foldMap subPoints . nubTermT . topePoints
-
-topePoints :: TermT var -> [TermT var]
-topePoints = \case
-  TopeTopT{}     -> []
-  TopeBottomT{}  -> []
-  TopeAndT _ l r -> topePoints l <> topePoints r
-  TopeOrT  _ l r -> topePoints l <> topePoints r
-  TopeEQT  _ x y -> [x, y]
-  TopeLEQT _ x y -> [x, y]
-  _              -> []
-
-subPoints :: TermT var -> [TermT var]
-subPoints = \case
-  p@(PairT _ x y) -> p : foldMap subPoints [x, y]
-  p@Pure{} -> [p]
-  p@(Free (AnnF TypeInfo{..} _))
-    | Cube2T{} <- infoType -> [p]
-    | CubeUnitT{} <- infoType -> [p]
-  _ -> []
-
--- | Simplify the context, including disjunctions. See also 'simplifyLHS'.
-simplifyLHSwithDisjunctions :: Eq var => [TermT var] -> [[TermT var]]
-simplifyLHSwithDisjunctions topes = map nubTermT $
-  case topes of
-    [] -> [[]]
-    TopeTopT{} : topes' -> simplifyLHSwithDisjunctions topes'
-    TopeBottomT{} : _  -> [[topeBottomT]]
-    TopeAndT _ l r : topes' -> simplifyLHSwithDisjunctions (l : r : topes')
-
-    -- NOTE: it is inefficient to expand disjunctions immediately
-    TopeOrT  _ l r : topes' -> simplifyLHSwithDisjunctions (l : topes') <> simplifyLHSwithDisjunctions (r : topes')
-
-    TopeEQT  _ (PairT _ x y) (PairT _ x' y') : topes' ->
-      simplifyLHSwithDisjunctions (topeEQT x x' : topeEQT y y' : topes')
-    t : topes' -> map (t :) (simplifyLHSwithDisjunctions topes')
-
--- | Simplify the context, except disjunctions. See also 'simplifyLHSwithDisjunctions'.
-simplifyLHS :: Eq var => [TermT var] -> [TermT var]
-simplifyLHS topes = nubTermT $
-  case topes of
-    [] -> []
-    TopeTopT{} : topes' -> simplifyLHS topes'
-    TopeBottomT{} : _  -> [topeBottomT]
-    TopeAndT _ l r : topes' -> simplifyLHS (l : r : topes')
-
-    -- NOTE: it is inefficient to expand disjunctions immediately
-    -- TopeOrT  _ l r : topes' -> simplifyLHS (l : topes') <> simplifyLHS (r : topes')
-
-    TopeEQT  _ (PairT _ x y) (PairT _ x' y') : topes' ->
-      simplifyLHS (topeEQT x x' : topeEQT y y' : topes')
-    t : topes' -> t : simplifyLHS topes'
-
-solveRHSM :: Eq var => [TermT var] -> TermT var -> TypeCheck var Bool
-solveRHSM topes tope =
-  case tope of
-    _ | topeBottomT `elem` topes -> return True
-    TopeTopT{}     -> return True
-    TopeEQT  _ty (PairT _ty1 x y) (PairT _ty2 x' y') ->
-      solveRHSM topes $ topeAndT
-        (topeEQT x x')
-        (topeEQT y y')
-    TopeEQT  _ty (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) r ->
-      solveRHSM topes $ topeAndT
-        (topeEQT x (firstT cubeI r))
-        (topeEQT y (secondT cubeJ r))
-    TopeEQT  _ty l (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) ->
-      solveRHSM topes $ topeAndT
-        (topeEQT (firstT cubeI l) x)
-        (topeEQT (secondT cubeJ l) y)
-    TopeEQT  _ty l r
-      | or
-          [ l == r
-          , tope `elem` topes
-          , topeEQT r l `elem` topes
-          ] -> return True
-    TopeEQT  _ty l r -> do 
-      lType <- typeOf l 
-      rType <- typeOf r 
-      return $ case (lType, rType) of
-        (CubeUnitT{}, CubeUnitT{}) -> True 
-        _ -> False
-    TopeLEQT _ty l r
-      | l == r -> return True
-      | solveRHS topes (topeEQT l r) -> return True
-      | solveRHS topes (topeEQT l cube2_0T) -> return True
-      | solveRHS topes (topeEQT r cube2_1T) -> return True
-    TopeAndT _ l r -> (&&)
-      <$> solveRHSM topes l
-      <*> solveRHSM topes r
-    _ | tope `elem` topes -> return True
-    TopeOrT  _ l r -> do
-      l' <- solveRHSM topes l
-      r' <- solveRHSM topes r
-      if (l' || r')
-        then return True
-        else do
-          lems <- generateTopesForPointsM (allTopePoints tope)
-          let lems' = [ lem | lem@(TopeOrT _ t1 t2) <- lems, all (`notElem` topes) [t1, t2] ]
-          case lems' of
-            TopeOrT _ t1 t2 : _ -> do
-              l'' <- solveRHSM (saturateTopes [] (t1 : topes)) tope
-              r'' <- solveRHSM (saturateTopes [] (t2 : topes)) tope
-              return (l'' && r'')
-            _ -> return False
-    _ -> return False
-
-solveRHS :: Eq var => [TermT var] -> TermT var -> Bool
-solveRHS topes tope =
-  case tope of
-    _ | topeBottomT `elem` topes -> True
-    TopeTopT{}     -> True
-    TopeEQT  _ty (PairT _ty1 x y) (PairT _ty2 x' y')
-      | solveRHS topes (topeEQT x x') && solveRHS topes (topeEQT y y') -> True
-    TopeEQT  _ty (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) r
-      | solveRHS topes (topeEQT x (firstT cubeI r)) && solveRHS topes (topeEQT y (secondT cubeJ r)) -> True
-    TopeEQT  _ty l (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y)
-      | solveRHS topes (topeEQT (firstT cubeI l) x) && solveRHS topes (topeEQT (secondT cubeJ l) y) -> True
-    TopeEQT  _ty l r -> or
-      [ l == r
-      , tope `elem` topes
-      , topeEQT r l `elem` topes
-      ]
-    TopeLEQT _ty l r
-      | l == r -> True
-      | solveRHS topes (topeEQT l r) -> True
-      | solveRHS topes (topeEQT l cube2_0T) -> True
-      | solveRHS topes (topeEQT r cube2_1T) -> True
-    -- TopeBottomT{}  -> solveLHS topes tope
-    TopeAndT _ l r -> solveRHS topes l && solveRHS topes r
-    TopeOrT  _ l r -> solveRHS topes l || solveRHS topes r
-    _ -> tope `elem` topes
-
-checkTope :: Eq var => TermT var -> TypeCheck var Bool
-checkTope tope = do
-  ctxTopes <- asks localTopes
-  performing (ActionContextEntails ctxTopes tope) $ do
-    topes' <- asks localTopesNF
-    tope' <- nfTope tope
-    topes' `entailM` tope'
-
-checkTopeEntails :: Eq var => TermT var -> TypeCheck var Bool
-checkTopeEntails tope = do
-  ctxTopes <- asks localTopes
-  performing (ActionContextEntailedBy ctxTopes tope) $ do
-    contextTopes <- asks localTopesNF
-    restrictionTope <- nfTope tope
-    let contextTopesRHS = foldr topeAndT topeTopT contextTopes
-    [restrictionTope] `entailM` contextTopesRHS
-
-checkEntails :: Eq var => TermT var -> TermT var -> TypeCheck var Bool
-checkEntails l r = do  -- FIXME: add action
-  l' <- nfTope l
-  r' <- nfTope r
-  [l'] `entailM` r'
-
-contextEntailedBy :: Eq var => TermT var -> TypeCheck var ()
-contextEntailedBy tope = do
-  ctxTopes <- asks localTopes
-  performing (ActionContextEntailedBy ctxTopes tope) $ do
-    contextTopes <- asks localTopesNF
-    restrictionTope <- nfTope tope
-    let contextTopesRHS = foldr topeOrT topeBottomT contextTopes
-    [restrictionTope] `entailM` contextTopesRHS >>= \case
-      False -> issueTypeError $ TypeErrorTopeNotSatisfied [restrictionTope] contextTopesRHS
-      True -> return ()
-
-contextEntails :: Eq var => TermT var -> TypeCheck var ()
-contextEntails tope = do
-  ctxTopes <- asks localTopes
-  performing (ActionContextEntails ctxTopes tope) $ do
-    topeIsEntailed <- checkTope tope
-    topes' <- asks localTopesNF
-    unless topeIsEntailed $
-      issueTypeError $ TypeErrorTopeNotSatisfied topes' tope
-
-topesEquiv :: Eq var => TermT var -> TermT var -> TypeCheck var Bool
-topesEquiv expected actual = performing (ActionUnifyTerms expected actual) $ do
-  expected' <- nfT expected
-  actual' <- nfT actual
-  (&&)
-    <$> [expected'] `entailM` actual'
-    <*> [actual'] `entailM` expected'
-
-contextEquiv :: Eq var => [TermT var] -> TypeCheck var ()
-contextEquiv topes = do
-  ctxTopes <- asks localTopes
-  performing (ActionContextEquiv ctxTopes topes) $ do
-    contextTopes <- asks localTopesNF
-    recTopes <- mapM nfTope topes
-    let contextTopesRHS = foldr topeOrT topeBottomT contextTopes
-        recTopesRHS     = foldr topeOrT topeBottomT recTopes
-    contextTopes `entailM` recTopesRHS >>= \case
-      False -> issueTypeError $ TypeErrorTopeNotSatisfied contextTopes recTopesRHS
-      True -> return ()
-    recTopes `entailM` contextTopesRHS >>= \case
-      False -> issueTypeError $ TypeErrorTopeNotSatisfied recTopes contextTopesRHS
-      True -> return ()
-
-switchVariance :: TypeCheck var a -> TypeCheck var a
-switchVariance = local $ \Context{..} -> Context
-  { covariance = switch covariance, .. }
-    where
-      switch Covariant     = Contravariant
-      switch Contravariant = Covariant
-      switch Invariant     = Invariant
-
-setVariance :: Covariance -> TypeCheck var a -> TypeCheck var a
-setVariance variance = local $ \Context{..} -> Context
-  { covariance = variance, .. }
-
-enterScopeContext :: Maybe VarIdent -> TModality -> TermT var -> Maybe (TermT var) -> Context var -> Context (Inc var)
-enterScopeContext orig md ty val context =
-  addVarInCurrentScope Z VarInfo
-    { varType   = S <$> ty
-    , varValue  = fmap (S <$>) val
-    , varOrig   = orig
-    , varModality = md
-    , modAccum = Id
-    , varIsAssumption = False
-    , varIsTopLevel = False
-    , varDeclaredAssumptions = []
-    , varLocation = location context
-    }
-    (S <$> context)
-
-enterScope :: Maybe VarIdent -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b
-enterScope orig ty action = do
-  newContext <- asks (enterScopeContext orig Id ty Nothing)
-  lift $ withExceptT (ScopedTypeError orig) $
-    runReaderT action newContext
-
-enterScopeWithBind :: Maybe VarIdent -> TModality -> TermT var -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b
-enterScopeWithBind orig md ty val action = do
-  newContext <- asks (enterScopeContext orig md ty (Just val))
-  lift $ withExceptT (ScopedTypeError orig) $
-    runReaderT action newContext
-
-enterModality :: TModality -> TypeCheck var b -> TypeCheck var b
-enterModality md action = do
-  newContext <- asks (applyModality md)
-  lift $ runReaderT action newContext
-
-performing :: Eq var => Action var -> TypeCheck var a -> TypeCheck var a
-performing action tc = do
-  ctx@Context{..} <- ask
-  unless (length actionStack < 1000) $  -- FIXME: which depth is reasonable? factor out into a parameter
-    issueTypeError $ TypeErrorOther "maximum depth reached"
-  traceTypeCheck Debug (ppSomeAction (varOrigs ctx) (length actionStack) action) $
-    local (const Context { actionStack = action : actionStack, .. }) $ tc
-
-stripTypeRestrictions :: TermT var -> TermT var
-stripTypeRestrictions (TypeRestrictedT _ty ty _restriction) = stripTypeRestrictions ty
-stripTypeRestrictions t = t
-
--- | Perform at most one \(\eta\)-expansion at the top-level to assist unification.
-etaMatch :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var (TermT var, TermT var)
--- FIXME: double check the next 3 rules
-etaMatch _mterm expected@TypeRestrictedT{} actual@TypeRestrictedT{} = pure (expected, actual)
-etaMatch  mterm expected (TypeRestrictedT _ty ty _rs) = etaMatch mterm expected ty
-etaMatch (Just term) expected@TypeRestrictedT{} actual =
-  etaMatch (Just term) expected (typeRestrictedT actual [(topeTopT, term)])
--- ------------------------------------
-etaMatch _mterm expected@LambdaT{} actual@LambdaT{} = pure (expected, actual)
-etaMatch _mterm expected@PairT{}   actual@PairT{}   = pure (expected, actual)
-etaMatch _mterm expected@LambdaT{} actual = do
-  actual' <- etaExpand actual
-  pure (expected, actual')
-etaMatch _mterm expected actual@LambdaT{} = do
-  expected' <- etaExpand expected
-  pure (expected', actual)
-etaMatch _mterm expected@PairT{} actual = do
-  actual' <- etaExpand actual
-  pure (expected, actual')
-etaMatch _mterm expected actual@PairT{} = do
-  expected' <- etaExpand expected
-  pure (expected', actual)
-etaMatch _mterm expected actual = pure (expected, actual)
-
-etaExpand :: Eq var => TermT var -> TypeCheck var (TermT var)
-etaExpand term@LambdaT{} = pure term
-etaExpand term@PairT{} = pure term
-etaExpand term = do
-  ty <- typeOf term
-  case stripTypeRestrictions ty of
-    TypeFunT _ty orig param mtope ret -> pure $
-      lambdaT ty orig (Just (param, mtope))
-        (appT ret (S <$> term) (Pure Z))
-
-    TypeSigmaT _ty _orig a b -> pure $
-      pairT ty
-        (firstT a term)
-        (secondT (substituteT (firstT a term) b) term)
-
-    CubeProductT _ty a b -> pure $
-      pairT ty
-        (firstT a term)
-        (secondT b term)
-
-    _ -> pure term
-
-inCubeLayer :: Eq var => TermT var -> TypeCheck var Bool
-inCubeLayer = \case
-  RecBottomT{}    -> pure False
-  UniverseT{}     -> pure False
-
-  UniverseCubeT{} -> pure True
-  CubeProductT{}  -> pure True
-  CubeUnitT{}     -> pure True
-  CubeUnitStarT{} -> pure True
-  Cube2T{}        -> pure True
-  Cube2_0T{}      -> pure True
-  Cube2_1T{}      -> pure True
-
-  t               -> typeOf t >>= inCubeLayer
-
-inTopeLayer :: Eq var => TermT var -> TypeCheck var Bool
-inTopeLayer = \case
-  RecBottomT{} -> pure False
-  UniverseT{} -> pure False
-
-  UniverseCubeT{} -> pure True
-  UniverseTopeT{} -> pure True
-
-  CubeProductT{} -> pure True
-  CubeUnitT{} -> pure True
-  CubeUnitStarT{} -> pure True
-  Cube2T{} -> pure True
-  Cube2_0T{} -> pure True
-  Cube2_1T{} -> pure True
-
-  TopeTopT{} -> pure True
-  TopeBottomT{} -> pure True
-  TopeAndT{} -> pure True
-  TopeOrT{} -> pure True
-  TopeEQT{} -> pure True
-  TopeLEQT{} -> pure True
-
-  TypeFunT _ty orig param _mtope ret -> do
-    enterScope orig param $ inTopeLayer ret
-
-  t -> typeOfUncomputed t >>= inTopeLayer
-
-tryRestriction :: Eq var => TermT var -> TypeCheck var (Maybe (TermT var))
-tryRestriction = \case
-  TypeRestrictedT _ _ rs -> do
-    let go [] = pure Nothing
-        go ((tope, term') : rs') = do
-          checkTope tope >>= \case
-            True  -> pure (Just term')
-            False -> go rs'
-    go rs
-  _ -> pure Nothing
-
--- | Compute a typed term to its WHNF.
---
--- >>> unsafeTypeCheck' $ whnfT "(\\ (x : Unit) -> x) unit"
--- unit : Unit
-whnfT :: Eq var => TermT var -> TypeCheck var (TermT var)
-whnfT tt = performing (ActionWHNF tt) $ case tt of
-  -- use cached result if it exists
-  Free (AnnF info _)
-    | Just tt' <- infoWHNF info -> pure tt'
-
-  -- universe constants
-  UniverseT{} -> pure tt
-  UniverseCubeT{} -> pure tt
-  UniverseTopeT{} -> pure tt
-
-  -- cube layer (except vars, pairs, and applications)
-  CubeProductT{} -> nfTope tt
-  CubeUnitT{} -> pure tt
-  CubeUnitStarT{} -> pure tt
-  Cube2T{} -> pure tt
-  Cube2_0T{} -> pure tt
-  Cube2_1T{} -> pure tt
-  CubeFlipT{} -> nfTope tt
-  CubeUnflipT{} -> nfTope tt
-
-  -- tope layer (except vars, pairs of points, and applications)
-  TopeTopT{} -> pure tt
-  TopeBottomT{} -> pure tt
-  TopeAndT{} -> nfTope tt
-  TopeOrT{} -> nfTope tt
-  TopeEQT{} -> nfTope tt
-  TopeLEQT{} -> nfTope tt
-  TopeInvT{} -> nfTope tt
-  TopeUninvT{} -> nfTope tt
-
-  -- type layer terms that should not be evaluated further
-  LambdaT{} -> pure tt
-  PairT{} -> pure tt
-  ReflT{} -> pure tt
-  TypeFunT{} -> pure tt
-  TypeSigmaT{} -> pure tt
-  TypeIdT{} -> pure tt
-  RecBottomT{} -> pure tt
-  TypeUnitT{} -> pure tt
-  UnitT{} -> pure tt
-
-  -- type ascriptions are ignored, since we already have a typechecked term
-  TypeAscT _ty term _ty' -> whnfT term
-
-  -- check if we have cube or a tope term (if so, compute NF)
-  _ -> typeOf tt >>= \case
-    UniverseCubeT{} -> nfTope tt
-    UniverseTopeT{} -> nfTope tt
-
-    -- CubeUnitT{} -> pure cubeUnitStarT -- compute an expression of 1 cube to its only point
-    TypeUnitT{} -> pure unitT -- compute an expression of Unit type to unit
-    -- FIXME: next line is ad hoc, should be improved!
-    TypeRestrictedT _info TypeUnitT{} _rs -> pure unitT -- compute an expression of Unit type to unit
-
-    -- check if we have cube point term (if so, compute NF)
-    typeOf_tt -> typeOf typeOf_tt >>= \case
-      UniverseCubeT{} -> nfTope tt
-
-      -- now we are in the type layer
-      _ -> fmap termIsWHNF $ do
-        -- check if we are in the empty context
-        inBottom <- asks localTopesEntailBottom
-        if inBottom
-           then pure recBottomT -- if so, reduce to recBOT
-           else tryRestriction typeOf_tt >>= \case
-            Just tt' -> whnfT tt'
-            Nothing -> case tt of
-              t@(Pure var) ->
-                valueOfVar var >>= \case
-                  Nothing   -> pure t
-                  Just term -> whnfT term
-
-              AppT ty f x ->
-                whnfT f >>= \case
-                  LambdaT _ty _orig _arg body ->
-                    whnfT (substituteT x body)
-                  f' -> typeOf f' >>= \case
-                    TypeFunT _ty _orig _param (Just tope) UniverseTopeT{} -> do
-                      topeAndT
-                        <$> (AppT ty <$> nfT f' <*> nfT x)
-                        <*> nfT (substituteT x tope)
-                    -- FIXME: this seems to be a hack, and will not work in all situations!
-                    -- FIXME: need to check performance of this code thoroughly
-                    -- FIXME: for now, it seems to add ~2x slowdown
-                    TypeFunT info _orig _param _mtope ret@TypeRestrictedT{}
-                      | TypeRestrictedT{} <- infoType info -> pure (AppT ty f' x)
-                      | otherwise -> do
-                          let ret' = substituteT x ret
-                          tryRestriction ret' >>= \case -- FIXME: too many unnecessary checks?
-                            Nothing  -> pure (AppT ty { infoType = ret' } f' x)
-                            Just tt' -> whnfT tt'
-                    _ -> pure (AppT ty f' x)
-              
-              LetT _ty _orig _mparam val body ->
-                whnfT (substituteT val body)
-              LetModT _ty _orig app inn _mparam val body -> do
-                val' <- whnfT val >>= \case
-                  ModAppT _ md t | md == inn -> whnfT t
-                  b' -> do
-                    bty <- typeOf b' >>= \case
-                      TypeModalT _ _ t -> pure t
-                      _ -> panicImpossible "not modal in letmod"
-                    pure (modExtractT bty app inn b')
-                whnfT (substituteT val' body)
-              FirstT ty t ->
-                whnfT t >>= \case
-                  PairT _ l _r -> whnfT l
-                  t'           -> pure (FirstT ty t')
-
-              SecondT ty t ->
-                whnfT t >>= \case
-                  PairT _ _l r -> whnfT r
-                  t'           -> pure (SecondT ty t')
-              TypeModalT ty md b -> do
-                b' <- whnfT b
-                pure (TypeModalT ty md b')
-              ModAppT ty md b -> do
-                whnfT b >>= \case
-                  ModExtractT _ _ inn t | inn == md -> whnfT t
-                  b' -> pure $ ModAppT ty md b'
-              ModExtractT ty app inn b -> do
-                whnfT b >>= \case
-                  ModAppT _ md t | inn == md -> whnfT t
-                  b' -> pure (ModExtractT ty app inn b')
-              IdJT ty tA a tC d x p ->
-                whnfT p >>= \case
-                  ReflT{} -> whnfT d
-                  p'      -> pure (IdJT ty tA a tC d x p')
-
-              RecOrT _ty rs -> do
-                let go [] = pure Nothing
-                    go ((tope, tt') : rs') = do
-                      checkTope tope >>= \case
-                        True  -> pure (Just tt')
-                        False -> go rs'
-                go rs >>= \case
-                  Just tt' -> whnfT tt'
-                  Nothing
-                    | [tt'] <- nubTermT (map snd rs) -> whnfT tt'
-                    | otherwise -> pure tt
-
-              TypeRestrictedT ty type_ rs -> do
-                rs' <- traverse (\(tope, term) -> (,) <$> nfT tope <*> pure term) rs
-                case filter ((/= topeBottomT) . fst) rs' of
-                  []   -> whnfT type_  -- get rid of restrictions at BOT
-                  rs'' -> TypeRestrictedT ty <$> whnfT type_ <*> pure rs''
-
-nfTope :: Eq var => TermT var -> TypeCheck var (TermT var)
-nfTope tt = performing (ActionNF tt) $ fmap termIsNF $ case tt of
-  Pure var ->
-    valueOfVar var >>= \case
-      Nothing   -> return tt
-      Just term -> nfTope term
-
-  -- see if normal form is already available
-  Free (AnnF info _) | Just tt' <- infoNF info -> pure tt'
-
-  -- universe constants
-  UniverseT{} -> pure tt
-  UniverseCubeT{} -> pure tt
-  UniverseTopeT{} -> pure tt
-
-  -- cube layer constants
-  CubeUnitT{} -> pure tt
-  CubeUnitStarT{} -> pure tt
-  Cube2T{} -> pure tt
-  Cube2_0T{} -> pure tt
-  Cube2_1T{} -> pure tt
-
-  -- type layer constants
-  TypeUnitT{} -> pure tt
-  UnitT{} -> pure tt
-
-  -- cube layer with computation
-  CubeProductT _ty l r -> cubeProductT <$> nfTope l <*> nfTope r
-
-  CubeFlipT _ t ->         
-    nfTope t >>= \case
-      CubeUnflipT _ t' -> pure t'     
-      Cube2_0T{}       -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_1T)  
-      Cube2_1T{}       -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_0T) 
-      t'               -> pure (cubeFlipT t')
-
-  CubeUnflipT ty t ->
-    nfTope t >>= \case
-      CubeFlipT _ t'          -> pure t'  
-      ModAppT _ Op Cube2_0T{} -> pure cube2_1T 
-      ModAppT _ Op Cube2_1T{} -> pure cube2_0T 
-      t'                      -> pure (CubeUnflipT ty t')
-
-  -- tope layer constants
-  TopeTopT{} -> pure tt
-  TopeBottomT{} -> pure tt
-
-  -- tope layer with computation
-  TopeAndT ty l r ->
-    nfTope l >>= \case
-      TopeBottomT{} -> pure topeBottomT
-      l' -> nfTope r >>= \case
-        TopeBottomT{} -> pure topeBottomT
-        r'            -> pure (TopeAndT ty l' r')
-
-  TopeOrT  ty l r -> do
-    l' <- nfTope l
-    r' <- nfTope r
-    case (l', r') of
-      (TopeBottomT{}, _) -> pure r'
-      (_, TopeBottomT{}) -> pure l'
-      _                  -> pure (TopeOrT ty l' r')
-
-  TopeEQT  ty l r -> TopeEQT  ty <$> nfTope l <*> nfTope r
-  TopeLEQT ty l r -> TopeLEQT ty <$> nfTope l <*> nfTope r
-
-  TopeInvT ty t ->
-    -- Match And/Or on the *unnormalized* input: nfTope of a shape-restricted
-    -- App produces a TopeAnd via shape-side-condition propagation, and
-    -- distributing inv over that synthetic conjunction loops forever because
-    -- the recursive topeInvT renormalizes the same App back into a TopeAnd.
-    case t of
-      TopeAndT _ phi psi -> nfTope $
-        modAppT (typeModalT universeT Op topeT) Op
-          (topeAndT
-            (modExtractT topeT Id Op (topeInvT phi))
-            (modExtractT topeT Id Op (topeInvT psi)))
-      TopeOrT _ phi psi -> nfTope $
-        modAppT (typeModalT universeT Op topeT) Op
-          (topeOrT
-            (modExtractT topeT Id Op (topeInvT phi))
-            (modExtractT topeT Id Op (topeInvT psi)))
-      _ ->
-        nfTope t >>= \case
-          TopeUninvT _ phi -> pure phi
-          TopeLEQT _ x y -> nfTope $
-            modAppT (typeModalT universeT Op topeT) Op
-              (topeLEQT
-                (modExtractT topeT Id Op (cubeFlipT y))
-                (modExtractT topeT Id Op (cubeFlipT x)))
-          TopeEQT _ x y -> nfTope $
-            modAppT (typeModalT universeT Op topeT) Op
-              (topeEQT
-                (modExtractT topeT Id Op (cubeFlipT y))
-                (modExtractT topeT Id Op (cubeFlipT x)))
-          t' -> pure (TopeInvT ty t')
-
-  TopeUninvT ty t ->
-    nfTope t >>= \case
-      TopeInvT _ phi -> pure phi
-      ModAppT _ Op inner -> case inner of
-        TopeLEQT _ x y ->
-          nfTope $
-              (topeLEQT
-                (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op y))
-                (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op x)))
-
-        TopeEQT _ x y ->
-          nfTope $
-              (topeEQT
-                (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op y))
-                (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op x)))
-
-        TopeAndT _ phi psi ->
-          nfTope $
-              (topeAndT
-                (topeUninvT phi)
-                (topeUninvT psi))
-
-        TopeOrT _ phi psi ->
-          nfTope $
-              (topeOrT
-                (topeUninvT phi)
-                (topeUninvT psi))
-
-        inner' ->
-          pure $
-            TopeUninvT ty
-              (modAppT (typeModalT universeT Op topeT) Op inner')
-
-      t' ->
-        pure (TopeUninvT ty t')
-
-  -- type ascriptions are ignored, since we already have a typechecked term
-  TypeAscT _ty term _ty' -> nfTope term
-
-  PairT ty l r -> PairT ty <$> nfTope l <*> nfTope r
-
-  AppT ty f x ->
-    nfTope f >>= \case
-      LambdaT _ty _orig _arg body ->
-        nfTope (substituteT x body)
-      f' -> typeOfUncomputed f' >>= \case
-        TypeFunT _ty _orig _param (Just tope) UniverseTopeT{} -> do
-          topeAndT
-            <$> (AppT ty f' <$> nfTope x)
-            <*> nfTope (substituteT x tope)
-        _ -> AppT ty f' <$> nfTope x
-
-  FirstT ty t ->
-    nfTope t >>= \case
-      PairT _ty x _y -> pure x
-      t'             -> pure (FirstT ty t')
-
-  SecondT ty t ->
-    nfTope t >>= \case
-      PairT _ty _x y -> pure y
-      t'             -> pure (SecondT ty t')
-
-  LambdaT ty orig _mparam body
-    | TypeFunT _ty _origF param mtope _ret <- infoType ty ->
-        LambdaT ty orig (Just (param, mtope)) <$> enterScope orig param (nfTope body)
-  LambdaT{} -> panicImpossible "lambda with a non-function type in the tope layer"
-  ModAppT ty md b -> 
-    nfTope b >>= \case 
-      ModExtractT _ _ inn t | inn == md -> pure t
-      b' -> pure $ ModAppT ty md b'  
-  ModExtractT ty app inn b ->
-    nfTope b >>= \case
-      ModAppT _ md t | inn == md -> pure t
-      b' -> pure $ ModExtractT ty app inn b'
-  LetModT _ty _orig app inn _mparam val body -> do
-    val' <- nfTope val >>= \case
-      ModAppT _ md t | md == inn -> return t
-      b' -> do
-        ty <- typeOf b' >>= \case
-          TypeModalT _ _ t -> pure t
-          _ -> panicImpossible "not modal in letmod"
-        pure (modExtractT ty app inn b')
-    nfTope (substituteT val' body)
-
-  TypeModalT ty md inner -> TypeModalT ty md <$> nfTope inner
-  LetT _ty _orig _mparam val body -> nfTope (substituteT val body)
-  TypeFunT{} -> panicImpossible "exposed function type in the tope layer"
-  TypeSigmaT{} -> panicImpossible "dependent sum type in the tope layer"
-  TypeIdT{} -> panicImpossible "identity type in the tope layer"
-  ReflT{} -> panicImpossible "refl in the tope layer"
-  IdJT{} -> panicImpossible "idJ eliminator in the tope layer"
-  TypeRestrictedT{} -> panicImpossible "extension types in the tope layer"
-
-  RecOrT{} -> panicImpossible "recOR in the tope layer"
-  RecBottomT{} -> panicImpossible "recBOT in the tope layer"
-
--- | Compute a typed term to its NF.
---
--- >>> unsafeTypeCheck' $ nfT "(\\ (x : Unit) -> x) unit"
--- unit : Unit
-nfT :: Eq var => TermT var -> TypeCheck var (TermT var)
-nfT tt = performing (ActionNF tt) $ case tt of
-  -- universe constants
-  UniverseT{} -> pure tt
-  UniverseCubeT{} -> pure tt
-  UniverseTopeT{} -> pure tt
-
-  -- cube layer constants
-  CubeUnitT{} -> pure tt
-  CubeUnitStarT{} -> pure tt
-  Cube2T{} -> pure tt
-  Cube2_0T{} -> pure tt
-  Cube2_1T{} -> pure tt
-
-  -- cube layer with computation
-  CubeProductT{} -> nfTope tt
-  CubeFlipT{} -> nfTope tt
-  CubeUnflipT{} -> nfTope tt
-
-  -- tope layer constants
-  TopeTopT{} -> pure tt
-  TopeBottomT{} -> pure tt
-
-  -- tope layer with computation
-  TopeAndT{} -> nfTope tt
-  TopeOrT{} -> nfTope tt
-  TopeEQT{} -> nfTope tt
-  TopeLEQT{} -> nfTope tt
-  TopeInvT{} -> nfTope tt
-  TopeUninvT{} -> nfTope tt
-
-  -- type layer constants
-  ReflT ty _x -> pure (ReflT ty Nothing)
-  RecBottomT{} -> pure tt
-  TypeUnitT{} -> pure tt
-  UnitT{} -> pure tt
-
-  -- type ascriptions are ignored, since we already have a typechecked term
-  TypeAscT _ty term _ty' -> nfT term
-
-  -- now we are in the type layer
-  _ -> do
-    -- check if we are in the empty context
-    inBottom <- asks localTopesEntailBottom
-    if inBottom
-       then pure recBottomT -- if so, reduce to recBOT
-       else typeOf tt >>= tryRestriction >>= \case
-        Just tt' -> nfT tt'
-        Nothing -> case tt of
-          t@(Pure var) ->
-            valueOfVar var >>= \case
-              Nothing   -> pure t
-              Just term -> nfT term
-
-          TypeFunT ty orig param mtope ret -> do
-            param' <- nfT param
-            enterScope orig param' $ do
-              mtope' <- traverse nfT mtope
-              maybe id localTope mtope' $
-                TypeFunT ty orig param' mtope' <$> nfT ret
-          AppT ty f x ->
-            whnfT f >>= \case
-              LambdaT _ty _orig _arg body ->
-                nfT (substituteT x body)
-              f' -> typeOf f' >>= \case
-                TypeFunT _ty _orig _param (Just tope) UniverseTopeT{} -> do
-                  topeAndT
-                    <$> (AppT ty <$> nfT f' <*> nfT x)
-                    <*> nfT (substituteT x tope)
-                _ -> AppT ty <$> nfT f' <*> nfT x
-          LetT _ty _orig _mparam val body ->
-            nfT (substituteT val body)
-          LetModT _ty _orig app inn _mparam val body -> do
-            val' <- whnfT val >>= \case
-              ModAppT _ md t | md == inn -> nfT t
-              b' -> do
-                bty <- typeOf b' >>= \case
-                  TypeModalT _ _ t -> pure t
-                  _ -> panicImpossible "not modal in letmod"
-                pure (modExtractT bty app inn b')
-            nfT (substituteT val' body)
-          LambdaT ty orig _mparam body -> do
-            case stripTypeRestrictions (infoType ty) of
-              TypeFunT _ty _orig param mtope _ret -> do
-                param' <- nfT param
-                enterScope orig param' $ do
-                  mtope' <- traverse nfT mtope
-                  maybe id localTope mtope' $
-                    LambdaT ty orig (Just (param', mtope')) <$> nfT body
-              _ -> panicImpossible "lambda with a non-function type"
-
-
-          TypeSigmaT ty orig a b -> do
-            a' <- nfT a
-            enterScope orig a' $ do
-              TypeSigmaT ty orig a' <$> nfT b
-          PairT ty l r -> PairT ty <$> nfT l <*> nfT r
-          FirstT ty t ->
-            whnfT t >>= \case
-              PairT _ l _r -> nfT l
-              t'           -> FirstT ty <$> nfT t'
-          SecondT ty t ->
-            whnfT t >>= \case
-              PairT _ _l r -> nfT r
-              t'           -> SecondT ty <$> nfT t'
-
-          TypeIdT ty x _tA y -> TypeIdT ty <$> nfT x <*> pure Nothing <*> nfT y
-          IdJT ty tA a tC d x p ->
-            whnfT p >>= \case
-              ReflT{} -> nfT d
-              p' -> IdJT ty <$> nfT tA <*> nfT a <*> nfT tC <*> nfT d <*> nfT x <*> nfT p'
-
-          RecOrT _ty rs -> do
-            let go [] = pure Nothing
-                go ((tope, tt') : rs') = do
-                  checkTope tope >>= \case
-                    True  -> pure (Just tt')
-                    False -> go rs'
-            go rs >>= \case
-              Just tt' -> nfT tt'
-              Nothing
-                | [tt'] <- nubTermT (map snd rs) -> nfT tt'
-                | otherwise -> pure tt
-          TypeModalT ty md b -> do
-            b' <- nfT b
-            pure (TypeModalT ty md b')
-          ModAppT ty md b -> do
-            whnfT b >>= \case
-              ModExtractT _ _ inn t | inn == md -> nfT t
-              b' -> ModAppT ty md <$> nfT b'
-          ModExtractT ty app inn b -> do
-            whnfT b >>= \case
-              ModAppT _ md t | inn == md -> nfT t
-              b' -> ModExtractT ty app inn <$> nfT b'
-          TypeRestrictedT ty type_ rs -> do
-            rs' <- forM rs $ \(tope, term) -> do
-              nfTope tope >>= \case
-                TopeBottomT{} -> pure Nothing
-                tope' -> do
-                  term' <- localTope tope' $
-                    nfT term
-                  return (Just (tope', term'))
-            case catMaybes rs' of
-              []   -> nfT type_
-              rs'' -> TypeRestrictedT ty <$> nfT type_ <*> pure rs''
-
-checkDefinedVar :: VarIdent -> TypeCheck VarIdent ()
-checkDefinedVar x = asks (lookup x . varInfos) >>= \case
-  Nothing  -> issueTypeError $ TypeErrorUndefined x
-  Just _ty -> return ()
-
-valueOfVar :: Eq var => var -> TypeCheck var (Maybe (TermT var))
-valueOfVar x = asks (lookup x . varValues) >>= \case
-  Nothing -> issueTypeError $ TypeErrorUndefined x
-  Just ty -> return ty
-
-typeOfVar :: Eq var => var -> TypeCheck var (TermT var)
-typeOfVar x = asks (lookup x . varTypes) >>= \case
-  Nothing -> issueTypeError $ TypeErrorUndefined x
-  Just ty -> return ty
-
-modalityOfVar :: Eq var => var -> TypeCheck var (TModality)
-modalityOfVar x = asks (lookup x . varModalities) >>= \case
-  Nothing -> issueTypeError $ TypeErrorUndefined x
-  Just m -> return m
-
-locksOfVar :: Eq var => var -> TypeCheck var (TModality)
-locksOfVar x = asks (lookup x . varLocks) >>= \case
-  Nothing -> issueTypeError $ TypeErrorUndefined x
-  Just m -> return m
-
-isTopLevelVar :: Eq var => var -> TypeCheck var Bool
-isTopLevelVar x = asks (lookup x . varTopLevels) >>= \case
-  Nothing -> issueTypeError $ TypeErrorUndefined x
-  Just b -> return b
-
-typeOfUncomputed :: Eq var => TermT var -> TypeCheck var (TermT var)
-typeOfUncomputed = \case
-  Pure x                     -> typeOfVar x
-  Free (AnnF TypeInfo{..} _) -> pure infoType
-
-typeOf :: Eq var => TermT var -> TypeCheck var (TermT var)
-typeOf t = typeOfUncomputed t >>= whnfT
-
-unifyTopes :: Eq var => TermT var -> TermT var -> TypeCheck var ()
-unifyTopes l r = do
-  equiv <- (&&)
-    <$> [l] `entailM` r
-    <*> [r] `entailM` l
-  unless equiv $
-    issueTypeError (TypeErrorTopesNotEquivalent l r)
-
-inAllSubContexts :: TypeCheck var () -> TypeCheck var () -> TypeCheck var ()
-inAllSubContexts handleSingle tc = do
-  topeSubContexts <- asks localTopesNFUnion
-  case topeSubContexts of
-    [] -> panicImpossible "empty set of alternative contexts"
-    [_] -> handleSingle
-    _:_:_ -> do
-      forM_ topeSubContexts $ \topes' -> do
-        local (\Context{..} -> Context
-            { localTopes = topes'
-            , localTopesNF = topes'
-            , localTopesNFUnion = [topes']
-            , .. }) $
-          tc
-
-unify :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var ()
-unify mterm expected actual = performUnification `catchError` \typeError -> do
-  inAllSubContexts (throwError typeError) performUnification
-  where
-    performUnification = unifyInCurrentContext mterm expected actual
-
-unifyViaDecompose :: Eq var => TermT var -> TermT var -> TypeCheck var ()
-unifyViaDecompose expected actual | expected == actual = return ()
-unifyViaDecompose (AppT _ f x) (AppT _ g y) = do
-  unify Nothing f g
-  setVariance Invariant $ unify Nothing x y
-unifyViaDecompose _ _ = issueTypeError (TypeErrorOther "cannot decompose")
-
-unifyInCurrentContext :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var ()
-unifyInCurrentContext mterm expected actual = performing action $
-  unifyViaDecompose expected actual `catchError` \_ -> do      -- NOTE: this gives a small, but noticeable speedup
-    expectedVal <- whnfT expected
-    actualVal <- whnfT actual
-    mea <- asks covariance >>= \case
-      Covariant     -> Just <$> etaMatch mterm expectedVal actualVal
-      Contravariant -> Just . swap <$> etaMatch mterm actualVal expectedVal
-      Invariant     -> traceTypeCheck Debug "invariant" $ do
-        -- FIXME: inefficient
-        traceTypeCheck Debug "invariant->covariant" $
-          setVariance Covariant     $ unifyInCurrentContext mterm expectedVal actualVal
-        traceTypeCheck Debug "invariant->contravariant" $
-          setVariance Contravariant $ unifyInCurrentContext mterm expectedVal actualVal
-        return Nothing
-    case mea of
-      Nothing -> return ()
-      Just (expected', actual') ->
-        unless (expected' == actual') $ do  -- NOTE: this gives a small, but noticeable speedup
-          case actual' of
-            RecBottomT{} -> return ()
-            RecOrT _ty rs' ->
-              case expected' of
-                RecOrT _ty rs -> sequence_ $
-                  checkCoherence <$> rs <*> rs'
-                _ -> do
-                  forM_ rs' $ \(tope, term) ->
-                    localTope tope $
-                      unifyTerms expected' term
-            _ -> typeOf expected' >>= typeOf >>= \case
-              UniverseCubeT{} -> contextEntails (topeEQT expected' actual')
-              _ -> do
-                let def = unless (expected' == actual') err
-                    err =
-                      case mterm of
-                        Nothing   -> issueTypeError (TypeErrorUnifyTerms expected' actual')
-                        Just term -> issueTypeError (TypeErrorUnify term expected' actual')
-                    errS = do
-                      let expectedS = S <$> expected'
-                          actualS = S <$> actual'
-                      case mterm of
-                        Nothing   -> issueTypeError (TypeErrorUnifyTerms expectedS actualS)
-                        Just term -> issueTypeError (TypeErrorUnify (S <$> term) expectedS actualS)
-                case expected' of
-                  Pure{} -> def
-
-                  UniverseT{} -> def
-                  UniverseCubeT{} -> def
-                  UniverseTopeT{} -> def
-
-                  TypeUnitT{} -> def
-                  UnitT{} -> return ()  -- Unit always unifies!
-
-                  CubeUnitT{} -> def
-                  CubeUnitStarT{} -> def
-                  Cube2T{} -> def
-                  Cube2_0T{} -> def
-                  Cube2_1T{} -> def
-                  CubeProductT _ l r ->
-                    case actual' of
-                      CubeProductT _ l' r' -> do
-                        unifyTerms l l'
-                        unifyTerms r r'
-                      _ -> err
-
-                  PairT _ty l r ->
-                    case actual' of
-                      PairT _ty' l' r' -> do
-                        unifyTerms l l'
-                        unifyTerms r r'
-
-                      -- one part of eta-expansion for pairs
-                      -- FIXME: add symmetric version!
-                      _ -> err
-
-                  FirstT _ty t ->
-                    case actual' of
-                      FirstT _ty' t' -> unifyTerms t t'
-                      _              -> err
-
-                  SecondT _ty t ->
-                    case actual' of
-                      SecondT _ty' t' -> unifyTerms t t'
-                      _               -> err
-
-                  TopeTopT{}    -> unifyTopes expected' actual'
-                  TopeBottomT{} -> unifyTopes expected' actual'
-                  TopeEQT{}     -> unifyTopes expected' actual'
-                  TopeLEQT{}    -> unifyTopes expected' actual'
-                  TopeAndT{}    -> unifyTopes expected' actual'
-                  TopeOrT{}     -> unifyTopes expected' actual'
-
-                  RecBottomT{} -> return () -- unifies with anything
-                  RecOrT _ty rs ->
-                    case actual' of
-                      -- ----------------------------------------------
-                      -- IMPORTANT: this pattern matching is redundant,
-                      -- but it is not obvious, so
-                      -- take care when refactoring!
-                      -- ----------------------------------------------
-      --                RecOrT _ty rs' -> sequence_ $
-      --                  checkCoherence <$> rs <*> rs'
-                      -- ----------------------------------------------
-                      _ -> do
-                        forM_ rs $ \(tope, term) ->
-                          localTope tope $
-                            unifyTerms term actual'
-
-                  TypeFunT _ty _orig cube mtope ret ->
-                    case actual' of
-                      TypeFunT _ty' orig' cube' mtope' ret' -> do
-                        switchVariance $  -- unifying in the negative position!
-                          unifyTerms cube cube' -- FIXME: unifyCubes
-                        enterScope orig' cube $ do
-                          case ret' of
-                            UniverseTopeT{} -> do
-                              -- This is the case for tope families (shapes)
-                              --
-                              -- (Λ → TOPE) <: (Δ → TOPE)
-                              -- since if φ : Λ → TOPE
-                              -- then φ ⊢ Δ
-                              --
-                              -- we DO NOT take tope context Φ into account!
-                              expectedTopeNF <- fromMaybe topeTopT <$> traverse nfT mtope
-                              actualTopeNF   <- fromMaybe topeTopT <$> traverse nfT mtope'
-                              actualEntailsExpected <- [actualTopeNF] `entailM` expectedTopeNF
-                              unless actualEntailsExpected $
-                                issueTypeError (TypeErrorTopeNotSatisfied [actualTopeNF] expectedTopeNF)
-                            _ -> do
-                              -- this is the case for Π-types and extension types
-                              --
-                              -- Ξ | Φ | Γ   ⊢   {t : I | φ} → A t   <:   {s : J | ψ} → B s
-                              -- when
-                              -- Ξ | Φ, ψ ⊢ φ
-                              expectedTopeNF <- fromMaybe topeTopT <$> traverse nfT mtope
-                              actualTopeNF   <- fromMaybe topeTopT <$> traverse nfT mtope'
-                              localTope expectedTopeNF $
-                                contextEntails actualTopeNF
-                          case mterm of
-                            Nothing -> unifyTerms ret ret'
-                            Just term -> unifyTypes (appT ret' (S <$> term) (Pure Z)) ret ret'
-                      _ -> err
-
-                  TypeSigmaT _ty _orig a b ->
-                    case actual' of
-                      TypeSigmaT _ty' orig' a' b' -> do
-                        unify Nothing a a'
-                        enterScope orig' a' $ unify Nothing b b'
-                      _ -> err
-
-                  TypeIdT _ty x _tA y ->
-                    case actual' of
-                      TypeIdT _ty' x' _tA' y' -> do
-                        -- unify Nothing tA tA' -- TODO: do we need this check?
-                        unify Nothing x x'
-                        unify Nothing y y'
-                      _ -> err
-
-                  AppT _ty f x ->
-                    case actual' of
-                      AppT _ty' f' x' -> do
-                        unify Nothing f f'
-                        setVariance Invariant $
-                          unify Nothing x x'
-                      _ -> err
-
-                  LambdaT ty _orig _mparam body ->
-                    case stripTypeRestrictions (infoType ty) of
-                      TypeFunT _ty _origF param mtope _ret ->
-                        case actual' of
-                          LambdaT ty' orig' _mparam' body' -> do
-                            case stripTypeRestrictions (infoType ty') of
-                              TypeFunT _ty' _origF' param' mtope' _ret' -> do
-                                unify Nothing param param' -- we (should) have already checked this in types!
-                                enterScope orig' param $ do
-                                  case (mtope, mtope') of
-                                    (Just tope, Just tope') -> do
-                                      unify Nothing tope tope' -- we (should) have already checked this in types!
-                                      localTope tope $ unify Nothing body body'
-                                    (Nothing, Nothing) -> do
-                                      unify Nothing body body'
-                                    _ -> errS
-                              _ -> err
-                          _ -> err
-                      _ -> err
-                  
-                  LetT{} -> panicImpossible "let at the root of WHNF"
-                  LetModT{} -> panicImpossible "let-mod at the root of WHNF"
-
-                  ReflT ty _x | TypeIdT _ty x _tA y <- infoType ty ->
-                    case actual' of
-                      ReflT ty' _x' | TypeIdT _ty' x' _tA' y' <- infoType ty' -> do
-                        -- unify Nothing tA tA' -- TODO: do we need this check?
-                        unify Nothing x x'
-                        unify Nothing y y'
-                      _ -> err
-                  ReflT{} -> panicImpossible "refl with a non-identity type!"
-
-                  IdJT _ty a b c d e f ->
-                    case actual' of
-                      IdJT _ty' a' b' c' d' e' f' -> do
-                        unify Nothing a a'
-                        unify Nothing b b'
-                        unify Nothing c c'
-                        unify Nothing d d'
-                        unify Nothing e e'
-                        unify Nothing f f'
-                      _ -> err
-
-                  TypeAscT{} -> panicImpossible "type ascription at the root of WHNF"
-
-                  TypeRestrictedT _ty ty rs ->
-                    case actual' of
-                      TypeRestrictedT _ty' ty' rs' -> do
-                        unify mterm ty ty'
-                        sequence_
-                          [ localTope tope $ do
-                              -- FIXME: can do less entails checks?
-                              contextEntails (foldr topeOrT topeBottomT (map fst rs')) -- expected is less specified than actual
-                              forM_ rs' $ \(tope', term') -> do
-                                localTope tope' $
-                                  unify Nothing term term'
-                          | (tope, term) <- rs
-                          ]
-                      _ -> err    -- FIXME: need better unification for restrictions
-                  TypeModalT _ty m ty ->
-                    case actual' of
-                      TypeModalT _ty' m' ty' -> do
-                        when (m' /= m) $ err
-                        unify Nothing ty ty'
-                      _ -> err
-                  ModAppT _ty m ty ->
-                    case actual' of
-                      ModAppT _ty' m' ty' -> do
-                        when (m' /= m) $ err
-                        unify Nothing ty ty'
-                      _ -> err
-                  ModExtractT _ty app inn te ->
-                    case actual' of
-                      ModExtractT _ty' app' inn' te' -> do
-                        when (app' /= app) $ err
-                        when (inn' /= inn) $ err
-                        unify Nothing te te'
-                      _ -> err
-                  _ -> panicImpossible "unexpected term in UNIFY"
-
-
-  where
-    action = case mterm of
-               Nothing   -> ActionUnifyTerms expected actual
-               Just term -> ActionUnify term expected actual
-
-unifyTypes :: Eq var => TermT var -> TermT var -> TermT var -> TypeCheck var ()
-unifyTypes = unify . Just
-
-unifyTerms :: Eq var => TermT var -> TermT var -> TypeCheck var ()
-unifyTerms = unify Nothing
-
-localTope :: Eq var => TermT var -> TypeCheck var a -> TypeCheck var a
-localTope tope tc = do
-  Context{..} <- ask
-  tope' <- nfTope tope
-  -- A small optimisation to help unify terms faster
-  let refine = case tope' of
-        TopeEQT _ x y | x == y -> const tc          -- no new information added!
-        _ | tope' `elem` localTopes -> const tc     -- no new information added!
-          | otherwise -> id
-  refine $ do
-    local (f tope' localTopesNF) tc
-  where
-    f tope' localTopes' Context{..} = Context
-      { localTopes = tope : localTopes
-      , localTopesNF = tope' : localTopesNF
-      , localTopesNFUnion = map nubTermT
-          [ new <> old
-          | new <- simplifyLHSwithDisjunctions [tope']
-          , old <- localTopesNFUnion ]
-      , localTopesEntailBottom = entailsBottom
-      , .. }
-      where
-        entailsBottom = (tope' : localTopes') `entail` topeBottomT
-
-universeT :: TermT var
-universeT = iterate f (panicImpossible msg) !! 30
-  where
-    msg = "going too high up the universe levels"
-    f t = UniverseT TypeInfo
-      { infoType = t
-      , infoNF = Just universeT
-      , infoWHNF = Just universeT }
-
-cubeT :: TermT var
-cubeT = UniverseCubeT TypeInfo
-  { infoType = universeT
-  , infoNF = Just cubeT
-  , infoWHNF = Just cubeT }
-
-topeT :: TermT var
-topeT = UniverseTopeT TypeInfo
-  { infoType = universeT
-  , infoNF = Just topeT
-  , infoWHNF = Just topeT }
-
-topeEQT :: TermT var -> TermT var -> TermT var
-topeEQT l r = TopeEQT info l r
-  where
-    info = TypeInfo
-      { infoType = topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeLEQT :: TermT var -> TermT var -> TermT var
-topeLEQT l r = TopeLEQT info l r
-  where
-    info = TypeInfo
-      { infoType = topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeOrT :: TermT var -> TermT var -> TermT var
-topeOrT l r = TopeOrT info l r
-  where
-    info = TypeInfo
-      { infoType = topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeAndT :: TermT var -> TermT var -> TermT var
-topeAndT l r = TopeAndT info l r
-  where
-    info = TypeInfo
-      { infoType = topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-cubeProductT :: TermT var -> TermT var -> TermT var
-cubeProductT l r = t
-  where
-    t = CubeProductT info l r
-    info = TypeInfo
-      { infoType  = cubeT
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-cubeUnitT :: TermT var
-cubeUnitT = CubeUnitT TypeInfo
-  { infoType = cubeT
-  , infoNF = Just cubeUnitT
-  , infoWHNF = Just cubeUnitT }
-
-cubeUnitStarT :: TermT var
-cubeUnitStarT = CubeUnitStarT TypeInfo
-  { infoType = cubeUnitT
-  , infoNF = Just cubeUnitStarT
-  , infoWHNF = Just cubeUnitStarT }
-
-typeUnitT :: TermT var
-typeUnitT = TypeUnitT TypeInfo
-  { infoType = universeT
-  , infoNF = Just typeUnitT
-  , infoWHNF = Just typeUnitT }
-
-unitT :: TermT var
-unitT = UnitT TypeInfo
-  { infoType = typeUnitT
-  , infoNF = Just unitT
-  , infoWHNF = Just unitT }
-
-cube2T :: TermT var
-cube2T = Cube2T TypeInfo
-  { infoType = cubeT
-  , infoNF = Just cube2T
-  , infoWHNF = Just cube2T }
-
-cube2_0T :: TermT var
-cube2_0T = Cube2_0T TypeInfo
-  { infoType = cube2T
-  , infoNF = Just cube2_0T
-  , infoWHNF = Just cube2_0T }
-
-cube2_1T :: TermT var
-cube2_1T = Cube2_1T TypeInfo
-  { infoType = cube2T
-  , infoNF = Just cube2_1T
-  , infoWHNF = Just cube2_1T }
-
-cubeFlipT :: TermT var -> TermT var
-cubeFlipT t = CubeFlipT info t
-  where
-    info = TypeInfo
-      { infoType = typeModalT cube2T Op cube2T
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-cubeUnflipT :: TermT var -> TermT var
-cubeUnflipT t = CubeUnflipT info t
-  where
-    info = TypeInfo
-      { infoType = cube2T
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeInvT :: TermT var -> TermT var
-topeInvT t = TopeInvT info t
-  where
-    info = TypeInfo
-      { infoType = typeModalT topeT Op topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeUninvT :: TermT var -> TermT var
-topeUninvT t = TopeUninvT info t
-  where
-    info = TypeInfo
-      { infoType = topeT
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-topeTopT :: TermT var
-topeTopT = TopeTopT TypeInfo
-  { infoType = topeT
-  , infoNF = Just topeTopT
-  , infoWHNF = Just topeTopT }
-
-topeBottomT :: TermT var
-topeBottomT = TopeBottomT TypeInfo
-  { infoType = topeT
-  , infoNF = Just topeBottomT
-  , infoWHNF = Just topeBottomT }
-
-recBottomT :: TermT var
-recBottomT = RecBottomT TypeInfo
-  { infoType = recBottomT
-  , infoNF = Just recBottomT
-  , infoWHNF = Just recBottomT }
-
-typeRestrictedT :: TermT var -> [(TermT var, TermT var)] -> TermT var
-typeRestrictedT ty rs = t
-  where
-    t = TypeRestrictedT info ty rs
-    info = TypeInfo
-      { infoType  = universeT
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-lambdaT
-  :: TermT var
-  -> Maybe VarIdent
-  -> Maybe (TermT var, Maybe (Scope TermT var))
-  -> Scope TermT var
-  -> TermT var
-lambdaT ty orig mparam body = t
-  where
-    t = LambdaT info orig mparam body
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Just t
-      }
-
-
-letT :: TermT var -> Maybe VarIdent -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var
-letT ty orig mparam val body = t
-  where
-    t = LetT info orig mparam val body
-    info = TypeInfo
-      { infoType = ty
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-letModT :: TermT var -> Maybe VarIdent -> TModality -> TModality -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var
-letModT ty orig app inn mparam val body = t
-  where
-    t = LetModT info orig app inn mparam val body
-    info = TypeInfo
-      { infoType = ty
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-appT :: TermT var -> TermT var -> TermT var -> TermT var
-appT ty f x = t
-  where
-    t = AppT info f x
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-pairT :: TermT var -> TermT var -> TermT var -> TermT var
-pairT ty l r = t
-  where
-    t = PairT info l r
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Just t
-      }
-
-firstT :: TermT var -> TermT var -> TermT var
-firstT ty arg = t
-  where
-    t = FirstT info arg
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-secondT :: TermT var -> TermT var -> TermT var
-secondT ty arg = t
-  where
-    t = SecondT info arg
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-reflT
-  :: TermT var
-  -> Maybe (TermT var, Maybe (TermT var))
-  -> TermT var
-reflT ty mx = t
-  where
-    t = ReflT info mx
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Just (ReflT info Nothing)
-      , infoWHNF  = Just (ReflT info Nothing)
-      }
-
-typeFunT
-  :: Maybe VarIdent
-  -> TermT var
-  -> Maybe (Scope TermT var)
-  -> Scope TermT var
-  -> TermT var
-typeFunT orig cube mtope ret = t
-  where
-    t = TypeFunT info orig cube mtope ret
-    info = TypeInfo
-      { infoType  = universeT
-      , infoNF    = Nothing
-      , infoWHNF  = Just t
-      }
-
-typeSigmaT
-  :: Maybe VarIdent
-  -> TermT var
-  -> Scope TermT var
-  -> TermT var
-typeSigmaT orig a b = t
-  where
-    t = TypeSigmaT info orig a b
-    info = TypeInfo
-      { infoType  = universeT
-      , infoNF    = Nothing
-      , infoWHNF  = Just t
-      }
-
-recOrT
-  :: TermT var
-  -> [(TermT var, TermT var)]
-  -> TermT var
-recOrT ty rs = t
-  where
-    t = RecOrT info rs
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-typeIdT :: TermT var -> Maybe (TermT var) -> TermT var -> TermT var
-typeIdT x tA y = t
-  where
-    t = TypeIdT info x tA y
-    info = TypeInfo
-      { infoType  = universeT
-      , infoNF    = Nothing
-      , infoWHNF  = Just t
-      }
-
-idJT
-  :: TermT var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-idJT ty tA a tC d x p = t
-  where
-    t = IdJT info tA a tC d x p
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-typeAscT :: TermT var -> TermT var -> TermT var
-typeAscT x ty = t
-  where
-    t = TypeAscT info x ty
-    info = TypeInfo
-      { infoType  = ty
-      , infoNF    = Nothing
-      , infoWHNF  = Nothing
-      }
-
-typeModalT :: TermT var -> TModality -> TermT var -> TermT var
-typeModalT ty md te = t
-  where
-    t = TypeModalT info md te
-    info = TypeInfo
-      { infoType = ty
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-modAppT :: TermT var -> TModality -> TermT var -> TermT var
-modAppT ty md term = t
-  where
-    t = ModAppT info md term
-    info = TypeInfo
-      { infoType = ty
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-modExtractT :: TermT var -> TModality -> TModality -> TermT var -> TermT var
-modExtractT ty app inn term = t
-  where
-    t = ModExtractT info app inn term
-    info = TypeInfo
-      { infoType = ty
-      , infoNF = Nothing
-      , infoWHNF = Nothing
-      }
-
-typecheck :: Eq var => Term var -> TermT var -> TypeCheck var (TermT var)
-typecheck term ty = performing (ActionTypeCheck term ty) $ do
-  whnfT ty >>= \case
-
-    RecBottomT{} -> do
-      return recBottomT
-
-    TypeRestrictedT _ty ty' rs -> do
-      term' <- typecheck term ty'
-      contextEntailedBy (foldr topeOrT topeBottomT (map fst rs))
-      forM_ rs $ \(tope, rterm) -> do
-        localTope tope $
-          unifyTerms rterm term'
-      return term'    -- FIXME: correct?
-
-    ty' -> case term of
-      Lambda orig mparam body ->
-        case ty' of
-          TypeFunT _ty _orig' param' mtope' ret -> do
-            case mparam of
-              Nothing -> return ()
-              Just (param, Nothing) -> do
-                (paramType, mtope) <- do
-                  paramType <- infer param
-                  typeOf paramType >>= \case
-                    -- an argument can be a shape
-                    TypeFunT _ty _orig cube _mtope UniverseTopeT{} -> do
-                      mapM_ checkNameShadowing orig
-                      enterScope orig cube $ do
-                        let tope' = appT topeT (S <$> paramType) (Pure Z)  -- eta expand ty'
-                        return (cube, Just tope')
-                    _kind -> return (paramType, Nothing)
-                unifyTerms param' paramType
-                mapM_ checkNameShadowing orig
-                enterScope orig param' $ do
-                  mapM_ (unifyTerms (fromMaybe topeTopT mtope')) mtope
-              Just (param, mtope) -> do
-                param'' <- typecheck param =<< typeOf param'
-                unifyTerms param' param''
-                mapM_ checkNameShadowing orig
-                enterScope orig param' $ do
-                  mtope'' <- typecheck (fromMaybe TopeTop mtope) topeT
-                  unifyTerms (fromMaybe topeTopT mtope') mtope''
-
-            mapM_ checkNameShadowing orig
-            enterScope orig param' $ do
-              maybe id localTope mtope' $ do
-                body' <- typecheck body ret
-                return (lambdaT ty' orig (Just (param', mtope')) body')
-
-          _ -> issueTypeError $ TypeErrorUnexpectedLambda term ty
-      Let orig annot val body -> do
-        val' <- performing (ActionCheckLetValue orig) $ case annot of
-          Nothing -> infer val
-          Just bindType -> do
-            bindType' <- typecheck bindType universeT
-            typecheck val bindType'
-        bindTy <- typeOf val'
-        body' <- enterScopeWithBind orig Id bindTy val' $ do
-          typecheck body (S <$> ty')
-        return (letT ty' orig (Just bindTy) val' body')
-      LetMod orig app inn annot val body  -> do
-        val' <- performing (ActionCheckLetValue orig) $ case annot of
-          Nothing -> enterModality app $ infer val
-          Just bindType -> do
-            bindType' <- infer bindType
-            bindUniv <- typeOf bindType'
-            enterModality app $ typecheck val (typeModalT bindUniv inn bindType')
-        bindTy <- typeOf val' >>= \case
-          o@(TypeModalT _ty md t) ->
-            if md == inn then
-              return t
-            else
-              issueTypeError $ TypeErrorNotModal (untyped o) inn val'
-          o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'
-        bindVal <- whnfT val' >>= \case
-          ModAppT _ty _m t -> pure t
-          o -> pure (modExtractT bindTy app inn o)
-        body' <- enterScopeWithBind orig (comp app inn) bindTy bindVal $ do
-          typecheck body (S <$> ty')
-        return (letModT ty' orig app inn (Just bindTy) val' body')
-      Pair l r ->
-        case ty' of
-          CubeProductT _ty a b -> do
-            l' <- typecheck l a
-            r' <- typecheck r b
-            return (pairT ty' l' r')
-          TypeSigmaT _ty _orig a b -> do
-            l' <- typecheck l a
-            r' <- typecheck r (substituteT l' b)
-            return (pairT ty' l' r')
-          _ -> issueTypeError $ TypeErrorUnexpectedPair term ty
-
-      Refl mx ->
-        case ty' of
-          TypeIdT _ty y _tA z -> do
-            tA <- typeOf y
-            forM_ mx $ \(x, mxty) -> do
-              forM_ mxty $ \xty -> do
-                xty' <- typecheck xty universeT
-                unifyTerms tA xty'
-              x' <- typecheck x tA
-              unifyTerms x' y >> unifyTerms y x'
-              unifyTerms x' z >> unifyTerms z x'
-            when (isNothing mx) $
-              unifyTerms y z >> unifyTerms z y
-            return (reflT ty' (Just (y, Just tA)))
-          _ -> issueTypeError $ TypeErrorUnexpectedRefl term ty
-      ModExtract{} -> panicImpossible "extract is an internal term and cannot be typechecked"
-      ModApp md body -> case ty' of
-        TypeModalT _ty md' tpe -> do
-            when (md /= md') $ issueTypeError $
-              TypeErrorModalityMismatch md' md term
-            body' <- enterModality md $ typecheck body tpe
-            return $ modAppT ty' md body'
-        _ -> issueTypeError $ TypeErrorNotModal term md ty'
-
-        -- FIXME: this does not make typechecking faster, why?
---      RecOr rs -> do
---        rs' <- forM rs $ \(tope, rterm) -> do
---          tope' <- typecheck tope topeT
---          contextEntailedBy tope'
---          localTope tope' $ do
---            rterm' <- typecheck rterm ty
---            return (tope', rterm')
---        return (recOrT ty rs')
-      _ -> do
-        term' <- infer term
-        inferredType <- typeOf term'
-        unifyTypes term' ty' inferredType
-        return term'
-
-inferAs :: Eq var => TermT var -> Term var -> TypeCheck var (TermT var)
-inferAs expectedKind term = do
-  term' <- infer term
-  ty <- typeOf term'
-  kind <- typeOf ty
-  unifyTypes ty expectedKind kind
-  return term'
-
-infer :: Eq var => Term var -> TypeCheck var (TermT var)
-infer tt = performing (ActionInfer tt) $ case tt of
-  Pure x -> do
-    topLevel <- isTopLevelVar x
-    unless topLevel $ do
-      varMod <- modalityOfVar x
-      locks <- locksOfVar x
-      when (not (coe varMod locks)) $ issueTypeError $ TypeErrorUnaccessibleVar x varMod locks
-    pure (Pure x)
-
-  Universe     -> pure universeT
-  UniverseCube -> pure cubeT
-  UniverseTope -> pure topeT
-
-  CubeUnit      -> pure cubeUnitT
-  CubeUnitStar  -> pure cubeUnitStarT
-
-  Cube2 -> pure cube2T
-  Cube2_0 -> pure cube2_0T
-  Cube2_1 -> pure cube2_1T
-  CubeProduct l r -> do
-    l' <- typecheck l cubeT
-    r' <- typecheck r cubeT
-    return (cubeProductT l' r')
-
-  CubeFlip t -> do
-    t' <- typecheck t cube2T
-    return (cubeFlipT t')
-  CubeUnflip t -> do
-    t' <- typecheck t (typeModalT cubeT Op cube2T)
-    return (cubeUnflipT t')
-
-  Pair l r -> do
-    l' <- infer l
-    r' <- infer r
-    lt <- typeOf l'
-    rt <- typeOf r'
-    typeOf lt >>= \case
-      --    Γ ⊢ l ⇒ (I : CUBE)
-      --    Γ ⊢ r ⇒ (J : CUBE)
-      -- ———————————————————————————
-      -- Γ ⊢ (l, r) ⇒ (I × J : CUBE)
-      UniverseCubeT{} -> return (pairT (cubeProductT lt rt) l' r')
-      --    Γ ⊢ l ⇒ (A : U)
-      --    Γ ⊢ r ⇒ (B : U)
-      -- ———————————————————————————
-      -- Γ ⊢ (l, r) ⇒ (A × B : U)             where A × B = Σ (_ : A), B
-      _ -> do
-        -- NOTE: infer as a non-dependent pair!
-        return (pairT (typeSigmaT Nothing lt (S <$> rt)) l' r')
-
-  First t -> do
-    t' <- infer t
-    fmap stripTypeRestrictions (typeOf t') >>= \case
-      RecBottomT{} -> pure recBottomT -- FIXME: is this ok?
-      TypeSigmaT _ty _orig lt _rt ->
-        return (firstT lt t')
-      CubeProductT _ty l _r ->
-        return (firstT l t')
-      ty -> issueTypeError $ TypeErrorNotPair t' ty
-
-  Second t -> do
-    t' <- infer t
-    fmap stripTypeRestrictions (typeOf t') >>= \case
-      RecBottomT{} -> pure recBottomT -- FIXME: is this ok?
-      TypeSigmaT _ty _orig lt rt ->
-        return (secondT (substituteT (firstT lt t') rt) t')
-      CubeProductT _ty _l r ->
-        return (secondT r t')
-      ty -> issueTypeError $ TypeErrorNotPair t' ty
-
-  TypeUnit -> pure typeUnitT
-  Unit -> pure unitT
-
-  TopeTop -> pure topeTopT
-  TopeBottom -> pure topeBottomT
-
-  TopeEQ l r -> do
-    l' <- inferAs cubeT l
-    lt <- typeOf l'
-    r' <- typecheck r lt
-    return (topeEQT l' r')
-
-  TopeLEQ l r -> do
-    l' <- typecheck l cube2T
-    r' <- typecheck r cube2T
-    return (topeLEQT l' r')
-
-  TopeAnd l r -> do
-    l' <- typecheck l topeT
-    r' <- typecheck r topeT
-    return (topeAndT l' r')
-
-  TopeOr l r -> do
-    l' <- typecheck l topeT
-    r' <- typecheck r topeT
-    return (topeOrT l' r')
-
-  TopeInv t -> do
-    t' <- typecheck t topeT
-    return (topeInvT t')
-
-  TopeUninv t -> do
-    t' <- typecheck t (typeModalT universeT Op topeT )
-    return (topeUninvT t')
-
-  RecBottom -> do
-    contextEntails topeBottomT
-    return recBottomT
-
-  -- Γ ⊢ t ⇒ (T : K)
-  -- Γ ⊢ K ≡ U
-  -- —————————————
-  -- Γ ⊢ t ⇒ T ⇐ U
-
-  RecOr rs -> do
-    ttts <- forM rs $ \(tope, term) -> do
-      tope' <- typecheck tope topeT
-      contextEntailedBy tope'
-      localTope tope' $ do
-        term' <- inferAs universeT term
-        ty <- typeOf term'
-        return (tope', (term', ty))
-    let rs' = map (fmap fst) ttts
-        ts  = map (fmap snd) ttts
-    sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ]
-    contextEquiv (map fst ttts)
-    return (recOrT (recOrT universeT ts) rs')
-
-  TypeFun orig a Nothing b -> do
-    a' <- infer a
-    typeOf a' >>= \case
-      -- an argument can be a type
-      UniverseT{} ->
-        case a' of
-          -- except if its a TOPE universe
-          UniverseTopeT{} ->
-            issueTypeError $ TypeErrorOther "tope params are illegal"
-          _ -> do
-            mapM_ checkNameShadowing orig
-            b' <- enterScope orig a' $ typecheck b universeT
-            return (typeFunT orig a' Nothing b')
-      -- an argument can be a cube
-      UniverseCubeT{} -> do
-        mapM_ checkNameShadowing orig
-        b' <- enterScope orig a' $ typecheck b universeT
-        return (typeFunT orig a' Nothing b')
-      -- an argument can be a shape
-      TypeFunT _ty _orig cube mtope UniverseTopeT{} -> do
-        mapM_ checkNameShadowing orig
-        enterScope orig cube $ do
-          let tope' = appT topeT (S <$> a') (Pure Z)  -- eta expand a'
-          localTope tope' $ do
-            b' <- typecheck b universeT
-            case mtope of
-              Nothing -> return (typeFunT orig cube (Just tope') b')
-              Just tope'' -> return (typeFunT orig cube (Just (topeAndT tope'' tope')) b')
-      ty -> issueTypeError $ TypeErrorInvalidArgumentType a ty
-
-  TypeFun orig cube (Just tope) ret -> do
-    cube' <- typecheck cube cubeT
-    mapM_ checkNameShadowing orig
-    enterScope orig cube' $ do
-      tope' <- typecheck tope topeT
-      localTope tope' $ do
-        ret' <- typecheck ret universeT
-        return (typeFunT orig cube' (Just tope') ret')
-
-  TypeSigma orig a b -> do
-    a' <- typecheck a universeT
-    mapM_ checkNameShadowing orig
-    b' <- enterScope orig a' $ typecheck b universeT
-    return (typeSigmaT orig a' b')
-
-  TypeId x (Just tA) y -> do
-    tA' <- typecheck tA universeT
-    x' <- typecheck x tA'
-    y' <- typecheck y tA'
-    return (typeIdT x' (Just tA') y')
-
-  TypeId x Nothing y -> do
-    x' <- inferAs universeT x
-    tA <- typeOf x'
-    y' <- typecheck y tA
-    return (typeIdT x' (Just tA) y')
-
-  App f x -> do
-    f' <- inferAs universeT f
-    fmap stripTypeRestrictions (typeOf f') >>= \case
-      TypeFunT _ty _orig a mtope b -> do
-        x' <- typecheck x a
-        let result = appT (substituteT x' b) f' x'
-        case b of
-          UniverseTopeT{} -> do
-            case mtope of
-              Nothing -> return result
-              Just tope -> do
-                return (topeAndT (substituteT x' tope) result)
-          _               -> do
-            mapM_ (contextEntails . substituteT x') mtope   -- FIXME: need to check?
-            return result
-      ty -> issueTypeError $ TypeErrorNotFunction f' ty
-
-  Lambda _orig Nothing _body -> do
-    issueTypeError $ TypeErrorCannotInferBareLambda tt
-  Lambda orig (Just (ty, Nothing)) body -> do
-    ty' <- infer ty
-    mtope <- typeOf ty' >>= \case
-      -- an argument can be a type
-      UniverseT{} ->
-        case ty' of
-          -- except if its a TOPE universe
-          UniverseTopeT{} ->
-            issueTypeError $ TypeErrorOther "tope params are illegal"
-          _ -> return Nothing
-      -- an argument can be a cube
-      UniverseCubeT{} -> return Nothing
-      -- an argument can be a shape
-      TypeFunT _ty _orig cube _mtope UniverseTopeT{} -> do
-        mapM_ checkNameShadowing orig
-        enterScope orig cube $ do
-          let tope' = appT topeT (S <$> ty') (Pure Z)  -- eta expand ty'
-          return (Just tope')
-      kind -> issueTypeError $ TypeErrorInvalidArgumentType ty kind
-    mapM_ checkNameShadowing orig
-    enterScope orig ty' $ do
-      maybe id localTope mtope $ do
-        body' <- infer body
-        ret <- typeOf body'
-        return (lambdaT (typeFunT orig ty' mtope ret) orig (Just (ty', mtope)) body')
-  Lambda orig (Just (cube, Just tope)) body -> do
-    cube' <- typecheck cube cubeT
-    mapM_ checkNameShadowing orig
-    enterScope orig cube' $ do
-      tope' <- infer tope
-      body' <- localTope tope' $ infer body
-      ret <- typeOf body'
-      return (lambdaT (typeFunT orig cube' (Just tope') ret) orig (Just (cube', Just tope')) body')
-  Let orig annot val body -> do
-    val' <- performing (ActionCheckLetValue orig) $ case annot of
-      Nothing -> infer val
-      Just ty -> do
-        bindTy <- typecheck ty universeT
-        typecheck val bindTy
-    bindTy <- typeOf val'
-    enterScopeWithBind orig Id bindTy val' $ do
-      body' <- infer body
-      ret <- typeOf body'
-      return (letT (substituteT val' ret) orig (Just bindTy) val' body')
-  LetMod orig app inn annot val body -> do
-    val' <- performing (ActionCheckLetValue orig) $ case annot of
-      Nothing -> enterModality app $ infer val
-      Just bindType -> do
-        bindType' <- infer bindType
-        bindUniv <- typeOf bindType'
-        enterModality app $ typecheck val (typeModalT bindUniv inn bindType')
-    bindTy <- typeOf val' >>= \case
-      o@(TypeModalT _ty md t) ->
-        if md == inn then
-          return t
-        else
-          issueTypeError $ TypeErrorNotModal (untyped o) inn val'
-      o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'
-    bindVal <- whnfT val' >>= \case
-      ModAppT _ty _m t -> pure t
-      o -> pure (modExtractT bindTy app inn o)
-    enterScopeWithBind orig (comp app inn) bindTy bindVal $ do
-      body' <- infer body
-      ret <- typeOf body'
-      return (letModT (substituteT val' ret) orig app inn (Just bindTy) val' body')
-  Refl Nothing -> issueTypeError $ TypeErrorCannotInferBareRefl tt
-  Refl (Just (x, Nothing)) -> do
-    x' <- inferAs universeT x
-    ty <- typeOf x'
-    return (reflT (typeIdT x' (Just ty) x') (Just (x', Just ty)))
-  Refl (Just (x, Just ty)) -> do
-    ty' <- typecheck ty universeT
-    x' <- typecheck x ty'
-    return (reflT (typeIdT x' (Just ty') x') (Just (x', Just ty')))
-
-  IdJ tA a tC d x p -> do
-    tA' <- typecheck tA universeT
-    a' <- typecheck a tA'
-    let typeOf_C =
-          typeFunT Nothing tA' Nothing $
-            typeFunT Nothing (typeIdT (S <$> a') (Just (S <$> tA')) (Pure Z)) Nothing $
-              universeT
-    tC' <- typecheck tC typeOf_C
-    let typeOf_d =
-          appT universeT
-            (appT (typeFunT Nothing (typeIdT a' (Just tA') a') Nothing universeT)
-              tC' a')
-            (reflT (typeIdT a' (Just tA') a') Nothing)
-    d' <- typecheck d typeOf_d
-    x' <- typecheck x tA'
-    p' <- typecheck p (typeIdT a' (Just tA') x')
-    let ret =
-          appT universeT
-            (appT (typeFunT Nothing (typeIdT a' (Just tA') x') Nothing universeT)
-              tC' x')
-            p'
-    return (idJT ret tA' a' tC' d' x' p')
-
-  TypeAsc term ty -> do
-    ty' <- inferAs universeT ty -- this works on types AND cubes
-    term' <- typecheck term ty'
-    return (typeAscT term' ty')
-
-  TypeRestricted ty rs -> do
-    ty' <- typecheck ty universeT
-    rs' <- forM rs $ \(tope, term) -> do
-      tope' <- typecheck tope topeT
-      term' <- localTope tope' $ typecheck term ty'
-      return (tope', term')
-    sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ]
-    return (typeRestrictedT ty' rs')
-  TypeModal md ty -> do
-    ty' <- enterModality md $ infer ty
-    universeTy <- typeOf ty'
-    _ <- case universeTy of 
-      UniverseT {} -> pure universeTy 
-      UniverseCubeT {} -> pure universeTy 
-      UniverseTopeT {} -> pure universeTy
-      _ -> issueTypeError $ TypeErrorNotTypeInModal universeTy
-    return (typeModalT universeTy md ty')
-  ModApp md term -> do
-    term' <- enterModality md $ infer term
-    ty <- typeOf term'
-    tyUniv <- typeOf ty
-    return $ modAppT (typeModalT tyUniv md ty) md term'
-  ModExtract _ _ _ -> error "untypable $extract$"
-
-checkCoherence
-  :: Eq var
-  => (TermT var, TermT var)
-  -> (TermT var, TermT var)
-  -> TypeCheck var ()
-checkCoherence (ltope, lterm) (rtope, rterm) =
-  performing (ActionCheckCoherence (ltope, lterm) (rtope, rterm)) $ do
-    localTope (topeAndT ltope rtope) $ do
-      ltype <- stripTypeRestrictions <$> typeOf lterm   -- FIXME: why strip?
-      rtype <- stripTypeRestrictions <$> typeOf rterm   -- FIXME: why strip?
-      -- FIXME: do we need to unify types here or is it included in unification of terms?
-      unifyTerms ltype rtype
-      unifyTerms lterm rterm
-
-inferStandalone :: Eq var => Term var -> Either (TypeErrorInScopedContext var) (TermT var)
-inferStandalone term = defaultTypeCheck (infer term)
-
-unsafeInferStandalone' :: Term' -> TermT'
-unsafeInferStandalone' term = unsafeTypeCheck' (infer term)
-
-unsafeTypeCheck' :: TypeCheck VarIdent a -> a
-unsafeTypeCheck' tc =
-  case defaultTypeCheck tc of
-    Left err     -> error $ ppTypeErrorInScopedContext' BottomUp err
-    Right result -> result
-
-type PointId = String
-type ShapeId = [PointId]
-
-cube2powerT :: Int -> TermT var
-cube2powerT 1   = cube2T
-cube2powerT dim = cubeProductT (cube2powerT (dim - 1)) cube2T
-
-splits :: [a] -> [([a], [a])]
-splits [] = [([], [])]
-splits (x:xs) = ([], x:xs) : [ (x : before, after) | (before, after) <- splits xs ]
-
-verticesFrom :: [TermT var] -> [(ShapeId, TermT var)]
-verticesFrom ts = combine <$> mapM mk ts
-  where
-    mk t = [("0", topeEQT t cube2_0T), ("1", topeEQT t cube2_1T)]
-    combine xs = ([concat (map fst xs)], foldr1 topeAndT (map snd xs))
-
-subTopes2 :: Int -> TermT var -> [(ShapeId, TermT var)]
--- 1-dim
-subTopes2 1 t =
-  [ (words "0", topeEQT t cube2_0T)
-  , (words "1", topeEQT t cube2_1T)
-  , (words "0 1", topeTopT) ]
--- 2-dim
-subTopes2 2 ts =
-  -- vertices
-  [ (words "00", topeEQT t cube2_0T `topeAndT` topeEQT s cube2_0T)
-  , (words "01", topeEQT t cube2_0T `topeAndT` topeEQT s cube2_1T)
-  , (words "10", topeEQT t cube2_1T `topeAndT` topeEQT s cube2_0T)
-  , (words "11", topeEQT t cube2_1T `topeAndT` topeEQT s cube2_1T)
-  -- edges and the diagonal
-  , (words "00 01", topeEQT t cube2_0T)
-  , (words "10 11", topeEQT t cube2_1T)
-  , (words "00 10", topeEQT s cube2_0T)
-  , (words "01 11", topeEQT s cube2_1T)
-  , (words "00 11", topeEQT s t)
-  -- triangles
-  , (words "00 01 11", topeLEQT t s)
-  , (words "00 10 11", topeLEQT s t)
-  ]
-  where
-    t = firstT cube2T ts
-    s = secondT cube2T ts
--- 3-dim
-subTopes2 3 t =
-  -- vertices
-  [ (words "000", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "001", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "010", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "100", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "101", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "110", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
-  -- edges
-  , (words "000 001", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T)
-  , (words "010 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T)
-  , (words "000 010", topeEQT t1 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "001 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "100 101", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T)
-  , (words "110 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T)
-  , (words "100 110", topeEQT t1 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "101 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "000 100", topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "001 101", topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
-  , (words "010 110", topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
-  , (words "011 111", topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
-  -- face diagonals
-  , (words "000 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 t3)
-  , (words "100 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 t3)
-  , (words "000 101", topeEQT t2 cube2_0T `topeAndT` topeEQT t1 t3)
-  , (words "010 111", topeEQT t2 cube2_1T `topeAndT` topeEQT t1 t3)
-  , (words "000 110", topeEQT t3 cube2_0T `topeAndT` topeEQT t1 t2)
-  , (words "001 111", topeEQT t3 cube2_1T `topeAndT` topeEQT t1 t2)
-  -- the long diagonal
-  , (words "000 111", topeEQT t3 t2 `topeAndT` topeEQT t2 t1)
-  -- face triangles
-  , (words "000 001 011", topeEQT t1 cube2_0T `topeAndT` topeLEQT t2 t3)
-  , (words "000 010 011", topeEQT t1 cube2_0T `topeAndT` topeLEQT t3 t2)
-  , (words "100 101 111", topeEQT t1 cube2_1T `topeAndT` topeLEQT t2 t3)
-  , (words "100 110 111", topeEQT t1 cube2_1T `topeAndT` topeLEQT t3 t2)
-  , (words "000 001 101", topeEQT t2 cube2_0T `topeAndT` topeLEQT t1 t3)
-  , (words "000 100 101", topeEQT t2 cube2_0T `topeAndT` topeLEQT t3 t1)
-  , (words "010 011 111", topeEQT t2 cube2_1T `topeAndT` topeLEQT t1 t3)
-  , (words "010 110 111", topeEQT t2 cube2_1T `topeAndT` topeLEQT t3 t1)
-  , (words "000 010 110", topeEQT t3 cube2_0T `topeAndT` topeLEQT t1 t2)
-  , (words "000 100 110", topeEQT t3 cube2_0T `topeAndT` topeLEQT t2 t1)
-  , (words "001 011 111", topeEQT t3 cube2_1T `topeAndT` topeLEQT t1 t2)
-  , (words "001 101 111", topeEQT t3 cube2_1T `topeAndT` topeLEQT t2 t1)
-  -- diagonal triangles
-  , (words "000 001 111", topeEQT t1 t2 `topeAndT` topeLEQT t2 t3)
-  , (words "000 010 111", topeEQT t1 t3 `topeAndT` topeLEQT t1 t2)
-  , (words "000 100 111", topeEQT t2 t3 `topeAndT` topeLEQT t2 t1)
-  , (words "000 011 111", topeLEQT t1 t2 `topeAndT` topeEQT t2 t3)
-  , (words "000 101 111", topeLEQT t2 t1 `topeAndT` topeEQT t1 t3)
-  , (words "000 110 111", topeLEQT t3 t1 `topeAndT` topeEQT t1 t2)
-  -- tetrahedra
-  , (words "000 001 011 111", topeLEQT t1 t2 `topeAndT` topeLEQT t2 t3)
-  , (words "000 010 011 111", topeLEQT t1 t3 `topeAndT` topeLEQT t3 t2)
-  , (words "000 001 101 111", topeLEQT t2 t1 `topeAndT` topeLEQT t1 t3)
-  , (words "000 100 101 111", topeLEQT t2 t3 `topeAndT` topeLEQT t3 t1)
-  , (words "000 010 110 111", topeLEQT t3 t1 `topeAndT` topeLEQT t1 t2)
-  , (words "000 100 110 111", topeLEQT t3 t2 `topeAndT` topeLEQT t2 t1)
-  ]
-  where
-    t1 = firstT  cube2T (firstT (cube2powerT 2) t)
-    t2 = secondT cube2T (firstT (cube2powerT 2) t)
-    t3 = secondT cube2T t
-subTopes2 dim _ = error (show dim <> " dimensions are not supported")
-
-cubeSubTopes :: [(ShapeId, TermT (Inc var))]
-cubeSubTopes = subTopes2 3 (Pure Z)
-
-limitLength :: Int -> String -> String
-limitLength n s
-  | length s > n = take (n - 1) s <> "…"
-  | otherwise    = s
-
-renderObjectsFor
-  :: Eq var
-  => String
-  -> Int
-  -> TermT var
-  -> TermT var
-  -> TypeCheck var [(ShapeId, RenderObjectData)]
-renderObjectsFor mainColor dim t term = fmap catMaybes $ do
-  forM (subTopes2 dim t) $ \(shapeId, tope) -> do
-    checkTopeEntails tope >>= \case
-      False -> return Nothing
-      True -> typeOf term >>= \case
-        UniverseTopeT{} -> localTope term $ checkTopeEntails tope >>= \case
-          False -> return Nothing
-          True -> return $ Just (shapeId, RenderObjectData
-            { renderObjectDataLabel = ""
-            , renderObjectDataFullLabel = ""
-            , renderObjectDataColor = "orange"  -- FIXME: orange for topes?
-            })
-        _ -> do
-          origs <- asks varOrigs
-          term' <- localTope tope $ whnfT term
-          label <-
-            case term' of
-              AppT _ (Pure z) arg
-                | Just (Just "_") <- lookup z origs -> return ""
-                | null (nub (freeVars (untyped arg)) \\ nub (freeVars (untyped t))) ->
-                    ppTermInContext (Pure z)
-              _ -> ppTermInContext term'
-          return $ Just (shapeId, RenderObjectData
-            { renderObjectDataLabel = label
-            , renderObjectDataFullLabel = label
-            , renderObjectDataColor =
-                case term' of
-                  Pure{} -> "purple"
-                  AppT _ (Pure x) arg
-                    | Just (Just "_") <- lookup x origs -> mainColor
-                    | null (nub (freeVars (untyped arg)) \\ nub (freeVars (untyped t)))  -> "purple"
-                  _ -> mainColor
-            })
-
-componentWiseEQT :: Int -> TermT var -> TermT var -> TermT var
-componentWiseEQT 1 t s = topeEQT t s
-componentWiseEQT 2 t s = topeAndT
-  (componentWiseEQT 1 (firstT  cube2T t) (firstT  cube2T s))
-  (componentWiseEQT 1 (secondT cube2T t) (secondT cube2T s))
-componentWiseEQT 3 t s = topeAndT
-  (componentWiseEQT 2 (firstT  (cube2powerT 2) t) (firstT (cube2powerT 2) s))
-  (componentWiseEQT 1 (secondT cube2T t) (secondT cube2T s))
-componentWiseEQT dim _ _ = error ("cannot work with " <> show dim <> " dimensions")
-
-renderObjectsInSubShapeFor
-  :: Eq var
-  => String
-  -> Int
-  -> [var]
-  -> var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TypeCheck var [(ShapeId, RenderObjectData)]
-renderObjectsInSubShapeFor mainColor dim sub super retType f x = fmap catMaybes $ do
-  let reduceContext
-        = foldr topeOrT topeBottomT
-        . map (foldr topeAndT topeTopT)
-        . map (filter (\tope -> all (`notElem` tope) sub))
-        . map (saturateTopes [])
-        . simplifyLHSwithDisjunctions
-  contextTopes  <- asks (reduceContext . localTopesNF)
-  contextTopes' <- localTope (componentWiseEQT dim (Pure super) x) $ asks (reduceContext . localTopesNF)
-  forM (subTopes2 dim (Pure super)) $ \(shapeId, tope) -> do
-    checkEntails tope contextTopes >>= \case
-      False -> return Nothing
-      True -> do
-        origs <- asks varOrigs
-        term <- localTope tope (whnfT (appT retType f (Pure super)))
-        label <- typeOf term >>= \case
-          UniverseTopeT{} -> return ""
-          _ -> do
-            case term of
-              AppT _ (Pure z) arg
-                | Just (Just "_") <- lookup z origs -> return ""
-                | null (nub (freeVars (untyped arg)) \\ [super]) -> ppTermInContext (Pure z)
-              _ -> ppTermInContext term
-        color <- checkEntails tope contextTopes' >>= \case
-          True -> do
-            case term of
-              Pure{} -> return "purple"
-              AppT _ (Pure z) arg
-                | Just (Just "_") <- lookup z origs -> return mainColor
-                | null (nub (freeVars (untyped arg)) \\ [super]) -> return "purple"
-              _ -> return mainColor
-          False -> return "gray"
-        return $ Just (shapeId, RenderObjectData
-          { renderObjectDataLabel = label
-          , renderObjectDataFullLabel = label
-          , renderObjectDataColor = color
-          })
-
-renderForSubShapeSVG
-  :: Eq var
-  => String 
-  -> Int
-  -> [var]
-  -> var
-  -> TermT var
-  -> TermT var
-  -> TermT var
-  -> TypeCheck var String
-renderForSubShapeSVG mainColor dim sub super retType f x = do
-  objects <- renderObjectsInSubShapeFor mainColor dim sub super retType f x
-  let objects' = map mk objects
-  return $ renderCube defaultCamera (if dim > 2 then (pi/7) else 0) $ \obj ->
-    lookup obj objects'
-  where
-    mk (shapeId, renderData) = (intercalate "-" (map fill shapeId), renderData)
-    fill xs = xs <> replicate (3 - length xs) '1'
-
-renderForSVG :: Eq var => String -> Int -> TermT var -> TermT var -> TypeCheck var String
-renderForSVG mainColor dim t term = do
-  objects <- renderObjectsFor mainColor dim t term
-  let objects' = map mk objects
-  return $ renderCube defaultCamera (if dim > 2 then (pi/7) else 0) $ \obj ->
-    lookup obj objects'
-  where
-    mk (shapeId, renderData) = (intercalate "-" (map fill shapeId), renderData)
-    fill xs = xs <> replicate (3 - length xs) '1'
-
-renderTermSVGFor
-  :: Eq var
-  => String -- ^ Main color.
-  -> Int    -- ^ Accumulated dimensions so far (from 0 to 3).
-  -> (Maybe (TermT var, TermT var), [var])  -- ^ Accumulated point term (and its time).
-  -> TermT var  -- ^ Term to render.
-  -> TypeCheck var (Maybe String)
-renderTermSVGFor mainColor accDim (mp, xs) t = do
-  t' <- whnfT t
-  ty <- typeOf t'
-  case t of -- check unevaluated term
-    AppT _info f x -> typeOf f >>= \case
-      TypeFunT _ fOrig fArg mtopeArg ret | Just dim <- dimOf fArg, dim <= maxDim -> do
-        enterScope fOrig fArg $ do
-          maybe id localTope mtopeArg $ do
-            Just <$> renderForSubShapeSVG mainColor dim (map S xs) Z ret (S <$> f) (S <$> x)  -- FIXME: breaks for 2 * (2 * 2), but works for 2 * 2 * 2 = (2 * 2) * 2
-      _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
-    TypeFunT{} | null xs -> enterScope (Just "_") t' $ do
-      renderTermSVGFor "blue" 0 (Nothing, []) (Pure Z)  -- use blue for types
-
-    _ -> case t' of -- check evaluated term
-      AppT _info f x -> typeOf f >>= \case
-        TypeFunT _ fOrig fArg mtopeArg ret | Just dim <- dimOf fArg, dim <= maxDim -> do
-          enterScope fOrig fArg $ do
-            maybe id localTope mtopeArg $ do
-              Just <$> renderForSubShapeSVG mainColor dim (map S xs) Z ret (S <$> f) (S <$> x)  -- FIXME: breaks for 2 * (2 * 2), but works for 2 * 2 * 2 = (2 * 2) * 2
-        _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
-      TypeFunT{} | null xs -> enterScope (Just "_") t' $ do
-        renderTermSVGFor "blue" 0 (Nothing, []) (Pure Z)  -- use blue for types
-
-      _ -> case ty of -- check type of the term
-        TypeFunT _ orig arg mtope ret
-          | Just dim <- dimOf arg, accDim + dim <= maxDim -> enterScope orig arg $ do
-              maybe id localTope mtope $
-                renderTermSVGFor mainColor (accDim + dim)
-                  (join' (both (fmap S) <$> mp) (S <$> arg) (Pure Z), Z : map S xs) $
-                    case t' of
-                      LambdaT _ _orig _marg body -> body
-                      _                          -> appT ret (S <$> t') (Pure Z)
-          | null xs -> enterScope orig arg $ do
-              maybe id localTope mtope $
-                renderTermSVGFor mainColor accDim
-                  (both (fmap S) <$> mp, map S xs) $
-                    case t' of
-                      LambdaT _ _orig _marg body -> body
-                      _                          -> appT ret (S <$> t') (Pure Z)
-        _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
-  where
-    maxDim = 3
-
-    both f (x, y) = (f x, f y)
-
-    join' Nothing Cube2T{} x = Just (x, cube2T)
-    join' (Just (p, pt)) Cube2T{} x = Just (p', pt')
-      where
-        pt' = cubeProductT pt cube2T
-        p' = pairT pt' p x
-    join' p (CubeProductT _ l r) x =
-      join' (join' p l (firstT l x)) r (secondT r x)
-    join' _ _ _ = Nothing -- FIXME: error?
-
-    dimOf = \case
-      Cube2T{}           -> Just 1
-      CubeProductT _ l r -> (+) <$> dimOf l <*> dimOf r
-      _                  -> Nothing
-
-renderTermSVG :: Eq var => TermT var -> TypeCheck var (Maybe String)
-renderTermSVG = renderTermSVGFor "red" 0 (Nothing, [])  -- use red for terms by default
-
-renderTermSVG' :: Eq var => TermT var -> TypeCheck var (Maybe String)
-renderTermSVG' t = whnfT t >>= \t' -> typeOf t >>= \case
-  TypeFunT _ orig arg mtope ret -> enterScope orig arg $ do
-    maybe id localTope mtope $ case t' of
-      LambdaT _ _orig _marg (AppT _info f x) ->
-        typeOf f >>= \case
-          TypeFunT _ fOrig fArg mtope2 _ret | Just dim <- dimOf fArg -> do
-            enterScope fOrig fArg $ do
+-- An explicit list: a bare 'Control.Monad.Writer' import also re-exports
+-- 'Data.Monoid' (incl. 'First'/'Last') on some mtl versions, which clashes with
+-- the 'First'/'Last' term patterns from 'Language.Rzk.Free.Syntax'.
+import           Control.Monad.Writer     (WriterT, censor, runWriterT, tell)
+import           Data.Bifoldable          (bifoldr)
+import           Data.Bifunctor           (first)
+import           Data.List                (intercalate, intersect, nub, partition,
+                                           tails, (\\))
+import           Data.Maybe               (catMaybes, fromMaybe, isNothing,
+                                           mapMaybe)
+import           Data.String              (IsString (..))
+import           Data.Tuple               (swap)
+
+import           Free.Scoped
+import           Language.Rzk.Free.Syntax
+import qualified Language.Rzk.Syntax      as Rzk
+
+import           Debug.Trace
+import           Unsafe.Coerce
+
+-- $setup
+-- >>> :set -XOverloadedStrings
+
+
+-- | Parse and 'unsafeInferStandalone''.
+instance IsString TermT' where
+  fromString = unsafeInferStandalone' . fromString
+
+defaultTypeCheck
+  :: TypeCheck var a
+  -> Either (TypeErrorInScopedContext var) a
+defaultTypeCheck = fmap fst . defaultTypeCheckWithHoles' emptyContext
+
+-- | Like 'defaultTypeCheck', but runs in lenient hole mode ('allowHoles') and
+-- also returns the holes recorded during checking (with their goal and context).
+defaultTypeCheckWithHoles
+  :: TypeCheck var a
+  -> Either (TypeErrorInScopedContext var) (a, [HoleInfo])
+defaultTypeCheckWithHoles = defaultTypeCheckWithHoles' (allowHoles emptyContext)
+
+defaultTypeCheckWithHoles'
+  :: Context var
+  -> TypeCheck var a
+  -> Either (TypeErrorInScopedContext var) (a, [HoleInfo])
+defaultTypeCheckWithHoles' ctx tc =
+  runExcept (runWriterT (runReaderT tc ctx))
+
+-- FIXME: merge with VarInfo
+data Decl var = Decl
+  { declName         :: var
+  , declType         :: TermT var
+  , declValue        :: Maybe (TermT var)
+  , declIsAssumption :: Bool
+  , declUsedVars     :: [var]
+  , declLocation     :: Maybe LocationInfo
+  } deriving Eq
+
+type Decl' = Decl VarIdent
+
+typecheckModulesWithLocationIncremental
+  :: [(FilePath, [Decl'])]    -- ^ Cached declarations (only those that do not need rechecking).
+  -> [(FilePath, Rzk.Module)] -- ^ New modules to check
+  -> TypeCheck VarIdent ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent])
+typecheckModulesWithLocationIncremental cached modulesToTypecheck = do
+  let decls = foldMap snd cached
+  localDeclsPrepared decls $ do
+    (checked, errors) <- typecheckModulesWithLocation' modulesToTypecheck
+    return (cached <> checked, errors)
+
+typecheckModulesWithLocation' :: [(FilePath, Rzk.Module)] -> TypeCheck VarIdent ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent])
+typecheckModulesWithLocation' = \case
+  [] -> return ([], [])
+  m@(path, _) : ms -> do
+    (decls, errs) <- typecheckModuleWithLocation m
+    case errs of
+      _:_ -> return ([(path, decls)], errs)
+      _ -> do
+        localDeclsPrepared decls $ do
+          (decls', errors) <- typecheckModulesWithLocation' ms
+          return ((path, decls) : decls', errors)
+
+-- | Typecheck modules in lenient hole mode, returning the elaborated
+-- declarations, any type errors, and the holes recorded (each with its goal and
+-- local context). This is the structured goal/context query consumed by the
+-- LSP and the game. Strict callers (the default CLI path, CI) keep using
+-- 'typecheckModulesWithLocation', where holes are 'TypeErrorUnsolvedHole'.
+typecheckModulesWithHoles
+  :: [(FilePath, Rzk.Module)]
+  -> Either (TypeErrorInScopedContext VarIdent)
+            ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent], [HoleInfo])
+typecheckModulesWithHoles = typecheckModulesWithHolesAndLemmas []
+
+-- | Like 'typecheckModulesWithHoles', but additionally offers the given named
+-- top-level definitions as hole candidates (each applied to holes when its type
+-- fits the goal). The game passes a level's allow-list of relevant lemmas so
+-- they surface as moves; an empty list reproduces 'typecheckModulesWithHoles'.
+typecheckModulesWithHolesAndLemmas
+  :: [VarIdent]
+  -> [(FilePath, Rzk.Module)]
+  -> Either (TypeErrorInScopedContext VarIdent)
+            ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent], [HoleInfo])
+typecheckModulesWithHolesAndLemmas lemmas modules =
+  flatten <$> defaultTypeCheckWithHoles'
+    (withHintLemmas lemmas (allowHoles emptyContext))
+    (typecheckModulesWithLocation' modules)
+  where
+    flatten ((decls, errs), holes) = (decls, errs, holes)
+
+typecheckModulesWithLocation :: [(FilePath, Rzk.Module)] -> TypeCheck VarIdent [(FilePath, [Decl'])]
+typecheckModulesWithLocation = \case
+  [] -> return []
+  m@(path, _) : ms -> do
+    (decls, errs) <- typecheckModuleWithLocation m
+    case errs of
+      err : _ -> do
+        throwError err
+      [] -> localDeclsPrepared decls $
+        ((path, decls) :) <$> typecheckModulesWithLocation ms
+
+typecheckModules :: [Rzk.Module] -> TypeCheck VarIdent [Decl']
+typecheckModules = \case
+  [] -> return []
+  m : ms -> do
+    (decls, errs) <- typecheckModule Nothing m
+    case errs of
+      err : _ -> do
+        throwError err
+      _ -> do
+        localDeclsPrepared decls $
+          (decls <>) <$> typecheckModules ms
+
+typecheckModuleWithLocation :: (FilePath, Rzk.Module) -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
+typecheckModuleWithLocation (path, module_) = do
+  traceTypeCheck Normal ("Checking module from " <> path) $ do
+    withLocation (LocationInfo { locationFilePath = Just path, locationLine = Nothing }) $
+      typecheckModule (Just path) module_
+
+countCommands :: Integral a => [Rzk.Command] -> a
+countCommands = fromIntegral . length
+
+typecheckModule :: Maybe FilePath -> Rzk.Module -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
+typecheckModule path (Rzk.Module _moduleLoc _lang commands) =
+  withSection Nothing (go 1 commands) $ -- FIXME: use module name? or anonymous section?
+    return ([], [])
+  where
+    totalCommands = countCommands commands
+
+    go :: Integer -> [Rzk.Command] -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
+    go _i [] = return ([], [])
+
+    go  i (command@(Rzk.CommandUnsetOption _loc optionName) : moreCommands) = do
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Unsetting option " <> optionName) $ do
+        withCommand command $ do
+          unsetOption optionName $
+            go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandSetOption _loc optionName optionValue) : moreCommands) = do
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Setting option " <> optionName <> " = " <> optionValue ) $ do
+        withCommand command $ do
+          setOption optionName optionValue $
+            go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandDefine _loc name (Rzk.DeclUsedVars _ vars) params ty term) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Checking #define " <> Rzk.printTree name ) $ do
+        withCommand command $ do
+          mapM_ checkDefinedVar (varIdentAt path <$> vars)
+          paramDecls <- concat <$> mapM paramToParamDecl params
+          -- Store the elaborated type and term unreduced, but memoise their
+          -- WHNF on the top node (see 'memoizeWHNF'). Reducing in place would
+          -- discard or expose a variable occurrence, so the section
+          -- unused/implicit-assumption checks (run over the stored type and
+          -- value) would disagree with the term the user wrote; keeping the
+          -- WHNF cached preserves the original one-shot reduction.
+          ty' <- memoizeWHNF =<< typecheck (toTerm' (addParamDecls paramDecls ty)) universeT
+          term' <- memoizeWHNF =<< typecheck (toTerm' (addParams params term)) ty'
+          loc <- asks location
+          let decl = Decl (varIdentAt path name) ty' (Just term') False (varIdentAt path <$> vars) loc
+          fmap (first (decl :)) $
+            localDeclPrepared decl $ do
+              Context{..} <- ask
+              termSVG <-
+                case renderBackend of
+                  Just RenderSVG -> renderTermSVG (Pure (varIdentAt path name))
+                  Just RenderLaTeX -> issueTypeError $ TypeErrorOther "\"latex\" rendering is not yet supported"
+                  Nothing -> pure Nothing
+              maybe id trace termSVG $ do
+                go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandPostulate _loc name (Rzk.DeclUsedVars _ vars) params ty) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Checking #postulate " <> Rzk.printTree name) $ do
+        withCommand command $ do
+          mapM_ checkDefinedVar (varIdentAt path <$> vars)
+          paramDecls <- concat <$> mapM paramToParamDecl params
+          ty' <- memoizeWHNF =<< typecheck (toTerm' (addParamDecls paramDecls ty)) universeT
+          loc <- asks location
+          let decl = Decl (varIdentAt path name) ty' Nothing False (varIdentAt path <$> vars) loc
+          fmap (first (decl :)) $
+            localDeclPrepared decl $
+              go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandCheck _loc term ty) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Checking " <> Rzk.printTree term <> " : " <> Rzk.printTree ty ) $ do
+        withCommand command $ do
+          ty' <- typecheck (toTerm' ty) universeT >>= whnfT
+          _term' <- typecheck (toTerm' term) ty'
+          go (i + 1) moreCommands
+
+    go  i (Rzk.CommandCompute loc term : moreCommands) =
+      go i (Rzk.CommandComputeWHNF loc term : moreCommands)
+
+    go  i (command@(Rzk.CommandComputeNF _loc term) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Computing NF for " <> Rzk.printTree term) $ do
+        withCommand command $ do
+          term' <- infer (toTerm' term) >>= nfT
+          traceTypeCheck Normal ("  " <> show (untyped term')) $ do
+            go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandComputeWHNF _loc term) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Computing WHNF for " <> Rzk.printTree term) $ do
+        withCommand command $ do
+          term' <- infer (toTerm' term) >>= whnfT
+          traceTypeCheck Normal ("  " <> show (untyped term')) $ do
+            go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandAssume _loc names ty) : moreCommands) =
+      traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]"
+          <> " Checking #assume " <> intercalate " " [ Rzk.printTree name | name <- names ] ) $ do
+        withCommand command $ do
+          ty' <- typecheck (toTerm' ty) universeT
+          loc <- asks location
+          let decls = [ Decl (varIdentAt path name) ty' Nothing True [] loc | name <- names ]
+          fmap (first (decls <>)) $
+            localDeclsPrepared decls $
+              go (i + 1) moreCommands
+
+    go  i (command@(Rzk.CommandSection _loc name) : moreCommands) = do
+      withCommand command $ do
+        (sectionCommands, moreCommands') <- splitSectionCommands name moreCommands
+        withSection (Just name) (go i sectionCommands) $ do
+          go (i + countCommands sectionCommands) moreCommands'
+
+    go  _i (command@(Rzk.CommandSectionEnd _loc endName) : _moreCommands) = do
+      withCommand command $
+        issueTypeError $ TypeErrorOther $
+          "unexpected #end " <> Rzk.printTree endName <> ", no section was declared!"
+
+
+splitSectionCommands :: Rzk.SectionName -> [Rzk.Command] -> TypeCheck var ([Rzk.Command], [Rzk.Command])
+splitSectionCommands name [] =
+  issueTypeError (TypeErrorOther $ "Section " <> Rzk.printTree name <> " is not closed with an #end")
+splitSectionCommands name (Rzk.CommandSection _loc name' : moreCommands) = do
+  (cs1, cs2) <- splitSectionCommands name' moreCommands
+  (cs3, cs4) <- splitSectionCommands name cs2
+  return (cs1 <> cs3, cs4)
+splitSectionCommands name (Rzk.CommandSectionEnd _loc endName : moreCommands) = do
+  when (Rzk.printTree name /= Rzk.printTree endName) $
+    issueTypeError $ TypeErrorOther $
+      "unexpected #end " <> Rzk.printTree endName <> ", expecting #end " <> Rzk.printTree name
+  return ([], moreCommands)
+splitSectionCommands name (command : moreCommands) = do
+  (cs1, cs2) <- splitSectionCommands name moreCommands
+  return (command : cs1, cs2)
+
+setOption :: String -> String -> TypeCheck var a -> TypeCheck var a
+setOption "verbosity" = \case
+  "debug"   -> localVerbosity Debug
+  "normal"  -> localVerbosity Normal
+  "silent"  -> localVerbosity Silent
+  _ -> const $
+    issueTypeError $ TypeErrorOther "unknown verbosity level (use \"debug\", \"normal\", or \"silent\")"
+setOption "render" = \case
+  "svg"   -> localRenderBackend (Just RenderSVG)
+  "latex" -> localRenderBackend (Just RenderLaTeX)
+  "none"  -> localRenderBackend Nothing
+  _ -> const $
+    issueTypeError $ TypeErrorOther "unknown render backend (use \"svg\", \"latex\", or \"none\")"
+-- | Render the shape only, hiding the proof term (drop the @\<title\>@
+-- everywhere and blank interior labels), so a worked term can be shown as the
+-- cell it builds without giving the term away (see 'renderHideTerm').
+setOption "render-hide-term" = \case
+  "yes" -> localHideTerm True
+  "no"  -> localHideTerm False
+  _ -> const $
+    issueTypeError $ TypeErrorOther "unknown value for \"render-hide-term\" (use \"yes\" or \"no\")"
+setOption optionName = const $ const $
+  issueTypeError $ TypeErrorOther ("unknown option " <> show optionName)
+
+unsetOption :: String -> TypeCheck var a -> TypeCheck var a
+unsetOption "verbosity" = localVerbosity (verbosity emptyContext)
+unsetOption "render" = localRenderBackend (renderBackend emptyContext)
+unsetOption "render-hide-term" = localHideTerm (renderHideTerm emptyContext)
+unsetOption optionName = const $
+  issueTypeError $ TypeErrorOther ("unknown option " <> show optionName)
+
+paramToParamDecl :: Rzk.Param -> TypeCheck var [Rzk.ParamDecl]
+paramToParamDecl (Rzk.ParamPatternShapeDeprecated loc pat cube tope) = pure
+  [ Rzk.ParamTermShape loc (patternToTerm pat) cube tope ]
+paramToParamDecl (Rzk.ParamPatternShape loc pats cube tope) = pure
+  [ Rzk.ParamTermShape loc (patternToTerm pat) cube tope | pat <- pats]
+paramToParamDecl (Rzk.ParamPatternType loc pats ty) = pure
+  [ Rzk.ParamTermType loc (patternToTerm pat) ty | pat <- pats ]
+paramToParamDecl Rzk.ParamPattern{} = issueTypeError $
+  TypeErrorOther "untyped pattern in parameters"
+paramToParamDecl (Rzk.ParamPatternModalType loc pats mc ty) = pure
+  [ Rzk.ParamTermModalType loc (patternToTerm pat) mc ty | pat <- pats ]
+paramToParamDecl (Rzk.ParamPatternModalShape loc pats mc cube tope) = pure
+  [ Rzk.ParamTermModalShape loc (patternToTerm pat) mc cube tope | pat <- pats ]
+
+addParamDecls :: [Rzk.ParamDecl] -> Rzk.Term -> Rzk.Term
+addParamDecls [] = id
+addParamDecls (paramDecl : paramDecls)
+  = Rzk.TypeFun Nothing paramDecl . addParamDecls paramDecls
+
+addParams :: [Rzk.Param] -> Rzk.Term -> Rzk.Term
+addParams []     = id
+addParams params = Rzk.Lambda Nothing params
+
+data TypeError var
+  = TypeErrorOther String
+  | TypeErrorUnify (TermT var) (TermT var) (TermT var)
+  | TypeErrorUnifyTerms (TermT var) (TermT var)
+  | TypeErrorNotPair (TermT var) (TermT var)
+  | TypeErrorNotModal (Term var) TModality (TermT var)
+  | TypeErrorModalityMismatch TModality TModality (Term var)
+  | TypeErrorUnaccessibleVar var TModality TModality
+  | TypeErrorNotTypeInModal (TermT var)
+  | TypeErrorNotFunction (TermT var) (TermT var)
+  | TypeErrorUnexpectedLambda (Term var) (TermT var)
+  | TypeErrorUnexpectedPair (Term var) (TermT var)
+  | TypeErrorUnexpectedRefl (Term var) (TermT var)
+  | TypeErrorCannotInferBareLambda (Term var)
+  | TypeErrorCannotInferBareRefl (Term var)
+  | TypeErrorCannotInferHole (Term var)
+  | TypeErrorUnsolvedHole (Maybe VarIdent) (TermT var)
+  | TypeErrorUndefined var
+  | TypeErrorTopeNotSatisfied [TermT var] (TermT var)
+  | TypeErrorTopeContextDisjoint (TermT var) [TermT var]
+  | TypeErrorTopesNotEquivalent (TermT var) (TermT var)
+  | TypeErrorInvalidArgumentType (Term var) (TermT var)
+  | TypeErrorDuplicateTopLevel [VarIdent] VarIdent
+  | TypeErrorUnusedVariable var (TermT var)
+  | TypeErrorUnusedUsedVariables [var] var
+  | TypeErrorImplicitAssumption (var, TermT var) var
+  deriving (Functor, Foldable)
+
+data TypeErrorInContext var = TypeErrorInContext
+  { typeErrorError   :: TypeError var
+  , typeErrorContext :: Context var
+  } deriving (Functor, Foldable)
+
+data TypeErrorInScopedContext var
+  = PlainTypeError (TypeErrorInContext var)
+  | ScopedTypeError (Maybe VarIdent) (TypeErrorInScopedContext (Inc var))
+  deriving (Functor, Foldable)
+
+type TypeError' = TypeError VarIdent
+
+ppModality :: TModality -> String
+ppModality = \case
+  Flat  -> "♭"
+  Sharp -> "♯"
+  Op    -> "ᵒᵖ"
+  Id    -> "_id"
+
+-- | Render a type error, folding pattern-binder projections (e.g. @π₁ x@ back to
+-- the user's @t@) and showing a bare pattern point as the pattern, using the
+-- context's freshened binders (see 'contextBinders').
+ppTypeError' :: [(VarIdent, Binder)] -> TypeError' -> String
+ppTypeError' fbs = \case
+  TypeErrorOther msg -> msg
+  TypeErrorUnify term expected actual -> block TopDown
+    [ "cannot unify expected type"
+    , "  " <> ppU (untyped expected)
+    , "with actual type"
+    , "  " <> ppU (untyped actual)
+    , "for term"
+    , "  " <> ppU (untyped term) ]
+  TypeErrorUnifyTerms expected actual -> block TopDown
+    [ "cannot unify term"
+    , "  " <> ppU (untyped expected)
+    , "with term"
+    , "  " <> ppU (untyped actual) ]
+  TypeErrorNotPair term ty -> block TopDown
+    [ "expected a cube product or dependent pair"
+    , "but got type"
+    , "  " <> ppU (untyped ty)
+    , "for term"
+    , "  " <> ppU (untyped term)
+    , case ty of
+        TypeFunT{} -> "\nPerhaps the term is applied to too few arguments?"
+        _          -> ""
+    ]
+  TypeErrorNotModal term m ty -> block TopDown
+    [ "expected modal type " <> ppModality m <> " ?"
+    , "but got type"
+    , "  " <> ppU (untyped ty)
+    , "for term"
+    , "  " <> ppU term
+    ]
+  TypeErrorModalityMismatch expected actual term -> block TopDown
+    [ "modality mismatch"
+    , "  expected " <> ppModality expected
+    , "  but got  " <> ppModality actual
+    , "for term"
+    , "  " <> ppU term
+    ]
+  TypeErrorUnaccessibleVar _var varMod locks -> block TopDown
+    [ "unaccessible var with modality " <> ppModality varMod
+    , "  under locks " <> ppModality locks
+    ]
+  TypeErrorNotTypeInModal ty -> block TopDown
+    [ "expected a type inside modal type"
+    , "but got"
+    , "  " <> ppU (untyped ty)
+    ]
+
+  TypeErrorUnexpectedLambda term ty -> block TopDown
+    [ "unexpected lambda abstraction"
+    , "  " <> ppU term
+    , "when typechecking against a non-function type"
+    , "  " <> ppTyped ty
+    ]
+  TypeErrorUnexpectedPair term ty -> block TopDown
+    [ "unexpected pair"
+    , "  " <> ppU term
+    , "when typechecking against a type that is not a product or a dependent sum"
+    , "  " <> ppTyped ty
+    ]
+  TypeErrorUnexpectedRefl term ty -> block TopDown
+    [ "unexpected refl"
+    , "  " <> ppU term
+    , "when typechecking against a type that is not an identity type"
+    , "  " <> ppTyped ty
+    ]
+
+  TypeErrorNotFunction term ty -> block TopDown
+    [ "expected a function or extension type"
+    , "but got type"
+    , "  " <> ppU (untyped ty)
+    , "for term"
+    , "  " <> ppU (untyped term)
+    , case term of
+        AppT _ty f _x -> "\nPerhaps the term\n  " <> ppU (untyped f) <> "\nis applied to too many arguments?"
+        _ -> ""
+    ]
+  TypeErrorCannotInferBareLambda term -> block TopDown
+    [ "cannot infer the type of the argument"
+    , "in lambda abstraction"
+    , "  " <> ppU term
+    ]
+  TypeErrorCannotInferBareRefl term -> block TopDown
+    [ "cannot infer the type of term"
+    , "  " <> ppU term
+    ]
+  TypeErrorCannotInferHole term -> block TopDown
+    [ "cannot infer the type of a hole"
+    , "  " <> ppU term
+    , "a hole is only allowed where its type is already known (checking position)"
+    ]
+  TypeErrorUnsolvedHole mname goal -> block TopDown
+    [ "found an unsolved hole" <> maybe "" (\name -> " ?" <> show name) mname
+    , "expected type (goal):"
+    , "  " <> ppU (untyped goal)
+    ]
+  TypeErrorUndefined var -> block TopDown
+    [ "undefined variable: " <> show (Pure var :: Term') ]
+  TypeErrorTopeNotSatisfied topes tope -> block TopDown
+    [ "local context is not included in (does not entail) the tope"
+    , "  " <> ppU (untyped tope)
+    , "in local context (normalised)"
+    , intercalate "\n" (map ("  " <>) (map ppTyped topes))] -- FIXME: remove
+  TypeErrorTopeContextDisjoint tope topes -> block TopDown
+    [ "the tope"
+    , "  " <> ppU (untyped tope)
+    , "is disjoint from the local tope context (their conjunction is the empty tope ⊥),"
+    , "so this restriction face or recOR branch is vacuous everywhere"
+    , "in local context (normalised)"
+    , intercalate "\n" (map ("  " <>) (map ppTyped topes))]
+  TypeErrorTopesNotEquivalent expected actual -> block TopDown
+    [ "expected tope"
+    , "  " <> ppU (untyped expected)
+    , "but got"
+    , "  " <> ppU (untyped actual) ]
+
+  TypeErrorInvalidArgumentType argType argKind -> block TopDown
+    [ "invalid function parameter type"
+    , "  " <> ppU argType
+    , "function parameter can be a cube, a shape, or a type"
+    , "but given parameter type has type"
+    , "  " <> ppU (untyped argKind)
+    ]
+
+  TypeErrorDuplicateTopLevel previous lastName -> block TopDown
+    [ "duplicate top-level definition"
+    , "  " <> ppVarIdentWithLocation lastName
+    , "previous top-level definitions found at"
+    , intercalate "\n"
+      [ "  " <> ppVarIdentWithLocation name
+      | name <- previous ]
+    ]
+
+  TypeErrorUnusedVariable name type_ -> block TopDown
+    [ "unused variable"
+    , "  " <> Rzk.printTree (getVarIdent name) <> " : " <> ppU (untyped type_)
+    ]
+
+  TypeErrorUnusedUsedVariables vars name -> block TopDown
+    [ "unused variables"
+    , "  " <> intercalate " " (map (Rzk.printTree . getVarIdent) vars)
+    , "declared as used in definition of"
+    , "  " <> Rzk.printTree (getVarIdent name)
+    ]
+
+  TypeErrorImplicitAssumption (a, aType) name -> block TopDown
+    [ "implicit assumption"
+    , "  " <> Rzk.printTree (getVarIdent a) <> " : " <> ppU (untyped aType)
+    , "used in definition of"
+    , "  " <> Rzk.printTree (getVarIdent name)
+    ]
+  where
+    ppU :: Term' -> String
+    ppU = ppFoldU fbs
+    ppTyped :: TermT' -> String
+    ppTyped = ppFoldT fbs
+
+
+-- | The pattern binders in scope, freshened and keyed by their (current) name,
+-- together with the projection-folding map derived from them. Both share the
+-- same freshened component names, so a term's projections and the binder shown
+-- in the context agree.
+contextBinders
+  :: Context VarIdent
+  -> ([(VarIdent, Binder)], [(VarIdent, [([Proj], VarIdent)])])
+contextBinders ctx = (fbs, binderProjMap id fbs)
+  where
+    mapping = [ (v, v) | (v, _) <- varTypes ctx ]
+    fbs     = freshBinders id mapping (varBinders ctx)
+
+-- | Render an (untyped) term for an error or diagnostic message, given the
+-- context's freshened pattern binders: fold a pattern-binder variable's
+-- projections to their component names, then expand a bare use of the variable
+-- to the pattern itself (see 'foldBinderProjections' and 'restorePatternVars').
+-- An empty binder list renders the term as-is.
+ppFoldU :: [(VarIdent, Binder)] -> Term' -> String
+ppFoldU fbs =
+  show . restorePatternVars fbs . foldBinderProjections (binderProjMap id fbs)
+
+-- | Like 'ppFoldU' for a type-annotated term, shown as @term : type@ with the
+-- same folding and pattern restoration applied to both halves.
+ppFoldT :: [(VarIdent, Binder)] -> TermT' -> String
+ppFoldT fbs t0 =
+  case foldBinderProjectionsT (binderProjMap id fbs) t0 of
+    t@Pure{}               -> r t
+    t@(Free (AnnF info _)) -> r t <> " : " <> r (infoType info)
+  where
+    r :: TermT' -> String
+    r = show . restorePatternVars fbs . untyped
+
+ppTypeErrorInContext :: OutputDirection -> TypeErrorInContext VarIdent -> String
+ppTypeErrorInContext dir TypeErrorInContext{..} = block dir
+  [ ppTypeError' fbs typeErrorError
+  , ""
+  , ppContext' dir typeErrorContext
+  ]
+  where
+    (fbs, _) = contextBinders typeErrorContext
+
+ppTypeErrorInScopedContextWith'
+  :: OutputDirection
+  -> [VarIdent]
+  -> [VarIdent]
+  -> TypeErrorInScopedContext VarIdent
+  -> String
+ppTypeErrorInScopedContextWith' dir used vars = \case
+  PlainTypeError err -> ppTypeErrorInContext dir err
+  ScopedTypeError orig err -> withFresh orig $ \(x, xs) ->
+    ppTypeErrorInScopedContextWith' dir (x:used) xs $ fmap (g x) err
+  where
+    g x Z     = x
+    g _ (S y) = y
+
+    withFresh Nothing f =
+      case vars of
+        x:xs -> f (x, xs)
+        _    -> panicImpossible "not enough fresh variables"
+    withFresh (Just z) f = f (z', filter (/= z') vars)    -- FIXME: very inefficient filter
+      where
+        z' = refreshVar used z -- FIXME: inefficient
+
+ppTypeErrorInScopedContext' :: OutputDirection -> TypeErrorInScopedContext VarIdent -> String
+ppTypeErrorInScopedContext' dir err =
+  ppTypeErrorInScopedContextWith' dir vars (defaultVarIdents \\ vars) err
+  where
+    vars = nub (foldMap pure err)
+
+issueWarning :: String -> TypeCheck var ()
+issueWarning message = do
+  trace ("Warning: " <> message) $
+    return ()
+
+fromTypeError :: TypeError var -> TypeCheck var (TypeErrorInScopedContext var)
+fromTypeError err = do
+  context <- ask
+  return $ PlainTypeError $ TypeErrorInContext
+    { typeErrorError = err
+    , typeErrorContext = context
+    }
+
+issueTypeError :: TypeError var -> TypeCheck var a
+issueTypeError err = fromTypeError err >>= throwError
+
+panicImpossible :: String -> a
+panicImpossible msg = error $ unlines
+  [ "PANIC! Impossible happened (" <> msg <> ")!"
+  , "Please, report a bug at https://github.com/rzk-lang/rzk/issues"
+    -- TODO: add details and/or instructions how to produce an artifact for reproducing
+  ]
+
+data Action var
+  = ActionTypeCheck (Term var) (TermT var)
+  | ActionUnify (TermT var) (TermT var) (TermT var)
+  | ActionUnifyTerms (TermT var) (TermT var)
+  | ActionInfer (Term var)
+  | ActionContextEntailedBy [TermT var] (TermT var)
+  | ActionContextEntails [TermT var] (TermT var)
+  | ActionContextEntailsUnion [TermT var] [TermT var]
+  | ActionWHNF (TermT var)
+  | ActionNF (TermT var)
+  | ActionCheckCoherence (TermT var, TermT var) (TermT var, TermT var)
+  | ActionCloseSection (Maybe Rzk.SectionName)
+  | ActionCheckLetValue (Maybe VarIdent)
+  deriving (Functor, Foldable)
+
+type Action' = Action VarIdent
+
+-- | Freshen the compound (pattern) binders in scope so their component names
+-- avoid the display names already in use and one another. Returns each relevant
+-- variable paired with its freshened binder. Variables bound to a single name
+-- are omitted: they need no projection folding and are displayed normally.
+freshBinders
+  :: Eq var
+  => (var -> VarIdent)
+  -> [(var, VarIdent)]
+  -> [(var, Binder)]
+  -> [(var, Binder)]
+freshBinders name mapping binders = go (map (name . fst) mapping) compound
+  where
+    compound = [ (v, b) | (v, b) <- binders, binderIsCompound b, v `elem` map fst mapping ]
+    go _    []             = []
+    go used ((v, b) : rest) =
+      let b' = freshenBinderLeaves used b
+      in (v, b') : go (binderLeaves b' ++ used) rest
+
+-- | The projection-folding map for rendering: each pattern-binder variable's
+-- display name mapped to the projection paths of its component names (e.g.
+-- @π₁@ ↦ @t@, @π₂@ ↦ @s@). Ordinary projections (of non-pattern variables) are
+-- left untouched.
+binderProjMap :: (var -> VarIdent) -> [(var, Binder)] -> [(VarIdent, [([Proj], VarIdent)])]
+binderProjMap name fbs = [ (name v, binderPaths b) | (v, b) <- fbs ]
+
+ppTermInContext :: Eq var => TermT var -> TypeCheck var String
+ppTermInContext term =  do
+  vars <- freeVarsT_ term
+  let mapping = zip vars defaultVarIdents
+      toRzkVarIdent origs var = fromMaybe "_" $
+        join (lookup var origs) <|> lookup var mapping
+  origs <- asks varOrigs
+  binders <- asks varBinders
+  let name = toRzkVarIdent origs
+      fbs  = freshBinders name mapping binders
+  return (show (restorePatternVars [ (name v, b) | (v, b) <- fbs ]
+                  (foldBinderProjections (binderProjMap name fbs)
+                    (untyped (name <$> term)))))
+
+-- | Classify a (WHNF) type as a cube, so cube variables (e.g. @t : 2@) are
+-- shown separately from ordinary term variables in a hole's context.
+isCubeType :: TermT var -> Bool
+isCubeType = \case
+  CubeUnitT{}     -> True
+  Cube2T{}        -> True
+  CubeIT{}        -> True
+  CubeProductT{}  -> True
+  UniverseCubeT{} -> True
+  _               -> False
+
+-- | Is a (WHNF) goal type in the cube or tope layer, so a hole of this type is a
+-- cube point or a tope rather than a term? Used to suppress type-layer-specific
+-- hole candidates (@recOR@, @recBOT@), which cannot inhabit a cube or a tope.
+isCubeOrTopeType :: TermT var -> Bool
+isCubeOrTopeType t = isCubeType t || case t of
+  UniverseTopeT{} -> True
+  _               -> False
+
+-- | Is this term a hole? Holes only exist in lenient mode (see 'allowHoles');
+-- they are opaque placeholders standing for a term of the expected type.
+isHoleT :: TermT var -> Bool
+isHoleT HoleT{} = True
+isHoleT _       = False
+
+-- | Does this term contain a hole anywhere (including nested, e.g. @f ?@)?
+-- Used to keep unification lenient around incomplete terms: a term with an
+-- unfilled hole cannot be meaningfully compared, so a unification that would
+-- otherwise fail is deferred. Evaluated only on the failure path.
+containsHole :: TermT var -> Bool
+containsHole = \case
+  HoleT{}             -> True
+  Pure{}              -> False
+  Free (AnnF _ termf) -> bifoldr ((||) . containsHole) ((||) . containsHole) False termf
+
+-- | All ways to eliminate a hypothesis into a value usable at a goal. Given a
+-- @target@ type and a hypothesis /term/ (e.g. @Pure v@ for a context variable),
+-- return every elimination spine over that term whose type fits the target (or
+-- a subtype of it). Arguments introduced by application are left as holes for
+-- the caller to fill later. A value that already fits is returned as-is; a
+-- function is applied to holes; a Σ-type (or anything that unfolds to one, e.g.
+-- @is-contr@) is projected, possibly repeatedly — so e.g.
+-- @first (first (is-segal-A ? ? ? ? ?))@ is discovered.
+--
+-- The search is driven uniformly by the eliminators a (weak head normal) type
+-- admits (see 'eliminatorsOf'), so adding a new eliminator extends it without
+-- touching the search. Depth is bounded by 'maxEliminationDepth'.
+allEliminationsInto
+  :: Eq var => TermT var -> TermT var -> TypeCheck var [TermT var]
+allEliminationsInto target = go maxEliminationDepth
+  where
+    go depth term = do
+      ty   <- typeOf term
+      fits <- fitsInto term ty target
+      deeper <-
+        if depth <= 0
+          then pure []
+          else do
+            elims <- eliminatorsOf ty
+            concat <$> mapM (\wrap -> go (depth - 1) (wrap term)) elims
+      pure ([term | fits] <> deeper)
+
+-- | How deep an elimination spine 'allEliminationsInto' will build. A temporary
+-- fixed bound: seven is enough for the spines seen so far (fully applying a
+-- five-argument hypothesis and projecting twice), and a larger bound mostly adds
+-- self-referential spines (a built result applied again). It should be made
+-- configurable, and likely raised, once there is more evidence of what real
+-- goals need. The chain only branches at Σ-types, which are shallow, so the
+-- search stays small.
+maxEliminationDepth :: Int
+maxEliminationDepth = 7
+
+-- | Whether a term of the given (whnf) type may stand where a value of the
+-- @target@ type is expected: the two types unify under 'structuralHoleUnify',
+-- so a hole acts as a wildcard leaf but a structural mismatch around it is still
+-- a mismatch (an under-applied function does not match an extension-type goal,
+-- but a partial application that genuinely fits an ordinary-function goal does).
+--
+-- Outer type restrictions are stripped from both sides first: an extension-type
+-- boundary is satisfied by later refinement, not by the choice of spine, and
+-- matching against the restricted goal would reject the very spine that
+-- introduces the holes meant to satisfy it (e.g. @f ?@ at a boundary goal).
+--
+-- Holes or constraints recorded while probing are discarded, so this is a pure
+-- yes/no query.
+fitsInto :: Eq var => TermT var -> TermT var -> TermT var -> TypeCheck var Bool
+fitsInto term ty target = do
+  ty'     <- stripTypeRestrictions <$> whnfT ty
+  target' <- stripTypeRestrictions <$> whnfT target
+  censor (const []) $ local structuralHoleUnify
+    ((unify (Just term) target' ty' >> pure True) `catchError` \_ -> pure False)
+
+-- | The eliminators a value of the given (weak head normal) type admits, each
+-- as a function wrapping the eliminated term. A Π-type is eliminated by
+-- application to a fresh hole; a Σ-type by either projection; an identity type
+-- by path induction (@idJ@), with the motive and base case left as holes.
+-- Anything else admits no simple eliminator.
+eliminatorsOf :: Eq var => TermT var -> TypeCheck var [TermT var -> TermT var]
+eliminatorsOf ty =
+  case stripTypeRestrictions ty of
+    TypeFunT _ty _orig _md param _mtope ret ->
+      pure [ \term -> let h = mkHole param in appT (substituteT h ret) term h ]
+    TypeSigmaT _ty _orig _md a b ->
+      pure [ \term -> firstT a term
+           , \term -> secondT (substituteT (firstT a term) b) term ]
+    -- A cube point pair (e.g. a pattern-bound @(t , s) : 2 × 2@) projects to its
+    -- coordinates; rzk renders those projections back as the pattern names.
+    CubeProductT _ty a b ->
+      pure [ \term -> firstT a term
+           , \term -> secondT b term ]
+    -- A path @p : a =_A x@ is eliminated by path induction. The motive
+    -- @C : (z : A) → (a =_A z) → U@ is always a function, so we introduce it
+    -- straight away as @\\ b q → ?@ rather than leaving it a bare hole: the spine
+    -- @idJ A a (\\ b q → ?) ? x p@ then has type @C x p@, which β-reduces to that
+    -- inner hole — so J fits any goal (the player fills the motive and the base
+    -- case @d : C a refl@). The two holes are the motive predicate and the base.
+    TypeIdT _ty a mtA x -> do
+      tA <- maybe (typeOf a) pure mtA
+      let -- the motive predicate body, a type, under the two motive binders
+          cBody  = mkHole universeT
+          cInner = lambdaT (typeFunT (BinderVar Nothing) Id
+                              (typeIdT (S <$> a) (Just (S <$> tA)) (Pure Z)) Nothing universeT)
+                     (BinderVar (Just (fromString "q"))) Nothing cBody
+          cType  = typeFunT (BinderVar Nothing) Id tA Nothing $
+                     typeFunT (BinderVar Nothing) Id
+                       (typeIdT (S <$> a) (Just (S <$> tA)) (Pure Z)) Nothing universeT
+          c      = lambdaT cType (BinderVar (Just (fromString "b"))) Nothing cInner
+          dType  = appT universeT
+                     (appT (typeFunT (BinderVar Nothing) Id (typeIdT a (Just tA) a) Nothing universeT) c a)
+                     (reflT (typeIdT a (Just tA) a) Nothing)
+          d      = mkHole dType
+          motiveAt y p = appT universeT
+            (appT (typeFunT (BinderVar Nothing) Id (typeIdT a (Just tA) y) Nothing universeT) c y) p
+      pure [ \p -> idJT (motiveAt x p) tA a c d x p ]
+    _ -> pure []
+  where
+    mkHole t = HoleT TypeInfo{ infoType = t, infoWHNF = Nothing, infoNF = Nothing } Nothing
+
+-- | The binder for a λ introduced over a domain type. A binder the type already
+-- gives as a pattern is kept as-is — it carries the user's own names (e.g.
+-- @(t , s)@). Otherwise an /explicit/ (pre-whnf) Σ-type or product domain is
+-- destructured into a fresh pair pattern, recursively for products, so that a
+-- nameless @2 × 2 × 2@ parameter is introduced as @((t1 , t2) , t3)@ rather than
+-- a single opaque variable. Any other domain keeps its single binder.
+--
+-- Leaves are named by what they range over: a cube-product component is a point,
+-- named @t@/@s@-style as @tN@; a Σ component is a term, named @xN@. The names are
+-- display-only (the body is a hole that does not mention them) and carry a
+-- shared running index, so every leaf in the pattern is distinct.
+destructuringBinder :: Binder -> TermT var -> Binder
+destructuringBinder orig param = case orig of
+  BinderPair{} -> orig                 -- already a pattern: keep the user's names
+  _ -> case param of
+    CubeProductT{} -> fst (go 1 param)
+    TypeSigmaT{}   -> fst (go 1 param)
+    _              -> orig             -- not a product/Σ: leave the binder alone
+  where
+    -- a product/Σ becomes a pair; we recurse into a product's components (plain
+    -- types) but not under a Σ's binder (a scope). A leaf is named by its
+    -- enclosing constructor: @tN@ under a cube product, @xN@ under a Σ.
+    go n = \case
+      CubeProductT _ a b ->
+        let (l, n')  = child "t" n  a
+            (r, n'') = child "t" n' b
+        in (BinderPair l r, n'')
+      TypeSigmaT _ _ _md a _b ->
+        let (l, n') = child "x" n a
+        in (BinderPair l (BinderVar (Just (leaf "x" n'))), n' + 1)
+      _ -> (BinderVar (Just (leaf "t" n)), n + 1)  -- unreached: go is called on products only
+    child pfx n = \case
+      c@CubeProductT{} -> go n c
+      c@TypeSigmaT{}   -> go n c
+      _                -> (BinderVar (Just (leaf pfx n)), n + 1)
+    leaf pfx n = fromString (pfx <> show n :: String)
+
+-- | All ways to introduce a value /of/ a goal type by its head constructor,
+-- leaving the constituents as holes. Given a @target@ type, return its
+-- introduction forms:
+--
+--   * a Π-type is introduced by a λ-abstraction over a hole body (@\\ x -> ?@);
+--     the binder is taken from the type, so a pattern domain (e.g. a @Δ²@ point
+--     @(t , s)@) is introduced as @\\ (t , s) -> ?@;
+--   * a Σ-type or a cube product by a pair of holes (@(? , ?)@);
+--   * an identity type by @refl@, but only when its two endpoints already agree
+--     (otherwise @refl@ would not typecheck);
+--   * the unit type by @unit@;
+--   * the tope universe by each tope constructor — @TOP@, @BOT@, @? ≡ ?@,
+--     @? ≤ ?@, @? ∧ ?@, @? ∨ ?@ — so a shape (a hole of type @TOPE@) can be
+--     built up by tapping.
+--
+-- Any other type admits no simple introduction. Unlike 'allEliminationsInto'
+-- this does not search: a type has at most one introduction form (the tope
+-- universe is the one exception), read off its (weak head normal) head
+-- constructor. Outer type restrictions are stripped first, so an extension type
+-- is introduced by the form of its underlying type (its boundary is met by later
+-- refinement of the holes, not by the choice of constructor).
+--
+-- The λ binder of a Π-introduction is freshened against @inScope@ (the names
+-- already visible at the hole), so introducing over a type whose own definition
+-- reuses an in-scope name (e.g. @hom@, whose internal binder is @t@) yields
+-- @\\ t₁ -> ?@ rather than a @t@ that shadows the existing one.
+allIntroductionsOf :: Eq var => TermT var -> [VarIdent] -> TypeCheck var [TermT var]
+allIntroductionsOf target inScope = do
+  target' <- stripTypeRestrictions <$> whnfT target
+  case target' of
+    TypeFunT _ty orig _md param _mtope ret ->
+      let binder = freshenBinderLeaves inScope (destructuringBinder orig param)
+       in pure [ lambdaT target' binder Nothing (mkHole ret) ]
+    TypeSigmaT _ty _orig _md a b ->
+      let h = mkHole a in pure [ pairT target' h (mkHole (substituteT h b)) ]
+    CubeProductT _ty a b ->
+      pure [ pairT target' (mkHole a) (mkHole b) ]
+    TypeIdT _ty a _tA b -> do
+      agree <- endpointsAgree a b
+      pure [ reflT target' Nothing | agree ]
+    TypeUnitT{} -> pure [ unitT ]
+    -- the tope universe: every tope constructor builds a tope, so all are
+    -- introductions of a shape goal. Point arguments (of ≡, ≤) and tope
+    -- arguments (of ∧, ∨) are left as holes.
+    UniverseTopeT{} ->
+      let point = mkHole (mkHole cubeT)  -- a point of an as-yet-unknown cube
+          tope  = mkHole target'         -- a tope (its type is the tope universe)
+       in pure [ topeTopT, topeBottomT
+               , topeEQT  point point, topeLEQT point point
+               , topeAndT tope  tope,  topeOrT  tope  tope ]
+    _ -> pure []
+  where
+    mkHole t = HoleT TypeInfo{ infoType = t, infoWHNF = Nothing, infoNF = Nothing } Nothing
+
+-- | Whether the two endpoints of an identity type are definitionally equal, so
+-- that @refl@ inhabits it. Like 'fitsInto', any holes or constraints recorded
+-- while probing are discarded, leaving a pure yes\/no query.
+endpointsAgree :: Eq var => TermT var -> TermT var -> TypeCheck var Bool
+endpointsAgree a b =
+  censor (const [])
+    ((unify Nothing a b >> pure True) `catchError` \_ -> pure False)
+
+-- | Whether the local tope context is contradictory (entails ⊥). Reads the
+-- precomputed flag when present, falling back to an entailment check. Used to
+-- decide whether @recBOT@ (ex falso) is available.
+contextEntailsBottom :: Eq var => TypeCheck var Bool
+contextEntailsBottom = asks localTopesEntailBottom >>= \case
+  Just b  -> return b
+  Nothing -> asks localTopesNF >>= (`entailM` topeBottomT)
+
+-- | Ex falso: in a contradictory tope context @recBOT@ inhabits any type, so it
+-- is a candidate for every goal there (and only there — elsewhere it would not
+-- typecheck). Independent of the goal and of the local hypotheses.
+recBottomCandidates :: Eq var => TypeCheck var [TermT var]
+recBottomCandidates = do
+  vacuous <- contextEntailsBottom
+  pure [ recBottomT | vacuous ]
+
+-- | Whether the local tope context is covered by the union of the given topes —
+-- the coverage obligation of @recOR@ (see 'contextEntailsUnion'), but as a pure
+-- yes\/no query rather than a check that issues an error.
+coverageHolds :: Eq var => [TermT var] -> TypeCheck var Bool
+coverageHolds topes = do
+  contextTopes <- asks localTopesNF
+  topesNF      <- mapM nfTope topes
+  contextTopes `entailM` foldr topeOrT topeBottomT topesNF
+
+-- | Tope case-split moves: ways to build a value of the goal by @recOR@,
+-- splitting the proof over a cover of the local tope context. Three sources,
+-- offered together (the UI ranks and filters):
+--
+--   * each disjunction @ψ ∨ φ@ already in the context becomes
+--     @recOR(ψ ↦ ?, φ ↦ ?)@ — its cover is immediate;
+--   * when the goal is an extension type, its restriction faces are a cover
+--     candidate @recOR(ψ₁ ↦ ?, …)@, offered only when they actually cover the
+--     context (so the move typechecks);
+--   * a generic two-way split @recOR(? ↦ ?, ? ↦ ?)@ with the guards left as
+--     holes, for an unusual split the player fills in by hand.
+--
+-- All three are offered only in a setting where a split makes sense — a cube
+-- variable is in scope, the context has a non-trivial tope, or the goal is a
+-- restricted type — so an ordinary (tope-free) goal is left alone.
+recOrCandidates :: Eq var => TermT var -> TypeCheck var [TermT var]
+recOrCandidates goal = do
+  goalW   <- whnfT goal
+  topes   <- asks (filter (/= topeTopT) . availableTopes)
+  locals  <- asks (filter (not . varIsTopLevel . snd) . varInfos)
+  hasCube <- or <$> mapM (fmap isCubeType . whnfT . varType . snd) locals
+  let stripped     = stripTypeRestrictions goalW
+      mkRecOr gs   = recOrT stripped [ (g, mkHole stripped) | g <- gs ]
+      fromContext  = [ mkRecOr [l, r] | TopeOrT _ l r <- topes ]
+      faces        = case goalW of
+        TypeRestrictedT _ _ rs -> map fst rs
+        _                      -> []
+      isRestricted = case goalW of TypeRestrictedT{} -> True; _ -> False
+      inShape      = hasCube || not (null topes) || isRestricted
+      generic      = [ recOrT stripped [ (mkHole topeT, mkHole stripped)
+                                       , (mkHole topeT, mkHole stripped) ]
+                     | inShape ]
+  fromFaces <- if length faces >= 2
+    then do covered <- coverageHolds faces
+            pure [ mkRecOr faces | covered ]
+    else pure []
+  pure (fromContext <> fromFaces <> generic)
+  where
+    mkHole t = HoleT TypeInfo{ infoType = t, infoWHNF = Nothing, infoNF = Nothing } Nothing
+
+-- | Record the goal and local context at a hole (lenient mode only). The goal,
+-- the local hypotheses, and the tope assumptions are all rendered to
+-- user-facing 'VarIdent' names here — reusing the same resolution as
+-- 'ppTermInContext' — so the resulting 'HoleInfo' is independent of the De
+-- Bruijn scope. The global environment is deliberately excluded (only
+-- @varIsTopLevel == False@ locals are kept), and locals are split into cube
+-- variables and ordinary term variables.
+recordHole :: Eq var => Maybe VarIdent -> TermT var -> TypeCheck var ()
+recordHole mname goalTy = recordHoleShape mname goalTy Nothing
+
+-- | Record a hole. When the hole is the argument of a shape-restricted function
+-- its goal is a /shape/: the cube @goalTy@ together with a membership tope. The
+-- tope is a scope over the shape's bound variable (the third argument carries
+-- the declared binder name, if any, and the tope); it is rendered under that
+-- binder so the goal reads @(binder : goalTy | tope)@.
+recordHoleShape
+  :: Eq var
+  => Maybe VarIdent
+  -> TermT var
+  -> Maybe (Binder, TermT (Inc var))
+  -> TypeCheck var ()
+recordHoleShape mname goalTy mshape = do
+  goal'     <- whnfT goalTy
+  locals    <- asks (filter (not . varIsTopLevel . snd) . varInfos)
+  -- named top-level lemmas the caller allow-listed for hints (see 'hintLemmas').
+  -- They feed the candidate-elimination loop only — not the local context shown
+  -- to the user, since they are global definitions, not local hypotheses.
+  lemmas    <- asks hintLemmas
+  lemmaVars <- asks (filter (\(_, i) -> varIsTopLevel i && maybe False (`elem` lemmas) (binderName (varOrig i))) . varInfos)
+  cubeFlags <- mapM (fmap isCubeType . whnfT . varType . snd) locals
+  topes     <- asks (filter (/= topeTopT) . availableTopes)
+  origs     <- asks varOrigs
+  binders   <- asks varBinders
+  loc       <- asks location
+  -- for each local hypothesis (and allow-listed lemma), the elimination spines
+  -- that land in the goal (arguments left as holes). Probing must not leak holes
+  -- into the recorded output, hence 'censor'.
+  candidates <- censor (const []) $ do
+    elims  <- concat <$> mapM (\(v, _) -> allEliminationsInto goalTy (Pure v)) (locals ++ lemmaVars)
+    -- context-driven moves (independent of the goal's head and the hypotheses):
+    -- ex falso in a contradictory context, and tope case-splits. recOR and recBOT
+    -- are term-level eliminators, so they are offered only for a term goal — not
+    -- when the hole is a cube point or a tope, where they cannot appear.
+    let termLayer = not (isCubeOrTopeType goal')
+    recbot <- if termLayer then recBottomCandidates    else pure []
+    recor  <- if termLayer then recOrCandidates goalTy else pure []
+    pure (elims <> recbot <> recor)
+  let shapeTope     = snd <$> mshape
+      shapeTopeVars = maybe [] (\t -> [ v | S v <- foldr (:) [] t ]) shapeTope
+  varsList  <- concat <$> mapM freeVarsT_ (goal' : map (varType . snd) (locals ++ lemmaVars) ++ topes)
+  let mapping  = zip (nub (varsList ++ shapeTopeVars ++ map fst (locals ++ lemmaVars))) defaultVarIdents
+      name v   = fromMaybe "_" (join (lookup v origs) <|> lookup v mapping)
+      fbs      = freshBinders name mapping binders
+      render t = restorePatternVars [ (name v, b) | (v, b) <- fbs ]
+                   (foldBinderProjections (binderProjMap name fbs) (untyped (name <$> t)))
+      -- a pattern binder is shown as its pattern, e.g. (t , s); others by name
+      entryName v = maybe (name v) binderDisplayName (lookup v fbs)
+      entries  = [ HoleEntry (entryName v) (render (varType info)) | (v, info) <- locals ]
+      flagged  = zip cubeFlags entries
+      -- binder name for the shape: the declared name if any, else a default
+      shapeBinder   = fromMaybe (fromString "t") (binderName =<< (fst <$> mshape))
+      nameInc Z     = shapeBinder
+      nameInc (S v) = name v
+      goalShape = (\t -> (shapeBinder, untyped (nameInc <$> t))) <$> shapeTope
+      -- names already visible at the hole, which an introduced binder must not
+      -- shadow: each local hypothesis by its display name, or the leaves of a
+      -- pattern hypothesis.
+      inScopeNames = [ nm | (v, _) <- locals
+                          , nm <- maybe [name v] binderLeaves (lookup v fbs) ]
+  -- the introduction forms for the goal itself (constituents left as holes); the
+  -- Π binder is freshened against 'inScopeNames' so it does not shadow.
+  introductions <- censor (const []) (allIntroductionsOf goalTy inScopeNames)
+  -- the goal cell: an SVG of the shape the hole must inhabit (an arrow, triangle
+  -- or square), drawn from an abstract inhabitant with the proof term hidden.
+  -- 'Nothing' when the goal is not a renderable shape.
+  diagram <- censor (const []) (renderGoalCellSVG goal')
+  lift $ tell
+    [ HoleInfo
+        { holeName      = mname
+        , holeGoal      = render goal'
+        , holeGoalShape = goalShape
+        , holeTermVars  = [ e | (False, e) <- flagged ]
+        , holeCubeVars  = [ e | (True,  e) <- flagged ]
+        , holeTopes     = map render topes
+        , holeCandidates = map render candidates
+        , holeIntroductions = map render introductions
+        , holeDiagram  = diagram
+        , holeLocation  = loc
+        } ]
+
+-- | Check a hole that appears as the argument of a shape-restricted function,
+-- whose domain is the cube @cube@ restricted by @tope@ (a scope over the
+-- domain's bound variable). Mirrors the hole case of 'typecheck', but records
+-- the shape as the hole's goal so the diagnostic shows @(binder : cube | tope)@.
+checkHoleAgainstShape
+  :: Eq var
+  => Maybe VarIdent -> Binder -> TermT var -> TermT (Inc var)
+  -> TypeCheck var (TermT var)
+checkHoleAgainstShape mname orig cube tope = do
+  reject <- asks holesAreErrors
+  if reject
+    then issueTypeError (TypeErrorUnsolvedHole mname cube)
+    else do
+      recordHoleShape mname cube (Just (orig, tope))
+      return (HoleT TypeInfo{ infoType = cube, infoWHNF = Nothing, infoNF = Nothing } mname)
+
+ppSomeAction :: Eq var => [(var, Maybe VarIdent)] -> Int -> Action var -> String
+ppSomeAction origs n action = ppAction [] n (toRzkVarIdent <$> action)
+  where
+    vars = nub (foldMap pure action)
+    mapping = zip vars defaultVarIdents
+    toRzkVarIdent var = fromMaybe "_" $
+      join (lookup var origs) <|> lookup var mapping
+
+ppAction :: [(VarIdent, Binder)] -> Int -> Action' -> String
+ppAction fbs n = unlines . map (replicate (2 * n) ' ' <>) . \case
+  ActionTypeCheck term ty ->
+    [ "typechecking"
+    , "  " <> ppU term
+    , "against type"
+    , "  " <> ppU (untyped ty) ]
+
+  ActionUnify term expected actual ->
+    [ "unifying expected type"
+    , "  " <> ppU (untyped expected)
+    , "with actual type"
+    , "  " <> ppU (untyped actual)
+    , "for term"
+    , "  " <> ppU (untyped term) ]
+
+  ActionUnifyTerms expected actual ->
+    [ "unifying term (expected)"
+    , "  " <> ppTyped expected
+    , "with term (actual)"
+    , "  " <> ppTyped actual ]
+
+  ActionInfer term ->
+    [ "inferring type for term"
+    , "  " <> ppU term ]
+
+  ActionContextEntailedBy ctxTopes term ->
+    [ "checking if local context"
+    , intercalate "\n" (map (("  " <>) . ppU . untyped) ctxTopes)
+    , "includes (is entailed by) restriction tope"
+    , "  " <> ppU (untyped term) ]
+
+  ActionContextEntails ctxTopes term ->
+    [ "checking if local context"
+    , intercalate "\n" (map (("  " <>) . ppU . untyped) ctxTopes)
+    , "is included in (entails) the tope"
+    , "  " <> ppU (untyped term) ]
+
+  ActionContextEntailsUnion ctxTopes terms ->
+    [ "checking if local context"
+    , intercalate "\n" (map (("  " <>) . ppU . untyped) ctxTopes)
+    , "is included in (entails) the union of the topes"
+    , intercalate "\n" (map (("  " <>) . ppU . untyped) terms) ]
+
+  ActionWHNF term ->
+    [ "computing WHNF for term"
+    , "  " <> ppTyped term ]
+
+  ActionNF term ->
+    [ "computing normal form for term"
+    , "  " <> ppU (untyped term) ]
+
+  ActionCheckCoherence (ltope, lterm) (rtope, rterm) ->
+    [ "checking coherence for"
+    , "  " <> ppU (untyped ltope)
+    , "  |-> " <> ppU (untyped lterm)
+    , "and"
+    , "  " <> ppU (untyped rtope)
+    , "  |-> " <> ppU (untyped rterm) ]
+
+  ActionCloseSection Nothing ->
+    [ "closing the file"
+    , "and collecting assumptions (variables)" ]
+  ActionCloseSection (Just sectionName) ->
+    [ "closing #section " <> Rzk.printTree sectionName
+    , "and collecting assumptions (variables)"]
+
+  ActionCheckLetValue orig ->
+    [ "checking the local definition "
+        <> maybe "_" (Rzk.printTree . getVarIdent) orig ]
+  where
+    ppU :: Term' -> String
+    ppU = ppFoldU fbs
+    ppTyped :: TermT' -> String
+    ppTyped = ppFoldT fbs
+
+
+traceAction' :: Int -> Action' -> a -> a
+traceAction' n action = trace ("[debug]\n" <> ppAction [] n action)
+
+unsafeTraceAction' :: Int -> Action var -> a -> a
+unsafeTraceAction' n = traceAction' n . unsafeCoerce
+
+data LocationInfo = LocationInfo
+  { locationFilePath :: Maybe FilePath
+  , locationLine     :: Maybe Int
+  } deriving (Eq, Show)
+
+data Verbosity
+  = Debug
+  | Normal
+  | Silent
+  deriving (Eq, Ord)
+
+trace' :: Verbosity -> Verbosity -> String -> a -> a
+trace' msgLevel currentLevel
+  | currentLevel <= msgLevel = trace
+  | otherwise                = const id
+
+traceTypeCheck :: Verbosity -> String -> TypeCheck var a -> TypeCheck var a
+traceTypeCheck msgLevel msg tc = do
+  Context{..} <- ask
+  trace' msgLevel verbosity msg tc
+
+localVerbosity :: Verbosity -> TypeCheck var a -> TypeCheck var a
+localVerbosity v = local $ \Context{..} -> Context { verbosity = v, .. }
+
+localRenderBackend :: Maybe RenderBackend -> TypeCheck var a -> TypeCheck var a
+localRenderBackend v = local $ \Context{..} -> Context { renderBackend = v, .. }
+
+-- | Run the enclosed action with the 'renderHideTerm' policy set.
+localHideTerm :: Bool -> TypeCheck var a -> TypeCheck var a
+localHideTerm v = local $ \ctx -> ctx { renderHideTerm = v }
+
+-- | Render the enclosed action with the proof term hidden (see 'renderHideTerm').
+hidingTerm :: TypeCheck var a -> TypeCheck var a
+hidingTerm = localHideTerm True
+
+data Covariance
+  = Covariant     -- ^ Positive position.
+  | Contravariant -- ^ Negative position.
+  | Invariant     -- ^ Unknown position.
+
+data RenderBackend
+  = RenderSVG
+  | RenderLaTeX
+
+data ScopeInfo var = ScopeInfo
+  { scopeName :: Maybe Rzk.SectionName
+  , scopeVars :: [(var, VarInfo var)]
+  } deriving (Functor, Foldable)
+
+addVarToScope :: var -> VarInfo var -> ScopeInfo var -> ScopeInfo var
+addVarToScope var info ScopeInfo{..} = ScopeInfo
+  { scopeVars = (var, info) : scopeVars, .. }
+
+addModalityToScope :: TModality -> ScopeInfo var -> ScopeInfo var
+addModalityToScope md ScopeInfo{..} = ScopeInfo
+  { scopeVars = map (\(var, VarInfo{..}) -> (var, VarInfo{ modAccum = comp modAccum md, ..})) scopeVars, .. }
+
+data VarInfo var = VarInfo
+  { varType                :: TermT var
+  , varValue               :: Maybe (TermT var)
+  , varModality            :: TModality
+  , modAccum               :: TModality
+  , varOrig                :: Binder
+  , varIsAssumption        :: Bool -- FIXME: perhaps, introduce something like decl kind?
+  , varIsTopLevel          :: Bool
+  , varDeclaredAssumptions :: [var]
+  , varLocation            :: Maybe LocationInfo
+  } deriving (Functor, Foldable)
+
+
+class ModeTheory m where
+    iden :: m
+    comp :: m -> m -> m
+    coe :: m -> m -> Bool
+    isRA :: m -> Bool
+
+instance ModeTheory TModality where
+  iden = Id
+
+  comp Flat Flat   = Flat
+  comp Flat Sharp  = Flat
+  comp Flat Op     = Flat
+  comp Op Flat     = Flat
+  comp Sharp Sharp = Sharp
+  comp Sharp Flat  = Sharp
+  comp Sharp Op    = Sharp
+  comp Op Sharp    = Sharp
+  comp Op Op       = Id
+  comp Id m        = m
+  comp m Id        = m
+
+  coe Flat Id    = True
+  coe Flat Op    = True
+  coe Id Sharp   = True
+  coe Flat Sharp = True
+  coe Op Sharp   = True
+  coe a b        = a == b
+
+  isRA Sharp = True 
+  isRA Op = True 
+  isRA Id = True
+  isRA _ = False
+
+data ModalTope var = ModalTope
+  { tModAccum :: TModality
+  , tModVar   :: TModality
+  , tTope     :: TermT var
+  } deriving (Functor, Foldable, Eq)
+
+data Context var = Context
+  { localScopes            :: [ScopeInfo var]
+  , localTopes             :: [ModalTope var]
+  , localTopesNF           :: [ModalTope var]
+  , localTopesNFUnion      :: [[ModalTope var]]
+  , localTopesEntailBottom :: Maybe Bool
+  , actionStack            :: [Action var]
+  , currentCommand         :: Maybe Rzk.Command
+  , location               :: Maybe LocationInfo
+  , verbosity              :: Verbosity
+  , covariance             :: Covariance
+  , renderBackend          :: Maybe RenderBackend
+    -- | When rendering a diagram, hide the proof term: drop the @\<title\>@
+    -- (which carries the full term) from every cell and blank the visible label
+    -- of proof-coloured (interior) cells, keeping the given boundary labels. So
+    -- a worked term or an abstract inhabitant of a goal type is shown as the
+    -- shape with its given edges, not the term that fills it.
+  , renderHideTerm     :: Bool
+  , holesAreErrors         :: Bool
+    -- ^ When 'True' (the default), an unfilled hole is reported as a
+    -- 'TypeErrorUnsolvedHole'; finished work (and CI) must have no holes. The
+    -- lenient mode ('allowHoles') instead records each hole's goal and context.
+  , deferHoleMismatches    :: Bool
+    -- ^ How holes behave during unification, giving three modes overall. With
+    -- 'holesAreErrors' a hole is rejected outright (strict). Otherwise a hole
+    -- always unifies as a leaf; this flag then chooses what happens when the
+    -- /surrounding/ structure disagrees: 'True' (the default) defers — any term
+    -- containing a hole is accepted, for an in-progress sketch — while 'False'
+    -- keeps such a mismatch an error, so only a hole standing in a matching
+    -- structure is accepted ('structuralHoleUnify').
+  , hintLemmas             :: [VarIdent]
+    -- ^ Named top-level definitions a hole's candidate list may draw on, beyond
+    -- the local hypotheses (see 'withHintLemmas'). A caller (the game) supplies
+    -- a small curated allow-list per level; each listed lemma whose type fits
+    -- the goal is then offered, applied to holes (e.g. @concat ? ? ?@).
+  } deriving (Functor, Foldable)
+
+addVarInCurrentScope :: var -> VarInfo var -> Context var -> Context var
+addVarInCurrentScope var info Context{..} = Context
+  { localScopes =
+      case localScopes of
+        []             -> [ScopeInfo Nothing [(var, info)]]
+        scope : scopes -> addVarToScope var info scope : scopes
+  , .. }
+
+applyModalityToScopes :: TModality -> [ScopeInfo var] -> [ScopeInfo var]
+applyModalityToScopes md scopes = map (addModalityToScope md) scopes
+
+applyModalityToTopes :: TModality -> [ModalTope var] -> [ModalTope var]
+applyModalityToTopes md topes = map (\ModalTope{..} -> ModalTope{tModAccum = comp tModAccum md, ..}) topes
+
+applyModality :: TModality -> Context var -> Context var
+applyModality md Context{..} = Context
+  { localScopes = applyModalityToScopes md localScopes
+  , localTopes = applyModalityToTopes md localTopes
+  , localTopesNF = applyModalityToTopes md localTopesNF
+  , localTopesNFUnion = map (applyModalityToTopes md) localTopesNFUnion
+  , .. }
+
+emptyTopeContext :: [ModalTope var]
+emptyTopeContext =
+  [ ModalTope Id Id    topeTopT
+  , ModalTope Id Flat  topeTopT
+  , ModalTope Id Op    topeTopT
+  , ModalTope Id Sharp topeTopT
+  ]
+
+emptyContext :: Context var
+emptyContext = Context
+  { localScopes = [ScopeInfo Nothing []]
+  , localTopes = emptyTopeContext
+  , localTopesNF = emptyTopeContext
+  , localTopesNFUnion = [emptyTopeContext]
+  , localTopesEntailBottom = Just False
+  , actionStack = []
+  , currentCommand = Nothing
+  , location = Nothing
+  , verbosity = Normal
+  , covariance = Covariant
+  , renderBackend = Nothing
+  , renderHideTerm = False
+  , holesAreErrors = True
+  , deferHoleMismatches = True
+  , hintLemmas = []
+  }
+
+-- | Switch to lenient hole mode: record each hole's goal and context instead
+-- of reporting it as an error. Used by the structured goal/context query and
+-- the @--allow-holes@ CLI mode; the default (strict) mode rejects holes.
+allowHoles :: Context var -> Context var
+allowHoles ctx = ctx { holesAreErrors = False }
+
+-- | Allow a hole's candidate list to draw on the given named top-level
+-- definitions (in addition to the local hypotheses). The game supplies the
+-- per-level allow-list; 'recordHoleShape' then offers each listed lemma whose
+-- type fits the goal, applied to holes. See 'hintLemmas'.
+withHintLemmas :: [VarIdent] -> Context var -> Context var
+withHintLemmas lemmas ctx = ctx { hintLemmas = lemmas }
+
+-- | Within the given action, a hole unifies only as a leaf in an otherwise
+-- matching structure: a structural mismatch around a hole stays an error rather
+-- than being deferred (see 'deferHoleMismatches'). Used to ask whether a term
+-- /could/ have a given type, as opposed to tolerating an in-progress sketch.
+structuralHoleUnify :: Context var -> Context var
+structuralHoleUnify ctx = ctx { deferHoleMismatches = False }
+
+askCurrentScope :: TypeCheck var (ScopeInfo var)
+askCurrentScope = asks localScopes >>= \case
+  []              -> panicImpossible "no current scope available"
+  scope : _scopes -> pure scope
+
+isAccessible :: ModalTope var -> Bool
+isAccessible mt = coe (tModVar mt) (tModAccum mt)
+
+filterAccessible :: [ModalTope var] -> [ModalTope var]
+filterAccessible = filter isAccessible
+
+filterInaccessible :: [ModalTope var] -> [ModalTope var]
+filterInaccessible = filter (not . isAccessible)
+
+partitionAccessible :: [ModalTope var] -> ([ModalTope var], [ModalTope var])
+partitionAccessible = partition isAccessible
+
+accessibleTopes :: [ModalTope var] -> [TermT var]
+accessibleTopes = map tTope . filterAccessible
+
+plainTope :: TermT var -> ModalTope var
+plainTope = ModalTope Id Id
+
+availableTopes :: Context var -> [TermT var]
+availableTopes ctx = map tTope $ filterAccessible (localTopes ctx)
+
+availableTopesNF :: Context var -> [TermT var]
+availableTopesNF ctx = map tTope $ filterAccessible (localTopesNF ctx)
+
+varInfos :: Context var -> [(var, VarInfo var)]
+varInfos Context{..} = concatMap scopeVars localScopes
+
+varTypes :: Context var -> [(var, TermT var)]
+varTypes = map (fmap varType) . varInfos
+
+varValues :: Context var -> [(var, Maybe (TermT var))]
+varValues = map (fmap varValue) . varInfos
+
+varOrigs :: Context var -> [(var, Maybe VarIdent)]
+varOrigs = map (fmap (binderName . varOrig)) . varInfos
+
+-- | The full binder (pattern) of each in-scope variable, used to restore
+-- pattern-binder component names (e.g. @t@\/@s@ for @\\ (t , s) -> …@) when
+-- rendering goals, holes and contexts.
+varBinders :: Context var -> [(var, Binder)]
+varBinders = map (fmap varOrig) . varInfos
+
+varModalities :: Context var -> [(var, TModality)]
+varModalities = map (fmap varModality) . varInfos
+
+varLocks :: Context var -> [(var, TModality)]
+varLocks = map (fmap modAccum) . varInfos
+
+varTopLevels :: Context var -> [(var, Bool)]
+varTopLevels = map (fmap varIsTopLevel) . varInfos
+
+withPartialDecls
+  :: TypeCheck VarIdent ([Decl'], [err])
+  -> TypeCheck VarIdent ([Decl'], [err])
+  -> TypeCheck VarIdent ([Decl'], [err])
+withPartialDecls tc next = do
+  (decls, errs) <- tc
+  if null errs
+    then first (decls <>)
+      <$> localDeclsPrepared decls next
+    else return (decls, errs)
+
+withSection
+  :: Maybe Rzk.SectionName
+  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
+  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
+  -> TypeCheck VarIdent ([Decl VarIdent], [TypeErrorInScopedContext VarIdent])
+withSection name sectionBody =
+  withPartialDecls $ startSection name $ do
+    (decls, errs) <- sectionBody
+    localDeclsPrepared decls $
+      performing (ActionCloseSection name) $ do
+        result <- (Right <$> endSection errs) `catchError` (return . Left)
+        case result of
+          Left err              -> return ([], errs <> [err])
+          Right (decls', errs') -> return (decls', errs')
+        -- (\ decls' -> (decls', errs)) <$> endSection errs
+
+startSection :: Maybe Rzk.SectionName -> TypeCheck VarIdent a -> TypeCheck VarIdent a
+startSection name = local $ \Context{..} -> Context
+  { localScopes = ScopeInfo { scopeName = name, scopeVars = [] } : localScopes
+  , .. }
+
+endSection :: [TypeErrorInScopedContext VarIdent] -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
+endSection errs = askCurrentScope >>= scopeToDecls errs
+
+scopeToDecls :: Eq var => [TypeErrorInScopedContext var] -> ScopeInfo var -> TypeCheck var ([Decl var], [TypeErrorInScopedContext var])
+scopeToDecls errs ScopeInfo{..} = do
+  -- In lenient (hole-checking) mode an as-yet-unfilled hole may still come to
+  -- use a declared variable, so we tolerate the unused-variable diagnostics
+  -- wherever such a hole is present: a hole anywhere in the section for an
+  -- unused section assumption, a hole in the declaration itself for an unused
+  -- 'uses' variable. Strict mode (the default, and CI) keeps reporting both.
+  lenient <- not <$> asks holesAreErrors
+  let sectionHasHole = any (maybe False containsHole . varValue . snd) scopeVars
+  (decls, errs') <- collectScopeDecls (lenient && sectionHasHole) errs [] scopeVars
+  -- only issue unused variable errors if there were no errors prior in the section
+  -- when (null errs) $ do
+  unusedErrors <- forM decls $ \Decl{..} -> do
+    let unusedUsedVars = declUsedVars `intersect` map fst scopeVars
+        declHasHole    = maybe False containsHole declValue
+    if null errs && not (null unusedUsedVars) && not (lenient && declHasHole)
+      then do
+        err <- local (\c -> c { location = declLocation }) $
+          fromTypeError (TypeErrorUnusedUsedVariables unusedUsedVars declName)
+        return [err]
+      else return []
+  return (decls, errs' <> concat unusedErrors)
+
+insertExplicitAssumptionFor
+  :: Eq var => var -> (var, VarInfo var) -> TermT var -> TermT var
+insertExplicitAssumptionFor a (declName, VarInfo{..}) term =
+  term >>= \case
+    y | y == declName -> appT varType (Pure declName) (Pure a)
+      | otherwise     -> Pure y
+
+insertExplicitAssumptionFor'
+  :: Eq var => var -> (var, VarInfo var) -> VarInfo var -> VarInfo var
+insertExplicitAssumptionFor' a decl VarInfo{..}
+  | varIsAssumption = VarInfo{..}
+  | otherwise = VarInfo
+      { varType = insertExplicitAssumptionFor a decl varType
+      , varValue = insertExplicitAssumptionFor a decl <$> varValue
+      , varIsAssumption = varIsAssumption
+      , varIsTopLevel = varIsTopLevel
+      , varModality = varModality
+      , modAccum = modAccum
+      , varOrig = varOrig
+      , varDeclaredAssumptions = varDeclaredAssumptions
+      , varLocation = varLocation
+      }
+
+makeAssumptionExplicit
+  :: Eq var
+  => (var, VarInfo var)
+  -> [(var, VarInfo var)]
+  -> TypeCheck var (Bool, [(var, VarInfo var)])
+makeAssumptionExplicit _ [] = pure (False {- UNUSED -}, [])
+makeAssumptionExplicit assumption@(a, aInfo) ((x, xInfo) : xs) = do
+  varsInType <- freeVarsT_ (varType xInfo)
+  varsInBody <- concat <$> traverse freeVarsT_ (varValue xInfo)
+  let xFreeVars = varsInBody <> varsInType
+  let hasAssumption = a `elem` xFreeVars
+  xType <- typeOfVar x
+  xValue <- valueOfVar x
+  let assumptionInType = a `elem` freeVars (untyped xType)
+      assumptionInBody = a `elem` foldMap (freeVars . untyped) xValue
+      implicitAssumption = and
+        [ hasAssumption
+        , not (assumptionInType || assumptionInBody)
+        , a `notElem` varDeclaredAssumptions xInfo ]
+  if hasAssumption
+     then do
+       when implicitAssumption $ do
+         issueTypeError $ TypeErrorImplicitAssumption (a, varType aInfo) x
+       (_used, xs'') <- makeAssumptionExplicit (a, aInfo) xs'
+       return (True {- USED -}, (x, xInfo') : xs'')
+     else do
+       (used, xs'') <- makeAssumptionExplicit assumption xs
+       return (used, (x, xInfo) : xs'')
+  where
+    xType' = typeFunT (varOrig aInfo) Id (varType aInfo) Nothing (abstract a (varType xInfo))
+    xInfo' = VarInfo
+      { varType = xType'
+      , varValue = fmap (lambdaT xType' (varOrig aInfo) Nothing . abstract a) (varValue xInfo)
+      , varIsAssumption = varIsAssumption xInfo
+      , varIsTopLevel = varIsTopLevel xInfo
+      , varModality = Id
+      , modAccum = Id
+      , varOrig = varOrig xInfo
+      , varDeclaredAssumptions = varDeclaredAssumptions xInfo \\ [a]
+      , varLocation = varLocation xInfo
+      }
+    xs' = map (fmap (insertExplicitAssumptionFor' a (x, xInfo))) xs
+
+collectScopeDecls :: Eq var => Bool -> [TypeErrorInScopedContext var] -> [(var, VarInfo var)] -> [(var, VarInfo var)] -> TypeCheck var ([Decl var], [TypeErrorInScopedContext var])
+collectScopeDecls tolerateUnused errs recentVars (decl@(var, VarInfo{..}) : vars)
+  | varIsAssumption = do
+      (used, recentVars') <- makeAssumptionExplicit decl recentVars
+      -- only issue unused vars error if there were no other errors previously
+      -- when (null errs) $ do
+      unusedErr <-
+        if null errs && not used && not tolerateUnused
+          then local (\c -> c { location = varLocation }) $
+            pure <$> fromTypeError (TypeErrorUnusedVariable var varType)
+          else return []
+      collectScopeDecls tolerateUnused (errs <> unusedErr) recentVars' vars
+  | otherwise = do
+      collectScopeDecls tolerateUnused errs (decl : recentVars) vars
+collectScopeDecls _ errs recentVars [] = do
+  loc <- asks location
+  return (toDecl loc <$> recentVars, errs)
+  where
+    toDecl loc (var, VarInfo{..}) = Decl
+      { declName = var
+      , declType = varType
+      , declValue = varValue
+      , declIsAssumption = varIsAssumption
+      , declUsedVars = varDeclaredAssumptions
+      , declLocation = updatePosition (binderName varOrig >>= fmap fst . Rzk.hasPosition . fromVarIdent) <$> loc -- FIXME
+      }
+    updatePosition Nothing l       = l
+    updatePosition (Just lineNo) l = l { locationLine = Just lineNo }
+
+abstractAssumption :: Eq var => (var, VarInfo var) -> Decl var -> Decl var
+abstractAssumption (var, VarInfo{..}) Decl{..} = Decl
+  { declName = declName
+  , declType = typeFunT varOrig Id varType Nothing (abstract var declType)
+  , declValue = (\body -> lambdaT newDeclType varOrig Nothing (abstract var body)) <$> declValue
+  , declIsAssumption = declIsAssumption
+  , declUsedVars = declUsedVars
+  , declLocation = declLocation
+  }
+  where
+    newDeclType = typeFunT varOrig Id varType Nothing (abstract var declType)
+
+data OutputDirection = TopDown | BottomUp
+  deriving (Eq)
+
+block :: OutputDirection -> [String] -> String
+block TopDown  = intercalate "\n"
+block BottomUp = intercalate "\n" . reverse
+
+namedBlock :: OutputDirection -> String -> [String] -> String
+namedBlock dir name lines_ = block dir $
+  name : map indent lines_
+  where
+    indent = intercalate "\n" . (map ("  " ++)) . lines
+
+ppContext' :: OutputDirection -> Context VarIdent -> String
+ppContext' dir ctx@Context{..} = block dir $ dropWhile null
+  [ block TopDown
+    [ case location of
+        _ | dir == TopDown -> "" -- FIXME
+        Just (LocationInfo (Just path) (Just lineNo)) ->
+          path <> " (line " <> show lineNo <> "):"
+        Just (LocationInfo (Just path) _) ->
+          path <> ":"
+        _  -> ""
+    , case currentCommand of
+        Just (Rzk.CommandDefine _loc name _vars _params _ty _term) ->
+          "  Error occurred when checking\n    #define " <> Rzk.printTree name
+        Just (Rzk.CommandPostulate _loc name _vars _params _ty ) ->
+          "  Error occurred when checking\n    #postulate " <> Rzk.printTree name
+        Just (Rzk.CommandCheck _loc term ty) ->
+          "  Error occurred when checking\n    " <> Rzk.printTree term <> " : " <> Rzk.printTree ty
+        Just (Rzk.CommandCompute _loc term) ->
+          "  Error occurred when computing\n    " <> Rzk.printTree term
+        Just (Rzk.CommandComputeNF _loc term) ->
+          "  Error occurred when computing NF for\n    " <> Rzk.printTree term
+        Just (Rzk.CommandComputeWHNF _loc term) ->
+          "  Error occurred when computing WHNF for\n    " <> Rzk.printTree term
+        Just (Rzk.CommandSetOption _loc optionName _optionValue) ->
+          "  Error occurred when trying to set option\n    #set-option " <> show optionName
+        Just command@Rzk.CommandUnsetOption{} ->
+          "  Error occurred when trying to unset option\n    " <> Rzk.printTree command
+        Just command@Rzk.CommandAssume{} ->
+          "  Error occurred when checking assumption\n    " <> Rzk.printTree command
+        Just (Rzk.CommandSection _loc name) ->
+          "  Error occurred when checking\n    #section " <> Rzk.printTree name
+        Just (Rzk.CommandSectionEnd _loc name) ->
+          "  Error occurred when checking\n    #end " <> Rzk.printTree name
+        Nothing -> "  Error occurred outside of any command!"
+    ]
+  , ""
+  , case filter (/= topeTopT) (availableTopes ctx) of
+      [] -> "Local tope context is unrestricted (⊤)."
+      localTopes' -> namedBlock TopDown "Local tope context:"
+        [ "  " <> ppU (untyped tope)
+        | tope <- localTopes' ]
+  , ""
+  , block dir
+    [ "when " <> ppAction fbs 0 action
+    | action <- actionStack ]
+  , namedBlock TopDown "Definitions in context:"
+    [ block dir
+      [ dispName x <> " : " <> ppU (untyped ty)
+      | (x, ty) <- reverse (varTypes ctx) ] ]
+  ]
+  where
+    (fbs, _) = contextBinders ctx
+    ppU = ppFoldU fbs
+    -- a pattern binder is shown as its pattern, e.g. (t , s); others by name
+    dispName x = maybe (show (Pure x :: Term')) (show . binderDisplayName) (lookup x fbs)
+
+doesShadowName :: VarIdent -> TypeCheck var [VarIdent]
+doesShadowName name = asks $ \ctx ->
+  filter (name ==) (mapMaybe snd (varOrigs ctx))
+
+checkTopLevelDuplicate :: VarIdent -> TypeCheck var ()
+checkTopLevelDuplicate name = do
+  doesShadowName name >>= \case
+    []         -> return ()
+    collisions -> issueTypeError $
+      TypeErrorDuplicateTopLevel collisions name
+
+checkNameShadowing :: VarIdent -> TypeCheck var ()
+checkNameShadowing name = do
+  doesShadowName name >>= \case
+    [] -> return ()
+    collisions -> issueWarning $
+      Rzk.printTree (getVarIdent name) <> " shadows an existing definition:"
+      <> unlines
+        [ "  " <> ppVarIdentWithLocation name
+        , "previous top-level definitions found at"
+        , intercalate "\n"
+          [ "  " <> ppVarIdentWithLocation prev | prev <- collisions ] ]
+
+withLocation :: LocationInfo -> TypeCheck var a -> TypeCheck var a
+withLocation loc = local $ \Context{..} -> Context { location = Just loc, .. }
+
+withCommand :: Rzk.Command -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent]) -> TypeCheck VarIdent ([Decl'], [TypeErrorInScopedContext VarIdent])
+withCommand command tc = local f $ do
+  result <- (Right <$> tc) `catchError` (return . Left)
+  case result of
+    Left err            -> return ([], [err])
+    Right (decls, errs) -> return (decls, errs)
+  where
+    f Context{..} = Context
+      { currentCommand = Just command
+      , location = updatePosition (Rzk.hasPosition command) <$> location
+      , .. }
+    updatePosition pos loc = loc { locationLine = fst <$> pos }
+
+localDecls :: [Decl VarIdent] -> TypeCheck VarIdent a -> TypeCheck VarIdent a
+localDecls []             = id
+localDecls (decl : decls) = localDecl decl . localDecls decls
+
+localDeclsPrepared :: [Decl VarIdent] -> TypeCheck VarIdent a -> TypeCheck VarIdent a
+localDeclsPrepared [] = id
+localDeclsPrepared (decl : decls) = localDeclPrepared decl . localDeclsPrepared decls
+
+localDecl :: Decl VarIdent -> TypeCheck VarIdent a -> TypeCheck VarIdent a
+localDecl (Decl x ty term isAssumption vars loc) tc = do
+  ty' <- memoizeWHNF ty
+  term' <- traverse memoizeWHNF term
+  localDeclPrepared (Decl x ty' term' isAssumption vars loc) tc
+
+localDeclPrepared :: Decl VarIdent -> TypeCheck VarIdent a -> TypeCheck VarIdent a
+localDeclPrepared (Decl x ty term isAssumption vars loc) tc = do
+  checkTopLevelDuplicate x
+  local update tc
+  where
+    update = addVarInCurrentScope x VarInfo
+      { varType = ty
+      , varValue = term
+      , varOrig = BinderVar (Just x)
+      , varModality  = Id
+      , modAccum = Id
+      , varIsAssumption = isAssumption
+      , varIsTopLevel = True
+      , varDeclaredAssumptions = vars
+      , varLocation = loc
+      }
+
+-- | A binding shown in a hole's local context: the display name and its type,
+-- already rendered with user-facing 'VarIdent' names (see 'HoleInfo').
+data HoleEntry = HoleEntry
+  { holeEntryName :: VarIdent
+  , holeEntryType :: Term'
+  } deriving (Eq, Show)
+
+-- | The structured goal and context at a hole, recorded in lenient mode (see
+-- 'allowHoles'). Everything is rendered to user-facing 'VarIdent' names at
+-- record time, so 'HoleInfo' is independent of the De Bruijn scope it came
+-- from. Local hypotheses are split into ordinary term variables and cube
+-- variables (the cube/tope layer is specific to Rzk); the global environment is
+-- deliberately excluded — it belongs in a searchable inventory, not the goal
+-- panel.
+data HoleInfo = HoleInfo
+  { holeName      :: Maybe VarIdent  -- ^ the @?name@, if the hole was named
+  , holeGoal      :: Term'           -- ^ expected type (the goal), kept symbolic
+  , holeGoalShape :: Maybe (VarIdent, Term')
+    -- ^ when the goal is a /shape/ (the hole is the argument of a
+    -- shape-restricted function), the shape's bound variable and its tope: the
+    -- goal then reads @(binder : holeGoal | tope)@. 'Nothing' for an ordinary
+    -- goal. (Extension-type goals need no special handling — they are already a
+    -- restricted type in 'holeGoal'.)
+  , holeTermVars  :: [HoleEntry]     -- ^ local hypotheses whose type is not a cube
+  , holeCubeVars  :: [HoleEntry]     -- ^ local cube variables (type is a cube)
+  , holeTopes     :: [Term']         -- ^ local tope assumptions (excluding ⊤)
+  , holeCandidates :: [Term']
+    -- ^ elimination spines over the local hypotheses whose type fits the goal,
+    -- with applied arguments left as holes (see 'allEliminationsInto'). Already
+    -- rendered, like the other fields.
+  , holeIntroductions :: [Term']
+    -- ^ introduction forms for the goal type, built from its head constructor
+    -- with the constituents left as holes (see 'allIntroductionsOf'). Already
+    -- rendered, like the other fields.
+  , holeDiagram   :: Maybe String
+    -- ^ an SVG of the goal cell, when the goal is a renderable shape (an arrow,
+    -- triangle, or square up to dimension 3): the shape with its given boundary
+    -- edges, drawn from an abstract inhabitant of the goal type with the
+    -- proof term hidden (see 'renderHideTerm'). 'Nothing' for a non-shape goal.
+  , holeLocation  :: Maybe LocationInfo
+  } deriving (Eq, Show)
+
+type TypeCheck var =
+  ReaderT (Context var)
+    (WriterT [HoleInfo] (Except (TypeErrorInScopedContext var)))
+
+freeVarsT_ :: Eq var => TermT var -> TypeCheck var [var]
+freeVarsT_ term = do
+  types <- asks varTypes
+  let typeOfVar' x =
+        case lookup x types of
+          Nothing -> panicImpossible "undefined variable"
+          Just ty -> ty
+  return (freeVarsT typeOfVar' term)
+
+traceStartAndFinish :: Show a => String -> a -> a
+traceStartAndFinish tag = trace ("start [" <> tag <> "]") .
+  (\x -> trace ("finish [" <> tag <> "] with " <> show x) x)
+
+entailM :: Eq var => [ModalTope var] -> TermT var -> TypeCheck var Bool
+entailM modalTopes goal = do
+  -- genTopes <- generateTopesForPointsM (allTopePoints goal)
+  discreteAxioms <- generateTopesForModalCubeVarsM
+  let topes'    = nubTermT (modalTopes <> discreteAxioms)
+      topes''   = simplifyLHSwithDisjunctions topes'
+  topes'''  <- mapM (fmap (saturateTopes (allTopePoints goal) . saturateBottom) . saturateInv) topes''
+  prettyTopes <- mapM ppTermInContext (map tTope (saturateTopes (allTopePoints goal) (simplifyLHS topes')))
+  prettyTope <- ppTermInContext goal
+  traceTypeCheck Debug
+    ("entail " <> intercalate ", " prettyTopes <> " |- " <> prettyTope) $
+      and <$> mapM (`solveRHSM` goal) topes'''
+
+
+generateTopesForModalCubeVarsM :: Eq var => TypeCheck var [ModalTope var]
+generateTopesForModalCubeVarsM = do
+  infos <- asks varInfos
+  fmap (nubTermT . concat) $ forM infos $ \(var, info) ->
+    case varModality info of
+      Flat -> do
+        whnfT (varType info) >>= \case
+          Cube2T{} -> do
+            let pt = Pure var
+            return [plainTope (topeOrT (topeEQT pt cube2_0T) (topeEQT pt cube2_1T))]
+          CubeIT{} -> do
+            let pt = Pure var
+            return [plainTope (topeOrT (topeEQT pt cubeI_0T) (topeEQT pt cubeI_1T))]
+          _ -> return []
+      _ -> return []
+
+entailTraceM :: Eq var => [ModalTope var] -> TermT var -> TypeCheck var Bool
+entailTraceM modalTopes goal = do
+  topes' <- mapM ppTermInContext (accessibleTopes modalTopes)
+  goal' <- ppTermInContext goal
+  result <- trace ("entail " <> intercalate ", " topes' <> " |- " <> goal') $
+        modalTopes `entailM` goal
+  return $ trace ("  " <> show result) result
+
+nubTermT :: Eq a => [a] -> [a]
+nubTermT []     = []
+nubTermT (t:ts) = t : nubTermT (filter (/= t) ts)
+
+saturateTopes :: Eq var => [TermT var] -> [ModalTope var] -> [ModalTope var]
+saturateTopes _points topes =
+  let (accessible, inaccessible) = partitionAccessible topes
+      saturated = saturateWith
+        (\mt ts -> mt `elem` ts)
+        (\new old -> map plainTope $ generateTopes (map tTope new) (map tTope old))
+        accessible
+  in saturated <> inaccessible
+
+saturateInv :: Eq var => [ModalTope var] -> TypeCheck var [ModalTope var]
+saturateInv modalTopes = do
+    -- FIXME: this is a workaround; ideally we should regenerate all topes
+    -- on EVERY modality change in any layer, but that would produce too many;
+    -- for now we also invert topes that were accessible before the modality shift
+    let accessible = filterAccessible modalTopes
+        accessibleById = filter (\mt -> coe (tModVar mt) Id) modalTopes
+    invResults <- forM (nubTermT (accessible <> accessibleById)) $ \mt -> do
+      nf <- nfTope $ modExtractT topeT Id Op (topeInvT (tTope mt))
+      return $ ModalTope (tModAccum mt) Op nf
+    let accessibleUnderOp = filter (\mt -> coe (tModVar mt) (comp (tModAccum mt) Op)) modalTopes
+    uninvResults <- forM accessibleUnderOp $ \(ModalTope acc var' phi) -> do
+      nf <- nfTope $ topeUninvT (modAppT topeT Op phi)
+      return $ ModalTope (comp acc Op) var' nf
+    let newTopes = nubTermT (invResults <> uninvResults)
+        fresh = filter (`notElem` modalTopes) newTopes
+    return (modalTopes <> fresh)
+
+-- | Ex falso for BOT, lifted across modalities.
+--
+-- A contradiction in the topes that are genuinely available at the identity
+-- modality entails BOT, and BOT entails @_μ BOT@ for every modality @μ@ by the
+-- absurd rule (this holds for BOT specifically; a general tope @φ@ does NOT give
+-- @_μ φ@, which would need the missing unit @id ⇒ μ@). Re-asserting @_μ BOT@ at
+-- each lock @μ@ where an available tope was hidden lets the contradiction survive
+-- the lock: e.g. @_b BOT@ is accessible under a @_b@ lock (@coe Flat Flat@), so
+-- @mod _b recBOT@ in a vacuous context is accepted.
+--
+-- A tope counts as available at the identity modality when its variable modality
+-- coerces into @Id@: a @_b@-modal tope qualifies via the counit (@coe Flat Id@),
+-- but a @_#@-modal one does not (@coe Sharp Id@ is False) — which is exactly why
+-- @_# BOT@ does not leak to plain BOT (see ill-modal-sharp-bot-not-bot).
+saturateBottom :: Eq var => [ModalTope var] -> [ModalTope var]
+saturateBottom modalTopes
+  | null droppedAccums = modalTopes   -- nothing hidden by a lock; ordinary saturation suffices
+  | botDerivable       = modalTopes <> fresh
+  | otherwise          = modalTopes
+  where
+    idAccessible  = filter (\mt -> coe (tModVar mt) Id) modalTopes
+    droppedAccums = nub [ tModAccum mt | mt <- idAccessible, not (isAccessible mt) ]
+    saturatedId   = saturateWith (\t ts -> t `elem` ts) generateTopes (map tTope idAccessible)
+    botDerivable  = topeBottomT `elem` saturatedId
+    fresh = [ mt
+            | acc <- droppedAccums
+            , let mt = ModalTope acc acc topeBottomT
+            , mt `notElem` modalTopes ]
+
+-- FIXME: cleanup
+saturateWith :: (a -> [a] -> Bool) -> ([a] -> [a] -> [a]) -> [a] -> [a]
+saturateWith elem' step zs = go (nub' zs) []
+  where
+    go lastNew xs
+      | null new = lastNew
+      | otherwise = lastNew <> go new xs'
+      where
+        xs' = lastNew <> xs
+        new = filter (not . (`elem'` xs')) (nub' $ step lastNew xs)
+    nub' []     = []
+    nub' (x:xs) = x : nub' (filter (not . (`elem'` [x])) xs)
+
+generateTopes :: Eq var => [TermT var] -> [TermT var] -> [TermT var]
+generateTopes newTopes oldTopes
+  | topeBottomT `elem` newTopes = []
+  | topeEQT cube2_0T cube2_1T `elem` newTopes = [topeBottomT]
+  | topeEQT cubeI_0T cubeI_1T `elem` newTopes = [topeBottomT]
+  | length oldTopes > 100 = []    -- FIXME
+  | otherwise = concat
+      [  -- symmetry EQ
+        [ topeEQT y x | TopeEQT _ty x y <- newTopes ]
+        -- transitivity EQ (1)
+      , [ topeEQT x z
+        | TopeEQT _ty x y : newTopes' <- tails newTopes
+        , TopeEQT _ty y' z <- newTopes' <> oldTopes
+        , y == y' ]
+        -- transitivity EQ (2)
+      , [ topeEQT x z
+        | TopeEQT _ty y z : newTopes' <- tails newTopes
+        , TopeEQT _ty x y' <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- transitivity LEQ (1)
+      , [ topeLEQT x z
+        | TopeLEQT _ty x y : newTopes' <- tails newTopes
+        , TopeLEQT _ty y' z <- newTopes' <> oldTopes
+        , y == y' ]
+        -- transitivity LEQ (2)
+      , [ topeLEQT x z
+        | TopeLEQT _ty y z : newTopes' <- tails newTopes
+        , TopeLEQT _ty x y' <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- antisymmetry LEQ
+      , [ topeEQT x y
+        | TopeLEQT _ty x y : newTopes' <- tails newTopes
+        , TopeLEQT _ty y' x' <- newTopes' <> oldTopes
+        , y == y'
+        , x == x' ]
+
+        -- FIXME: special case of substitution of EQ
+        -- transitivity EQ-LEQ (1)
+      , [ topeLEQT x z
+        | TopeEQT  _ty y z : newTopes' <- tails newTopes
+        , TopeLEQT _ty x y' <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- FIXME: special case of substitution of EQ
+        -- transitivity EQ-LEQ (2)
+      , [ topeLEQT x z
+        | TopeEQT  _ty x y : newTopes' <- tails newTopes
+        , TopeLEQT _ty y' z <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- FIXME: special case of substitution of EQ
+        -- transitivity EQ-LEQ (3)
+      , [ topeLEQT x z
+        | TopeLEQT  _ty y z : newTopes' <- tails newTopes
+        , TopeEQT _ty x y' <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- FIXME: special case of substitution of EQ
+        -- transitivity EQ-LEQ (4)
+      , [ topeLEQT x z
+        | TopeLEQT  _ty x y : newTopes' <- tails newTopes
+        , TopeEQT _ty y' z <- newTopes' <> oldTopes
+        , y == y' ]
+
+        -- FIXME: consequence of LEM for LEQ and antisymmetry for LEQ
+      , [ topeEQT x y | TopeLEQT _ty x y@Cube2_0T{} <- newTopes ]
+        -- FIXME: consequence of LEM for LEQ and antisymmetry for LEQ
+      , [ topeEQT x y | TopeLEQT _ty x@Cube2_1T{} y <- newTopes ]
+      , [ topeEQT x y | TopeLEQT _ty x y@CubeI_0T{} <- newTopes ]
+        -- FIXME: consequence of LEM for LEQ and antisymmetry for LEQ
+      , [ topeEQT x y | TopeLEQT _ty x@CubeI_1T{} y <- newTopes ]
+
+        -- subtyping 2 <: II: endpoints and order of 2 lift to II
+      , [ topeEQT x cubeI_0T | TopeEQT _ty x Cube2_0T{} <- newTopes ]
+      , [ topeEQT cubeI_0T x | TopeEQT _ty Cube2_0T{} x <- newTopes ]
+      , [ topeEQT x cubeI_1T | TopeEQT _ty x Cube2_1T{} <- newTopes ]
+      , [ topeEQT cubeI_1T x | TopeEQT _ty Cube2_1T{} x <- newTopes ]
+      , [ topeLEQT x cubeI_0T | TopeLEQT _ty x Cube2_0T{} <- newTopes ]
+      , [ topeLEQT cubeI_0T x | TopeLEQT _ty Cube2_0T{} x <- newTopes ]
+      , [ topeLEQT x cubeI_1T | TopeLEQT _ty x Cube2_1T{} <- newTopes ]
+      , [ topeLEQT cubeI_1T x | TopeLEQT _ty Cube2_1T{} x <- newTopes ]
+      ]
+
+generateTopesForPointsM :: Eq var => [TermT var] -> TypeCheck var [TermT var]
+generateTopesForPointsM points = do
+  let pairs = nub $ concat
+        [ [ (x, y)
+          | x : points' <- tails (filter (`notElem` [cube2_0T, cube2_1T, cubeI_0T, cubeI_1T]) points)
+          , y <- points'
+          , x /= y ]
+        ]
+  stars <- forM points $ \x -> do
+    xType <- typeOf x
+    return $ if (xType == cubeUnitT)
+      then [topeEQT x cubeUnitStarT]
+      else []
+  topes <- forM pairs $ \(x, y) -> do
+    xType <- typeOf x
+    yType <- typeOf y
+    return $ if (xType == cube2T) && (yType == cube2T)
+      then [topeOrT (topeLEQT x y) (topeLEQT y x)]
+      else []
+  return (concat (topes ++ stars))
+
+allTopePoints :: Eq var => TermT var -> [TermT var]
+allTopePoints = nubTermT . foldMap subPoints . nubTermT . topePoints
+
+topePoints :: TermT var -> [TermT var]
+topePoints = \case
+  TopeTopT{}     -> []
+  TopeBottomT{}  -> []
+  TopeAndT _ l r -> topePoints l <> topePoints r
+  TopeOrT  _ l r -> topePoints l <> topePoints r
+  TopeEQT  _ x y -> [x, y]
+  TopeLEQT _ x y -> [x, y]
+  _              -> []
+
+subPoints :: TermT var -> [TermT var]
+subPoints = \case
+  p@(PairT _ x y) -> p : foldMap subPoints [x, y]
+  p@Pure{} -> [p]
+  p@(Free (AnnF TypeInfo{..} _))
+    | Cube2T{} <- infoType -> [p]
+    | CubeUnitT{} <- infoType -> [p]
+  _ -> []
+
+-- | Simplify the context, including disjunctions. See also 'simplifyLHS'.
+simplifyLHSwithDisjunctions :: Eq var => [ModalTope var] -> [[ModalTope var]]
+simplifyLHSwithDisjunctions topes = map nubTermT $
+  case topes of
+    [] -> [[]]
+    (ModalTope _ _ TopeTopT{}) : topes' -> simplifyLHSwithDisjunctions topes'
+    (ModalTope mAcc mVar TopeBottomT{}) : _  -> [[ModalTope mAcc mVar topeBottomT]]
+    (ModalTope mAcc mVar (TopeAndT _ l r)) : topes' -> simplifyLHSwithDisjunctions ((ModalTope mAcc mVar l) : (ModalTope mAcc mVar r) : topes')
+
+    -- NOTE: it is inefficient to expand disjunctions immediately
+    (ModalTope mAcc mVar (TopeOrT  _ l r)) : topes' -> simplifyLHSwithDisjunctions ((ModalTope mAcc mVar l) : topes') <> simplifyLHSwithDisjunctions ((ModalTope mAcc mVar r) : topes')
+
+    (ModalTope mAcc mVar (TopeEQT  _ (PairT _ x y) (PairT _ x' y'))) : topes' ->
+      simplifyLHSwithDisjunctions (ModalTope mAcc mVar (topeEQT x x') : ModalTope mAcc mVar (topeEQT y y') : topes')
+    (ModalTope mAcc mVar (TypeModalT _ md inTope)) : topes' ->
+      simplifyLHSwithDisjunctions ((ModalTope mAcc (comp mVar md) inTope) : topes')
+    t : topes' -> map (t :) (simplifyLHSwithDisjunctions topes')
+
+-- | Simplify the context, except disjunctions. See also 'simplifyLHSwithDisjunctions'.
+simplifyLHS :: Eq var => [ModalTope var] -> [ModalTope var]
+simplifyLHS topes = nubTermT $
+  case topes of
+    [] -> []
+    (ModalTope _ _ TopeTopT{}) : topes' -> simplifyLHS topes'
+    (ModalTope _ _ TopeBottomT{}) : _  -> [plainTope topeBottomT]
+    (ModalTope mAcc mVar (TopeAndT _ l r)) : topes' -> simplifyLHS (ModalTope mAcc mVar l : ModalTope mAcc mVar r : topes')
+
+    -- NOTE: it is inefficient to expand disjunctions immediately
+    -- (ModalTope mAcc mVar (TopeOrT _ l r)) : topes' -> simplifyLHS (ModalTope mAcc mVar l : topes') <> simplifyLHS (ModalTope mAcc mVar r : topes')
+
+    (ModalTope mAcc mVar (TopeEQT _ (PairT _ x y) (PairT _ x' y'))) : topes' ->
+      simplifyLHS (ModalTope mAcc mVar (topeEQT x x') : ModalTope mAcc mVar (topeEQT y y') : topes')
+    (ModalTope mAcc mVar (TypeModalT _ md inTope)) : topes' ->
+      simplifyLHS (ModalTope mAcc (comp mVar md) inTope : topes')
+    t : topes' -> t : simplifyLHS topes'
+
+solveRHSM :: Eq var => [ModalTope var] -> TermT var -> TypeCheck var Bool
+solveRHSM modalTopes goal =
+  let topes = accessibleTopes modalTopes
+  in case goal of
+    _ | topeBottomT `elem` topes -> return True
+    TopeTopT{}     -> return True
+    TypeModalT _ty md inTope -> do
+      let shifted = applyModalityToTopes md modalTopes
+          resaturated = saturateTopes [] shifted
+      resaturatedInv <- saturateInv resaturated
+      solveRHSM resaturatedInv inTope
+    TopeEQT  _ty (PairT _ty1 x y) (PairT _ty2 x' y') ->
+      solveRHSM modalTopes $ topeAndT
+        (topeEQT x x')
+        (topeEQT y y')
+    TopeEQT  _ty (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) r ->
+      solveRHSM modalTopes $ topeAndT
+        (topeEQT x (firstT cubeI r))
+        (topeEQT y (secondT cubeJ r))
+    TopeEQT  _ty l (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) ->
+      solveRHSM modalTopes $ topeAndT
+        (topeEQT (firstT cubeI l) x)
+        (topeEQT (secondT cubeJ l) y)
+    TopeEQT  _ty l r
+      | or
+          [ l == r
+          , goal `elem` topes
+          , topeEQT r l `elem` topes
+          ] -> return True
+    TopeEQT  _ty l r -> do
+      lType <- typeOf l
+      rType <- typeOf r
+      return $ case (lType, rType) of
+        (CubeUnitT{}, CubeUnitT{}) -> True
+        _                          -> False
+    TopeLEQT _ty l r
+      | l == r -> return True
+      | solveRHS topes (topeEQT l r) -> return True
+      | solveRHS topes (topeEQT l cube2_0T) -> return True
+      | solveRHS topes (topeEQT r cube2_1T) -> return True
+    TopeAndT _ l r -> (&&)
+      <$> solveRHSM modalTopes l
+      <*> solveRHSM modalTopes r
+    _ | goal `elem` topes -> return True
+    TopeInvT{} -> do
+      goal' <- nfTope goal
+      case goal' of
+        TopeInvT{} -> return False
+        _          -> solveRHSM modalTopes goal'
+    TopeUninvT{} -> do
+      goal' <- nfTope goal
+      case goal' of
+        TopeUninvT{} -> return False
+        _            -> solveRHSM modalTopes goal'
+    TopeOrT  _ l r -> do
+      l' <- solveRHSM modalTopes l
+      r' <- solveRHSM modalTopes r
+      if (l' || r')
+        then return True
+        else do
+          lems <- generateTopesForPointsM (allTopePoints goal)
+          let lems' = [ lem | lem@(TopeOrT _ t1 t2) <- lems, all (`notElem` topes) [t1, t2] ]
+              (accessible, hidden) = partitionAccessible modalTopes
+              withTope t = hidden ++ saturateTopes [] (plainTope t : accessible)
+
+          case lems' of
+            TopeOrT _ t1 t2 : _ -> do
+              l'' <- solveRHSM (withTope t1) goal
+              r'' <- solveRHSM (withTope t2) goal
+              return (l'' && r'')
+            _ -> return False
+    _ -> return False
+
+solveRHS :: Eq var => [TermT var] -> TermT var -> Bool
+solveRHS topes tope =
+  case tope of
+    _ | topeBottomT `elem` topes -> True
+    TopeTopT{}     -> True
+    TopeEQT  _ty (PairT _ty1 x y) (PairT _ty2 x' y')
+      | solveRHS topes (topeEQT x x') && solveRHS topes (topeEQT y y') -> True
+    TopeEQT  _ty (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y) r
+      | solveRHS topes (topeEQT x (firstT cubeI r)) && solveRHS topes (topeEQT y (secondT cubeJ r)) -> True
+    TopeEQT  _ty l (PairT TypeInfo{ infoType = CubeProductT _ cubeI cubeJ } x y)
+      | solveRHS topes (topeEQT (firstT cubeI l) x) && solveRHS topes (topeEQT (secondT cubeJ l) y) -> True
+    TopeEQT  _ty l r -> or
+      [ l == r
+      , tope `elem` topes
+      , topeEQT r l `elem` topes
+      ]
+    TopeLEQT _ty l r
+      | l == r -> True
+      | solveRHS topes (topeEQT l r) -> True
+      | solveRHS topes (topeEQT l cube2_0T) -> True
+      | solveRHS topes (topeEQT r cube2_1T) -> True
+    -- TopeBottomT{}  -> solveLHS topes tope
+    TopeAndT _ l r -> solveRHS topes l && solveRHS topes r
+    TopeOrT  _ l r -> solveRHS topes l || solveRHS topes r
+    _ -> tope `elem` topes
+
+checkTope :: Eq var => TermT var -> TypeCheck var Bool
+checkTope tope = do
+  ctxTopes <- asks availableTopes
+  performing (ActionContextEntails ctxTopes tope) $ do
+    topes' <- asks localTopesNF
+    tope' <- nfTope tope
+    topes' `entailM` tope'
+
+checkTopeEntails :: Eq var => TermT var -> TypeCheck var Bool
+checkTopeEntails tope = do
+  ctxTopes <- asks availableTopes
+  performing (ActionContextEntailedBy ctxTopes tope) $ do
+    contextTopes <- asks availableTopesNF
+    restrictionTope <- nfTope tope
+    let contextTopesRHS = foldr topeAndT topeTopT contextTopes
+    [plainTope restrictionTope] `entailM` contextTopesRHS
+
+checkEntails :: Eq var => TermT var -> TermT var -> TypeCheck var Bool
+checkEntails l r = do  -- FIXME: add action
+  l' <- nfTope l
+  r' <- nfTope r
+  [plainTope l'] `entailM` r'
+
+contextEntails :: Eq var => TermT var -> TypeCheck var ()
+contextEntails tope = do
+  ctxTopes <- asks availableTopes
+  performing (ActionContextEntails ctxTopes tope) $ do
+    topeIsEntailed <- checkTope tope
+    topes' <- asks availableTopesNF
+    -- When a hole is used in a cube/tope position (e.g. as the argument of a
+    -- shape-restricted function), the tope being checked mentions the hole and
+    -- cannot be decided. Treat it as satisfied (defer) rather than failing.
+    unless (topeIsEntailed || containsHole tope) $
+      issueTypeError $ TypeErrorTopeNotSatisfied topes' tope
+
+topesEquiv :: Eq var => TermT var -> TermT var -> TypeCheck var Bool
+topesEquiv expected actual = performing (ActionUnifyTerms expected actual) $ do
+  expected' <- nfT expected
+  actual' <- nfT actual
+  (&&)
+    <$> [plainTope expected'] `entailM` actual'
+    <*> [plainTope actual'] `entailM` expected'
+
+-- | Check that the local tope context is included in (entails) the union of
+-- the given topes. This is the COVERAGE obligation of @recOR@: every point of the
+-- context must be covered by some branch guard.
+--
+-- Note that only coverage is required, not equivalence: branch guards may overhang
+-- the context (e.g. when splitting with an already-defined shape), so we do not
+-- require @OR(guards) |- context@.
+contextEntailsUnion :: Eq var => [TermT var] -> TypeCheck var ()
+contextEntailsUnion topes = do
+  ctxTopes <- asks availableTopes
+  performing (ActionContextEntailsUnion ctxTopes topes) $ do
+    contextTopes <- asks localTopesNF
+    topesNF <- mapM nfTope topes
+    let unionRHS = foldr topeOrT topeBottomT topesNF
+    contextTopes `entailM` unionRHS >>= \case
+      -- a guard mentioning an (unfilled) hole can't be decided; defer coverage
+      False | not (any containsHole topesNF) ->
+        issueTypeError $ TypeErrorTopeNotSatisfied (accessibleTopes contextTopes) unionRHS
+      _ -> return ()
+
+-- | Diagnose a recOR branch guard or restriction face against the local tope
+-- context. There are three cases, by how the tope relates to the context:
+--
+--   * DISJOINT — the tope and a consistent context have empty overlap (their
+--     conjunction is ⊥). The face/branch is then vacuous everywhere, so this is a
+--     hard error.
+--   * OVERHANG — the tope is not entailed by the context but still overlaps it.
+--     This is allowed and often intentional (e.g. splitting or restricting with an
+--     already-defined shape, whose faces live on the whole cube rather than being
+--     relativised to the context), so we only emit a non-fatal hint. The hint is
+--     gated at 'Normal' verbosity, hence silent under 'Silent' (e.g. in tests).
+--   * CONTAINED — the tope entails the context: nothing to report.
+checkTopeAgainstContext :: Eq var => String -> TermT var -> TypeCheck var ()
+checkTopeAgainstContext what tope = do
+  -- a contradictory context is handled elsewhere (recBOT)
+  ctxEntailsBottom <- contextEntailsBottom
+  unless ctxEntailsBottom $ do
+    contextTopes <- asks localTopesNF
+    let ctxTopes = filter (/= topeTopT) (accessibleTopes contextTopes)
+    disjoint <- (plainTope tope : contextTopes) `entailM` topeBottomT
+    -- a face/guard mentioning an (unfilled) hole can't be decided; defer
+    if disjoint && not (containsHole tope)
+      then issueTypeError (TypeErrorTopeContextDisjoint tope ctxTopes)
+      else do
+        entailed <- checkTopeEntails tope     -- tope |- AND(accessible context)
+        unless entailed $ do
+          topeStr <- ppTermInContext tope
+          ctxStrs <- mapM ppTermInContext ctxTopes
+          traceTypeCheck Normal
+            (intercalate "\n" $
+              [ "Warning: " <> what <> " overhangs the local tope context"
+              , "  " <> topeStr
+              , "is not entailed by the local context (normalised)"
+              ] <> map ("  " <>) ctxStrs)
+            (return ())
+
+switchVariance :: TypeCheck var a -> TypeCheck var a
+switchVariance = local $ \Context{..} -> Context
+  { covariance = switch covariance, .. }
+    where
+      switch Covariant     = Contravariant
+      switch Contravariant = Covariant
+      switch Invariant     = Invariant
+
+setVariance :: Covariance -> TypeCheck var a -> TypeCheck var a
+setVariance variance = local $ \Context{..} -> Context
+  { covariance = variance, .. }
+
+enterScopeContext :: Binder -> TModality -> TermT var -> Maybe (TermT var) -> Context var -> Context (Inc var)
+enterScopeContext orig md ty val context =
+  addVarInCurrentScope Z VarInfo
+    { varType   = S <$> ty
+    , varValue  = fmap (S <$>) val
+    , varOrig   = orig
+    , varModality = md
+    , modAccum = Id
+    , varIsAssumption = False
+    , varIsTopLevel = False
+    , varDeclaredAssumptions = []
+    , varLocation = location context
+    }
+    (S <$> context)
+
+enterScopeMaybe :: Binder -> TModality -> TermT var -> Maybe (TermT var) -> TypeCheck (Inc var) b -> TypeCheck var b
+enterScopeMaybe orig md ty mval action = do
+  newContext <- asks (enterScopeContext orig md ty mval)
+  closeScope orig (runReaderT action newContext)
+
+enterScope :: Binder -> TModality -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b
+enterScope orig md ty = enterScopeMaybe orig md ty Nothing
+
+enterScopeWithBind :: Binder -> TModality -> TermT var -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b
+enterScopeWithBind orig md ty val = enterScopeMaybe orig md ty (Just val)
+
+-- | Run a sub-scope computation and lift it back to the enclosing scope: close
+-- the error channel one binder with 'ScopedTypeError' (as before), and re-emit
+-- the holes it recorded. 'HoleInfo' is already rendered to 'VarIdent' names, so
+-- no De Bruijn re-indexing is needed — only a plain re-'tell'. On a thrown
+-- error the sub-scope's holes are dropped, which is intended: holes only matter
+-- on the success path (lenient mode), and strict mode wants the error anyway.
+closeScope
+  :: Binder
+  -> WriterT [HoleInfo] (Except (TypeErrorInScopedContext (Inc var))) b
+  -> TypeCheck var b
+closeScope orig inner = do
+  (b, holes) <- lift . lift . withExceptT (ScopedTypeError (binderName orig)) $ runWriterT inner
+  lift (tell holes)
+  return b
+
+enterModality :: TModality -> TypeCheck var b -> TypeCheck var b
+enterModality Id action = action
+enterModality md action = do
+  newContext <- asks (applyModality md)
+  let newContext' = newContext { localTopesEntailBottom = Nothing }
+  lift $ runReaderT action newContext'
+
+performing :: Eq var => Action var -> TypeCheck var a -> TypeCheck var a
+performing action tc = do
+  ctx@Context{..} <- ask
+  unless (length actionStack < 1000) $  -- FIXME: which depth is reasonable? factor out into a parameter
+    issueTypeError $ TypeErrorOther "maximum depth reached"
+  traceTypeCheck Debug (ppSomeAction (varOrigs ctx) (length actionStack) action) $
+    local (const Context { actionStack = action : actionStack, .. }) $ tc
+
+stripTypeRestrictions :: TermT var -> TermT var
+stripTypeRestrictions (TypeRestrictedT _ty ty _restriction) = stripTypeRestrictions ty
+stripTypeRestrictions t = t
+
+-- | Perform at most one \(\eta\)-expansion at the top-level to assist unification.
+etaMatch :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var (TermT var, TermT var)
+-- FIXME: double check the next 3 rules
+etaMatch _mterm expected@TypeRestrictedT{} actual@TypeRestrictedT{} = pure (expected, actual)
+etaMatch  mterm expected (TypeRestrictedT _ty ty _rs) = etaMatch mterm expected ty
+etaMatch (Just term) expected@TypeRestrictedT{} actual =
+  etaMatch (Just term) expected (typeRestrictedT actual [(topeTopT, term)])
+-- ------------------------------------
+-- | Subtyping on interval
+etaMatch _mterm CubeIT{} Cube2T{} = pure (cubeIT, cubeIT)
+-- ------------------------------------
+etaMatch _mterm expected@LambdaT{} actual@LambdaT{} = pure (expected, actual)
+etaMatch _mterm expected@PairT{}   actual@PairT{}   = pure (expected, actual)
+etaMatch _mterm expected@LambdaT{} actual = do
+  actual' <- etaExpand actual
+  pure (expected, actual')
+etaMatch _mterm expected actual@LambdaT{} = do
+  expected' <- etaExpand expected
+  pure (expected', actual)
+etaMatch _mterm expected@PairT{} actual = do
+  actual' <- etaExpand actual
+  pure (expected, actual')
+etaMatch _mterm expected actual@PairT{} = do
+  expected' <- etaExpand expected
+  pure (expected', actual)
+etaMatch _mterm expected actual = pure (expected, actual)
+
+etaExpand :: Eq var => TermT var -> TypeCheck var (TermT var)
+etaExpand term@LambdaT{} = pure term
+etaExpand term@PairT{} = pure term
+etaExpand term = do
+  ty <- typeOf term
+  case stripTypeRestrictions ty of
+    TypeFunT _ty orig md param mtope ret -> pure $
+      lambdaT ty orig (Just (md, param, mtope))
+        (appT ret (S <$> term) (Pure Z))
+
+    TypeSigmaT _ty _orig _md a b -> pure $
+      pairT ty
+        (firstT a term)
+        (secondT (substituteT (firstT a term) b) term)
+
+    CubeProductT _ty a b -> pure $
+      pairT ty
+        (firstT a term)
+        (secondT b term)
+
+    _ -> pure term
+
+inCubeLayer :: Eq var => TermT var -> TypeCheck var Bool
+inCubeLayer = \case
+  RecBottomT{}    -> pure False
+  UniverseT{}     -> pure False
+
+  UniverseCubeT{} -> pure True
+  CubeProductT{}  -> pure True
+  CubeUnitT{}     -> pure True
+  CubeUnitStarT{} -> pure True
+  Cube2T{}        -> pure True
+  Cube2_0T{}      -> pure True
+  Cube2_1T{}      -> pure True
+
+  t               -> typeOf t >>= inCubeLayer
+
+inTopeLayer :: Eq var => TermT var -> TypeCheck var Bool
+inTopeLayer = \case
+  RecBottomT{} -> pure False
+  UniverseT{} -> pure False
+
+  UniverseCubeT{} -> pure True
+  UniverseTopeT{} -> pure True
+
+  CubeProductT{} -> pure True
+  CubeUnitT{} -> pure True
+  CubeUnitStarT{} -> pure True
+  Cube2T{} -> pure True
+  Cube2_0T{} -> pure True
+  Cube2_1T{} -> pure True
+
+  TopeTopT{} -> pure True
+  TopeBottomT{} -> pure True
+  TopeAndT{} -> pure True
+  TopeOrT{} -> pure True
+  TopeEQT{} -> pure True
+  TopeLEQT{} -> pure True
+
+  TypeFunT _ty orig md param _mtope ret -> do
+    enterScope orig md param $ inTopeLayer ret
+
+  t -> typeOfUncomputed t >>= inTopeLayer
+
+tryRestriction :: Eq var => TermT var -> TypeCheck var (Maybe (TermT var))
+tryRestriction = \case
+  TypeRestrictedT _ _ rs -> do
+    let go [] = pure Nothing
+        go ((tope, term') : rs') = do
+          checkTope tope >>= \case
+            True  -> pure (Just term')
+            False -> go rs'
+    go rs
+  _ -> pure Nothing
+
+-- | Memoise a term's WHNF on its top node without reducing the term itself.
+--
+-- The returned term has the same (unreduced) structure, so free-variable and
+-- @uses@ detection see exactly what the user wrote, while a later 'whnfT' is
+-- O(1) via the cached 'infoWHNF'. Used when storing a definition's elaborated
+-- type and value, where an in-place reduction could otherwise discard or
+-- expose a variable occurrence.
+memoizeWHNF :: Eq var => TermT var -> TypeCheck var (TermT var)
+memoizeWHNF t@Pure{} = pure t
+memoizeWHNF t@(Free (AnnF info f)) = do
+  w <- whnfT t
+  pure (Free (AnnF info { infoWHNF = Just w } f))
+
+-- | Compute a typed term to its WHNF.
+--
+-- >>> unsafeTypeCheck' $ whnfT "(\\ (x : Unit) -> x) unit"
+-- unit : Unit
+whnfT :: Eq var => TermT var -> TypeCheck var (TermT var)
+whnfT tt = performing (ActionWHNF tt) $ case tt of
+  -- use cached result if it exists
+  Free (AnnF info _)
+    | Just tt' <- infoWHNF info -> pure tt'
+
+  -- universe constants
+  UniverseT{} -> pure tt
+  UniverseCubeT{} -> pure tt
+  UniverseTopeT{} -> pure tt
+
+  -- cube layer (except vars, pairs, and applications)
+  CubeProductT{} -> nfTope tt
+  CubeUnitT{} -> pure tt
+  CubeUnitStarT{} -> pure tt
+  Cube2T{} -> pure tt
+  Cube2_0T{} -> pure tt
+  Cube2_1T{} -> pure tt
+  CubeIT{} -> pure tt
+  CubeI_0T{} -> pure tt
+  CubeI_1T{} -> pure tt
+  CubeFlipT{} -> nfTope tt
+  CubeUnflipT{} -> nfTope tt
+
+  -- tope layer (except vars, pairs of points, and applications)
+  TopeTopT{} -> pure tt
+  TopeBottomT{} -> pure tt
+  TopeAndT{} -> nfTope tt
+  TopeOrT{} -> nfTope tt
+  TopeEQT{} -> nfTope tt
+  TopeLEQT{} -> nfTope tt
+  TopeInvT{} -> nfTope tt
+  TopeUninvT{} -> nfTope tt
+
+  -- type layer terms that should not be evaluated further
+  LambdaT{} -> pure tt
+  PairT{} -> pure tt
+  ReflT{} -> pure tt
+  TypeFunT{} -> pure tt
+  TypeSigmaT{} -> pure tt
+  TypeIdT{} -> pure tt
+  TypeModalT{} -> pure tt
+  RecBottomT{} -> pure tt
+  TypeUnitT{} -> pure tt
+  UnitT{} -> pure tt
+
+  -- type ascriptions are ignored, since we already have a typechecked term
+  TypeAscT _ty term _ty' -> whnfT term
+
+  -- check if we have cube or a tope term (if so, compute NF)
+  _ -> typeOf tt >>= \case
+    UniverseCubeT{} -> nfTope tt
+    UniverseTopeT{} -> nfTope tt
+
+    -- CubeUnitT{} -> pure cubeUnitStarT -- compute an expression of 1 cube to its only point
+    TypeUnitT{} -> pure unitT -- compute an expression of Unit type to unit
+    -- FIXME: next line is ad hoc, should be improved!
+    TypeRestrictedT _info TypeUnitT{} _rs -> pure unitT -- compute an expression of Unit type to unit
+
+    -- check if we have cube point term (if so, compute NF)
+    typeOf_tt -> typeOf typeOf_tt >>= \case
+      UniverseCubeT{} -> nfTope tt
+
+      -- now we are in the type layer
+      _ -> fmap termIsWHNF $ do
+        tryRestriction typeOf_tt >>= \case
+            Just tt' -> whnfT tt'
+            Nothing -> case tt of
+              -- a hole is opaque: it never reduces, it is already a normal form
+              HoleT{} -> pure tt
+              t@(Pure var) ->
+                valueOfVar var >>= \case
+                  Nothing   -> pure t
+                  Just term -> whnfT term
+
+              AppT ty f x ->
+                whnfT f >>= \case
+                  LambdaT _ty _orig _arg body ->
+                    whnfT (substituteT x body)
+                  f' -> typeOf f' >>= \case
+                    TypeFunT _ty _orig md _param (Just tope) UniverseTopeT{} -> do
+                      x' <- enterModality md $ nfT x
+                      topeAndT
+                        <$> pure (AppT ty f' x')
+                        <*> nfT (substituteT x' tope)
+                    -- FIXME: this seems to be a hack, and will not work in all situations!
+                    -- FIXME: need to check performance of this code thoroughly
+                    -- FIXME: for now, it seems to add ~2x slowdown
+                    TypeFunT info _orig md _param _mtope ret@TypeRestrictedT{}
+                      | TypeRestrictedT{} <- infoType info -> pure (AppT ty f' x)
+                      | otherwise -> do
+                          x' <- enterModality md $ whnfT x
+                          let ret' = substituteT x' ret
+                          tryRestriction ret' >>= \case -- FIXME: too many unnecessary checks?
+                            Nothing  -> pure (AppT ty { infoType = ret' } f' x')
+                            Just tt' -> whnfT tt'
+                    _ -> pure (AppT ty f' x)
+
+              LetT _ty _orig _mparam val body ->
+                whnfT (substituteT val body)
+              LetModT ty orig app inn mparam val body -> do
+                (enterModality app $ whnfT val) >>= \case
+                  ModAppT _ md t | md == inn -> do
+                    val' <- enterModality md $ whnfT t
+                    whnfT (substituteT val' body)
+                  b' | isRA inn -> do
+                    bty <- typeOf b' >>= \case
+                      TypeModalT _ _ t -> pure t
+                      _ -> panicImpossible "not modal in letmod"
+                    whnfT (substituteT (modExtractT bty app inn b') body)
+                  _ -> pure (LetModT ty orig app inn mparam val body)
+              FirstT ty t ->
+                whnfT t >>= \case
+                  PairT _ l _r -> whnfT l
+                  t'           -> pure (FirstT ty t')
+
+              SecondT ty t ->
+                whnfT t >>= \case
+                  PairT _ _l r -> whnfT r
+                  t'           -> pure (SecondT ty t')
+              ModAppT ty md b -> do
+                (enterModality md $ whnfT b) >>= \case
+                  ModExtractT _ app inn t | inn == md -> enterModality (comp md app) $ whnfT t
+                  b' -> pure $ ModAppT ty md b'
+              ModExtractT ty app inn b -> do
+                (enterModality app $ whnfT b) >>= \case
+                  ModAppT _ md t | inn == md -> enterModality inn $ whnfT t
+                  b' -> pure (ModExtractT ty app inn b')
+              IdJT ty tA a tC d x p ->
+                whnfT p >>= \case
+                  ReflT{} -> whnfT d
+                  p'      -> pure (IdJT ty tA a tC d x p')
+
+              RecOrT _ty rs -> do
+                let go [] = pure Nothing
+                    go ((tope, tt') : rs') = do
+                      checkTope tope >>= \case
+                        True  -> pure (Just tt')
+                        False -> go rs'
+                go rs >>= \case
+                  Just tt' -> whnfT tt'
+                  Nothing
+                    | [tt'] <- nubTermT (map snd rs) -> whnfT tt'
+                    | otherwise -> pure tt
+
+              TypeRestrictedT ty type_ rs -> do
+                rs' <- traverse (\(tope, term) -> (,) <$> nfT tope <*> pure term) rs
+                case filter ((/= topeBottomT) . fst) rs' of
+                  []   -> whnfT type_  -- get rid of restrictions at BOT
+                  rs'' -> TypeRestrictedT ty <$> whnfT type_ <*> pure rs''
+
+nfTope :: Eq var => TermT var -> TypeCheck var (TermT var)
+nfTope tt = performing (ActionNF tt) $ fmap termIsNF $ case tt of
+  HoleT{} -> pure tt
+  Pure var ->
+    valueOfVar var >>= \case
+      Nothing   -> return tt
+      Just term -> nfTope term
+
+  -- see if normal form is already available
+  Free (AnnF info _) | Just tt' <- infoNF info -> pure tt'
+
+  -- universe constants
+  UniverseT{} -> pure tt
+  UniverseCubeT{} -> pure tt
+  UniverseTopeT{} -> pure tt
+
+  -- cube layer constants
+  CubeUnitT{} -> pure tt
+  CubeUnitStarT{} -> pure tt
+  Cube2T{} -> pure tt
+  Cube2_0T{} -> pure tt
+  Cube2_1T{} -> pure tt
+  CubeIT{} -> pure tt
+  CubeI_0T{} -> pure tt
+  CubeI_1T{} -> pure tt
+
+  -- type layer constants
+  TypeUnitT{} -> pure tt
+  UnitT{} -> pure tt
+
+  -- cube layer with computation
+  CubeProductT _ty l r -> cubeProductT <$> nfTope l <*> nfTope r
+
+  CubeFlipT ty t ->
+    nfTope t >>= \case
+      CubeUnflipT _ t' -> pure t'
+      Cube2_0T{}       -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_1T)
+      Cube2_1T{}       -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_0T)
+      CubeI_0T{}       -> pure (modAppT (typeModalT cubeT Op cubeIT) Op cubeI_1T)
+      CubeI_1T{}       -> pure (modAppT (typeModalT cubeT Op cubeIT) Op cubeI_0T)
+      t'               -> pure (CubeFlipT ty t')
+
+  CubeUnflipT ty t -> 
+    nfTope t >>= \case
+      CubeFlipT _ t'          -> pure t'
+      ModAppT _ Op Cube2_0T{} -> pure cube2_1T
+      ModAppT _ Op Cube2_1T{} -> pure cube2_0T
+      ModAppT _ Op CubeI_0T{} -> pure cubeI_1T
+      ModAppT _ Op CubeI_1T{} -> pure cubeI_0T
+      t'                      -> pure (CubeUnflipT ty t')
+
+  -- tope layer constants
+  TopeTopT{} -> pure tt
+  TopeBottomT{} -> pure tt
+
+  -- tope layer with computation
+  TopeAndT ty l r ->
+    nfTope l >>= \case
+      TopeBottomT{} -> pure topeBottomT
+      l' -> nfTope r >>= \case
+        TopeBottomT{} -> pure topeBottomT
+        r'            -> pure (TopeAndT ty l' r')
+
+  TopeOrT  ty l r -> do
+    l' <- nfTope l
+    r' <- nfTope r
+    case (l', r') of
+      (TopeBottomT{}, _) -> pure r'
+      (_, TopeBottomT{}) -> pure l'
+      _                  -> pure (TopeOrT ty l' r')
+
+  TopeEQT  ty l r -> TopeEQT  ty <$> nfTope l <*> nfTope r
+  TopeLEQT ty l r -> TopeLEQT ty <$> nfTope l <*> nfTope r
+
+  TopeInvT ty t ->
+    -- Match And/Or on the *unnormalized* input: nfTope of a shape-restricted
+    -- App produces a TopeAnd via shape-side-condition propagation, and
+    -- distributing inv over that synthetic conjunction loops forever because
+    -- the recursive topeInvT renormalizes the same App back into a TopeAnd.
+    case t of
+      TopeTopT _ -> pure $ modAppT topeT Op topeTopT
+      TopeBottomT _ -> pure $ modAppT topeT Op topeBottomT
+      TopeLEQT _ x y -> do
+        xTy <- typeOf x
+        yTy <- typeOf y
+        nfTope $
+          modAppT (typeModalT universeT Op topeT) Op
+            (topeLEQT
+              (modExtractT topeT Id Op (cubeFlipT xTy y))
+              (modExtractT topeT Id Op (cubeFlipT yTy x)))
+      TopeEQT _ x y -> do
+        xTy <- typeOf x
+        yTy <- typeOf y
+        nfTope $
+          modAppT (typeModalT universeT Op topeT) Op
+            (topeEQT
+              (modExtractT topeT Id Op (cubeFlipT xTy y))
+              (modExtractT topeT Id Op (cubeFlipT yTy x)))
+      TopeAndT _ phi psi -> nfTope $
+        modAppT (typeModalT universeT Op topeT) Op
+          (topeAndT
+            (modExtractT topeT Id Op (topeInvT phi))
+            (modExtractT topeT Id Op (topeInvT psi)))
+      TopeOrT _ phi psi -> nfTope $
+        modAppT (typeModalT universeT Op topeT) Op
+          (topeOrT
+            (modExtractT topeT Id Op (topeInvT phi))
+            (modExtractT topeT Id Op (topeInvT psi)))
+      _ ->
+        nfTope t >>= \case
+          TopeTopT _ -> pure topeTopT
+          TopeBottomT _ -> pure topeBottomT
+          TopeUninvT _ phi -> pure phi
+          TopeLEQT _ x y -> do
+            xTy <- typeOf x
+            yTy <- typeOf y
+            nfTope $
+              modAppT (typeModalT universeT Op topeT) Op
+                (topeLEQT
+                  (modExtractT topeT Id Op (cubeFlipT xTy y))
+                  (modExtractT topeT Id Op (cubeFlipT yTy x)))
+          TopeEQT _ x y -> do
+            xTy <- typeOf x
+            yTy <- typeOf y
+            nfTope $
+              modAppT (typeModalT universeT Op topeT) Op
+                (topeEQT
+                  (modExtractT topeT Id Op (cubeFlipT xTy y))
+                  (modExtractT topeT Id Op (cubeFlipT yTy x)))
+          t' -> pure (TopeInvT ty t')
+
+  TopeUninvT ty t ->
+    case t of
+      ModAppT _ Op inner -> case inner of
+        TopeTopT _ -> pure topeTopT
+        TopeBottomT _ -> pure topeBottomT 
+        TopeAndT _ phi psi ->
+          nfTope $
+              (topeAndT
+                (topeUninvT phi)
+                (topeUninvT psi))
+        TopeOrT _ phi psi ->
+          nfTope $
+              (topeOrT
+                (topeUninvT phi)
+                (topeUninvT psi))
+        _ ->
+          nfTope t >>= \case
+            TopeTopT _ -> pure topeTopT
+            TopeBottomT _ -> pure topeBottomT
+            TopeInvT _ phi -> pure phi
+            ModAppT _ Op inner'' -> case inner'' of
+              TopeLEQT _ x y -> do
+                xTy <- typeOf x
+                yTy <- typeOf y
+                nfTope $
+                  (topeLEQT
+                    (cubeUnflipT xTy (modAppT (typeModalT cubeT Op xTy) Op y))
+                    (cubeUnflipT yTy (modAppT (typeModalT cubeT Op yTy) Op x)))
+              TopeEQT _ x y -> do
+                xTy <- typeOf x
+                yTy <- typeOf y
+                nfTope $
+                  (topeEQT
+                    (cubeUnflipT xTy (modAppT (typeModalT cubeT Op xTy) Op y))
+                    (cubeUnflipT yTy (modAppT (typeModalT cubeT Op yTy) Op x)))
+              inner' ->
+                pure $
+                  TopeUninvT ty
+                    (modAppT (typeModalT universeT Op topeT) Op inner')
+            t' ->
+                pure (TopeUninvT ty t')
+      _ ->
+        nfTope t >>= \case
+          TopeInvT _ phi -> pure phi
+          t'@(ModAppT _ Op _) -> nfTope (TopeUninvT ty t')
+          t' -> pure (TopeUninvT ty t')
+
+  -- type ascriptions are ignored, since we already have a typechecked term
+  TypeAscT _ty term _ty' -> nfTope term
+
+  PairT ty l r -> PairT ty <$> nfTope l <*> nfTope r
+
+  AppT ty f x ->
+    nfTope f >>= \case
+      LambdaT _ty _orig _arg body ->
+        nfTope (substituteT x body)
+      f' -> typeOfUncomputed f' >>= \case
+        TypeFunT _ty _orig md _param (Just tope) UniverseTopeT{} -> do
+          x' <- enterModality md $ nfTope x
+          topeAndT
+            <$> pure (AppT ty f' x')
+            <*> nfTope (substituteT x' tope)
+        _ -> AppT ty f' <$> nfTope x
+
+  FirstT ty t ->
+    nfTope t >>= \case
+      PairT _ty x _y -> pure x
+      t'             -> pure (FirstT ty t')
+
+  SecondT ty t ->
+    nfTope t >>= \case
+      PairT _ty _x y -> pure y
+      t'             -> pure (SecondT ty t')
+
+  LambdaT ty orig _mparam body
+    | TypeFunT _ty _origF md param mtope _ret <- infoType ty ->
+        -- NOTE: the domain @param@ is left unnormalised: in the tope layer it may
+        -- be a shape (a function type into TOPE), which nfTope cannot normalise.
+        LambdaT ty orig (Just (md, param, mtope)) <$> enterScope orig md param (nfTope body)
+  LambdaT{} -> panicImpossible "lambda with a non-function type in the tope layer"
+  ModAppT ty md b ->
+    (enterModality md $ nfTope b) >>= \case
+      ModExtractT _ _ inn t | inn == md -> pure t
+      b' -> pure $ ModAppT ty md b'
+  ModExtractT ty app inn b ->
+    (enterModality app $ nfTope b) >>= \case
+      ModAppT _ md t | inn == md -> pure t
+      b' -> pure $ ModExtractT ty app inn b'
+  LetModT ty orig app inn mparam val body -> do
+    (enterModality app $ nfTope val) >>= \case
+      ModAppT _ md t | md == inn -> do
+        val' <- return t
+        nfTope (substituteT val' body)
+      b' | isRA inn -> do
+        bty <- typeOf b' >>= \case
+          TypeModalT _ _ t -> pure t
+          _ -> panicImpossible "not modal in letmod"
+        nfTope (substituteT (modExtractT bty app inn b') body)
+      b' -> do
+        bty <- typeOf b' >>= \case
+          TypeModalT _ _ t -> pure t
+          _ -> panicImpossible "not modal in letmod"
+        val' <- enterModality app $ nfTope b'
+        body' <- enterScope orig (comp app inn) bty $ nfTope body
+        pure (LetModT ty orig app inn mparam val' body')
+
+  TypeModalT ty md inner -> TypeModalT ty md <$> (enterModality md $ nfTope inner)
+  LetT _ty _orig _mparam val body -> nfTope (substituteT val body)
+  TypeFunT{} -> panicImpossible "exposed function type in the tope layer"
+  TypeSigmaT{} -> panicImpossible "dependent sum type in the tope layer"
+  TypeIdT{} -> panicImpossible "identity type in the tope layer"
+  ReflT{} -> panicImpossible "refl in the tope layer"
+  IdJT{} -> panicImpossible "idJ eliminator in the tope layer"
+  TypeRestrictedT{} -> panicImpossible "extension types in the tope layer"
+
+  -- A recOR/recBOT is a term-level eliminator, never a tope. It should have
+  -- been rejected before reaching here (see the RecOr case of 'typecheck'); as
+  -- a safety net for any other path, report a type error rather than panicking.
+  RecOrT{} -> issueTypeError $ TypeErrorOther "a recOR cannot appear in the tope layer"
+  RecBottomT{} -> issueTypeError $ TypeErrorOther "a recBOT cannot appear in the tope layer"
+
+-- | Compute a typed term to its NF.
+--
+-- >>> unsafeTypeCheck' $ nfT "(\\ (x : Unit) -> x) unit"
+-- unit : Unit
+nfT :: Eq var => TermT var -> TypeCheck var (TermT var)
+nfT tt = performing (ActionNF tt) $ case tt of
+  -- universe constants
+  UniverseT{} -> pure tt
+  UniverseCubeT{} -> pure tt
+  UniverseTopeT{} -> pure tt
+
+  -- cube layer constants
+  CubeUnitT{} -> pure tt
+  CubeUnitStarT{} -> pure tt
+  Cube2T{} -> pure tt
+  Cube2_0T{} -> pure tt
+  Cube2_1T{} -> pure tt
+  CubeIT{} -> pure tt
+  CubeI_0T{} -> pure tt
+  CubeI_1T{} -> pure tt
+
+  -- cube layer with computation
+  CubeProductT{} -> nfTope tt
+  CubeFlipT{} -> nfTope tt
+  CubeUnflipT{} -> nfTope tt
+
+  -- tope layer constants
+  TopeTopT{} -> pure tt
+  TopeBottomT{} -> pure tt
+
+  -- tope layer with computation
+  TopeAndT{} -> nfTope tt
+  TopeOrT{} -> nfTope tt
+  TopeEQT{} -> nfTope tt
+  TopeLEQT{} -> nfTope tt
+  TopeInvT{} -> nfTope tt
+  TopeUninvT{} -> nfTope tt
+
+  -- type layer constants
+  ReflT ty _x -> pure (ReflT ty Nothing)
+  RecBottomT{} -> pure tt
+  TypeUnitT{} -> pure tt
+  UnitT{} -> pure tt
+
+  -- type ascriptions are ignored, since we already have a typechecked term
+  TypeAscT _ty term _ty' -> nfT term
+
+  -- now we are in the type layer
+  _ -> do
+    typeOf tt >>= tryRestriction >>= \case
+        Just tt' -> nfT tt'
+        Nothing -> case tt of
+          -- a hole is opaque: it never reduces, it is already a normal form
+          HoleT{} -> pure tt
+          t@(Pure var) ->
+            valueOfVar var >>= \case
+              Nothing   -> pure t
+              Just term -> nfT term
+
+          TypeFunT ty orig md param mtope ret -> do
+            param' <- enterModality md $ nfT param
+            enterScope orig md param' $ do
+              mtope' <- traverse nfT mtope
+              maybe id localTope mtope' $
+                TypeFunT ty orig md param' mtope' <$> nfT ret
+          AppT ty f x ->
+            whnfT f >>= \case
+              LambdaT _ty _orig _arg body ->
+                nfT (substituteT x body)
+              f' -> typeOf f' >>= \case
+                TypeFunT _ty _orig md _param (Just tope) UniverseTopeT{} -> do
+                  x' <- enterModality md $ nfT x
+                  topeAndT
+                    <$> pure (AppT ty f' x')
+                    <*> nfT (substituteT x' tope)
+                _ -> AppT ty <$> nfT f' <*> nfT x
+          LetT _ty _orig _mparam val body ->
+            nfT (substituteT val body)
+          LetModT ty orig app inn mparam val body -> do
+            (enterModality app $ whnfT val) >>= \case
+              ModAppT _ md t | md == inn -> do
+                val' <- enterModality md $ nfT t
+                nfT (substituteT val' body)
+              b' | isRA inn -> do
+                bty <- typeOf b' >>= \case
+                  TypeModalT _ _ t -> pure t
+                  _ -> panicImpossible "not modal in letmod"
+                nfT (substituteT (modExtractT bty app inn b') body)
+              b' -> do
+                bty <- typeOf b' >>= \case
+                  TypeModalT _ _ t -> pure t
+                  _ -> panicImpossible "not modal in letmod"
+                val' <- enterModality app $ nfT b'
+                body' <- enterScope orig (comp app inn) bty $ nfT body
+                pure (LetModT ty orig app inn mparam val' body')
+          LambdaT ty orig _mparam body -> do
+            case stripTypeRestrictions (infoType ty) of
+              TypeFunT _ty _orig md param mtope _ret -> do
+                param' <- enterModality md $ nfT param
+                enterScope orig md param' $ do
+                  mtope' <- traverse nfT mtope
+                  maybe id localTope mtope' $
+                    LambdaT ty orig (Just (md, param', mtope')) <$> nfT body
+              _ -> panicImpossible "lambda with a non-function type"
+
+
+          TypeSigmaT ty orig md a b -> do
+            a' <- enterModality md $ nfT a
+            enterScope orig md a' $ do
+              TypeSigmaT ty orig md a' <$> nfT b
+          PairT ty l r -> PairT ty <$> nfT l <*> nfT r
+          FirstT ty t ->
+            whnfT t >>= \case
+              PairT _ l _r -> nfT l
+              t'           -> FirstT ty <$> nfT t'
+          SecondT ty t ->
+            whnfT t >>= \case
+              PairT _ _l r -> nfT r
+              t'           -> SecondT ty <$> nfT t'
+
+          TypeIdT ty x _tA y -> TypeIdT ty <$> nfT x <*> pure Nothing <*> nfT y
+          IdJT ty tA a tC d x p ->
+            whnfT p >>= \case
+              ReflT{} -> nfT d
+              p' -> IdJT ty <$> nfT tA <*> nfT a <*> nfT tC <*> nfT d <*> nfT x <*> nfT p'
+
+          RecOrT _ty rs -> do
+            let go [] = pure Nothing
+                go ((tope, tt') : rs') = do
+                  checkTope tope >>= \case
+                    True  -> pure (Just tt')
+                    False -> go rs'
+            go rs >>= \case
+              Just tt' -> nfT tt'
+              Nothing
+                | [tt'] <- nubTermT (map snd rs) -> nfT tt'
+                | otherwise -> pure tt
+          TypeModalT ty md b -> do
+            b' <- enterModality md $ nfT b
+            pure (TypeModalT ty md b')
+          ModAppT ty md b -> do
+            (enterModality md $ whnfT b) >>= \case
+              ModExtractT _ app inn t | inn == md -> enterModality (comp app inn) $ nfT t
+              b' -> ModAppT ty md <$> (enterModality md $ nfT b')
+          ModExtractT ty app inn b -> do
+            (enterModality app $ whnfT b) >>= \case
+              ModAppT _ md t | inn == md -> enterModality (comp app inn) $ nfT t
+              b' -> ModExtractT ty app inn <$> (enterModality app $ nfT b') 
+          TypeRestrictedT ty type_ rs -> do
+            rs' <- forM rs $ \(tope, term) -> do
+              nfTope tope >>= \case
+                TopeBottomT{} -> pure Nothing
+                tope' -> do
+                  term' <- localTope tope' $
+                    nfT term
+                  return (Just (tope', term'))
+            case catMaybes rs' of
+              []   -> nfT type_
+              rs'' -> TypeRestrictedT ty <$> nfT type_ <*> pure rs''
+
+checkDefinedVar :: VarIdent -> TypeCheck VarIdent ()
+checkDefinedVar x = asks (lookup x . varInfos) >>= \case
+  Nothing  -> issueTypeError $ TypeErrorUndefined x
+  Just _ty -> return ()
+
+valueOfVar :: Eq var => var -> TypeCheck var (Maybe (TermT var))
+valueOfVar x = asks (lookup x . varValues) >>= \case
+  Nothing -> issueTypeError $ TypeErrorUndefined x
+  Just ty -> return ty
+
+typeOfVar :: Eq var => var -> TypeCheck var (TermT var)
+typeOfVar x = asks (lookup x . varTypes) >>= \case
+  Nothing -> issueTypeError $ TypeErrorUndefined x
+  Just ty -> return ty
+
+modalityOfVar :: Eq var => var -> TypeCheck var (TModality)
+modalityOfVar x = asks (lookup x . varModalities) >>= \case
+  Nothing -> issueTypeError $ TypeErrorUndefined x
+  Just m -> return m
+
+locksOfVar :: Eq var => var -> TypeCheck var (TModality)
+locksOfVar x = asks (lookup x . varLocks) >>= \case
+  Nothing -> issueTypeError $ TypeErrorUndefined x
+  Just m -> return m
+
+isTopLevelVar :: Eq var => var -> TypeCheck var Bool
+isTopLevelVar x = asks (lookup x . varTopLevels) >>= \case
+  Nothing -> issueTypeError $ TypeErrorUndefined x
+  Just b -> return b
+
+typeOfUncomputed :: Eq var => TermT var -> TypeCheck var (TermT var)
+typeOfUncomputed = \case
+  Pure x                     -> typeOfVar x
+  Free (AnnF TypeInfo{..} _) -> pure infoType
+
+typeOf :: Eq var => TermT var -> TypeCheck var (TermT var)
+typeOf t = typeOfUncomputed t >>= whnfT
+
+unifyTopes :: Eq var => TermT var -> TermT var -> TypeCheck var ()
+unifyTopes l r = do
+  equiv <- (&&)
+    <$> [plainTope l] `entailM` r
+    <*> [plainTope r] `entailM` l
+  unless equiv $
+    issueTypeError (TypeErrorTopesNotEquivalent l r)
+
+inAllSubContexts :: TypeCheck var () -> TypeCheck var () -> TypeCheck var ()
+inAllSubContexts handleSingle tc = do
+  topeSubContexts <- asks localTopesNFUnion
+  case topeSubContexts of
+    [] -> panicImpossible "empty set of alternative contexts"
+    [_] -> handleSingle
+    _:_:_ -> do
+      forM_ topeSubContexts $ \topes' -> do
+        local (\Context{..} -> Context
+            { localTopes = topes'
+            , localTopesNF = topes'
+            , localTopesNFUnion = [topes']
+            , .. }) $
+          tc
+
+unify :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var ()
+unify mterm expected actual = performUnification `catchError` \typeError -> do
+  inAllSubContexts (throwError typeError) performUnification
+  where
+    performUnification = unifyInCurrentContext mterm expected actual
+
+unifyViaDecompose :: Eq var => TermT var -> TermT var -> TypeCheck var ()
+unifyViaDecompose expected actual | expected == actual = return ()
+unifyViaDecompose (AppT _ f x) (AppT _ g y) = do
+  unify Nothing f g
+  setVariance Invariant $ unify Nothing x y
+unifyViaDecompose _ _ = issueTypeError (TypeErrorOther "cannot decompose")
+
+unifyInCurrentContext :: Eq var => Maybe (TermT var) -> TermT var -> TermT var -> TypeCheck var ()
+unifyInCurrentContext mterm expected actual = performing action $ do
+  inBottom <- contextEntailsBottom
+  unless inBottom $
+    unifyViaDecompose expected actual `catchError` \_ -> do      -- NOTE: this gives a small, but noticeable speedup
+      expectedVal <- whnfT expected
+      actualVal <- whnfT actual
+      mea <- asks covariance >>= \case
+        Covariant     -> Just <$> etaMatch mterm expectedVal actualVal
+        Contravariant -> Just . swap <$> etaMatch mterm actualVal expectedVal
+        Invariant     -> traceTypeCheck Debug "invariant" $ do
+          -- FIXME: inefficient
+          traceTypeCheck Debug "invariant->covariant" $
+            setVariance Covariant     $ unifyInCurrentContext mterm expectedVal actualVal
+          traceTypeCheck Debug "invariant->contravariant" $
+            setVariance Contravariant $ unifyInCurrentContext mterm expectedVal actualVal
+          return Nothing
+      case mea of
+        Nothing -> return ()
+        -- A hole (lenient mode) stands for a term of the expected type, so it
+        -- unifies with anything; accept it instead of falling through to the
+        -- dispatch below (which would panic on an unexpected term).
+        Just (expected', actual') | isHoleT expected' || isHoleT actual' -> return ()
+        Just (expected', actual') ->
+          unless (expected' == actual') $ do  -- NOTE: this gives a small, but noticeable speedup
+            case actual' of
+              RecBottomT{} -> return ()
+              RecOrT _ty rs' ->
+                case expected' of
+                  RecOrT _ty rs -> sequence_ $
+                    checkCoherence <$> rs <*> rs'
+                  _ -> do
+                    forM_ rs' $ \(tope, term) ->
+                      localTope tope $
+                        unifyTerms expected' term
+              _ -> typeOf expected' >>= typeOf >>= \case
+                UniverseCubeT{} -> contextEntails (topeEQT expected' actual')
+                _ -> do
+                  -- A hole stands for a term of the expected type, so a
+                  -- unification that would otherwise fail is deferred when either
+                  -- side still contains an (unfilled) hole — including one nested
+                  -- in a larger term, e.g. @f ?@ checked against an extension-type
+                  -- boundary. 'structuralHoleUnify' turns this off, keeping a
+                  -- structural mismatch around a hole an error. Lazy: only runs on
+                  -- the failure path.
+                  defer <- asks deferHoleMismatches
+                  let def = unless (expected' == actual') err
+                      holePresent = defer && (containsHole expected' || containsHole actual')
+                      err
+                        | holePresent = return ()
+                        | otherwise =
+                            case mterm of
+                              Nothing   -> issueTypeError (TypeErrorUnifyTerms expected' actual')
+                              Just term -> issueTypeError (TypeErrorUnify term expected' actual')
+                      errS
+                        | holePresent = return ()
+                        | otherwise = do
+                            let expectedS = S <$> expected'
+                                actualS = S <$> actual'
+                            case mterm of
+                              Nothing   -> issueTypeError (TypeErrorUnifyTerms expectedS actualS)
+                              Just term -> issueTypeError (TypeErrorUnify (S <$> term) expectedS actualS)
+                  case expected' of
+                    Pure{} -> def
+
+                    UniverseT{} -> def
+                    UniverseCubeT{} -> def
+                    UniverseTopeT{} -> def
+
+                    TypeUnitT{} -> def
+                    UnitT{} -> return ()  -- Unit always unifies!
+
+                    CubeUnitT{} -> def
+                    CubeUnitStarT{} -> def
+                    Cube2T{} -> def
+                    Cube2_0T{} -> def
+                    Cube2_1T{} -> def
+                    CubeIT{} -> def
+                    CubeI_0T{} -> def
+                    CubeI_1T{} -> def
+                    CubeProductT _ l r ->
+                      case actual' of
+                        CubeProductT _ l' r' -> do
+                          unifyTerms l l'
+                          unifyTerms r r'
+                        _ -> err
+
+                    PairT _ty l r ->
+                      case actual' of
+                        PairT _ty' l' r' -> do
+                          unifyTerms l l'
+                          unifyTerms r r'
+
+                        -- one part of eta-expansion for pairs
+                        -- FIXME: add symmetric version!
+                        _ -> err
+
+                    FirstT _ty t ->
+                      case actual' of
+                        FirstT _ty' t' -> unifyTerms t t'
+                        _              -> err
+
+                    SecondT _ty t ->
+                      case actual' of
+                        SecondT _ty' t' -> unifyTerms t t'
+                        _               -> err
+
+                    TopeTopT{}    -> unifyTopes expected' actual'
+                    TopeBottomT{} -> unifyTopes expected' actual'
+                    TopeEQT{}     -> unifyTopes expected' actual'
+                    TopeLEQT{}    -> unifyTopes expected' actual'
+                    TopeAndT{}    -> unifyTopes expected' actual'
+                    TopeOrT{}     -> unifyTopes expected' actual'
+
+                    RecBottomT{} -> return () -- unifies with anything
+                    RecOrT _ty rs ->
+                      case actual' of
+                        -- ----------------------------------------------
+                        -- IMPORTANT: this pattern matching is redundant,
+                        -- but it is not obvious, so
+                        -- take care when refactoring!
+                        -- ----------------------------------------------
+        --                RecOrT _ty rs' -> sequence_ $
+        --                  checkCoherence <$> rs <*> rs'
+                        -- ----------------------------------------------
+                        _ -> do
+                          forM_ rs $ \(tope, term) ->
+                            localTope tope $
+                              unifyTerms term actual'
+
+                    TypeFunT _ty _orig md cube mtope ret ->
+                      case actual' of
+                        TypeFunT _ty' orig' md' cube' mtope' ret' -> do
+                          when (md /= md') $
+                            issueTypeError (TypeErrorOther $ "modality mismatch in function type: expected " <> show md <> " but got " <> show md')
+                          switchVariance $  -- unifying in the negative position!
+                            unifyTerms cube cube' -- FIXME: unifyCubes
+                          enterScope orig' md cube' $ do
+                            case ret' of
+                              UniverseTopeT{} -> do
+                                -- This is the case for tope families (shapes)
+                                --
+                                -- (Λ → TOPE) <: (Δ → TOPE)
+                                -- since if φ : Λ → TOPE
+                                -- then φ ⊢ Δ
+                                --
+                                -- we DO NOT take tope context Φ into account!
+                                expectedTopeNF <- fromMaybe topeTopT <$> traverse nfT mtope
+                                actualTopeNF   <- fromMaybe topeTopT <$> traverse nfT mtope'
+                                actualEntailsExpected <- [plainTope actualTopeNF] `entailM` expectedTopeNF
+                                unless (actualEntailsExpected || containsHole expectedTopeNF || containsHole actualTopeNF) $
+                                  issueTypeError (TypeErrorTopeNotSatisfied [actualTopeNF] expectedTopeNF)
+                              _ -> do
+                                -- this is the case for Π-types and extension types
+                                --
+                                -- Ξ | Φ | Γ   ⊢   {t : I | φ} → A t   <:   {s : J | ψ} → B s
+                                -- when
+                                -- Ξ | Φ, ψ ⊢ φ
+                                expectedTopeNF <- fromMaybe topeTopT <$> traverse nfT mtope
+                                actualTopeNF   <- fromMaybe topeTopT <$> traverse nfT mtope'
+                                localTope expectedTopeNF $
+                                  contextEntails actualTopeNF
+                            case mterm of
+                              Nothing -> unifyTerms ret ret'
+                              Just term -> unifyTypes (appT ret' (S <$> term) (Pure Z)) ret ret'
+                        _ -> err
+
+                    TypeSigmaT _ty _orig md a b ->
+                      case actual' of
+                        TypeSigmaT _ty' orig' md' a' b' -> do
+                          when (md /= md') $
+                            issueTypeError (TypeErrorOther $ "modality mismatch in sigma type: expected " <> show md <> " but got " <> show md')
+                          unify Nothing a a'
+                          enterScope orig' md a' $ unify Nothing b b'
+                        _ -> err
+
+                    TypeIdT _ty x _tA y ->
+                      case actual' of
+                        TypeIdT _ty' x' _tA' y' -> do
+                          -- unify Nothing tA tA' -- TODO: do we need this check?
+                          unify Nothing x x'
+                          unify Nothing y y'
+                        _ -> err
+
+                    AppT _ty f x ->
+                      case actual' of
+                        AppT _ty' f' x' -> do
+                          unify Nothing f f'
+                          setVariance Invariant $
+                            unify Nothing x x'
+                        _ -> err
+
+                    LambdaT ty _orig _mparam body ->
+                      case stripTypeRestrictions (infoType ty) of
+                        TypeFunT _ty _origF md param mtope _ret ->
+                          case actual' of
+                            LambdaT ty' orig' _mparam' body' ->
+                              case stripTypeRestrictions (infoType ty') of
+                                TypeFunT _ty' _origF' md' param' mtope' _ret' -> do
+                                  when (md /= md') $
+                                    issueTypeError (TypeErrorOther $ "modality mismatch in lambda: expected " <> show md <> " but got " <> show md')
+                                  unify Nothing param param' -- we (should) have already checked this in types!
+                                  enterScope orig' md param $ do
+                                    case (mtope, mtope') of
+                                      (Just tope, Just tope') -> do
+                                        unify Nothing tope tope' -- we (should) have already checked this in types!
+                                        localTope tope $ unify Nothing body body'
+                                      (Nothing, Nothing) -> do
+                                        unify Nothing body body'
+                                      _ -> errS
+                                _ -> err
+                            _ -> err
+                        _ -> err
+
+                    LetT{} -> panicImpossible "let at the root of WHNF"
+                    LetModT _ orig app inn _ val body ->
+                      case actual' of
+                        LetModT _ _ app' inn' _ val' body'
+                          | app == app', inn == inn' -> do
+                            unify Nothing val val'
+                            bty <- typeOf val >>= \case
+                              TypeModalT _ _ t -> pure t
+                              _ -> panicImpossible "not modal in letmod"
+                            enterScope orig (comp app inn) bty $
+                              unify Nothing body body'
+                        _ -> err
+
+                    ReflT ty _x | TypeIdT _ty x _tA y <- infoType ty ->
+                      case actual' of
+                        ReflT ty' _x' | TypeIdT _ty' x' _tA' y' <- infoType ty' -> do
+                          -- unify Nothing tA tA' -- TODO: do we need this check?
+                          unify Nothing x x'
+                          unify Nothing y y'
+                        _ -> err
+                    ReflT{} -> panicImpossible "refl with a non-identity type!"
+
+                    IdJT _ty a b c d e f ->
+                      case actual' of
+                        IdJT _ty' a' b' c' d' e' f' -> do
+                          unify Nothing a a'
+                          unify Nothing b b'
+                          unify Nothing c c'
+                          unify Nothing d d'
+                          unify Nothing e e'
+                          unify Nothing f f'
+                        _ -> err
+
+                    TypeAscT{} -> panicImpossible "type ascription at the root of WHNF"
+
+                    TypeRestrictedT _ty ty rs ->
+                      case actual' of
+                        TypeRestrictedT _ty' ty' rs' -> do
+                          unify mterm ty ty'
+                          sequence_
+                            [ localTope tope $ do
+                                -- FIXME: can do less entails checks?
+                                contextEntails (foldr topeOrT topeBottomT (map fst rs')) -- expected is less specified than actual
+                                forM_ rs' $ \(tope', term') -> do
+                                  localTope tope' $
+                                    unify Nothing term term'
+                            | (tope, term) <- rs
+                            ]
+                        _ -> err    -- FIXME: need better unification for restrictions
+                    TypeModalT _ty m ty ->
+                      case actual' of
+                        TypeModalT _ty' m' ty' -> do
+                          when (m' /= m) $ err
+                          enterModality m $ unify Nothing ty ty'
+                        _ -> err
+                    ModAppT _ty m ty ->
+                      case actual' of
+                        ModAppT _ty' m' ty' -> do
+                          when (m' /= m) $ err
+                          enterModality m $ unify Nothing ty ty'
+                        _ -> err
+                    ModExtractT _ty app inn te ->
+                      case actual' of
+                        ModExtractT _ty' app' inn' te' -> do
+                          when (app' /= app) $ err
+                          when (inn' /= inn) $ err
+                          enterModality app $ unify Nothing te te'
+                        _ -> err
+                    -- defensive: a hole nested anywhere also defers here rather
+                    -- than panicking on an otherwise unexpected shape
+                    _ | holePresent -> return ()
+                    _ -> panicImpossible "unexpected term in UNIFY"
+
+
+  where
+    action = case mterm of
+               Nothing   -> ActionUnifyTerms expected actual
+               Just term -> ActionUnify term expected actual
+
+unifyTypes :: Eq var => TermT var -> TermT var -> TermT var -> TypeCheck var ()
+unifyTypes = unify . Just
+
+unifyTerms :: Eq var => TermT var -> TermT var -> TypeCheck var ()
+unifyTerms = unify Nothing
+
+localTope :: Eq var => TermT var -> TypeCheck var a -> TypeCheck var a
+localTope tope tc = do
+  Context{..} <- ask
+  tope' <- nfTope tope
+  let modalTope' = plainTope tope'
+  -- A small optimisation to help unify terms faster
+  let refine = case tope' of
+        TopeEQT _ x y | x == y -> const tc          -- no new information added!
+        _ | modalTope' `elem` localTopesNF -> const tc     -- no new information added!
+          | otherwise -> id
+  refine $ do
+    entailsBottom <- (modalTope' : localTopesNF) `entailM` topeBottomT
+    local (f modalTope' entailsBottom) tc
+  where
+    f tope' entailsBottom Context{..} = Context
+      { localTopes = plainTope tope : localTopes
+      , localTopesNF = tope' : localTopesNF
+      , localTopesNFUnion = map nubTermT
+          [ new <> old
+          | new <- simplifyLHSwithDisjunctions [tope']
+          , old <- localTopesNFUnion ]
+      , localTopesEntailBottom = Just entailsBottom
+      , .. }
+
+universeT :: TermT var
+universeT = iterate f (panicImpossible msg) !! 30
+  where
+    msg = "going too high up the universe levels"
+    f t = UniverseT TypeInfo
+      { infoType = t
+      , infoNF = Just universeT
+      , infoWHNF = Just universeT }
+
+cubeT :: TermT var
+cubeT = UniverseCubeT TypeInfo
+  { infoType = universeT
+  , infoNF = Just cubeT
+  , infoWHNF = Just cubeT }
+
+topeT :: TermT var
+topeT = UniverseTopeT TypeInfo
+  { infoType = universeT
+  , infoNF = Just topeT
+  , infoWHNF = Just topeT }
+
+topeEQT :: TermT var -> TermT var -> TermT var
+topeEQT l r = TopeEQT info l r
+  where
+    info = TypeInfo
+      { infoType = topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeLEQT :: TermT var -> TermT var -> TermT var
+topeLEQT l r = TopeLEQT info l r
+  where
+    info = TypeInfo
+      { infoType = topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeOrT :: TermT var -> TermT var -> TermT var
+topeOrT l r = TopeOrT info l r
+  where
+    info = TypeInfo
+      { infoType = topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeAndT :: TermT var -> TermT var -> TermT var
+topeAndT l r = TopeAndT info l r
+  where
+    info = TypeInfo
+      { infoType = topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+cubeProductT :: TermT var -> TermT var -> TermT var
+cubeProductT l r = t
+  where
+    t = CubeProductT info l r
+    info = TypeInfo
+      { infoType  = cubeT
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+cubeUnitT :: TermT var
+cubeUnitT = CubeUnitT TypeInfo
+  { infoType = cubeT
+  , infoNF = Just cubeUnitT
+  , infoWHNF = Just cubeUnitT }
+
+cubeUnitStarT :: TermT var
+cubeUnitStarT = CubeUnitStarT TypeInfo
+  { infoType = cubeUnitT
+  , infoNF = Just cubeUnitStarT
+  , infoWHNF = Just cubeUnitStarT }
+
+typeUnitT :: TermT var
+typeUnitT = TypeUnitT TypeInfo
+  { infoType = universeT
+  , infoNF = Just typeUnitT
+  , infoWHNF = Just typeUnitT }
+
+unitT :: TermT var
+unitT = UnitT TypeInfo
+  { infoType = typeUnitT
+  , infoNF = Just unitT
+  , infoWHNF = Just unitT }
+
+cube2T :: TermT var
+cube2T = Cube2T TypeInfo
+  { infoType = cubeT
+  , infoNF = Just cube2T
+  , infoWHNF = Just cube2T }
+
+cube2_0T :: TermT var
+cube2_0T = Cube2_0T TypeInfo
+  { infoType = cube2T
+  , infoNF = Just cube2_0T
+  , infoWHNF = Just cube2_0T }
+
+cube2_1T :: TermT var
+cube2_1T = Cube2_1T TypeInfo
+  { infoType = cube2T
+  , infoNF = Just cube2_1T
+  , infoWHNF = Just cube2_1T }
+
+cubeIT :: TermT var
+cubeIT = CubeIT TypeInfo
+  { infoType = cubeT
+  , infoNF = Just cubeIT
+  , infoWHNF = Just cubeIT }
+
+cubeI_0T :: TermT var
+cubeI_0T = CubeI_0T TypeInfo
+  { infoType = cubeIT
+  , infoNF = Just cubeI_0T
+  , infoWHNF = Just cubeI_0T }
+
+cubeI_1T :: TermT var
+cubeI_1T = CubeI_1T TypeInfo
+  { infoType = cubeIT
+  , infoNF = Just cubeI_1T
+  , infoWHNF = Just cubeI_1T }
+
+cubeFlipT :: TermT var -> TermT var -> TermT var
+cubeFlipT cubeTy t = CubeFlipT info t
+  where
+    info = TypeInfo
+      { infoType = typeModalT cubeT Op cubeTy
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+cubeUnflipT :: TermT var -> TermT var -> TermT var
+cubeUnflipT cubeTy t = CubeUnflipT info t
+  where
+    info = TypeInfo
+      { infoType = cubeTy
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeInvT :: TermT var -> TermT var
+topeInvT t = TopeInvT info t
+  where
+    info = TypeInfo
+      { infoType = typeModalT universeT Op topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeUninvT :: TermT var -> TermT var
+topeUninvT t = TopeUninvT info t
+  where
+    info = TypeInfo
+      { infoType = topeT
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+topeTopT :: TermT var
+topeTopT = TopeTopT TypeInfo
+  { infoType = topeT
+  , infoNF = Just topeTopT
+  , infoWHNF = Just topeTopT }
+
+topeBottomT :: TermT var
+topeBottomT = TopeBottomT TypeInfo
+  { infoType = topeT
+  , infoNF = Just topeBottomT
+  , infoWHNF = Just topeBottomT }
+
+recBottomT :: TermT var
+recBottomT = RecBottomT TypeInfo
+  { infoType = recBottomT
+  , infoNF = Just recBottomT
+  , infoWHNF = Just recBottomT }
+
+typeRestrictedT :: TermT var -> [(TermT var, TermT var)] -> TermT var
+typeRestrictedT ty rs = t
+  where
+    t = TypeRestrictedT info ty rs
+    info = TypeInfo
+      { infoType  = universeT
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+lambdaT
+  :: TermT var
+  -> Binder
+  -> Maybe (TModality, TermT var, Maybe (Scope TermT var))
+  -> Scope TermT var
+  -> TermT var
+lambdaT ty orig mparam body = t
+  where
+    t = LambdaT info orig mparam body
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Just t
+      }
+
+
+letT :: TermT var -> Binder -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var
+letT ty orig mparam val body = t
+  where
+    t = LetT info orig mparam val body
+    info = TypeInfo
+      { infoType = ty
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+letModT :: TermT var -> Binder -> TModality -> TModality -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var
+letModT ty orig app inn mparam val body = t
+  where
+    t = LetModT info orig app inn mparam val body
+    info = TypeInfo
+      { infoType = ty
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+appT :: TermT var -> TermT var -> TermT var -> TermT var
+appT ty f x = t
+  where
+    t = AppT info f x
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+pairT :: TermT var -> TermT var -> TermT var -> TermT var
+pairT ty l r = t
+  where
+    t = PairT info l r
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Just t
+      }
+
+firstT :: TermT var -> TermT var -> TermT var
+firstT ty arg = t
+  where
+    t = FirstT info arg
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+secondT :: TermT var -> TermT var -> TermT var
+secondT ty arg = t
+  where
+    t = SecondT info arg
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+reflT
+  :: TermT var
+  -> Maybe (TermT var, Maybe (TermT var))
+  -> TermT var
+reflT ty mx = t
+  where
+    t = ReflT info mx
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Just (ReflT info Nothing)
+      , infoWHNF  = Just (ReflT info Nothing)
+      }
+
+typeFunT
+  :: Binder
+  -> TModality
+  -> TermT var
+  -> Maybe (Scope TermT var)
+  -> Scope TermT var
+  -> TermT var
+typeFunT orig md cube mtope ret = t
+  where
+    t = TypeFunT info orig md cube mtope ret
+    info = TypeInfo
+      { infoType  = universeT
+      , infoNF    = Nothing
+      , infoWHNF  = Just t
+      }
+
+typeSigmaT
+  :: Binder
+  -> TModality
+  -> TermT var
+  -> Scope TermT var
+  -> TermT var
+typeSigmaT orig md a b = t
+  where
+    t = TypeSigmaT info orig md a b
+    info = TypeInfo
+      { infoType  = universeT
+      , infoNF    = Nothing
+      , infoWHNF  = Just t
+      }
+
+recOrT
+  :: TermT var
+  -> [(TermT var, TermT var)]
+  -> TermT var
+recOrT ty rs = t
+  where
+    t = RecOrT info rs
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+typeIdT :: TermT var -> Maybe (TermT var) -> TermT var -> TermT var
+typeIdT x tA y = t
+  where
+    t = TypeIdT info x tA y
+    info = TypeInfo
+      { infoType  = universeT
+      , infoNF    = Nothing
+      , infoWHNF  = Just t
+      }
+
+idJT
+  :: TermT var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+idJT ty tA a tC d x p = t
+  where
+    t = IdJT info tA a tC d x p
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+typeAscT :: TermT var -> TermT var -> TermT var
+typeAscT x ty = t
+  where
+    t = TypeAscT info x ty
+    info = TypeInfo
+      { infoType  = ty
+      , infoNF    = Nothing
+      , infoWHNF  = Nothing
+      }
+
+typeModalT :: TermT var -> TModality -> TermT var -> TermT var
+typeModalT ty md te = t
+  where
+    t = TypeModalT info md te
+    info = TypeInfo
+      { infoType = ty
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+modAppT :: TermT var -> TModality -> TermT var -> TermT var
+modAppT ty md term = t
+  where
+    t = ModAppT info md term
+    info = TypeInfo
+      { infoType = ty
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+modExtractT :: TermT var -> TModality -> TModality -> TermT var -> TermT var
+modExtractT ty app inn term = t
+  where
+    t = ModExtractT info app inn term
+    info = TypeInfo
+      { infoType = ty
+      , infoNF = Nothing
+      , infoWHNF = Nothing
+      }
+
+-- | Check a @recOR@ in checking position against a known expected type: each
+-- branch is checked against that type under its guard tope, followed by the
+-- usual pairwise coherence and the coverage obligation. Passing a /restricted/
+-- type pushes the boundary into every branch, so a branch hole reports the
+-- faces it must meet (under its tope) instead of the bare underlying type.
+--
+-- Under a branch guard, the faces belonging to the other (mutually exclusive)
+-- branches become disjoint from this branch's tope context, so they are pruned
+-- by 'pruneVacuousFaces' before the branch is checked. Otherwise a face like
+-- @i ≡ 1₂@ would be reported as vacuous while checking the @i ≡ 0₂@ branch
+-- against @A [i ≡ 0₂ ↦ a, i ≡ 1₂ ↦ b]@ — which arises in particular with
+-- flat-discrete cube variables, where @i ≡ 0₂ ∧ i ≡ 1₂@ is provably ⊥.
+checkRecOrAgainst :: Eq var => TermT var -> [(Term var, Term var)] -> TypeCheck var (TermT var)
+checkRecOrAgainst expected rs = do
+  rs' <- forM rs $ \(tope, rterm) -> do
+    tope' <- typecheck tope topeT
+    checkTopeAgainstContext "recOR branch guard" tope'
+    localTope tope' $ do
+      expected' <- pruneVacuousFaces expected
+      rterm' <- typecheck rterm expected'
+      return (tope', rterm')
+  sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ]
+  contextEntailsUnion (map fst rs')
+  return (recOrT expected rs')
+
+-- | Drop the restriction faces of an extension type that are vacuous in the
+-- current tope context (their overlap with the context is the empty tope ⊥). A
+-- face mentioning an unfilled hole cannot be decided, so it is kept. Non-extension
+-- types are returned unchanged. Used when descending into a recOR branch, where
+-- the sibling branches' faces are disjoint from the branch guard.
+pruneVacuousFaces :: Eq var => TermT var -> TypeCheck var (TermT var)
+pruneVacuousFaces (TypeRestrictedT _info ty rs) = do
+  contextTopes <- asks localTopesNF
+  kept <- fmap concat $ forM rs $ \face@(tope, _) -> do
+    vacuous <- if containsHole tope
+      then return False
+      else (plainTope tope : contextTopes) `entailM` topeBottomT
+    return [ face | not vacuous ]
+  return $ case kept of
+    [] -> ty
+    _  -> typeRestrictedT ty kept
+pruneVacuousFaces ty = return ty
+
+typecheck :: Eq var => Term var -> TermT var -> TypeCheck var (TermT var)
+typecheck term ty = performing (ActionTypeCheck term ty) $ case term of
+  -- A hole is checked against a known type (this is checking position): in
+  -- strict mode it is reported as an unsolved hole; in lenient mode its goal
+  -- and context are recorded and it is treated as inhabiting the expected type.
+  Hole mname -> do
+    reject <- asks holesAreErrors
+    if reject
+      then issueTypeError (TypeErrorUnsolvedHole mname ty)
+      else do
+        recordHole mname ty
+        return (HoleT TypeInfo{ infoType = ty, infoWHNF = Nothing, infoNF = Nothing } mname)
+
+  _ -> whnfT ty >>= \case
+
+    RecBottomT{} -> do
+      -- Even under an absurd tope context (where the expected type collapses to
+      -- recBOT), the term must still be well-formed in its own right, so that
+      -- ill-typed bodies are not silently admitted under a false hypothesis. We
+      -- synthesise its type, discard the result, and keep the recBOT elaboration.
+      _ <- infer term
+      return recBottomT
+
+    tr@(TypeRestrictedT _ty ty' rs) -> case term of
+      -- A recOR against a restricted type: push the restriction into each branch
+      -- instead of stripping it first, so a branch hole reports the boundary
+      -- faces it must satisfy under its guard tope, rather than the bare
+      -- underlying type. Concrete branches still meet the faces, which are
+      -- checked on each branch's overlap with them (see the general case below).
+      RecOr branches -> checkRecOrAgainst tr branches
+      _ -> do
+        term' <- typecheck term ty'
+        -- NOTE: restriction faces need not be contained in the local tope context.
+        -- Each face is checked only on its overlap with the context below, so an
+        -- overhanging face is harmless (we only hint); a face disjoint from the context
+        -- is vacuous, however, and is reported as an error by checkTopeAgainstContext.
+        forM_ rs $ \(tope, rterm) -> do
+          checkTopeAgainstContext "restriction face" tope
+          localTope tope $
+            unifyTerms rterm term'
+        return term'    -- FIXME: correct?
+
+    ty' -> case term of
+      Lambda orig mparam body ->
+        case ty' of
+          TypeFunT _ty _orig' md' param' mtope' ret -> do
+            case mparam of
+              Nothing -> return ()
+              Just (md, param, Nothing) -> do
+                when (md /= md') $
+                  issueTypeError (TypeErrorModalityMismatch md' md term)
+                (paramType, mtope) <- do
+                  paramType <- enterModality md $ infer param
+                  typeOf paramType >>= \case
+                    -- an argument can be a shape
+                    TypeFunT _ty _orig _md cube _mtope UniverseTopeT{} -> do
+                      mapM_ checkNameShadowing (binderLeaves orig)
+                      enterScope orig md cube $ do
+                        let tope' = appT topeT (S <$> paramType) (Pure Z)  -- eta expand ty'
+                        return (cube, Just tope')
+                    _kind -> return (paramType, Nothing)
+                unifyTerms param' paramType
+                mapM_ checkNameShadowing (binderLeaves orig)
+                enterScope orig md param' $ do
+                  mapM_ (unifyTerms (fromMaybe topeTopT mtope')) mtope
+              Just (md, param, mtope) -> do
+                when (md /= md') $
+                  issueTypeError (TypeErrorModalityMismatch md' md term)
+                param'' <- enterModality md $ typecheck param =<< typeOf param'
+                unifyTerms param' param''
+                mapM_ checkNameShadowing (binderLeaves orig)
+                enterScope orig md param' $ do
+                  mtope'' <- typecheck (fromMaybe TopeTop mtope) topeT
+                  unifyTerms (fromMaybe topeTopT mtope') mtope''
+
+            mapM_ checkNameShadowing (binderLeaves orig)
+            enterScope orig md' param' $ do
+              maybe id localTope mtope' $ do
+                body' <- typecheck body ret
+                return (lambdaT ty' orig (Just (md', param', mtope')) body')
+
+          _ -> issueTypeError $ TypeErrorUnexpectedLambda term ty
+      Let orig annot val body -> do
+        val' <- performing (ActionCheckLetValue (binderName orig)) $ case annot of
+          Nothing -> infer val
+          Just bindType -> do
+            bindType' <- typecheck bindType universeT
+            typecheck val bindType'
+        bindTy <- typeOf val'
+        body' <- enterScopeWithBind orig Id bindTy val' $ do
+          typecheck body (S <$> ty')
+        return (letT ty' orig (Just bindTy) val' body')
+      LetMod orig app inn annot val body  -> do
+        val' <- performing (ActionCheckLetValue (binderName orig)) $ case annot of
+          Nothing -> enterModality app $ infer val
+          Just bindType -> do
+            bindType' <- infer bindType
+            bindUniv <- typeOf bindType'
+            enterModality app $ typecheck val (typeModalT bindUniv inn bindType')
+        bindTy <- typeOf val' >>= \case
+          o@(TypeModalT _ty md t) ->
+            if md == inn then
+              return t
+            else
+              issueTypeError $ TypeErrorNotModal (untyped o) inn val'
+          o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'
+        bindVal <- whnfT val' >>= \case
+          ModAppT _ty _m t -> pure (Just t)
+          o | isRA inn -> pure (Just (modExtractT bindTy app inn o))
+          _ -> pure Nothing
+        body' <- enterScopeMaybe orig (comp app inn) bindTy bindVal $ do
+          typecheck body (S <$> ty')
+        return (letModT ty' orig app inn (Just bindTy) val' body')
+      Pair l r ->
+        case ty' of
+          CubeProductT _ty a b -> do
+            l' <- typecheck l a
+            r' <- typecheck r b
+            return (pairT ty' l' r')
+          TypeSigmaT _ty _orig md a b -> do
+            l' <- enterModality md $ typecheck l a
+            r' <- typecheck r (substituteT l' b)
+            return (pairT ty' l' r')
+          _ -> issueTypeError $ TypeErrorUnexpectedPair term ty
+
+      Refl mx ->
+        case ty' of
+          TypeIdT _ty y _tA z -> do
+            tA <- typeOf y
+            forM_ mx $ \(x, mxty) -> do
+              forM_ mxty $ \xty -> do
+                xty' <- typecheck xty universeT
+                unifyTerms tA xty'
+              x' <- typecheck x tA
+              unifyTerms x' y >> unifyTerms y x'
+              unifyTerms x' z >> unifyTerms z x'
+            when (isNothing mx) $
+              unifyTerms y z >> unifyTerms z y
+            return (reflT ty' (Just (y, Just tA)))
+          _ -> issueTypeError $ TypeErrorUnexpectedRefl term ty
+      ModExtract{} -> panicImpossible "extract is an internal term and cannot be typechecked"
+      ModApp md body -> case ty' of
+        TypeModalT _ty md' tpe -> do
+            when (md /= md') $ issueTypeError $
+              TypeErrorModalityMismatch md' md term
+            body' <- enterModality md $ typecheck body tpe
+            return $ modAppT ty' md body'
+        _ -> issueTypeError $ TypeErrorNotModal term md ty'
+
+      -- In checking position the common type is already known, so we push it
+      -- into every branch instead of inferring each one and unifying. This is
+      -- what lets a bare hole branch (recOR(φ ↦ ?, …)) be checked against the
+      -- expected type and recorded, rather than hitting TypeErrorCannotInferHole
+      -- via the inference rule. The branch-guard, coherence, and coverage
+      -- obligations mirror the inference rule (see the RecOr case of 'infer').
+      -- A recOR is a term-level eliminator, not a tope; rejecting it when it is
+      -- checked against the tope universe (e.g. in another recOR's branch guard)
+      -- keeps it out of the tope layer, where it would otherwise hit a panic.
+      RecOr rs -> case ty' of
+        UniverseTopeT{} -> issueTypeError $
+          TypeErrorOther "a recOR cannot be used as a tope"
+        _ -> checkRecOrAgainst ty' rs
+      -- A neutral term is inferred, then its type unified with the expected
+      -- one. In lenient (hole-checking) mode a term that still carries an
+      -- unfilled hole is a work in progress, so a failure of that final
+      -- unification is tolerated: the holes recorded while inferring the term
+      -- stand (they were committed before this point), and we accept the term
+      -- rather than rejecting the whole sketch. The mismatch is typically
+      -- incidental to the missing pieces — e.g. an extension-type boundary face
+      -- that only fails to line up because an argument hole sits in the wrong
+      -- place (`f t` vs `x`), where neither side is itself a hole, so the
+      -- per-term deferral in 'unifyInCurrentContext' cannot see it. Strict mode
+      -- (the default, and CI) still rejects the mismatch.
+      _ -> do
+        term' <- infer term
+        inferredType <- typeOf term'
+        lenient <- not <$> asks holesAreErrors
+        if lenient && containsHole term'
+          then unifyTypes term' ty' inferredType `catchError` \_ -> return ()
+          else unifyTypes term' ty' inferredType
+        return term'
+
+inferAs :: Eq var => TermT var -> Term var -> TypeCheck var (TermT var)
+inferAs expectedKind term = do
+  term' <- infer term
+  ty <- typeOf term'
+  kind <- typeOf ty
+  unifyTypes ty expectedKind kind
+  return term'
+
+infer :: Eq var => Term var -> TypeCheck var (TermT var)
+infer tt = performing (ActionInfer tt) $ case tt of
+  Hole _mname -> issueTypeError (TypeErrorCannotInferHole tt)
+  Pure x -> do
+    topLevel <- isTopLevelVar x
+    unless topLevel $ do
+      varMod <- modalityOfVar x
+      locks <- locksOfVar x
+      when (not (coe varMod locks)) $ issueTypeError $ TypeErrorUnaccessibleVar x varMod locks
+    pure (Pure x)
+
+  Universe     -> pure universeT
+  UniverseCube -> pure cubeT
+  UniverseTope -> pure topeT
+
+  CubeUnit      -> pure cubeUnitT
+  CubeUnitStar  -> pure cubeUnitStarT
+
+  Cube2 -> pure cube2T
+  Cube2_0 -> pure cube2_0T
+  Cube2_1 -> pure cube2_1T
+
+  CubeI -> pure cubeIT
+  CubeI_0 -> pure cubeI_0T
+  CubeI_1 -> pure cubeI_1T
+  CubeProduct l r -> do
+    l' <- typecheck l cubeT
+    r' <- typecheck r cubeT
+    return (cubeProductT l' r')
+
+  CubeFlip t -> do
+    t' <- infer t
+    typeOf t' >>= \case
+      CubeIT{} -> pure $ cubeFlipT cubeIT t'
+      Cube2T{} -> pure $ cubeFlipT cube2T t'
+      ty -> do
+        tyStr <- ppTermInContext ty
+        issueTypeError $ TypeErrorOther $
+          "flip expects an interval cube (2 or 𝕀); got " <> tyStr
+  CubeUnflip t -> do
+    t' <- infer t
+    typeOf t' >>= \case
+      TypeModalT _ Op (CubeIT{}) -> pure $ cubeUnflipT cubeIT t'
+      TypeModalT _ Op (Cube2T{}) -> pure $ cubeUnflipT cube2T t'
+      ty -> do
+        tyStr <- ppTermInContext ty
+        issueTypeError $ TypeErrorOther $
+          "unflip expects an interval cube (2 or 𝕀) under _op; got " <> tyStr
+  Pair l r -> do
+    l' <- infer l
+    r' <- infer r
+    lt <- typeOf l'
+    rt <- typeOf r'
+    typeOf lt >>= \case
+      --    Γ ⊢ l ⇒ (I : CUBE)
+      --    Γ ⊢ r ⇒ (J : CUBE)
+      -- ———————————————————————————
+      -- Γ ⊢ (l, r) ⇒ (I × J : CUBE)
+      UniverseCubeT{} -> return (pairT (cubeProductT lt rt) l' r')
+      --    Γ ⊢ l ⇒ (A : U)
+      --    Γ ⊢ r ⇒ (B : U)
+      -- ———————————————————————————
+      -- Γ ⊢ (l, r) ⇒ (A × B : U)             where A × B = Σ (_ : A), B
+      _ -> do
+        -- NOTE: infer as a non-dependent pair!
+        return (pairT (typeSigmaT (BinderVar Nothing) Id lt (S <$> rt)) l' r')
+
+  First t -> do
+    t' <- infer t
+    fmap stripTypeRestrictions (typeOf t') >>= \case
+      RecBottomT{} -> pure recBottomT -- FIXME: is this ok?
+      TypeSigmaT _ty _orig _md lt _rt ->
+        return (firstT lt t')
+      CubeProductT _ty l _r ->
+        return (firstT l t')
+      ty -> issueTypeError $ TypeErrorNotPair t' ty
+
+  Second t -> do
+    t' <- infer t
+    fmap stripTypeRestrictions (typeOf t') >>= \case
+      RecBottomT{} -> pure recBottomT -- FIXME: is this ok?
+      TypeSigmaT _ty _orig _md lt rt ->
+        return (secondT (substituteT (firstT lt t') rt) t')
+      CubeProductT _ty _l r ->
+        return (secondT r t')
+      ty -> issueTypeError $ TypeErrorNotPair t' ty
+
+  TypeUnit -> pure typeUnitT
+  Unit -> pure unitT
+
+  TopeTop -> pure topeTopT
+  TopeBottom -> pure topeBottomT
+
+  TopeEQ l r -> do
+    l' <- inferAs cubeT l
+    lt <- typeOf l'
+    r' <- typecheck r lt
+    return (topeEQT l' r')
+
+  TopeLEQ l r -> do
+    l' <- inferAs cubeT l
+    r' <- inferAs cubeT r
+    lTy <- typeOf l'
+    rTy <- typeOf r'
+    case (lTy, rTy) of
+      (Cube2T{}, Cube2T{}) -> return (topeLEQT l' r')
+      (CubeIT{}, CubeIT{}) -> return (topeLEQT l' r')
+      (CubeIT{}, Cube2T{}) -> do
+        r'' <- typecheck r cubeIT
+        return (topeLEQT l' r'')
+      (Cube2T{}, CubeIT{}) -> do
+        l'' <- typecheck l cubeIT
+        return (topeLEQT l'' r')
+      _ -> do
+        lStr <- ppTermInContext lTy
+        rStr <- ppTermInContext rTy
+        issueTypeError $ TypeErrorOther $
+          "the (t ≤ s) tope expects points in interval cubes (2 or 𝕀); got "
+            <> lStr <> " and " <> rStr
+
+  TopeAnd l r -> do
+    l' <- typecheck l topeT
+    r' <- typecheck r topeT
+    return (topeAndT l' r')
+
+  TopeOr l r -> do
+    l' <- typecheck l topeT
+    r' <- typecheck r topeT
+    return (topeOrT l' r')
+
+  TopeInv t -> do
+    t' <- typecheck t topeT
+    return (topeInvT t')
+
+  TopeUninv t -> do
+    t' <- typecheck t (typeModalT universeT Op topeT )
+    return (topeUninvT t')
+
+  RecBottom -> do
+    contextEntails topeBottomT
+    return recBottomT
+
+  -- Γ ⊢ t ⇒ (T : K)
+  -- Γ ⊢ K ≡ U
+  -- —————————————
+  -- Γ ⊢ t ⇒ T ⇐ U
+
+  RecOr rs -> do
+    ttts <- forM rs $ \(tope, term) -> do
+      tope' <- typecheck tope topeT
+      -- NOTE: branch guards need not be contained in the context. recOR requires
+      -- only coverage (context |- OR(guards)), enforced by contextEntailsUnion below;
+      -- a guard may overhang the context (e.g. when splitting with a named shape).
+      -- checkTopeAgainstContext warns on overhang and errors only if the guard is
+      -- disjoint from the context (a vacuous branch).
+      checkTopeAgainstContext "recOR branch guard" tope'
+      localTope tope' $ do
+        term' <- inferAs universeT term
+        ty <- typeOf term'
+        return (tope', (term', ty))
+    let rs' = map (fmap fst) ttts
+        ts  = map (fmap snd) ttts
+    sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ]
+    contextEntailsUnion (map fst ttts)
+    return (recOrT (recOrT universeT ts) rs')
+
+  TypeFun orig md a Nothing b -> do
+    a' <- enterModality md $ infer a
+    typeOf a' >>= \case
+      -- an argument can be a type
+      UniverseT{} ->
+        case a' of
+          -- except if its a TOPE universe
+          UniverseTopeT{} ->
+            issueTypeError $ TypeErrorOther "tope params are illegal"
+          _ -> do
+            mapM_ checkNameShadowing (binderLeaves orig)
+            b' <- enterScope orig md a' $ typecheck b universeT
+            return (typeFunT orig md a' Nothing b')
+      -- an argument can be a cube
+      UniverseCubeT{} -> do
+        mapM_ checkNameShadowing (binderLeaves orig)
+        b' <- enterScope orig md a' $ typecheck b universeT
+        return (typeFunT orig md a' Nothing b')
+      -- an argument can be a shape
+      TypeFunT _ty _orig _md cube mtope UniverseTopeT{} -> do
+        mapM_ checkNameShadowing (binderLeaves orig)
+        enterScope orig md cube $ do
+          let tope' = appT topeT (S <$> a') (Pure Z)  -- eta expand a'
+          localTope tope' $ do
+            b' <- typecheck b universeT
+            case mtope of
+              Nothing -> return (typeFunT orig md cube (Just tope') b')
+              Just tope'' -> return (typeFunT orig md cube (Just (topeAndT tope'' tope')) b')
+      ty -> issueTypeError $ TypeErrorInvalidArgumentType a ty
+
+  TypeFun orig md cube (Just tope) ret -> do
+    cube' <- enterModality md $ typecheck cube cubeT
+    mapM_ checkNameShadowing (binderLeaves orig)
+    enterScope orig md cube' $ do
+      tope' <- typecheck tope topeT
+      localTope tope' $ do
+        ret' <- typecheck ret universeT
+        return (typeFunT orig md cube' (Just tope') ret')
+
+  TypeSigma orig md a b -> do
+    a' <- enterModality md $ typecheck a universeT
+    mapM_ checkNameShadowing (binderLeaves orig)
+    b' <- enterScope orig md a' $ typecheck b universeT
+    return (typeSigmaT orig md a' b')
+
+  TypeId x (Just tA) y -> do
+    tA' <- typecheck tA universeT
+    x' <- typecheck x tA'
+    y' <- typecheck y tA'
+    return (typeIdT x' (Just tA') y')
+
+  TypeId x Nothing y -> do
+    x' <- inferAs universeT x
+    tA <- typeOf x'
+    y' <- typecheck y tA
+    return (typeIdT x' (Just tA) y')
+
+  App f x -> do
+    f' <- inferAs universeT f
+    fmap stripTypeRestrictions (typeOf f') >>= \case
+      TypeFunT _ty orig md a mtope b -> do
+        -- A hole argument to a shape-restricted function carries the shape as
+        -- its goal: record (binder : a | tope) rather than just the cube a.
+        x' <- enterModality md $ case (x, mtope) of
+          (Hole mname, Just tope) -> checkHoleAgainstShape mname orig a tope
+          _                       -> typecheck x a
+        let result = appT (substituteT x' b) f' x'
+        case b of
+          UniverseTopeT{} -> do
+            case mtope of
+              Nothing -> return result
+              Just tope -> do
+                return (topeAndT (substituteT x' tope) result)
+          _               -> do
+            mapM_ (contextEntails . substituteT x') mtope   -- FIXME: need to check?
+            return result
+      ty -> issueTypeError $ TypeErrorNotFunction f' ty
+
+  Lambda _orig Nothing _body -> do
+    issueTypeError $ TypeErrorCannotInferBareLambda tt
+  Lambda orig (Just (md, ty, Nothing)) body -> do
+    ty' <- enterModality md $ infer ty
+    mtope <- typeOf ty' >>= \case
+      -- an argument can be a type
+      UniverseT{} ->
+        case ty' of
+          -- except if its a TOPE universe
+          UniverseTopeT{} ->
+            issueTypeError $ TypeErrorOther "tope params are illegal"
+          _ -> return Nothing
+      -- an argument can be a cube
+      UniverseCubeT{} -> return Nothing
+      -- an argument can be a shape
+      TypeFunT _ty _orig _md cube _mtope UniverseTopeT{} -> do
+        mapM_ checkNameShadowing (binderLeaves orig)
+        enterScope orig md cube $ do
+          let tope' = appT topeT (S <$> ty') (Pure Z)  -- eta expand ty'
+          return (Just tope')
+      kind -> issueTypeError $ TypeErrorInvalidArgumentType ty kind
+    mapM_ checkNameShadowing (binderLeaves orig)
+    enterScope orig md ty' $ do
+      maybe id localTope mtope $ do
+        body' <- infer body
+        ret <- typeOf body'
+        return (lambdaT (typeFunT orig md ty' mtope ret) orig (Just (md, ty', mtope)) body')
+  Lambda orig (Just (md, cube, Just tope)) body -> do
+    cube' <- enterModality md $ typecheck cube cubeT
+    mapM_ checkNameShadowing (binderLeaves orig)
+    enterScope orig md cube' $ do
+      tope' <- infer tope
+      body' <- localTope tope' $ infer body
+      ret <- typeOf body'
+      return (lambdaT (typeFunT orig md cube' (Just tope') ret) orig (Just (md, cube', Just tope')) body')
+  Let orig annot val body -> do
+    val' <- performing (ActionCheckLetValue (binderName orig)) $ case annot of
+      Nothing -> infer val
+      Just ty -> do
+        bindTy <- typecheck ty universeT
+        typecheck val bindTy
+    bindTy <- typeOf val'
+    enterScopeWithBind orig Id bindTy val' $ do
+      body' <- infer body
+      ret <- typeOf body'
+      return (letT (substituteT val' ret) orig (Just bindTy) val' body')
+  LetMod orig app inn annot val body -> do
+    val' <- performing (ActionCheckLetValue (binderName orig)) $ case annot of
+      Nothing -> enterModality app $ infer val
+      Just bindType -> do
+        bindType' <- infer bindType
+        bindUniv <- typeOf bindType'
+        enterModality app $ typecheck val (typeModalT bindUniv inn bindType')
+    bindTy <- typeOf val' >>= \case
+      o@(TypeModalT _ty md t) ->
+        if md == inn then
+          return t
+        else
+          issueTypeError $ TypeErrorNotModal (untyped o) inn val'
+      o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'
+    bindVal <- whnfT val' >>= \case
+      ModAppT _ty _m t -> pure (Just t)
+      o | isRA inn -> pure (Just (modExtractT bindTy app inn o))
+      _ -> pure Nothing
+    enterScopeMaybe orig (comp app inn) bindTy bindVal $ do
+      body' <- infer body
+      ret <- typeOf body'
+      return (letModT (substituteT val' ret) orig app inn (Just bindTy) val' body')
+  Refl Nothing -> issueTypeError $ TypeErrorCannotInferBareRefl tt
+  Refl (Just (x, Nothing)) -> do
+    x' <- inferAs universeT x
+    ty <- typeOf x'
+    return (reflT (typeIdT x' (Just ty) x') (Just (x', Just ty)))
+  Refl (Just (x, Just ty)) -> do
+    ty' <- typecheck ty universeT
+    x' <- typecheck x ty'
+    return (reflT (typeIdT x' (Just ty') x') (Just (x', Just ty')))
+
+  IdJ tA a tC d x p -> do
+    tA' <- typecheck tA universeT
+    a' <- typecheck a tA'
+    let typeOf_C =
+          typeFunT (BinderVar Nothing) Id tA' Nothing $
+            typeFunT (BinderVar Nothing) Id (typeIdT (S <$> a') (Just (S <$> tA')) (Pure Z)) Nothing $
+              universeT
+    tC' <- typecheck tC typeOf_C
+    let typeOf_d =
+          appT universeT
+            (appT (typeFunT (BinderVar Nothing) Id (typeIdT a' (Just tA') a') Nothing universeT)
+              tC' a')
+            (reflT (typeIdT a' (Just tA') a') Nothing)
+    d' <- typecheck d typeOf_d
+    x' <- typecheck x tA'
+    p' <- typecheck p (typeIdT a' (Just tA') x')
+    let ret =
+          appT universeT
+            (appT (typeFunT (BinderVar Nothing) Id (typeIdT a' (Just tA') x') Nothing universeT)
+              tC' x')
+            p'
+    return (idJT ret tA' a' tC' d' x' p')
+
+  TypeAsc term ty -> do
+    ty' <- inferAs universeT ty -- this works on types AND cubes
+    term' <- typecheck term ty'
+    return (typeAscT term' ty')
+
+  TypeRestricted ty rs -> do
+    ty' <- typecheck ty universeT
+    rs' <- forM rs $ \(tope, term) -> do
+      tope' <- typecheck tope topeT
+      term' <- localTope tope' $ typecheck term ty'
+      return (tope', term')
+    sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ]
+    return (typeRestrictedT ty' rs')
+  TypeModal md ty -> do
+    ty' <- enterModality md $ infer ty
+    universeTy <- typeOf ty'
+    _ <- case universeTy of
+      UniverseT {}     -> pure universeTy
+      UniverseCubeT {} -> pure universeTy
+      UniverseTopeT {} -> pure universeTy
+      _                -> issueTypeError $ TypeErrorNotTypeInModal universeTy
+    return (typeModalT universeTy md ty')
+  ModApp md term -> do
+    term' <- enterModality md $ infer term
+    ty <- typeOf term'
+    tyUniv <- typeOf ty
+    return $ modAppT (typeModalT tyUniv md ty) md term'
+  ModExtract _ _ _ -> error "untypable $extract$"
+
+checkCoherence
+  :: Eq var
+  => (TermT var, TermT var)
+  -> (TermT var, TermT var)
+  -> TypeCheck var ()
+checkCoherence (ltope, lterm) (rtope, rterm) =
+  performing (ActionCheckCoherence (ltope, lterm) (rtope, rterm)) $ do
+    localTope (topeAndT ltope rtope) $ do
+      ltype <- stripTypeRestrictions <$> typeOf lterm   -- FIXME: why strip?
+      rtype <- stripTypeRestrictions <$> typeOf rterm   -- FIXME: why strip?
+      -- FIXME: do we need to unify types here or is it included in unification of terms?
+      unifyTerms ltype rtype
+      unifyTerms lterm rterm
+
+inferStandalone :: Eq var => Term var -> Either (TypeErrorInScopedContext var) (TermT var)
+inferStandalone term = defaultTypeCheck (infer term)
+
+unsafeInferStandalone' :: Term' -> TermT'
+unsafeInferStandalone' term = unsafeTypeCheck' (infer term)
+
+unsafeTypeCheck' :: TypeCheck VarIdent a -> a
+unsafeTypeCheck' tc =
+  case defaultTypeCheck tc of
+    Left err     -> error $ ppTypeErrorInScopedContext' BottomUp err
+    Right result -> result
+
+type PointId = String
+type ShapeId = [PointId]
+
+cube2powerT :: Int -> TermT var
+cube2powerT 1   = cube2T
+cube2powerT dim = cubeProductT (cube2powerT (dim - 1)) cube2T
+
+splits :: [a] -> [([a], [a])]
+splits [] = [([], [])]
+splits (x:xs) = ([], x:xs) : [ (x : before, after) | (before, after) <- splits xs ]
+
+verticesFrom :: [TermT var] -> [(ShapeId, TermT var)]
+verticesFrom ts = combine <$> mapM mk ts
+  where
+    mk t = [("0", topeEQT t cube2_0T), ("1", topeEQT t cube2_1T)]
+    combine xs = ([concat (map fst xs)], foldr1 topeAndT (map snd xs))
+
+subTopes2 :: Int -> TermT var -> [(ShapeId, TermT var)]
+-- 1-dim
+subTopes2 1 t =
+  [ (words "0", topeEQT t cube2_0T)
+  , (words "1", topeEQT t cube2_1T)
+  , (words "0 1", topeTopT) ]
+-- 2-dim
+subTopes2 2 ts =
+  -- vertices
+  [ (words "00", topeEQT t cube2_0T `topeAndT` topeEQT s cube2_0T)
+  , (words "01", topeEQT t cube2_0T `topeAndT` topeEQT s cube2_1T)
+  , (words "10", topeEQT t cube2_1T `topeAndT` topeEQT s cube2_0T)
+  , (words "11", topeEQT t cube2_1T `topeAndT` topeEQT s cube2_1T)
+  -- edges and the diagonal
+  , (words "00 01", topeEQT t cube2_0T)
+  , (words "10 11", topeEQT t cube2_1T)
+  , (words "00 10", topeEQT s cube2_0T)
+  , (words "01 11", topeEQT s cube2_1T)
+  , (words "00 11", topeEQT s t)
+  -- triangles
+  , (words "00 01 11", topeLEQT t s)
+  , (words "00 10 11", topeLEQT s t)
+  ]
+  where
+    t = firstT cube2T ts
+    s = secondT cube2T ts
+-- 3-dim
+subTopes2 3 t =
+  -- vertices
+  [ (words "000", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "001", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "010", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "100", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "101", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "110", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
+  -- edges
+  , (words "000 001", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_0T)
+  , (words "010 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 cube2_1T)
+  , (words "000 010", topeEQT t1 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "001 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "100 101", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_0T)
+  , (words "110 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 cube2_1T)
+  , (words "100 110", topeEQT t1 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "101 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "000 100", topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "001 101", topeEQT t2 cube2_0T `topeAndT` topeEQT t3 cube2_1T)
+  , (words "010 110", topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_0T)
+  , (words "011 111", topeEQT t2 cube2_1T `topeAndT` topeEQT t3 cube2_1T)
+  -- face diagonals
+  , (words "000 011", topeEQT t1 cube2_0T `topeAndT` topeEQT t2 t3)
+  , (words "100 111", topeEQT t1 cube2_1T `topeAndT` topeEQT t2 t3)
+  , (words "000 101", topeEQT t2 cube2_0T `topeAndT` topeEQT t1 t3)
+  , (words "010 111", topeEQT t2 cube2_1T `topeAndT` topeEQT t1 t3)
+  , (words "000 110", topeEQT t3 cube2_0T `topeAndT` topeEQT t1 t2)
+  , (words "001 111", topeEQT t3 cube2_1T `topeAndT` topeEQT t1 t2)
+  -- the long diagonal
+  , (words "000 111", topeEQT t3 t2 `topeAndT` topeEQT t2 t1)
+  -- face triangles
+  , (words "000 001 011", topeEQT t1 cube2_0T `topeAndT` topeLEQT t2 t3)
+  , (words "000 010 011", topeEQT t1 cube2_0T `topeAndT` topeLEQT t3 t2)
+  , (words "100 101 111", topeEQT t1 cube2_1T `topeAndT` topeLEQT t2 t3)
+  , (words "100 110 111", topeEQT t1 cube2_1T `topeAndT` topeLEQT t3 t2)
+  , (words "000 001 101", topeEQT t2 cube2_0T `topeAndT` topeLEQT t1 t3)
+  , (words "000 100 101", topeEQT t2 cube2_0T `topeAndT` topeLEQT t3 t1)
+  , (words "010 011 111", topeEQT t2 cube2_1T `topeAndT` topeLEQT t1 t3)
+  , (words "010 110 111", topeEQT t2 cube2_1T `topeAndT` topeLEQT t3 t1)
+  , (words "000 010 110", topeEQT t3 cube2_0T `topeAndT` topeLEQT t1 t2)
+  , (words "000 100 110", topeEQT t3 cube2_0T `topeAndT` topeLEQT t2 t1)
+  , (words "001 011 111", topeEQT t3 cube2_1T `topeAndT` topeLEQT t1 t2)
+  , (words "001 101 111", topeEQT t3 cube2_1T `topeAndT` topeLEQT t2 t1)
+  -- diagonal triangles
+  , (words "000 001 111", topeEQT t1 t2 `topeAndT` topeLEQT t2 t3)
+  , (words "000 010 111", topeEQT t1 t3 `topeAndT` topeLEQT t1 t2)
+  , (words "000 100 111", topeEQT t2 t3 `topeAndT` topeLEQT t2 t1)
+  , (words "000 011 111", topeLEQT t1 t2 `topeAndT` topeEQT t2 t3)
+  , (words "000 101 111", topeLEQT t2 t1 `topeAndT` topeEQT t1 t3)
+  , (words "000 110 111", topeLEQT t3 t1 `topeAndT` topeEQT t1 t2)
+  -- tetrahedra
+  , (words "000 001 011 111", topeLEQT t1 t2 `topeAndT` topeLEQT t2 t3)
+  , (words "000 010 011 111", topeLEQT t1 t3 `topeAndT` topeLEQT t3 t2)
+  , (words "000 001 101 111", topeLEQT t2 t1 `topeAndT` topeLEQT t1 t3)
+  , (words "000 100 101 111", topeLEQT t2 t3 `topeAndT` topeLEQT t3 t1)
+  , (words "000 010 110 111", topeLEQT t3 t1 `topeAndT` topeLEQT t1 t2)
+  , (words "000 100 110 111", topeLEQT t3 t2 `topeAndT` topeLEQT t2 t1)
+  ]
+  where
+    t1 = firstT  cube2T (firstT (cube2powerT 2) t)
+    t2 = secondT cube2T (firstT (cube2powerT 2) t)
+    t3 = secondT cube2T t
+subTopes2 dim _ = error (show dim <> " dimensions are not supported")
+
+cubeSubTopes :: [(ShapeId, TermT (Inc var))]
+cubeSubTopes = subTopes2 3 (Pure Z)
+
+limitLength :: Int -> String -> String
+limitLength n s
+  | length s > n = take (n - 1) s <> "…"
+  | otherwise    = s
+
+-- | Apply the 'renderHideTerm' policy to a cell's render data: drop the
+-- @\<title\>@ (the full term) from every cell, and blank the visible label of a
+-- proof-coloured (interior) cell. Boundary cells (coloured otherwise) keep
+-- their given labels. A no-op when not hiding.
+hideTermData :: Bool -> String -> RenderObjectData -> RenderObjectData
+hideTermData False _ d = d
+hideTermData True  mainColor d
+  | renderObjectDataColor d == mainColor =
+      d { renderObjectDataLabel = "", renderObjectDataFullLabel = "" }
+  | otherwise = d { renderObjectDataFullLabel = "" }
+
+renderObjectsFor
+  :: Eq var
+  => String
+  -> Int
+  -> TermT var
+  -> TermT var
+  -> TypeCheck var [(ShapeId, RenderObjectData)]
+renderObjectsFor mainColor dim t term = fmap catMaybes $ do
+  forM (subTopes2 dim t) $ \(shapeId, tope) -> do
+    checkTopeEntails tope >>= \case
+      False -> return Nothing
+      True -> typeOf term >>= \case
+        UniverseTopeT{} -> localTope term $ checkTopeEntails tope >>= \case
+          False -> return Nothing
+          True -> return $ Just (shapeId, RenderObjectData
+            { renderObjectDataLabel = ""
+            , renderObjectDataFullLabel = ""
+            , renderObjectDataColor = "orange"  -- FIXME: orange for topes?
+            })
+        _ -> do
+          origs <- asks varOrigs
+          term' <- localTope tope $ whnfT term
+          label <-
+            case term' of
+              AppT _ (Pure z) arg
+                | Just (Just "_") <- lookup z origs -> return ""
+                | null (nub (freeVars (untyped arg)) \\ nub (freeVars (untyped t))) ->
+                    ppTermInContext (Pure z)
+              _ -> ppTermInContext term'
+          hide <- asks renderHideTerm
+          return $ Just (shapeId, hideTermData hide mainColor RenderObjectData
+            { renderObjectDataLabel = label
+            , renderObjectDataFullLabel = label
+            , renderObjectDataColor =
+                case term' of
+                  Pure{} -> "purple"
+                  AppT _ (Pure x) arg
+                    | Just (Just "_") <- lookup x origs -> mainColor
+                    | null (nub (freeVars (untyped arg)) \\ nub (freeVars (untyped t)))  -> "purple"
+                  _ -> mainColor
+            })
+
+componentWiseEQT :: Int -> TermT var -> TermT var -> TermT var
+componentWiseEQT 1 t s = topeEQT t s
+componentWiseEQT 2 t s = topeAndT
+  (componentWiseEQT 1 (firstT  cube2T t) (firstT  cube2T s))
+  (componentWiseEQT 1 (secondT cube2T t) (secondT cube2T s))
+componentWiseEQT 3 t s = topeAndT
+  (componentWiseEQT 2 (firstT  (cube2powerT 2) t) (firstT (cube2powerT 2) s))
+  (componentWiseEQT 1 (secondT cube2T t) (secondT cube2T s))
+componentWiseEQT dim _ _ = error ("cannot work with " <> show dim <> " dimensions")
+
+renderObjectsInSubShapeFor
+  :: Eq var
+  => String
+  -> Int
+  -> [var]
+  -> var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TypeCheck var [(ShapeId, RenderObjectData)]
+renderObjectsInSubShapeFor mainColor dim sub super retType f x = fmap catMaybes $ do
+  let reduceContext
+        = foldr topeOrT topeBottomT
+        . map (foldr topeAndT topeTopT)
+        . map (filter (\tope -> all (`notElem` tope) sub))
+        . map (map tTope)
+        . map (saturateTopes [])
+        . simplifyLHSwithDisjunctions
+  contextTopes  <- asks (reduceContext . localTopesNF)
+  contextTopes' <- localTope (componentWiseEQT dim (Pure super) x) $ asks (reduceContext . localTopesNF)
+  forM (subTopes2 dim (Pure super)) $ \(shapeId, tope) -> do
+    checkEntails tope contextTopes >>= \case
+      False -> return Nothing
+      True -> do
+        origs <- asks varOrigs
+        term <- localTope tope (whnfT (appT retType f (Pure super)))
+        label <- typeOf term >>= \case
+          UniverseTopeT{} -> return ""
+          _ -> do
+            case term of
+              AppT _ (Pure z) arg
+                | Just (Just "_") <- lookup z origs -> return ""
+                | null (nub (freeVars (untyped arg)) \\ [super]) -> ppTermInContext (Pure z)
+              _ -> ppTermInContext term
+        color <- checkEntails tope contextTopes' >>= \case
+          True -> do
+            case term of
+              Pure{} -> return "purple"
+              AppT _ (Pure z) arg
+                | Just (Just "_") <- lookup z origs -> return mainColor
+                | null (nub (freeVars (untyped arg)) \\ [super]) -> return "purple"
+              _ -> return mainColor
+          False -> return "gray"
+        hide <- asks renderHideTerm
+        return $ Just (shapeId, hideTermData hide mainColor RenderObjectData
+          { renderObjectDataLabel = label
+          , renderObjectDataFullLabel = label
+          , renderObjectDataColor = color
+          })
+
+renderForSubShapeSVG
+  :: Eq var
+  => String
+  -> Int
+  -> [var]
+  -> var
+  -> TermT var
+  -> TermT var
+  -> TermT var
+  -> TypeCheck var String
+renderForSubShapeSVG mainColor dim sub super retType f x = do
+  objects <- renderObjectsInSubShapeFor mainColor dim sub super retType f x
+  let objects' = map mk objects
+  return $ renderCube defaultCamera (if dim > 2 then (pi/7) else 0) $ \obj ->
+    lookup obj objects'
+  where
+    mk (shapeId, renderData) = (intercalate "-" (map fill shapeId), renderData)
+    fill xs = xs <> replicate (3 - length xs) '1'
+
+renderForSVG :: Eq var => String -> Int -> TermT var -> TermT var -> TypeCheck var String
+renderForSVG mainColor dim t term = do
+  objects <- renderObjectsFor mainColor dim t term
+  let objects' = map mk objects
+  return $ renderCube defaultCamera (if dim > 2 then (pi/7) else 0) $ \obj ->
+    lookup obj objects'
+  where
+    mk (shapeId, renderData) = (intercalate "-" (map fill shapeId), renderData)
+    fill xs = xs <> replicate (3 - length xs) '1'
+
+renderTermSVGFor
+  :: Eq var
+  => String -- ^ Main color.
+  -> Int    -- ^ Accumulated dimensions so far (from 0 to 3).
+  -> (Maybe (TermT var, TermT var), [var])  -- ^ Accumulated point term (and its time).
+  -> TermT var  -- ^ Term to render.
+  -> TypeCheck var (Maybe String)
+renderTermSVGFor mainColor accDim (mp, xs) t = do
+  t' <- whnfT t
+  ty <- typeOf t'
+  case t of -- check unevaluated term
+    AppT _info f x -> typeOf f >>= \case
+      TypeFunT _ fOrig md fArg mtopeArg ret | Just dim <- dimOf fArg, dim <= maxDim -> do
+        enterScope fOrig md fArg $ do
+          maybe id localTope mtopeArg $ do
+            Just <$> renderForSubShapeSVG mainColor dim (map S xs) Z ret (S <$> f) (S <$> x)  -- FIXME: breaks for 2 * (2 * 2), but works for 2 * 2 * 2 = (2 * 2) * 2
+      _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
+    TypeFunT _ _orig' md' _ _ _ | null xs -> enterScope (BinderVar (Just "_")) md' t' $ do
+      renderTermSVGFor "blue" 0 (Nothing, []) (Pure Z)  -- use blue for types
+
+    _ -> case t' of -- check evaluated term
+      AppT _info f x -> typeOf f >>= \case
+        TypeFunT _ fOrig md fArg mtopeArg ret | Just dim <- dimOf fArg, dim <= maxDim -> do
+          enterScope fOrig md fArg $ do
+            maybe id localTope mtopeArg $ do
+              Just <$> renderForSubShapeSVG mainColor dim (map S xs) Z ret (S <$> f) (S <$> x)  -- FIXME: breaks for 2 * (2 * 2), but works for 2 * 2 * 2 = (2 * 2) * 2
+        _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
+      TypeFunT _ _orig' md' _ _ _ | null xs -> enterScope (BinderVar (Just "_")) md' t' $ do
+        renderTermSVGFor "blue" 0 (Nothing, []) (Pure Z)  -- use blue for types
+
+      _ -> case ty of -- check type of the term
+        TypeFunT _ orig md arg mtope ret
+          | Just dim <- dimOf arg, accDim + dim <= maxDim -> enterScope orig md arg $ do
+              maybe id localTope mtope $
+                renderTermSVGFor mainColor (accDim + dim)
+                  (join' (both (fmap S) <$> mp) (S <$> arg) (Pure Z), Z : map S xs) $
+                    case t' of
+                      LambdaT _ _orig _marg body -> body
+                      _                          -> appT ret (S <$> t') (Pure Z)
+          | null xs -> enterScope orig md arg $ do
+              maybe id localTope mtope $
+                renderTermSVGFor mainColor accDim
+                  (both (fmap S) <$> mp, map S xs) $
+                    case t' of
+                      LambdaT _ _orig _marg body -> body
+                      _                          -> appT ret (S <$> t') (Pure Z)
+        _ -> traverse (\(p', _) -> renderForSVG mainColor accDim p' t') mp
+  where
+    maxDim = 3
+
+    both f (x, y) = (f x, f y)
+
+    join' Nothing Cube2T{} x = Just (x, cube2T)
+    join' (Just (p, pt)) Cube2T{} x = Just (p', pt')
+      where
+        pt' = cubeProductT pt cube2T
+        p' = pairT pt' p x
+    join' p (CubeProductT _ l r) x =
+      join' (join' p l (firstT l x)) r (secondT r x)
+    join' _ _ _ = Nothing -- FIXME: error?
+
+    dimOf = \case
+      Cube2T{}           -> Just 1
+      CubeProductT _ l r -> (+) <$> dimOf l <*> dimOf r
+      _                  -> Nothing
+
+renderTermSVG :: Eq var => TermT var -> TypeCheck var (Maybe String)
+renderTermSVG = renderTermSVGFor "red" 0 (Nothing, [])  -- use red for terms by default
+
+-- | Render the goal /cell/ for a (shape) type: introduce an abstract inhabitant
+-- and render it with the proof term hidden. Under a boundary tope an abstract
+-- inhabitant of an extension type reduces to the prescribed face value, so the
+-- cell shows its given edges with a blank interior — the shape to inhabit, not
+-- an answer. 'Nothing' for a non-shape type (a 0-cell or a non-cube goal).
+renderGoalCellSVG :: Eq var => TermT var -> TypeCheck var (Maybe String)
+renderGoalCellSVG ty =
+  hidingTerm $ enterScope (BinderVar (Just "_")) Id ty $ renderTermSVG' (Pure Z)
+
+renderTermSVG' :: Eq var => TermT var -> TypeCheck var (Maybe String)
+renderTermSVG' t = whnfT t >>= \t' -> typeOf t >>= \case
+  TypeFunT _ orig md arg mtope ret -> enterScope orig md arg $ do
+    maybe id localTope mtope $ case t' of
+      LambdaT _ _orig _marg (AppT _info f x) ->
+        typeOf f >>= \case
+          TypeFunT _ fOrig md2 fArg mtope2 _ret | Just dim <- dimOf fArg -> do
+            enterScope fOrig md2 fArg $ do
               maybe id localTope mtope2 $ do
                 Just <$> renderForSubShapeSVG "red" dim [S Z] Z (S <$> ret) (S <$> f) (S <$> x)
           _ -> defaultRenderTermSVG t' arg ret
diff --git a/test/Rzk/DiagnosticSpec.hs b/test/Rzk/DiagnosticSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Rzk/DiagnosticSpec.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE OverloadedStrings #-}
+-- | Tests for structured diagnostics (Rzk.Diagnostic): the severity/code/
+-- location derived from a type error or a hole, and the JSON encoding consumed
+-- by `rzk typecheck --json`.
+module Rzk.DiagnosticSpec (spec) where
+
+import           Data.Aeson                 (encode)
+import qualified Data.ByteString.Lazy.Char8 as BL8
+import           Data.List                  (isInfixOf)
+import qualified Data.Text                  as T
+
+import qualified Language.Rzk.Syntax        as Rzk
+import           Rzk.Diagnostic
+import           Rzk.TypeCheck
+
+import           Test.Hspec
+
+-- | All diagnostics for a module, in lenient hole mode (type errors as errors,
+-- holes as hints) — the same set `rzk typecheck --json` emits.
+diagnose :: T.Text -> [Diagnostic]
+diagnose src =
+  case Rzk.parseModule src of
+    Left err -> error ("parse error: " <> T.unpack err)
+    Right m  -> case typecheckModulesWithHoles [("<test>", m)] of
+      Left err                 -> [diagnoseTypeError BottomUp err]
+      Right (_, errors, holes) ->
+        map (diagnoseTypeError BottomUp) errors ++ map diagnoseHole holes
+
+spec :: Spec
+spec = do
+  describe "diagnoseTypeError" $ do
+    it "produces an error-severity diagnostic with a stable code and a line" $ do
+      case diagnose "#lang rzk-1\n#check U U : U\n" of
+        [d] -> do
+          diagnosticSeverity d `shouldBe` SeverityError
+          diagnosticCode d `shouldBe` "TypeErrorNotFunction"
+          (diagnosticLocation d >>= locationLine) `shouldBe` Just 2
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
+
+  describe "diagnoseHole" $ do
+    it "produces a warning-severity diagnostic carrying the goal" $ do
+      case diagnose "#lang rzk-1\n#define g : (A : U) -> A -> A\n  := \\ A a -> ?goal\n" of
+        [d] -> do
+          diagnosticSeverity d `shouldBe` SeverityWarning
+          diagnosticCode d `shouldBe` "hole"
+          ("goal" `isInfixOf` diagnosticMessage d) `shouldBe` True
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
+
+  -- The structured hole payload (Rzk.Diagnostic.HoleData) exposes the goal and
+  -- local context as separate rendered strings, so consumers (e.g. richer LSP
+  -- hovers) need not parse the prose `message`. The pair-pattern example is
+  -- reused from Rzk.HolesSpec so these assertions double as a regression that the
+  -- restored binder names (t / s, not π₁ / π₂) survive into the JSON.
+  describe "diagnoseHole structured payload" $ do
+    let pairPattern =
+          "#lang rzk-1\n\
+          \#define test : (A : U) -> (x : A) -> ( (t , s) : 2 * 2 | s <= t ) -> A [ t === s |-> x ]\n\
+          \  := \\ A x (t , s) -> ?\n"
+    it "carries the goal, cube variables and topes as separate fields" $ do
+      case diagnose pairPattern of
+        [d] -> case diagnosticHole d of
+          Just hd -> do
+            holeDataName hd `shouldBe` Nothing
+            holeDataShape hd `shouldBe` Nothing
+            ("t \8801 s" `isInfixOf` holeDataGoal hd) `shouldBe` True   -- t ≡ s
+            map fst (holeDataCubeVars hd) `shouldContain` ["(t, s)"]
+            holeDataTopes hd `shouldContain` ["s \8804 t"]              -- s ≤ t
+          Nothing -> expectationFailure "expected a structured hole payload"
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
+
+    it "encodes the structured hole object in JSON" $ do
+      case diagnose pairPattern of
+        [d] -> do
+          let json = BL8.unpack (encode d)
+          ("\"code\":\"hole\"" `isInfixOf` json) `shouldBe` True
+          ("\"hole\":{" `isInfixOf` json) `shouldBe` True
+          ("\"goal\":" `isInfixOf` json) `shouldBe` True
+          ("\"cubeVars\":" `isInfixOf` json) `shouldBe` True
+          ("\"topes\":" `isInfixOf` json) `shouldBe` True
+          -- restored binder names are present in the wire format
+          ("(t, s)" `isInfixOf` json) `shouldBe` True
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
+
+  describe "JSON encoding" $ do
+    it "encodes severity, code and message" $ do
+      case diagnose "#lang rzk-1\n#check U U : U\n" of
+        [d] -> do
+          let json = BL8.unpack (encode d)
+          ("\"severity\":\"error\"" `isInfixOf` json) `shouldBe` True
+          ("\"code\":\"TypeErrorNotFunction\"" `isInfixOf` json) `shouldBe` True
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
+
+    it "emits a null hole field for a type-error diagnostic" $ do
+      case diagnose "#lang rzk-1\n#check U U : U\n" of
+        [d] -> do
+          diagnosticHole d `shouldBe` Nothing
+          ("\"hole\":null" `isInfixOf` BL8.unpack (encode d)) `shouldBe` True
+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))
diff --git a/test/Rzk/HolesSpec.hs b/test/Rzk/HolesSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Rzk/HolesSpec.hs
@@ -0,0 +1,502 @@
+{-# LANGUAGE OverloadedStrings #-}
+-- | Tests for the structured goal/context query (lenient hole mode). The
+-- YAML fixtures cover the strict-mode errors (ill-hole-*); here we check the
+-- structured 'HoleInfo' that the game and LSP consume, which substring
+-- assertions in the fixture harness cannot pin down (especially the split
+-- between term variables and cube variables).
+module Rzk.HolesSpec (spec) where
+
+import           Data.List           (isInfixOf)
+import           Data.Maybe          (fromMaybe)
+import qualified Data.Text           as T
+import qualified Data.Text.IO        as T (readFile)
+import           System.Environment  (lookupEnv)
+import           System.FilePath     ((</>))
+
+import qualified Language.Rzk.Syntax as Rzk
+import           Language.Rzk.Free.Syntax (VarIdent)
+import           Rzk.Diagnostic      (typeErrorTagInScopedContext)
+import           Rzk.TypeCheck
+
+import           Test.Hspec
+
+-- | Parse and typecheck a module in lenient hole mode, returning the recorded
+-- holes. Errors out loudly so a broken fixture is obvious.
+holesOf :: T.Text -> [HoleInfo]
+holesOf src =
+  case Rzk.parseModule src of
+    Left err -> error ("parse error: " <> T.unpack err)
+    Right m  -> case typecheckModulesWithHoles [("<test>", m)] of
+      Left err            -> error ("typecheck threw: " <> ppTypeErrorInScopedContext' BottomUp err)
+      Right (_, _, holes) -> holes
+
+-- | Like 'holesOf', but allow-lists the given named top-level lemmas for the
+-- candidate hints (see 'withHintLemmas'\/'typecheckModulesWithHolesAndLemmas').
+holesWithLemmas :: [VarIdent] -> T.Text -> [HoleInfo]
+holesWithLemmas lemmas src =
+  case Rzk.parseModule src of
+    Left err -> error ("parse error: " <> T.unpack err)
+    Right m  -> case typecheckModulesWithHolesAndLemmas lemmas [("<test>", m)] of
+      Left err            -> error ("typecheck threw: " <> ppTypeErrorInScopedContext' BottomUp err)
+      Right (_, _, holes) -> holes
+
+names :: [HoleEntry] -> [String]
+names = map (show . holeEntryName)
+
+-- | Parse and typecheck a module in lenient hole mode, returning the
+-- constructor tags of the collected (non-fatal) type errors. Used to assert
+-- which diagnostics fire without depending on their rendered text.
+errTagsOf :: T.Text -> [String]
+errTagsOf src =
+  case Rzk.parseModule src of
+    Left err -> error ("parse error: " <> T.unpack err)
+    Right m  -> case typecheckModulesWithHoles [("<test>", m)] of
+      Left err           -> [typeErrorTagInScopedContext err]
+      Right (_, errs, _) -> map typeErrorTagInScopedContext errs
+
+-- | Like 'holesOf'/'errTagsOf', but reads a module from @test/files/@ (so a
+-- large example need not be inlined). Honours @RZK_TEST_ROOT@ like the other
+-- specs. Returns the recorded holes and the collected error tags.
+checkFile :: FilePath -> IO ([HoleInfo], [String])
+checkFile name = do
+  root <- fromMaybe "." <$> lookupEnv "RZK_TEST_ROOT"
+  src  <- T.readFile (root </> "test" </> "files" </> name)
+  case Rzk.parseModule src of
+    Left err -> error ("parse error: " <> T.unpack err)
+    Right m  -> case typecheckModulesWithHoles [(name, m)] of
+      Left err           -> error ("typecheck threw: " <> ppTypeErrorInScopedContext' BottomUp err)
+      Right (_, errs, hs) -> pure (hs, map typeErrorTagInScopedContext errs)
+
+spec :: Spec
+spec = do
+  describe "typecheckModulesWithHoles (structured goal/context query)" $ do
+    it "records a hole's goal and local term context (no name)" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> A -> A\n  := \\ A a -> ?\n" of
+        [h] -> do
+          holeName h `shouldBe` Nothing
+          show (holeGoal h) `shouldBe` "A"
+          names (holeTermVars h) `shouldContain` ["A"]
+          names (holeTermVars h) `shouldContain` ["a"]
+          holeCubeVars h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    it "keeps the user's hole name and splits cube variables from term variables" $ do
+      case holesOf "#lang rzk-1\n#define g : (A : U) -> (t : 2) -> A\n  := \\ A t -> ?goal\n" of
+        [h] -> do
+          holeName h `shouldBe` Just "goal"
+          names (holeCubeVars h) `shouldBe` ["t"]
+          names (holeTermVars h) `shouldContain` ["A"]
+          names (holeTermVars h) `shouldNotContain` ["t"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    it "records every hole in a module" $ do
+      let holes = holesOf "#lang rzk-1\n#define p : (A : U) -> (B : U) -> A -> B -> A\n  := \\ A B a b -> ?\n"
+      length holes `shouldBe` 1
+      let holes2 = holesOf "#lang rzk-1\n#define q : (A : U) -> A -> A\n  := \\ A a -> ?\n#define r : (A : U) -> A -> A\n  := \\ A a -> ?\n"
+      length holes2 `shouldBe` 2
+
+    -- A hole whose elaborated term reaches unification (here the `refl` endpoint)
+    -- must not panic ("unexpected term in UNIFY"); it unifies with anything.
+    it "handles a hole that flows into unification" $ do
+      case holesOf "#lang rzk-1\n#define t : (A : U) -> (a : A) -> a =_{A} a\n  := \\ A a -> refl_{?}\n" of
+        [h] -> show (holeGoal h) `shouldBe` "A"
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A bare hole in each recOR branch: the checking-direction recOR rule pushes
+    -- the common type (A) into every branch, so both holes are recorded against A
+    -- with their branch tope in context. Without that rule the recOR is elaborated
+    -- by inference and the branch holes fail with TypeErrorCannotInferHole.
+    it "records a hole in each recOR branch against the common type" $ do
+      case holesOf "#lang rzk-1\n#define square : (A : U) -> A -> (2 × 2) -> A\n  := \\ A a (t , s) -> recOR ( t ≤ s ↦ ? , s ≤ t ↦ ? )\n" of
+        [h1, h2] -> do
+          show (holeGoal h1) `shouldBe` "A"
+          show (holeGoal h2) `shouldBe` "A"
+          map show (holeTopes h1) `shouldContain` ["t ≤ s"]
+          map show (holeTopes h2) `shouldContain` ["s ≤ t"]
+        hs  -> expectationFailure ("expected exactly two holes, got " <> show (length hs))
+
+    -- When the recOR is checked against an /extension type/, each branch hole
+    -- reports the boundary it must meet under its tope (the restriction is
+    -- pushed into the branches), rather than the bare underlying type. So the
+    -- player sees, e.g., that the value must equal `f t` on `s ≡ 0₂` and `a` on
+    -- `s ≡ 1₂`, not just `A`.
+    it "shows the extension-type boundary in a recOR branch hole" $ do
+      case holesOf "#lang rzk-1\n#def square (A : U) (a : A) (f : (t : 2) → A)\n  : (t : 2) → (s : 2) → A [ s ≡ 0₂ ↦ f t , s ≡ 1₂ ↦ a ]\n  := \\ t s → recOR ( s ≤ t ↦ ? , t ≤ s ↦ ? )\n" of
+        [h1, h2] -> do
+          let goal1 = show (holeGoal h1)
+          ("A [" `isInfixOf` goal1) `shouldBe` True   -- a restricted type, not bare A
+          ("↦ f t" `isInfixOf` goal1) `shouldBe` True -- the s ≡ 0₂ face is shown
+          ("↦ a" `isInfixOf` goal1) `shouldBe` True   -- the s ≡ 1₂ face is shown
+          map show (holeTopes h1) `shouldContain` ["s ≤ t"]
+          show (holeGoal h2) `shouldBe` goal1          -- both branches carry the same boundary
+          map show (holeTopes h2) `shouldContain` ["t ≤ s"]
+        hs  -> expectationFailure ("expected exactly two holes, got " <> show (length hs))
+
+    -- A hole nested inside a larger term (`f ?`) checked against an
+    -- extension-type boundary: the boundary face is unified against `f ?`, which
+    -- must be deferred rather than reported as a mismatch.
+    it "handles a nested hole under an extension-type boundary" $ do
+      case holesOf "#lang rzk-1\n#define t : (A : U) -> (f : A -> A) -> (a : A) -> (t : 2) -> A [ t === 0_2 |-> a ]\n  := \\ A f a t -> f ?\n" of
+        [h] -> show (holeGoal h) `shouldBe` "A"
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A genuinely completable work-in-progress term is tolerated. The example
+    -- (the Yoneda game's square-transformation level) feeds an incomplete
+    -- `codomain-square A is-segal-A a b (f ?) ? ? ? ?` where a value of
+    -- `hom A (f t) a` is wanted. Inferring it records the holes, but the final
+    -- check of its type then unifies two extension-type boundaries, and a
+    -- *hole-free* face comparison fails — so the existing per-term deferral
+    -- cannot see that a hole is involved, and the whole def was rejected with
+    -- TypeErrorUnifyTerms. We now tolerate it and keep the recorded holes. The
+    -- companion `…-complete` definition fills the holes and typechecks, so the
+    -- holes really can be filled to make the same term check (it is not a dead
+    -- end). See test/files/holes-wip-square.rzk.
+    it "tolerates a completable WIP term whose type only fails around a hole" $ do
+      (holes, errs) <- checkFile "holes-wip-square.rzk"
+      errs `shouldBe` []          -- the WIP def is tolerated, the complete one checks
+      length holes `shouldBe` 5   -- the five holes of square-transformation-wip
+
+    -- A hole used as the argument of a shape-restricted function: the
+    -- shape-membership tope (psi ?) mentions the hole and cannot be decided, so
+    -- it is deferred rather than reported as TypeErrorTopeNotSatisfied. The goal
+    -- is the shape (s : I | psi s), captured in holeGoalShape.
+    it "records the shape goal for a hole argument to a shape-restricted function" $ do
+      case holesOf "#lang rzk-1\n#define t : (I : CUBE) -> (psi : I -> TOPE) -> (A : U) -> (a : (s : I | psi s) -> A) -> (t : I) -> A\n  := \\ I psi A a t -> a ?\n" of
+        [h] -> do
+          show (holeGoal h) `shouldBe` "I"
+          case holeGoalShape h of
+            Just (s, tope) -> do
+              show s `shouldBe` "s"
+              show tope `shouldBe` "psi s"
+            Nothing -> expectationFailure "expected a shape goal (holeGoalShape)"
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- An ordinary (non-shape) hole has no shape goal.
+    it "leaves holeGoalShape empty for an ordinary hole" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> A -> A\n  := \\ A a -> ?\n" of
+        [h] -> holeGoalShape h `shouldBe` Nothing
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A hole checked directly against an extension type shows its boundary in
+    -- the goal (the extension type is a real restricted type, carried in
+    -- holeGoal — not a shape, so holeGoalShape stays empty).
+    it "shows the extension-type boundary in the goal" $ do
+      case holesOf "#lang rzk-1\n#define t : (A : U) -> (a : A) -> (t : 2) -> A [ t === 0_2 |-> a ]\n  := \\ A a t -> ?\n" of
+        [h] -> do
+          holeGoalShape h `shouldBe` Nothing
+          let goal = show (holeGoal h)
+          ("A [" `isInfixOf` goal) `shouldBe` True   -- a restricted type, not bare A
+          ("↦ a" `isInfixOf` goal) `shouldBe` True   -- the boundary face is present
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A pair-pattern binder \ (t , s) -> ? restores the user's component names:
+    -- the goal and tope context show t / s, not projections (π₁ / π₂) of a fresh
+    -- variable. This is what the game and LSP hole panels display.
+    it "restores pair-pattern binder names in the goal and topes" $ do
+      case holesOf "#lang rzk-1\n#define test : (A : U) -> (x : A) -> ( (t , s) : 2 * 2 | s <= t ) -> A [ t === s |-> x ]\n  := \\ A x (t , s) -> ?\n" of
+        [h] -> do
+          let goal = show (holeGoal h)
+          ("t ≡ s" `isInfixOf` goal) `shouldBe` True
+          ('π' `elem` goal) `shouldBe` False
+          map show (holeTopes h) `shouldContain` ["s ≤ t"]
+          -- the cube variable is shown as the pattern, not a fresh variable
+          names (holeCubeVars h) `shouldBe` ["(t, s)"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A nested tuple pattern ((t , s) , r) restores all the component names,
+    -- including the doubly-projected one (s = π₂ (π₁ x)).
+    it "restores nested tuple binder names" $ do
+      case holesOf "#lang rzk-1\n#define test : (A : U) -> (x : A) -> ( ((t , s) , r) : (2 * 2) * 2 | r <= s ) -> A [ r === t |-> x ]\n  := \\ A x ((t , s) , r) -> ?\n" of
+        [h] -> do
+          let goal = show (holeGoal h)
+          ("r ≡ t" `isInfixOf` goal) `shouldBe` True
+          ('π' `elem` goal) `shouldBe` False
+          map show (holeTopes h) `shouldContain` ["r ≤ s"]
+          names (holeCubeVars h) `shouldBe` ["((t, s), r)"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A bare use of a pattern binder's point (not a projection) inside a shape
+    -- in the /goal type/ must print as the pattern, not a fresh variable: the
+    -- membership tope of @((t , s) : Δ²) → A@ reads @Δ² (t , s)@, not @Δ² x@.
+    it "restores a pattern point used bare in a goal-type shape tope" $ do
+      case holesOf "#lang rzk-1\n#def Δ² : (2 × 2) → TOPE := \\ (t , s) → s ≤ t\n#def f (A : U) : ( ((t , s) : Δ²) → A ) := ?\n" of
+        [h] -> do
+          let goal = show (holeGoal h)
+          ("| Δ² (t, s))" `isInfixOf` goal) `shouldBe` True
+          ('π' `elem` goal) `shouldBe` False
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- Guardrail: ordinary projections of a variable that is NOT a pattern binder
+    -- must still print as π₁ / π₂ (only pattern-binder projections are folded).
+    it "leaves ordinary projections of a non-pattern variable as π₁ / π₂" $ do
+      case holesOf "#lang rzk-1\n#define test : (A : U) -> (x : A) -> ( p : 2 * 2 | second p <= first p ) -> A [ first p === second p |-> x ]\n  := \\ A x p -> ?\n" of
+        [h] -> do
+          let goal = show (holeGoal h)
+          ("π₁ p ≡ π₂ p" `isInfixOf` goal) `shouldBe` True
+          map show (holeTopes h) `shouldContain` ["π₂ p ≤ π₁ p"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+  describe "holeCandidates (type-directed elimination candidates)" $ do
+    let cands = map show . holeCandidates
+
+    -- A hypothesis that already has the goal type is offered as-is.
+    it "offers a hypothesis of the goal type directly" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> A -> A\n  := \\ A a -> ?\n" of
+        [h] -> cands h `shouldContain` ["a"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A function is offered fully applied, with its argument left as a hole;
+    -- the under-applied function itself is not a move.
+    it "applies a function, leaving the argument as a hole" $ do
+      case holesOf "#lang rzk-1\n#define h : (A : U) -> (B : U) -> (A -> B) -> A -> B\n  := \\ A B g a -> ?\n" of
+        [h] -> cands h `shouldContain` ["g ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A Σ-typed hypothesis is eliminated by projection to reach the goal.
+    it "projects a Σ-typed hypothesis to reach the goal" $ do
+      case holesOf "#lang rzk-1\n#define k : (A : U) -> (s : Σ (a : A) , A) -> A\n  := \\ A s -> ?\n" of
+        [h] -> do
+          cands h `shouldContain` ["π₁ s"]
+          cands h `shouldContain` ["π₂ s"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A path is eliminated by path induction. The motive is introduced straight
+    -- away as a λ, so over @p : a =_A x@ the spine @idJ (A, a, \ b → \ q → ?, ?,
+    -- x, p)@ has a result type that β-reduces to a hole and so fits any goal —
+    -- here an ordinary goal @A@ with the path in scope.
+    it "eliminates a path by idJ, introducing the motive λ" $ do
+      case holesOf "#lang rzk-1\n#def f (A : U) (a x : A) (p : a =_{A} x) : A := ?\n" of
+        [h] -> cands h `shouldContain` ["idJ (A, a, \\ b → \\ q → ?, ?, x, p)"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- With no path in scope there is nothing to eliminate by idJ.
+    it "does not offer idJ without a path hypothesis" $ do
+      case holesOf "#lang rzk-1\n#def f (A : U) (a : A) : A := ?\n" of
+        [h] -> filter (isInfixOf "idJ") (cands h) `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A partial application whose result structurally mismatches the goal is not
+    -- offered: matching uses structural (not fully lenient) hole unification, so
+    -- the hole in @h ?@ : @P ?@ cannot excuse the mismatch with the goal @Q@.
+    it "does not offer a structurally mismatched partial application" $ do
+      case holesOf "#lang rzk-1\n#define t : (A : U) -> (P : A -> U) -> (Q : U) -> (h : (a : A) -> P a) -> Q\n  := \\ A P Q h -> ?\n" of
+        [h] -> cands h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- In a contradictory tope context (here the shape @t ≡ 0₂ ∧ t ≡ 1₂@, which
+    -- entails ⊥) recBOT inhabits the goal, so it is offered as a candidate.
+    it "offers recBOT in a contradictory tope context" $ do
+      case holesOf "#lang rzk-1\n#def f (A : U) (a : A) : ( (t : 2 | t ≡ 0₂ ∧ t ≡ 1₂) → A )\n  := \\ t → ?\n" of
+        [h] -> cands h `shouldContain` ["recBOT"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A consistent tope context does not offer recBOT.
+    it "does not offer recBOT in a consistent tope context" $ do
+      case holesOf "#lang rzk-1\n#def f (A : U) (a : A) : ( (t : 2 | t ≡ 0₂) → A )\n  := \\ t → ?\n" of
+        [h] -> cands h `shouldNotContain` ["recBOT"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- In a shape setting (a cube variable in scope) the goal can be built by a
+    -- tope case split; the generic two-way recOR is always available there.
+    it "offers a generic recOR split in a shape setting" $ do
+      case holesOf "#lang rzk-1\n#def Δ¹ : 2 → TOPE := \\ t → TOP\n#def hom (A : U) (x y : A) : U\n  := (t : Δ¹) → A [ t ≡ 0₂ ↦ x , t ≡ 1₂ ↦ y ]\n#def mor (A : U) (x y : A) : hom A x y := \\ t → ?\n" of
+        hs | (h:_) <- reverse hs -> cands h `shouldContain` ["recOR (? ↦ ?, ? ↦ ?)"]
+        _ -> expectationFailure "expected at least one hole"
+
+    -- recOR and recBOT are term-level eliminators, so a hole whose goal is a cube
+    -- point or a tope is never offered them — even in a setting (a cube variable
+    -- in scope) that does offer a recOR split for a term goal.
+    let recCands = filter (\s -> isInfixOf "recOR" s || isInfixOf "recBOT" s) . cands
+    it "does not offer recOR/recBOT for a cube goal" $
+      -- `?` is a cube point (goal `2`) fed to a shape function, with a cube
+      -- variable `s` in scope (which would offer a recOR split for a term goal).
+      case holesOf "#lang rzk-1\n#def c (A : U) (s : 2) (g : (t : 2) -> A) : A := g ?\n" of
+        [h] -> recCands h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+    it "does not offer recOR/recBOT for a tope goal" $
+      case holesOf "#lang rzk-1\n#def p (A : U) (t : 2) : TOPE := ?\n" of
+        [h] -> recCands h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- An ordinary, tope-free goal offers no recOR split.
+    it "offers no recOR split for a tope-free goal" $ do
+      case holesOf "#lang rzk-1\n#def plain (A : U) (a : A) : A := ?\n" of
+        [h] -> filter (isInfixOf "recOR") (cands h) `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- On the boundary t ≡ 0₂ ∨ t ≡ 1₂ the faces cover the context, so the goal's
+    -- restriction faces become a concrete recOR split.
+    it "splits on the goal's faces when they cover the context" $ do
+      case holesOf "#lang rzk-1\n#def bdry (A : U) (x y : A)\n  : ( (t : 2 | t ≡ 0₂ ∨ t ≡ 1₂) → A [ t ≡ 0₂ ↦ x , t ≡ 1₂ ↦ y ] )\n  := \\ t → ?\n" of
+        [h] -> cands h `shouldContain` ["recOR (t ≡ 0₂ ↦ ?, t ≡ 1₂ ↦ ?)"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+  describe "holeCandidates with allow-listed lemmas (withHintLemmas)" $ do
+    let cands = map show . holeCandidates
+        -- two top-level lemmas and an off-type one; the goal is the type @B@.
+        src = "#lang rzk-1\n#postulate B : U\n#postulate C : U\n"
+           <> "#postulate concat : B -> B -> B\n#postulate rev : B -> B\n"
+           <> "#postulate elsewhere : C\n#define goal : B := ?\n"
+        oneHole f hs = case hs of
+          [h] -> f h
+          _   -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A top-level definition is not a hole candidate unless it is allow-listed.
+    it "does not offer a top-level lemma that was not allow-listed" $
+      flip oneHole (holesWithLemmas [] src) $ \h ->
+        filter (isInfixOf "concat") (cands h) `shouldBe` []
+
+    -- An allow-listed lemma is offered, applied to holes (fit to the goal).
+    it "offers an allow-listed lemma applied to holes" $
+      flip oneHole (holesWithLemmas ["concat"] src) $ \h ->
+        cands h `shouldContain` ["concat ? ?"]
+
+    -- Each allow-listed lemma is offered independently.
+    it "offers several allow-listed lemmas" $
+      flip oneHole (holesWithLemmas ["concat", "rev"] src) $ \h -> do
+        cands h `shouldContain` ["concat ? ?"]
+        cands h `shouldContain` ["rev ?"]
+
+    -- The allow-list is still fit-filtered: a lemma whose type cannot reach the
+    -- goal (here @elsewhere : C@ against goal @B@) is not offered.
+    it "does not offer an allow-listed lemma whose type does not fit" $
+      flip oneHole (holesWithLemmas ["elsewhere"] src) $ \h ->
+        filter (isInfixOf "elsewhere") (cands h) `shouldBe` []
+
+    -- Lemmas feed the candidate list only, not the local context: an allow-listed
+    -- global does not appear among the hole's term/cube variables.
+    it "keeps allow-listed lemmas out of the local context" $
+      flip oneHole (holesWithLemmas ["concat"] src) $ \h ->
+        (names (holeTermVars h) <> names (holeCubeVars h)) `shouldNotContain` ["concat"]
+
+  describe "holeIntroductions (type-directed introduction forms)" $ do
+    let intros = map show . holeIntroductions
+
+    -- A function goal is introduced by a λ over a hole body; the binder is
+    -- taken from the type, so a named domain keeps its name.
+    it "introduces a function goal as a λ with a hole body" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> ((n : A) -> A)\n  := \\ A -> ?\n" of
+        [h] -> intros h `shouldBe` ["\\ n → ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- The λ binder is freshened so it does not shadow a name already in scope.
+    -- Here the goal unfolds to `(t : 2) -> A`, whose binder `t` (taken from
+    -- `endo`'s definition, mirroring `hom`) clashes with the in-scope cube
+    -- variable `t`; the introduction binds `t₁` instead of a shadowing `t`.
+    it "freshens the λ binder so it does not shadow an in-scope name" $ do
+      case holesOf "#lang rzk-1\n#define endo : U -> U\n  := \\ A -> (t : 2) -> A\n#define f : (A : U) -> (t : 2) -> endo A\n  := \\ A t -> ?\n" of
+        [h] -> intros h `shouldBe` ["\\ t₁ → ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A named pattern domain (e.g. a cube point) keeps its pattern, so the λ
+    -- binds the user's names rather than a projection.
+    it "introduces a pattern-domain function with the pattern binder" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> ( ((t , s) : 2 × 2) -> A )\n  := \\ A -> ?\n" of
+        [h] -> intros h `shouldBe` ["\\ (t, s) → ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A nameless product domain is destructured by default, recursively, with
+    -- cube-point leaves named tN.
+    it "destructures a nameless cube-product domain" $ do
+      case holesOf "#lang rzk-1\n#def f (A : U) : ( (2 × 2 × 2) → A ) := ?\n" of
+        [h] -> intros h `shouldBe` ["\\ ((t1, t2), t3) → ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A nameless Σ domain is destructured too, with term leaves named xN.
+    it "destructures a nameless Σ domain" $ do
+      case holesOf "#lang rzk-1\n#def f (A B C : U) : ( (Σ (a : A) , B) → C ) := ?\n" of
+        [h] -> intros h `shouldBe` ["\\ (x1, x2) → ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A Σ-type goal is introduced by a pair of holes.
+    it "introduces a Σ goal as a pair of holes" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> (B : A -> U) -> (a : A) -> (b : B a) -> Σ (w : A) , B w\n  := \\ A B a b -> ?\n" of
+        [h] -> intros h `shouldBe` ["(?, ?)"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- An identity type whose endpoints already agree is introduced by refl.
+    it "introduces an identity type with agreeing endpoints by refl" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> (a : A) -> (a =_{A} a)\n  := \\ A a -> ?\n" of
+        [h] -> intros h `shouldBe` ["refl"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- refl is conditional: it is not offered when the endpoints need not agree.
+    it "does not offer refl when the endpoints need not agree" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> (a : A) -> (b : A) -> (a =_{A} b)\n  := \\ A a b -> ?\n" of
+        [h] -> intros h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- The unit type is introduced by unit.
+    it "introduces the unit type by unit" $ do
+      case holesOf "#lang rzk-1\n#define f : Unit\n  := ?\n" of
+        [h] -> intros h `shouldBe` ["unit"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A goal whose type has no head constructor to introduce (a neutral
+    -- application) offers no introduction.
+    it "offers no introduction for a neutral goal" $ do
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> (B : A -> U) -> (a : A) -> B a\n  := \\ A B a -> ?\n" of
+        [h] -> intros h `shouldBe` []
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    -- A shape goal (a hole of type TOPE) is introduced by every tope
+    -- constructor, so a shape can be built up by tapping.
+    it "introduces a tope goal by every tope constructor" $ do
+      case holesOf "#lang rzk-1\n#define sh : 2 -> TOPE\n  := \\ t -> ?\n" of
+        [h] -> do
+          show (holeGoal h) `shouldBe` "TOPE"
+          intros h `shouldBe` ["⊤", "⊥", "? ≡ ?", "? ≤ ?", "? ∧ ?", "? ∨ ?"]
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+  -- In lenient (hole-checking) mode a partial proof should still typecheck even
+  -- when it has not yet applied a declared variable: the unfilled hole may be
+  -- where that variable will eventually be used. We tolerate the unused-variable
+  -- diagnostics only while such a hole is present; strict mode (the YAML
+  -- ill-unused-* fixtures) still reports them.
+  describe "unused-variable diagnostics tolerated in lenient hole mode" $ do
+    let section body = "#lang rzk-1\n#section sec\n#variable A : U\n"
+                    <> "#variable unused-var : A\n" <> body <> "\n#end sec\n"
+
+    it "tolerates an unused section assumption when the section has a hole" $
+      errTagsOf (section "#define only-type : U\n  := ?")
+        `shouldNotContain` ["TypeErrorUnusedVariable"]
+
+    it "still reports an unused section assumption with no hole present" $
+      errTagsOf (section "#define only-type : U\n  := A")
+        `shouldContain` ["TypeErrorUnusedVariable"]
+
+    let usesSection body = "#lang rzk-1\n#section sec\n#variable A : U\n"
+                        <> "#variable x : A\n" <> body <> "\n#end sec\n"
+
+    it "tolerates an unused 'uses' variable when the declaration has a hole" $
+      errTagsOf (usesSection "#define f uses (x) : U\n  := ?")
+        `shouldNotContain` ["TypeErrorUnusedUsedVariables"]
+
+    it "still reports an unused 'uses' variable with no hole in the declaration" $
+      errTagsOf (usesSection "#define f uses (x) : U\n  := A")
+        `shouldContain` ["TypeErrorUnusedUsedVariables"]
+
+  -- The goal cell: when the goal is a renderable shape, the hole carries an SVG
+  -- of that shape, drawn from an abstract inhabitant with the proof term hidden
+  -- (see 'renderHideTerm'). So the picture shows the given boundary edges with a
+  -- blank interior, never the term that would fill it.
+  describe "holeDiagram (goal-cell SVG)" $ do
+    it "renders a shape goal as a labelled, term-free SVG" $ do
+      let src = "#lang rzk-1\n\
+                \#def sq (A : U) (a : A) : U\n\
+                \  := ((t , s) : 2 * 2) -> A [ t === 0_2 |-> a , t === 1_2 |-> a , s === 0_2 |-> a , s === 1_2 |-> a ]\n\
+                \#def fill (A : U) (a : A) : sq A a := ?\n"
+      case holesOf src of
+        [h] -> case holeDiagram h of
+          Just svg -> do
+            ("<svg" `isInfixOf` svg)            `shouldBe` True
+            ("<path" `isInfixOf` svg)           `shouldBe` True  -- a 2-cell (square), not just an arrow
+            (">a</text>" `isInfixOf` svg)       `shouldBe` True  -- the given boundary edge `a`
+            ("<title></title>" `isInfixOf` svg) `shouldBe` True  -- titles blanked: no proof term
+          Nothing -> expectationFailure "expected a goal-cell diagram for a shape goal"
+        hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
+
+    it "has no diagram for a non-shape goal" $
+      case holesOf "#lang rzk-1\n#define f : (A : U) -> A -> A\n  := \\ A a -> ?\n" of
+        [h] -> holeDiagram h `shouldBe` Nothing
+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))
diff --git a/test/Rzk/TypeCheckSpec.hs b/test/Rzk/TypeCheckSpec.hs
--- a/test/Rzk/TypeCheckSpec.hs
+++ b/test/Rzk/TypeCheckSpec.hs
@@ -19,6 +19,7 @@
 
 import           Language.Rzk.Free.Syntax   (VarIdent)
 import qualified Language.Rzk.Syntax        as Rzk
+import           Rzk.Diagnostic            (typeErrorTag)
 import           Rzk.TypeCheck              (Context (..), Decl', LocationInfo (..),
                                            OutputDirection (..), TypeError (..),
                                            TypeErrorInContext (..),
@@ -64,30 +65,11 @@
     location (typeErrorContext e) >>= locationLine
   ScopedTypeError _ e -> errorLine (unsafeCoerce e)
 
+-- | The constructor name of a type error, used to match @error_tag@ in
+-- fixtures. This is the library's 'typeErrorTag' (also used for diagnostic
+-- codes), aliased here so the two cannot drift apart.
 typeErrorConstructorName :: TypeError VarIdent -> String
-typeErrorConstructorName = \case
-  TypeErrorOther{}                -> "TypeErrorOther"
-  TypeErrorUnify{}                -> "TypeErrorUnify"
-  TypeErrorUnifyTerms{}           -> "TypeErrorUnifyTerms"
-  TypeErrorNotPair{}              -> "TypeErrorNotPair"
-  TypeErrorNotModal{}             -> "TypeErrorNotModal"
-  TypeErrorModalityMismatch{}     -> "TypeErrorModalityMismatch"
-  TypeErrorUnaccessibleVar{}      -> "TypeErrorUnaccessibleVar"
-  TypeErrorNotTypeInModal{}       -> "TypeErrorNotTypeInModal"
-  TypeErrorNotFunction{}          -> "TypeErrorNotFunction"
-  TypeErrorUnexpectedLambda{}     -> "TypeErrorUnexpectedLambda"
-  TypeErrorUnexpectedPair{}       -> "TypeErrorUnexpectedPair"
-  TypeErrorUnexpectedRefl{}       -> "TypeErrorUnexpectedRefl"
-  TypeErrorCannotInferBareLambda{} -> "TypeErrorCannotInferBareLambda"
-  TypeErrorCannotInferBareRefl{}  -> "TypeErrorCannotInferBareRefl"
-  TypeErrorUndefined{}           -> "TypeErrorUndefined"
-  TypeErrorTopeNotSatisfied{}    -> "TypeErrorTopeNotSatisfied"
-  TypeErrorTopesNotEquivalent{}  -> "TypeErrorTopesNotEquivalent"
-  TypeErrorInvalidArgumentType{} -> "TypeErrorInvalidArgumentType"
-  TypeErrorDuplicateTopLevel{}   -> "TypeErrorDuplicateTopLevel"
-  TypeErrorUnusedVariable{}       -> "TypeErrorUnusedVariable"
-  TypeErrorUnusedUsedVariables{}  -> "TypeErrorUnusedUsedVariables"
-  TypeErrorImplicitAssumption{}   -> "TypeErrorImplicitAssumption"
+typeErrorConstructorName = typeErrorTag
 
 casesRoot :: FilePath
 casesRoot = "test/typecheck/cases"
diff --git a/test/doctests.hs b/test/doctests.hs
--- a/test/doctests.hs
+++ b/test/doctests.hs
@@ -1,7 +1,5 @@
--- doctests/Main.hs
-
-import           Test.DocTest
+import           System.Environment (getArgs)
+import           Test.DocTest       (mainFromCabal)
 
--- This test suite exists only to add dependencies
 main :: IO ()
-main = doctest ["src"]
+main = mainFromCabal "rzk" =<< getArgs
diff --git a/test/typecheck/SCHEMA.md b/test/typecheck/SCHEMA.md
--- a/test/typecheck/SCHEMA.md
+++ b/test/typecheck/SCHEMA.md
@@ -20,7 +20,7 @@
 | `error_tag` | if `status: error` | Name of the `TypeError` constructor after stripping `ScopedTypeError` wrappers, e.g. `TypeErrorUnify`, `TypeErrorUndefined`. |
 | `message_contains` | no | Substrings that must all appear in the rendered error (`ppTypeErrorInScopedContext'`). |
 | `line` | no | 1-based line number (approximate) in the Rzk file where the error is reported. |
-| `regression_for` | no | Traceability: GitHub issue/PR URLs, commit themes, or short **semantic** rule names (e.g. `contextEquiv-recOR-boundary`). Avoid `TypeCheck.hs` line numbers and `issueTypeError-<line>` tags — they go stale. |
+| `regression_for` | no | Traceability: GitHub issue/PR URLs, commit themes, or short **semantic** rule names (e.g. `contextEntailsUnion-recOR-boundary`). Avoid `TypeCheck.hs` line numbers and `issueTypeError-<line>` tags — they go stale. |
 | `modules` | no | If set (directory case), ordered list of module files for one `typecheckModulesWithLocation` run. |
 | `api` | no | Omit or `strict` (default): `typecheckModulesWithLocation` (throws on first error). `collect`: `typecheckModulesWithLocation'` — returns a list of errors without using `throwError`; note that the typechecker still stops per-module chaining when a module reports errors (see implementation in `Rzk.TypeCheck`). |
 
diff --git a/test/typecheck/cases/happy-flip-unflip.expect.yaml b/test/typecheck/cases/happy-flip-unflip.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-flip-unflip.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - flip-tope-equivalence
diff --git a/test/typecheck/cases/happy-flip-unflip.rzk b/test/typecheck/cases/happy-flip-unflip.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-flip-unflip.rzk
@@ -0,0 +1,29 @@
+#lang rzk-1
+
+-- Test: _op (flip(i) === 0_2) is equivalent to (i === 1_2)
+-- Verified via propositional equality of topes under _op
+
+#def test-flip-tope-equiv
+  (i : 2)
+  : let mod _op q := inv_op (i === 1_2) in
+    let mod _op fi := flip_op i in
+    _op (q = (fi === 0_2))
+  := mod _op refl
+
+-- Symmetric case: _op (flip(i) === 1_2) is equivalent to (i === 0_2)
+
+#def test-flip-tope-equiv-sym
+  (i : 2)
+  : let mod _op q := inv_op (i === 0_2) in
+    let mod _op fi := flip_op i in
+    _op (q = (fi === 1_2))
+  := mod _op refl
+
+-- flip/unflip with 2: inv roundtrip
+
+#def test-flip-inv-roundtrip-2
+  (i : 2)
+  : let mod _op q := inv_op (i === 0_2) in
+    let mod _op fi := flip_op i in
+    _op (q = (fi === 1_2))
+  := mod _op refl
diff --git a/test/typecheck/cases/happy-interval-basics.expect.yaml b/test/typecheck/cases/happy-interval-basics.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-interval-basics.expect.yaml
@@ -0,0 +1,5 @@
+status: ok
+regression_for:
+  - interval-cube-basics
+  - covariance-2-and-I
+  - totality-on-2
diff --git a/test/typecheck/cases/happy-interval-basics.rzk b/test/typecheck/cases/happy-interval-basics.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-interval-basics.rzk
@@ -0,0 +1,68 @@
+#lang rzk-1
+
+-- Extension types are needed to map out of cubes into types.
+-- You cannot simply write `(t : 2) -> A`; you need `<{(t : 2) | TOP} -> A>`.
+
+-- Basic extension type over 2
+#define arr2
+  (A : U)
+  : U
+  := (t : 2) -> A
+
+-- Basic extension type over I
+#define arrI
+  (A : U)
+  : U
+  := (t : II) -> A
+
+-- Extension type with boundary over 2
+#define hom2
+  (A : U) (x y : A)
+  : U
+  := (t : 2) -> A [ t === 0_2 |-> x , t === 1_2 |-> y ]
+
+-- Extension type with boundary over I
+#define homI
+  (A : U) (x y : A)
+  : U
+  := (t : II) -> A [ t === 0_I |-> x , t === 1_I |-> y ]
+
+-- Covariance of 2: a map A -> B induces a map on arrows
+#define cov2
+  (A B : U)
+  (f : A -> B)
+  (p : (t : 2) -> A)
+  : (t : 2) -> B
+  := \ t -> f (p t)
+
+-- Covariance of I: a map A -> B induces a map on paths
+#define covI
+  (A B : U)
+  (f : A -> B)
+  (p : (t : II) -> A)
+  : (t : II) -> B
+  := \ t -> f (p t)
+
+-- Covariance of 2 preserves boundary
+#define cov2-boundary
+  (A B : U)
+  (f : A -> B)
+  (x y : A)
+  (p : (t : 2) -> A [ t === 0_2 |-> x , t === 1_2 |-> y ])
+  : (t : 2) -> B [ t === 0_2 |-> f x , t === 1_2 |-> f y ]
+  := \ t -> f (p t)
+
+-- Covariance of I preserves boundary
+#define covI-boundary
+  (A B : U)
+  (f : A -> B)
+  (x y : A)
+  (p : (t : II) -> A [ t === 0_I |-> x , t === 1_I |-> y ])
+  : (t : II) -> B [ t === 0_I |-> f x , t === 1_I |-> f y ]
+  := \ t -> f (p t)
+
+-- Totality on 2: recOR works because 2 has total order
+#define total2
+  (t : 2)
+  : Unit
+  := recOR( t <= 0_2 |-> unit , 0_2 <= t |-> unit )
diff --git a/test/typecheck/cases/happy-interval-subtyping.expect.yaml b/test/typecheck/cases/happy-interval-subtyping.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-interval-subtyping.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - interval-subtyping-2-to-II
diff --git a/test/typecheck/cases/happy-interval-subtyping.rzk b/test/typecheck/cases/happy-interval-subtyping.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-interval-subtyping.rzk
@@ -0,0 +1,16 @@
+#lang rzk-1
+
+-- An (t : II) -> A is usable where a (t : 2) -> A is expected:
+-- 2 <: II at the cube level, so by contravariance (II -> A) <: (2 -> A).
+-- The converse (a 2-arrow where an II-path is expected) is in ill-interval-subtyping.rzk.
+
+#define arr2
+  (A : U) (x y : A)
+  : U
+  := (t : 2) -> A [ t === 0_2 |-> x , t === 1_2 |-> y ]
+
+#define arrII-to-arr2
+  (A : U) (x y : A)
+  (p : (t : II) -> A [ t === 0_I |-> x , t === 1_I |-> y ])
+  : arr2 A x y
+  := p
diff --git a/test/typecheck/cases/happy-modal-basics.rzk b/test/typecheck/cases/happy-modal-basics.rzk
--- a/test/typecheck/cases/happy-modal-basics.rzk
+++ b/test/typecheck/cases/happy-modal-basics.rzk
@@ -1,65 +1,322 @@
 #lang rzk-1
 
 #def sharp-pure (A : U) (x : A)
-  : <| _# | A |>
+  : _# A
   := mod _# x
 
 #def sharp-map (A B : U) (f : A → B)
-  : <| _# | A |> → <| _# | B |>
-  := \ (x : _# A) → mod _# (f x)
+  : (x :_# A) → _# B
+  := \ (x :_# A) → mod _# (f x)
 
-#def b-extract (A : _b U) (x : _b A)
+#def b-extract (A :_b U) (x :_b A)
   : A
   := x
 
-#def b-map (A B : _b U) (f : _b A → B)
-  : <| _b | A |> → <| _b | B |>
-  := \ (x : _b A) → mod _b (f x)
+#def b-map (A B :_b U) (f :_b A → B)
+  : (x :_b A) → _b B
+  := \ (x :_b A) → mod _b (f x)
 
-#def b-dup (A : _b U) (x : _b A)
-  : <| _b | <| _b | A |> |>
+#def b-dup (A :_b U) (x :_b A)
+  : _b (_b A)
   := mod _b (mod _b x)
 
-#def op-map (A B : _op U) (f : _op A → B)
-  : <| _op | A |> → <| _op | B |>
-  := \ (x : _op A) → mod _op (f x)
+#def op-map (A B :_op U) (f :_op A → B)
+  : (x :_op A) → _op B
+  := \ (x :_op A) → mod _op (f x)
 
-#def double-op (A : U) (x : <| _op | <| _op | A |> |>)
+#def double-op (A : U) (x : _op (_op A))
   : A
   :=
   let mod _op x_1 := x in
   let mod _op / _op x_2 := x_1 in
   x_2
 
-#def sharp-join (A : U) (a : <| _# | <| _# | A |> |>)
-  : <| _# | A |>
+#def sharp-join (A : U) (a : _# (_# A))
+  : _# A
   :=
   let mod _# x_1 := a in
   let mod _# / _# x_2 := x_1 in
   mod _# x_2
 
-#def flat-to-sharp (A : _b U) (x : _b A)
-  : <| _# | A |>
+#def flat-to-sharp (A :_b U) (x :_b A)
+  : _# A
   := mod _# x
 
 #def id-pure (A : U) (x : A)
-  : <| _id | A |>
+  : _id A
   := mod _id x
 
 #def id-map (A B : U) (f : A → B)
-  : <| _id | A |> → <| _id | B |>
-  := \ (x : _id A) → mod _id (f x)
+  : (x :_id A) → _id B
+  := \ (x :_id A) → mod _id (f x)
 
-#def id-join (A : U) (a : <| _id | <| _id | A |> |>)
-  : <| _id | A |>
+#def id-join (A : U) (a : _id (_id A))
+  : _id A
   :=
   let mod _id x_1 := a in
   let mod _id / _id x_2 := x_1 in
   mod _id x_2
 
-#def op-op-is-id (A : U) (x : <| _op | <| _op | A |> |>)
-  : <| _id | A |>
+#def op-op-is-id (A : U) (x : _op (_op A))
+  : _id A
   :=
   let mod _op x_1 := x in
   let mod _op / _op x_2 := x_1 in
   mod _id x_2
+
+-- comp(Flat, Op) = Flat: flat var stays accessible inside op-under-flat
+#def flat-op-chain (A :_b U) (x :_b A)
+  : _op (_b A)
+  := mod _op (mod _b x)
+
+-- comp(Sharp, Op) = Sharp: plain var stays accessible inside op-under-sharp
+#def sharp-op-chain (A : U) (x : A)
+  : _op (_# A)
+  := mod _op (mod _# x)
+
+-- Flat tope accessible at plain level with boundary
+#def test-flat-tope-to-plain
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2 | i === 0_2) -> A [ i === 0_2 |-> a ]
+  := \ i -> a
+
+-- recOR under flat: LEM covers 2
+#def test-recOR-flat
+  (A :_b U)
+  (a b :_b A)
+  : (i :_b 2) -> A
+  := \(i :_b 2) -> recOR( i === 0_2 |-> a , i === 1_2 |-> b )
+
+-- Flat accessible under sharp chain
+#def test-sharp-from-flat-chain
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2 | i === 0_2) -> _# A
+  := \ i -> mod _# a
+
+-- LEQ recOR under flat
+#def test-flat-leq-recOR
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2) -> A
+  := \ (i :_b 2) -> recOR( i <= 0_2 |-> a, 0_2 <= i |-> a)
+
+-- Disjunction restriction under flat
+#def test-flat-disjunction-cover
+  (A :_b U)
+  (a b :_b A)
+  : (i :_b 2 | (i === 0_2) \/ (i === 1_2)) -> A
+  := \ (i :_b 2) -> recOR( i === 0_2 |-> a , i === 1_2 |-> b )
+
+-- Conjunction split under flat
+#def test-flat-conjunction-split
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2 | i === 0_2) -> (j :_b 2 | j === 0_2) -> A
+  := \ i j -> a
+
+-- Product cube face under flat
+#def test-flat-product-face
+  (A :_b U)
+  (a :_b A)
+  : (ts :_b (2 * 2) | first ts === 0_2) -> A
+  := \ ts -> a
+
+-- Symmetry through saturation: (0 === i) => (i === 0)
+#def test-flat-symmetry
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2 | 0_2 === i) -> A [ i === 0_2 |-> a ]
+  := \ i -> a
+
+-- Transitivity under flat: (i === j) /\ (j === 0) => (i === 0)
+#def test-flat-transitivity
+  (A :_b U)
+  (a :_b A)
+  (i j :_b 2)
+  : (i :_b 2 | (i === j) /\ (j === 0_2)) -> A [ i === 0_2 |-> a ]
+  := \ _ -> a
+
+-- Plain tope entails _# goal
+#def test-solve-sharp-goal
+  (A : U)
+  (a : A)
+  : (i : 2 | i === 0_2) -> _# Unit
+  := \ i -> mod _# unit
+
+-- Nested modal goal: _# (_b A)
+#def test-solve-nested-modal-goal
+  (A :_b U)
+  (a :_b A)
+  : _# (_b A)
+  := mod _# (mod _b a)
+
+-- Op var with extension boundary
+#def test-op-var-boundary
+  (A :_op U)
+  (a :_op A)
+  (i :_op 2)
+  : (i :_op 2 |_op (i === 0_2)) -> (_op A) [ _op (i === 0_2) |-> (mod _op a) ]
+  := \ _ -> (mod _op a)
+
+-- _op var accessible under _op restriction
+#def test-op-goal-with-op-var
+  (A :_op U)
+  (a :_op A)
+  (i :_op 2)
+  : (i :_op 2 | (_op (i === 0_2))) -> _op A
+  := \ _ -> mod _op a
+
+-- ============ Extension types under modalities ============
+
+-- recOR with <= under mod _#: endpoint LEQs always solvable
+#def test-sharp-tope-boundary
+  (A : U) (a : A)
+  : (t : 2) -> _# A
+  := \ t -> mod _# (recOR( 0_2 <= t |-> a , t <= 1_2 |-> a ))
+
+-- Sharp extension with boundary
+#def test-sharp-extension
+  (A : U)
+  (a : A)
+  : (i : 2) -> (_# A) [ i === 0_2 |-> mod _# a , i === 1_2 |-> mod _# a ]
+  := \(i : 2) -> mod _# (recOR( 0_2 <= i |-> a , i <= 1_2 |-> a ))
+
+-- Extension under flat with boundary
+#def test-flat-extension-boundary
+  (A :_b U)
+  (a b :_b A)
+  : (i :_b 2) -> A [ i === 0_2 |-> a , i === 1_2 |-> b ]
+  := \(i :_b 2) -> recOR( i === 0_2 |-> a , i === 1_2 |-> b )
+
+-- Constant path under flat
+#def test-flat-const-path
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2) -> A [ i === 0_2 |-> a , i === 1_2 |-> a ]
+  := \(i :_b 2) -> a
+
+-- Flat tope with sharp return type and boundary
+#def test-flat-tope-sharp-boundary
+  (A :_b U) (a :_b A)
+  (i :_b 2)
+  : (i :_b 2 | i === 0_2) -> _# A [ i === 0_2 |-> mod _# a ]
+  := \ _ -> mod _# a
+
+-- Mixed flat + plain variables in extension
+#def test-mixed-flat-plain-vars
+  (A :_b U)
+  (a :_b A)
+  (i :_b 2)
+  (j : 2)
+  : (i :_b 2 | (i === 0_2) /\ (j === 0_2)) -> A
+  := \ _ -> a
+
+-- Flat double-wrap with boundary
+#def test-flat-double-wrap-boundary
+  (A :_b U) (a :_b A) (i :_b 2)
+  : (i :_b 2 | i === 0_2) -> _b (_b A) [ i === 0_2 |-> mod _b (mod _b a) ]
+  := \ _ -> mod _b (mod _b a)
+
+-- Flat to sharp chain with tope
+#def test-flat-to-sharp-with-tope
+  (A :_b U) (a :_b A) (i :_b 2)
+  : (i :_b 2 | i === 0_2) -> _# (_# A)
+  := \ _ -> mod _# (mod _# a)
+
+-- ============ Manual conversions ============
+
+-- Manual conversion: (x :_# A) → B  to  (_# A) → B
+#def sharp-modal-to-explicit
+  (A : U) (B : U) (f : (x :_# A) -> B)
+  : (_# A) -> B
+  := \ y -> let mod _# z := y in f z
+
+-- Manual conversion: (_# A) → B  to  (x :_# A) → B
+#def sharp-explicit-to-modal
+  (A : U) (B : U) (f : (_# A) -> B)
+  : (x :_# A) -> B
+  := \ (x :_# A) -> f (mod _# x)
+
+-- Manual conversion: (x :_op A) → B  to  (_op A) → B
+#def op-modal-to-explicit
+  (A :_op U) (B : U) (f : (x :_op A) -> B)
+  : (_op A) -> B
+  := \ y -> let mod _op z := y in f z
+
+-- Manual conversion: (_op A) → B  to  (x :_op A) → B
+#def op-explicit-to-modal
+  (A :_op U) (B : U) (f : (_op A) -> B)
+  : (x :_op A) -> B
+  := \ (x :_op A) -> f (mod _op x)
+
+-- Manual conversion: (x :_id A) → B  to  (_id A) → B
+#def id-modal-to-explicit
+  (A : U) (B : U) (f : (x :_id A) -> B)
+  : (_id A) -> B
+  := \ y -> let mod _id z := y in f z
+
+-- Manual conversion: (_id A) → B  to  (x :_id A) → B
+#def id-explicit-to-modal
+  (A : U) (B : U) (f : (_id A) -> B)
+  : (x :_id A) -> B
+  := \ (x :_id A) -> f (mod _id x)
+
+-- Manual conversion: (x :_b A) → B  to  (_b A) → B
+#def flat-modal-to-explicit
+  (A :_b U) (B : U) (f : (x :_b A) -> B)
+  : (_b A) -> B
+  := \ y -> let mod _b z := y in f z
+
+-- Manual conversion: (_b A) → B  to  (x :_b A) → B
+#def flat-explicit-to-modal
+  (A :_b U) (B : U) (f : (_b A) -> B)
+  : (x :_b A) -> B
+  := \ (x :_b A) -> f (mod _b x)
+
+-- ============ RA letmod commutativity ============
+
+-- Sharp letmod commutes (RA)
+#def sharp-letmod-commute
+  (A : U) (B : U)
+  (x : _# A) (y : _# B)
+  : (let mod _# a := x in let mod _# b := y in mod _# (a))
+  = (let mod _# b := y in let mod _# a := x in mod _# (a))
+  := refl
+
+-- Op letmod commutes (RA)
+#def op-letmod-commute
+  (A :_op U) (B :_op U)
+  (x : _op A) (y : _op B)
+  : (let mod _op a := x in let mod _op b := y in mod _op (a))
+  = (let mod _op b := y in let mod _op a := x in mod _op (a))
+  := refl
+
+-- Id letmod commutes (RA)
+#def id-letmod-commute
+  (A : U) (B : U)
+  (x : _id A) (y : _id B)
+  : (let mod _id a := x in let mod _id b := y in mod _id (a))
+  = (let mod _id b := y in let mod _id a := x in mod _id (a))
+  := refl
+
+-- ============ Modal eta: mod m (extract a) = a ============
+
+-- Sharp eta
+#def sharp-eta
+  (A : U) (x : _# A)
+  : (let mod _# a := x in mod _# a) = x
+  := refl
+
+-- Op eta
+#def op-eta
+  (A :_op U) (x : _op A)
+  : (let mod _op a := x in mod _op a) = x
+  := refl
+
+-- Id eta
+#def id-eta
+  (A : U) (x : _id A)
+  : (let mod _id a := x in mod _id a) = x
+  := refl
diff --git a/test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml b/test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml
@@ -0,0 +1,1 @@
+status: ok
diff --git a/test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk b/test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk
@@ -0,0 +1,9 @@
+#lang rzk-1
+
+-- Flat var under op: values accessible even in topes
+#def flat-recOR-under-op
+  (A :_b U)
+  (a b :_b A)
+  (i :_b 2)
+  : _op A
+  := mod _op (recOR( i === 0_2 |-> a , i === 1_2 |-> b ))
diff --git a/test/typecheck/cases/happy-modal-flat-under-op.expect.yaml b/test/typecheck/cases/happy-modal-flat-under-op.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-flat-under-op.expect.yaml
@@ -0,0 +1,1 @@
+status: ok
diff --git a/test/typecheck/cases/happy-modal-flat-under-op.rzk b/test/typecheck/cases/happy-modal-flat-under-op.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-flat-under-op.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Flat var are accessible under op
+#def flat-under-op
+  (A :_b U) (a :_b A)
+  : _op A
+  := mod _op a
diff --git a/test/typecheck/cases/happy-modal-inv.rzk b/test/typecheck/cases/happy-modal-inv.rzk
--- a/test/typecheck/cases/happy-modal-inv.rzk
+++ b/test/typecheck/cases/happy-modal-inv.rzk
@@ -1,13 +1,56 @@
 #lang rzk-1
 
--- Simplest test: phi_op should unify with the inverted tope
--- so refl typechecks if the substitution is correct
-
 #compute-nf inv_op (0_2 === 0_2)
 
+-- inv flips endpoint: inv_op(i === 0) = mod _op (flip(i) === 1)
 #def test-lt-mod-inv
   ( i : 2)
-  : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in <| _op | (q = (fi === 1_2)) |>
+  : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in _op (q = (fi === 1_2))
   := mod _op refl
 
+#def test-inv-endpoint-one
+  (i : 2)
+  : let mod _op q := inv_op (i === 1_2) in
+    let mod _op fi := flip_op i in
+    _op (q = (fi === 0_2))
+  := mod _op refl
 
+-- uninv(inv(phi)) = phi
+#def test-inv-uninv-cancel
+  (i : 2)
+  : uninv_op (inv_op (i === 0_2)) = (i === 0_2)
+  := refl
+
+-- inv(uninv(mod _op phi)) = mod _op phi
+#def test-uninv-inv-cancel
+  (i : 2)
+  : let mod _op fi := flip_op i in
+    inv_op (uninv_op (mod _op (fi === 0_2))) = mod _op (fi === 0_2)
+  := refl
+
+-- inv distributes over conjunction
+#def test-inv-distributes-and
+  (i j : 2)
+  : let mod _op q := inv_op ((i === 0_2) /\ (j === 1_2)) in
+    let mod _op fi := flip_op i in
+    let mod _op fj := flip_op j in
+    _op (q = ((fi === 1_2) /\ (fj === 0_2)))
+  := mod _op refl
+
+-- inv/uninv on TOP and BOT (bug catchers: stuck without nfTope fix)
+
+#def test-inv-top
+  : let mod _op q := (inv_op TOP) in _op (q = TOP)
+  := mod _op refl
+
+#def test-inv-bot
+  : let mod _op q := inv_op BOT in _op (q = BOT)
+  := mod _op refl
+
+#def test-uninv-top
+  : uninv_op (mod _op TOP) = TOP
+  := refl
+
+#def test-uninv-bot
+  : uninv_op (mod _op BOT) = BOT
+  := refl
diff --git a/test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml b/test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml
@@ -0,0 +1,6 @@
+status: ok
+regression_for:
+  - modal-tope-unwrap
+  - flat-implies-plain
+  - plain-implies-sharp
+
diff --git a/test/typecheck/cases/happy-modal-tope-unwrap.rzk b/test/typecheck/cases/happy-modal-tope-unwrap.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-tope-unwrap.rzk
@@ -0,0 +1,33 @@
+#lang rzk-1
+
+-- Test logical relationships between modal topes and plain topes.
+
+-- 1. _op phi and uninv_op(phi) are equivalent:
+--    given _op phi we can derive uninv_op(phi), and vice versa.
+
+#def test-op-unwrap-to-uninv
+  (i : 2)
+  : let mod _op q := inv_op (i === 0_2) in
+    let mod _op fi := flip_op i in
+    _op (q = (fi === 1_2))
+  := mod _op refl
+
+-- 2. _b phi implies phi:
+--    a flat-restricted extension type is a subtype of the plain-restricted one.
+--    If i :_b 2, the tope (i === 0_2) is flat-accessible, so the restriction holds.
+
+#def test-flat-implies-plain
+  (A :_b U)
+  (a :_b A)
+  : (i :_b 2 | i === 0_2) -> A [i === 0_2 |-> a]
+  := \ i -> a
+
+-- 3. phi implies _# phi:
+--    a plain tope can be lifted into a sharp-modal tope.
+
+#def test-plain-implies-sharp
+  (A : U)
+  (a : A)
+  : (i : 2 | i === 0_2) -> _# A
+  := \ i -> mod _# a
+
diff --git a/test/typecheck/cases/happy-modal-topes.expect.yaml b/test/typecheck/cases/happy-modal-topes.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-topes.expect.yaml
@@ -0,0 +1,1 @@
+status: ok
diff --git a/test/typecheck/cases/happy-modal-topes.rzk b/test/typecheck/cases/happy-modal-topes.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-modal-topes.rzk
@@ -0,0 +1,195 @@
+#lang rzk-1
+
+-- ============ Modal topes in restrictions ============
+
+-- _#(t === 0) in restriction, accessible under mod _#
+#def test-sharp-from-plain
+  (i : 2)
+  (A : U)
+  (a : A)
+  (p : (t : 2 | t === 0_2) -> A [ t === 0_2 |-> a ])
+  : (t : 2 | _# (t === 0_2)) -> (_# A) [t === 0_2 |-> mod _# a]
+  := \ t -> mod _# (p t)
+
+-- Plain LEQ + _#(EQ): both accessible under mod _# (coe(Id, Sharp) = True)
+#def test-cross-modality-sharp-accessible
+  (A :_# U) (a :_# A)
+  (j k : 2)
+  : (i : 2 | (i <= j) /\ _# (k === 0_2)) -> _# A
+  := \ i -> mod _# (recOR( (i <= j) /\ (k === 0_2) |-> a ))
+
+-- _#(_# phi) = _# phi: sharp tope idempotent, with extension type
+#def test-sharp-tope-idempotent-under-sharp
+  (A : U) (a : A)
+  (p : (i : 2 | i === 0_2) -> A [ i === 0_2 |-> a ])
+  : (i : 2 | _# (_# (i === 0_2))) -> (_# A) [ i === 0_2 |-> mod _# a ]
+  := \ i -> mod _# (p i)
+
+-- _b(phi) in restriction: _b(phi) => phi, with extension type
+#def test-flat-tope-in-restriction
+  (A :_b U) (a :_b A)
+  (p : (i :_b 2 | i === 0_2) -> A [ i === 0_2 |-> a ])
+  : (i :_b 2 | _b (i === 0_2)) -> A [ i === 0_2 |-> a ]
+  := \ i -> p i
+
+-- _b(_b phi) => _b phi ^ _b(phi) => phi: flat tope idempotent, with extension type
+#def test-flat-tope-idempotent
+  (A :_b U) (a :_b A)
+  (p : (i :_b 2 | _b ( _b (i === 0_2))) -> A [ i === 0_2 |-> a ])
+  : (i :_b 2 | _b (i === 0_2)) -> A [ (i === 0_2) |-> a ]
+  := \ i -> p i
+
+-- _#(phi) => _#(_#(phi)): sharp tope expansion
+#def test-sharp-tope-expand
+  (A : U) (a : A)
+  (p : (i : 2 | _# (_# (i === 0_2))) -> (_# A) [ i === 0_2 |-> mod _# a ])
+  : (i : 2 | _# (i === 0_2)) -> (_# A) [ i === 0_2 |-> mod _# a ]
+  := \ i -> p i
+
+-- _b(_b(phi)) => _b(phi): flat tope collapse
+#def test-flat-tope-collapse
+  (A :_b U) (a :_b A)
+  (p : (i :_b 2 | _b (i === 0_2)) -> A [ i === 0_2 |-> a ])
+  : (i :_b 2 | _b (_b (i === 0_2))) -> A [ i === 0_2 |-> a ]
+  := \ i -> p i
+
+-- ============ Contradiction / recBOT under modalities ============
+
+-- _#(i===0) /\ _#(i===1) → BOT under _#
+#def test-sharp-tope-contradiction-under-sharp
+  (A : U) (i : 2)
+  : (i : 2 | _# (i === 0_2) /\ _# (i === 1_2)) -> _# A
+  := \ _ -> mod _# recBOT
+
+-- _op(i===0) /\ _op(i===1) → BOT at plain
+#def test-op-bot-entails-bot
+  (A : U)
+  : (i :_op 2 | _op (i === 0_2) /\ _op (i === 1_2)) -> A
+  := \ _ -> recBOT
+
+-- Plain contradiction under _b. The tope context (i === 0_2) /\ (i === 1_2) is
+-- contradictory, so BOT is derivable; and BOT |- _b BOT by the absurd rule of BOT
+-- (this holds for BOT specifically, NOT for an arbitrary tope phi -- there is no
+-- unit id => _b). Saturation therefore produces _b BOT, which is accessible under
+-- the _b lock (coe Flat Flat), and _b BOT |- BOT by the counit, so mod _b recBOT
+-- is legal. (Contrast _# BOT, which does NOT entail plain BOT -- coe Sharp Id is
+-- False -- see ill-modal-sharp-bot-not-bot.)
+#def test-contradiction-under-flat
+  (A :_b U) (i : 2)
+  : (i : 2 | (i === 0_2) /\ (i === 1_2)) -> _b A
+  := \ _ -> mod _b recBOT
+
+-- Contradiction survives entering _op via saturation
+#def test-contradiction-survives-under-op
+  (A :_op U) (i : 2)
+  : (i : 2 | (i === 0_2) /\ (i === 1_2)) -> _op A
+  := \ _ -> mod _op recBOT
+
+-- Contradiction survives entering _#
+#def test-contradiction-survives-under-sharp
+  (A : U) (i : 2)
+  : (i : 2 | (i === 0_2) /\ (i === 1_2)) -> _# A
+  := \ _ -> mod _# recBOT
+
+-- Double _op returns topes to accessible
+#def test-double-op-entails-bottom
+  (i : 2)
+  : (i : 2 | (i === 0_2) /\ (i === 1_2)) -> _op (_op Unit)
+  := \ _ -> mod _op (mod _op recBOT)
+
+-- Nested _#: plain topes directly accessible under sharp
+#def test-nested-sharp-entails-bottom
+  (A : U) (i : 2)
+  : (i : 2 | (i === 0_2) /\ (i === 1_2)) -> _# (_# A)
+  := \ _ -> mod _# (mod _# recBOT)
+
+-- Flat var contradiction under _#
+#def test-flat-var-contradiction-under-sharp
+  (A :_b U) (i :_b 2)
+  : (i :_b 2 | (i === 0_2) /\ (i === 1_2)) -> _# A
+  := \ _ -> mod _# recBOT
+
+-- Flat contradiction in extension
+#def test-flat-contradiction-extension
+  (A : U)
+  (i :_b 2)
+  : (i :_b 2 | (i === 0_2) /\ (i === 1_2)) -> A
+  := \ _ -> recBOT
+
+-- _b(i===0) /\ (i===1) → BOT
+#def test-flat-and-plain-bot
+  (A : U)
+  (i :_b 2)
+  : (i :_b 2 | (_b (i === 0_2)) /\ (i === 1_2)) -> A
+  := \ _ -> recBOT
+
+-- Mixed _# + plain topes: transitivity derives contradiction under _#
+#def test-mixed-sharp-plain-contradiction-under-sharp
+  (A : U) (i j : 2)
+  : (i : 2 | _# ((i === 0_2) /\ (j === 1_2)) /\ (i === j)) -> _# A
+  := \ _ -> mod _# recBOT
+
+-- ============ Saturation under modalities ============
+
+-- LEQ antisymmetry under _op: (i<=0) /\ (0<=i) => i===0
+#def test-leq-saturation-under-op
+  (A :_op U) (a :_op A)
+  (p : (i :_op 2 | _op (i === 0_2)) -> _op A [ _op (i === 0_2) |-> mod _op a ])
+  : (i :_op 2 | _op ((i <= 0_2) /\ (0_2 <= i))) -> _op A [ _op (i === 0_2) |-> mod _op a ]
+  := \i -> p i 
+
+-- EQ transitivity under _op: (i===j) /\ (j===0) => i===0
+#def test-transitivity-under-op
+  (A :_op U) (a :_op A)
+  (i j :_op 2)
+  (p : (i :_op 2 | _op (i === 0_2)) -> _op A [ _op (i === 0_2) |-> mod _op a ])
+  : (i :_op 2 | (_op (i === j)) /\ (_op (j === 0_2))) -> _op A [ _op (i === 0_2) |-> mod _op a ]
+  := \ i -> p i
+
+-- LEQ antisymmetry under _#
+#def test-leq-saturation-under-sharp
+  (A :_b U) (a :_b A)
+  (p : (i : 2 | i === 0_2) -> A [ i === 0_2 |-> a ])
+  : (i : 2 | (i <= 0_2) /\ (0_2 <= i)) -> _# A [ i === 0_2 |-> mod _# a ]
+  := \ i -> mod _# (p i)
+
+-- Transitivity across modalities: flat+plain vars, (i === j) /\ (j === 0) => i === 0
+#def test-mixed-transitivity-under-flat
+  (A :_b U)
+  (a :_b A)
+  (i :_b 2)
+  (j :_b 2)
+  (p : (i :_b 2 | i === 0_2) -> A [ i === 0_2 |-> a ])
+  : (i :_b 2 | (_b (i === j)) /\ (j === 0_2)) -> A [ i === 0_2 |-> a ]
+  := \ i -> p i
+
+#def test-mixed-transitivity-under-sharp
+  (A :_b U)
+  (a :_b A)
+  (i :_# 2)
+  (j : 2)
+  (p : (i :_b 2 | i === 0_2) -> A [ i === 0_2 |-> a ])
+  : (i :_b 2 | (_# (i === j)) /\ (j === 0_2)) -> _# A [ i === 0_2 |-> mod _# a ]
+  := \ i -> mod _# (p i)
+
+-- ============ Inv/uninv saturation ========================
+
+#def with-inversed-tope 
+  (A : U) 
+  (a : A) 
+  : (t : 2) -> A 
+  := \ t -> recOR (0_2 <= t |-> a, let mod _op ft := flip_op t in (_op (0_2 <= ft)) |-> a)
+
+#def with-inv-op-tope 
+  (A : U) 
+  (a : A) 
+  : (t : 2) -> A 
+  := \ t -> recOR (0_2 <= t |-> a, let mod _op inv_t := inv_op (t <= 1_2) in (_op inv_t) |-> a)
+
+#def discrete-inversed-eliminator 
+  (A : U) 
+  (a : A) 
+  : (t :_b 2) -> A 
+  := \ (t :_b 2) -> recOR (0_2 === t |-> a, let mod _op ft := flip_op t in (_op (ft === 0_2)) |-> a)
+
+
diff --git a/test/typecheck/cases/happy-op-hom-to-hom.expect.yaml b/test/typecheck/cases/happy-op-hom-to-hom.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-op-hom-to-hom.expect.yaml
@@ -0,0 +1,1 @@
+status: ok
diff --git a/test/typecheck/cases/happy-op-hom-to-hom.rzk b/test/typecheck/cases/happy-op-hom-to-hom.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-op-hom-to-hom.rzk
@@ -0,0 +1,13 @@
+#lang rzk-1
+
+-- Test: reversing the direction of a morphism using _op modality
+-- This requires the tope solver to derive extract(flip_op t) === 1_2
+-- from t === 0_2 (and vice versa) when entering mod _op in solveRHSM.
+
+#def op-hom-to-hom
+  ( B :_op U)
+  ( x :_op B)
+  ( y :_op B)
+  ( h :_op (t : 2) -> B [ t === 0_2 |-> x , t === 1_2 |-> y ])
+  : ( ( t : 2) -> _op B [ t === 0_2 |-> mod _op y , t === 1_2 |-> mod _op x ])
+  := \ t -> let mod _op s := flip_op t in mod _op (h s)
diff --git a/test/typecheck/cases/happy-recbot-term-wellformed.expect.yaml b/test/typecheck/cases/happy-recbot-term-wellformed.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recbot-term-wellformed.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - recBOT-term-well-formed-accepted
diff --git a/test/typecheck/cases/happy-recbot-term-wellformed.rzk b/test/typecheck/cases/happy-recbot-term-wellformed.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recbot-term-wellformed.rzk
@@ -0,0 +1,12 @@
+#lang rzk-1
+
+-- Well-formed terms under an absurd tope context are still accepted: the check only
+-- rejects terms that are ill-typed in their own right, not vacuous definitions.
+
+-- `recBOT` is well-typed when the context entails ⊥.
+#define okRecBot (A : U) (t : 2 | (t === 0_2) /\ (t === 1_2)) : A
+  := recBOT
+
+-- A well-typed application under the same absurd context.
+#define okRecBotApp (A : U) (g : A -> A) (a : A) (t : 2 | (t === 0_2) /\ (t === 1_2)) : A
+  := g a
diff --git a/test/typecheck/cases/happy-recor-guard-exceeds-context.expect.yaml b/test/typecheck/cases/happy-recor-guard-exceeds-context.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recor-guard-exceeds-context.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - recOR-requires-coverage-not-containment
diff --git a/test/typecheck/cases/happy-recor-guard-exceeds-context.rzk b/test/typecheck/cases/happy-recor-guard-exceeds-context.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recor-guard-exceeds-context.rzk
@@ -0,0 +1,12 @@
+#lang rzk-1
+
+-- `recOR` requires its branch guards to COVER the local tope context
+-- (`context ⊢ ⋁ guards`), not to be contained in it. A guard may strictly exceed
+-- the context, as long as the guards together still cover it.
+
+#define u : U := Unit -> Unit
+
+-- The single guard `t ≡ 0 ∨ t ≡ 1` strictly exceeds the context `t ≡ 0`, but it
+-- covers it, so the case split is well-typed.
+#define guardExceedsContext (t : 2 | t === 0_2) : U
+  := recOR( (t === 0_2) \/ (t === 1_2) |-> u )
diff --git a/test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml b/test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - recOR-overhang-simplex-total-order-split
diff --git a/test/typecheck/cases/happy-recor-split-simplex-overhang.rzk b/test/typecheck/cases/happy-recor-split-simplex-overhang.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-recor-split-simplex-overhang.rzk
@@ -0,0 +1,22 @@
+#lang rzk-1
+
+-- Overhang is useful for reusing already-defined shapes. Here we split the
+-- 2-simplex Δ² = { (t , s) : 2 × 2 | s ≤ t } into its two halves by the total-order
+-- topes `t ≤ s` and `s ≤ t`. These topes are defined on the whole square, not
+-- relativised to Δ², so the guard `t ≤ s` overhangs Δ² (its overlap with the
+-- context is the diagonal `t ≡ s`). The two guards still cover Δ², so the case
+-- split is well-typed; only a non-fatal overhang warning is emitted.
+--
+-- Being able to write the global total-order topes directly — rather than
+-- intersecting each with Δ² by hand — is exactly what overhang support buys us.
+-- This mirrors `join-square-arrow` / `meet-square-arrow` (RS17 Proposition 3.5) in
+-- sHoTT, which split by the same topes over the full square 2 × 2.
+
+#def Δ² : (2 * 2) -> TOPE
+  := \ (t , s) -> s <= t
+
+#define split-2simplex
+  ( A : U)
+  ( f : (2 * 2) -> A)
+  : ( (t , s) : Δ²) -> A
+  := \ (t , s) -> recOR ( t <= s |-> f (t , s) , s <= t |-> f (t , s) )
diff --git a/test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml b/test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - restricted-type-face-need-not-be-contained
diff --git a/test/typecheck/cases/happy-restrict-face-not-contained.rzk b/test/typecheck/cases/happy-restrict-face-not-contained.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/happy-restrict-face-not-contained.rzk
@@ -0,0 +1,16 @@
+#lang rzk-1
+
+-- Restriction faces need not lie within the local tope context. The checker
+-- constrains the term only on `context ∧ face`, so a face that overhangs the
+-- context (extends beyond it while still overlapping) is allowed. Following
+-- Riehl–Shulman, there is no requirement that the face be contained in (entailed
+-- by) the context. Overhang only triggers a non-fatal warning.
+--
+-- (A face *disjoint* from the context is a different matter: it is vacuous and is
+-- rejected — see `ill-restrict-face-disjoint`.)
+
+-- The face `first t ≡ 0 ∨ second t ≡ 0` strictly exceeds the context `first t ≡ 0`,
+-- yet overlaps it (on `first t ≡ 0`). The restriction is checked on the overlap.
+#define faceOverhang (t : 2 * 2 | first t === 0_2)
+  : Unit [ (first t === 0_2) \/ (second t === 0_2) |-> unit ]
+  := unit
diff --git a/test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml b/test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml
--- a/test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml
+++ b/test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml
@@ -1,5 +1,5 @@
 status: ok
 regression_for:
-  - contextEquiv-recOR-disjunctive-shape
+  - contextEntailsUnion-recOR-disjunctive-shape
   - contextEntails-recBOT-under-contradiction
   - contextEntailedBy-TypeRestricted-TOP
diff --git a/test/typecheck/cases/happy-tope-rec-and-restrict.rzk b/test/typecheck/cases/happy-tope-rec-and-restrict.rzk
--- a/test/typecheck/cases/happy-tope-rec-and-restrict.rzk
+++ b/test/typecheck/cases/happy-tope-rec-and-restrict.rzk
@@ -1,6 +1,7 @@
 #lang rzk-1
 
--- `recOR` with a disjunctive shape so `contextEquiv` matches the union of branch guards.
+-- `recOR` with a disjunctive shape so `contextEntailsUnion` is satisfied: the context is
+-- covered by the union of branch guards.
 #define u : U := Unit -> Unit
 
 #define happyRecOrBoundary (t : 2 | (t === 0_2) \/ (t === 1_2)) : U
@@ -10,6 +11,6 @@
 #define happyRecBotContradiction (t : 2 | (t === 0_2) /\ (t === 1_2)) : U
   := recBOT
 
--- Trivial restriction (always `contextEntailedBy` from `TOP`).
+-- Trivial restriction on the `TOP` face: typechecks (the restriction holds everywhere).
 #define happyRestrictedUnitTrivial : Unit [ TOP |-> unit ]
   := unit
diff --git a/test/typecheck/cases/ill-hole-infer.expect.yaml b/test/typecheck/cases/ill-hole-infer.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-infer.expect.yaml
@@ -0,0 +1,6 @@
+status: error
+error_tag: TypeErrorCannotInferHole
+message_contains:
+  - "cannot infer the type of a hole"
+regression_for:
+  - holes-inference-position
diff --git a/test/typecheck/cases/ill-hole-infer.rzk b/test/typecheck/cases/ill-hole-infer.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-infer.rzk
@@ -0,0 +1,6 @@
+#lang rzk-1
+
+-- A hole in inference position (here applied as a function) has no known type,
+-- so it is reported rather than guessed (no metavariables).
+#define f : (A : U) -> A -> A
+  := \ A x -> ? x
diff --git a/test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml b/test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml
@@ -0,0 +1,8 @@
+status: error
+error_tag: TypeErrorUnsolvedHole
+message_contains:
+  - "found an unsolved hole"
+  - "(a, b) : Σ (a : A), B a"
+  - "B a"
+regression_for:
+  - restore-pattern-binder-names
diff --git a/test/typecheck/cases/ill-hole-pattern-binder-names.rzk b/test/typecheck/cases/ill-hole-pattern-binder-names.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-pattern-binder-names.rzk
@@ -0,0 +1,9 @@
+#lang rzk-1
+
+-- In strict mode the unsolved-hole error must render pattern-binder names: the
+-- lambda destructures p as (a , b), so the goal B (first p) shows as B a (not
+-- B (π₁ x)), and the binder appears in the context as (a , b), not a fresh
+-- variable. Regression for the pattern-binder name restoration.
+#define bad
+  : (A : U) -> (B : A -> U) -> (p : Σ (a : A) , B a) -> B (first p)
+  := \ A B (a , b) -> ?
diff --git a/test/typecheck/cases/ill-hole-recor-branch.expect.yaml b/test/typecheck/cases/ill-hole-recor-branch.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-recor-branch.expect.yaml
@@ -0,0 +1,7 @@
+status: error
+error_tag: TypeErrorUnsolvedHole
+message_contains:
+  - "found an unsolved hole"
+  - "A"
+regression_for:
+  - holes-recOR-branch-checking-position
diff --git a/test/typecheck/cases/ill-hole-recor-branch.rzk b/test/typecheck/cases/ill-hole-recor-branch.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-recor-branch.rzk
@@ -0,0 +1,10 @@
+#lang rzk-1
+
+-- A hole in a recOR branch is in checking position: the common type of the
+-- recOR (here A) is pushed into every branch, so the branch holes are checked
+-- against A. In the default (strict) mode this is reported as an unsolved hole.
+-- Before the recOR checking rule existed, the recOR was elaborated by inference
+-- and a bare hole branch failed with TypeErrorCannotInferHole instead.
+#define square (A : U) (a : A)
+  : (2 × 2) → A
+  := \ (t , s) → recOR ( t ≤ s ↦ ? , s ≤ t ↦ ? )
diff --git a/test/typecheck/cases/ill-hole-unsolved.expect.yaml b/test/typecheck/cases/ill-hole-unsolved.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-unsolved.expect.yaml
@@ -0,0 +1,6 @@
+status: error
+error_tag: TypeErrorUnsolvedHole
+message_contains:
+  - "found an unsolved hole"
+regression_for:
+  - holes-strict-mode
diff --git a/test/typecheck/cases/ill-hole-unsolved.rzk b/test/typecheck/cases/ill-hole-unsolved.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-hole-unsolved.rzk
@@ -0,0 +1,6 @@
+#lang rzk-1
+
+-- A hole in checking position is rejected in the default (strict) mode, so
+-- finished work and CI never admit unfilled holes.
+#define f : (A : U) -> A -> A
+  := \ A a -> ?
diff --git a/test/typecheck/cases/ill-interval-no-totality.expect.yaml b/test/typecheck/cases/ill-interval-no-totality.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-interval-no-totality.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
+regression_for:
+  - interval-no-total-order
diff --git a/test/typecheck/cases/ill-interval-no-totality.rzk b/test/typecheck/cases/ill-interval-no-totality.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-interval-no-totality.rzk
@@ -0,0 +1,10 @@
+#lang rzk-1
+
+-- The interval I does NOT have a total order: we cannot case-split on
+-- `t <= s \/ s <= t` for arbitrary I-points. This recOR should fail because
+-- the tope solver cannot derive that the two guards cover the whole context.
+
+#define no-total-I
+  (t : II) (s : II)
+  : Unit
+  := recOR( t <= s |-> unit , s <= t |-> unit )
diff --git a/test/typecheck/cases/ill-interval-subtyping.expect.yaml b/test/typecheck/cases/ill-interval-subtyping.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-interval-subtyping.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorUnifyTerms
+regression_for:
+  - interval-no-subtype-II-to-2
diff --git a/test/typecheck/cases/ill-interval-subtyping.rzk b/test/typecheck/cases/ill-interval-subtyping.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-interval-subtyping.rzk
@@ -0,0 +1,15 @@
+#lang rzk-1
+
+-- II is NOT a subtype of 2.
+-- Trying to use a 2-arrow where an II-path is expected should fail.
+
+#define cub-hom
+  (A : U) (x y : A)
+  : U
+  := (t : II) -> A [ t === 0_I |-> x , t === 1_I |-> y ]
+
+#define bad-2-to-II
+  (A : U) (x y : A)
+  (p : (t : 2) -> A [ t === 0_2 |-> x , t === 1_2 |-> y ])
+  : cub-hom A x y
+  := p
diff --git a/test/typecheck/cases/ill-modal-b-no-dist.expect.yaml b/test/typecheck/cases/ill-modal-b-no-dist.expect.yaml
--- a/test/typecheck/cases/ill-modal-b-no-dist.expect.yaml
+++ b/test/typecheck/cases/ill-modal-b-no-dist.expect.yaml
@@ -1,4 +1,4 @@
 status: error
 error_tag: TypeErrorUnaccessibleVar
 message_contains:
-  - "variable is not accessible"
+  - "unaccessible var with modality"
diff --git a/test/typecheck/cases/ill-modal-b-no-dist.rzk b/test/typecheck/cases/ill-modal-b-no-dist.rzk
--- a/test/typecheck/cases/ill-modal-b-no-dist.rzk
+++ b/test/typecheck/cases/ill-modal-b-no-dist.rzk
@@ -1,11 +1,11 @@
 #lang rzk-1
 
 
-#def b-extract (A : _b U) (x : _b A)
+#def b-extract (A :_b U) (x :_b A)
   : A
   := x
 
-#def ill-b-typed (A B : U) (f : A → <| _b | B |>)
-  : <| _b | A → B |>
+#def ill-b-typed (A B : U) (f : A → _b B)
+  : _b (A → B)
   :=
   mod _b (\ (x : A) → b-extract B (f x))
diff --git a/test/typecheck/cases/ill-modal-flat-no-commute.expect.yaml b/test/typecheck/cases/ill-modal-flat-no-commute.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-flat-no-commute.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnifyTerms
diff --git a/test/typecheck/cases/ill-modal-flat-no-commute.rzk b/test/typecheck/cases/ill-modal-flat-no-commute.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-flat-no-commute.rzk
@@ -0,0 +1,12 @@
+#lang rzk-1
+
+-- Flat letmod should NOT commute: flat is not RA,
+-- so extract does not reduce and the two orderings
+-- are not definitionally equal.
+
+#def ill-flat-commute
+  (A :_b U) (B :_b U)
+  (x : _b A) (y : _b B)
+  : (let mod _b a := x in let mod _b b := y in a)
+  = (let mod _b b := y in let mod _b a := x in a)
+  := refl
diff --git a/test/typecheck/cases/ill-modal-op-at-plain.expect.yaml b/test/typecheck/cases/ill-modal-op-at-plain.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-op-at-plain.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-op-at-plain.rzk b/test/typecheck/cases/ill-modal-op-at-plain.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-op-at-plain.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Op var not accessible at plain level
+#def ill-op-at-plain
+  (A :_op U) (x :_op A)
+  : A
+  := x
diff --git a/test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml b/test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml
deleted file mode 100644
--- a/test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-status: error
-error_tag: TypeErrorUnaccessibleVar
-message_contains:
-  - "variable is not accessible"
diff --git a/test/typecheck/cases/ill-modal-op-unaccessible.rzk b/test/typecheck/cases/ill-modal-op-unaccessible.rzk
deleted file mode 100644
--- a/test/typecheck/cases/ill-modal-op-unaccessible.rzk
+++ /dev/null
@@ -1,5 +0,0 @@
-#lang rzk-1
-
-#def bad-use-under-op (A : U) (x : A)
-  : <| _op | A |>
-  := mod _op x
diff --git a/test/typecheck/cases/ill-modal-op-under-flat.expect.yaml b/test/typecheck/cases/ill-modal-op-under-flat.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-op-under-flat.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-op-under-flat.rzk b/test/typecheck/cases/ill-modal-op-under-flat.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-op-under-flat.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Op var not accessible under flat
+#def ill-op-under-flat
+  (A :_op U) (x :_op A)
+  : _b A
+  := mod _b x
diff --git a/test/typecheck/cases/ill-modal-plain-under-flat.expect.yaml b/test/typecheck/cases/ill-modal-plain-under-flat.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-plain-under-flat.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-plain-under-flat.rzk b/test/typecheck/cases/ill-modal-plain-under-flat.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-plain-under-flat.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Plain var not accessible under flat
+#def ill-plain-under-flat
+  (A : U) (x : A)
+  : _b A
+  := mod _b x
diff --git a/test/typecheck/cases/ill-modal-plain-under-op.expect.yaml b/test/typecheck/cases/ill-modal-plain-under-op.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-plain-under-op.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-plain-under-op.rzk b/test/typecheck/cases/ill-modal-plain-under-op.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-plain-under-op.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Plain var not accessible under op
+#def ill-plain-under-op
+  (A : U) (x : A)
+  : _op A
+  := mod _op x
diff --git a/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.expect.yaml b/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
diff --git a/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.rzk b/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-recBOT-under-op-no-contradiction.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- recBOT under op without contradiction: tope not accessible
+#def ill-recBOT-under-op-no-contradiction
+  (A :_op U) (i : 2)
+  : (i : 2 | i === 0_2) -> _op A
+  := \ _ -> mod _op recBOT
diff --git a/test/typecheck/cases/ill-modal-sharp-at-plain.expect.yaml b/test/typecheck/cases/ill-modal-sharp-at-plain.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-at-plain.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-sharp-at-plain.rzk b/test/typecheck/cases/ill-modal-sharp-at-plain.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-at-plain.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Sharp var not accessible at plain level
+#def ill-sharp-at-plain
+  (A :_# U) (x :_# A)
+  : A
+  := x
diff --git a/test/typecheck/cases/ill-modal-sharp-bot-not-bot.expect.yaml b/test/typecheck/cases/ill-modal-sharp-bot-not-bot.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-bot-not-bot.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
diff --git a/test/typecheck/cases/ill-modal-sharp-bot-not-bot.rzk b/test/typecheck/cases/ill-modal-sharp-bot-not-bot.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-bot-not-bot.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- #BOT should not entail BOT: sharp tope is not accessible in plain context
+#def sharp-bot-not-bot
+  (A : U)
+  : (t : 2 | _# BOT) -> A
+  := \ _ -> recBOT
diff --git a/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.expect.yaml b/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
diff --git a/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.rzk b/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-recOR-plain-var.rzk
@@ -0,0 +1,9 @@
+#lang rzk-1
+
+-- recOR under sharp: plain var's discrete axiom inaccessible
+#def ill-sharp-recOR-plain-var
+  (A :_# U)
+  (a b :_# A)
+  (i : 2)
+  : _# A
+  := mod _# (recOR( i === 0_2 |-> a , i === 1_2 |-> b ))
diff --git a/test/typecheck/cases/ill-modal-sharp-under-flat.expect.yaml b/test/typecheck/cases/ill-modal-sharp-under-flat.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-under-flat.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-sharp-under-flat.rzk b/test/typecheck/cases/ill-modal-sharp-under-flat.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-under-flat.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Sharp var not accessible under flat
+#def ill-sharp-under-flat
+  (A :_# U) (x :_# A)
+  : _b A
+  := mod _b x
diff --git a/test/typecheck/cases/ill-modal-sharp-under-op.expect.yaml b/test/typecheck/cases/ill-modal-sharp-under-op.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-under-op.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorUnaccessibleVar
diff --git a/test/typecheck/cases/ill-modal-sharp-under-op.rzk b/test/typecheck/cases/ill-modal-sharp-under-op.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-sharp-under-op.rzk
@@ -0,0 +1,7 @@
+#lang rzk-1
+
+-- Sharp var not accessible under op
+#def ill-sharp-under-op
+  (A :_# U) (x :_# A)
+  : _op A
+  := mod _op x
diff --git a/test/typecheck/cases/ill-modal-tope-cross-modality.expect.yaml b/test/typecheck/cases/ill-modal-tope-cross-modality.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-tope-cross-modality.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
diff --git a/test/typecheck/cases/ill-modal-tope-cross-modality.rzk b/test/typecheck/cases/ill-modal-tope-cross-modality.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-modal-tope-cross-modality.rzk
@@ -0,0 +1,12 @@
+#lang rzk-1
+
+-- Plain LEQ becomes inaccessible under mod _b (coe(Id, Flat) = False),
+-- while _b(EQ) stays accessible (coe(Flat, Flat) = True).
+-- LEQ has no symmetry in saturation, so it cannot be re-derived.
+-- Without mod _b, both parts are accessible and the recOR passes.
+
+#def ill-cross-modality-leq-under-flat
+  (A :_b U) (a :_b A)
+  (j m :_b 2)
+  : (i :_b 2 | (i <= j) /\ _# (m === 0_2)) -> _b A
+  := \ (i :_b 2) -> mod _b (recOR( (i <= j) /\ (m === 0_2) |-> a ))
diff --git a/test/typecheck/cases/ill-modal-unaccessible.expect.yaml b/test/typecheck/cases/ill-modal-unaccessible.expect.yaml
deleted file mode 100644
--- a/test/typecheck/cases/ill-modal-unaccessible.expect.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-status: error
-error_tag: TypeErrorUnaccessibleVar
-message_contains:
-  - "variable is not accessible"
diff --git a/test/typecheck/cases/ill-modal-unaccessible.rzk b/test/typecheck/cases/ill-modal-unaccessible.rzk
deleted file mode 100644
--- a/test/typecheck/cases/ill-modal-unaccessible.rzk
+++ /dev/null
@@ -1,5 +0,0 @@
-#lang rzk-1
-
-#def bad-use-under-flat (A : U) (x : A)
-  : <| _b | A |>
-  := mod _b x
diff --git a/test/typecheck/cases/ill-recbot-term-not-function.expect.yaml b/test/typecheck/cases/ill-recbot-term-not-function.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recbot-term-not-function.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorNotFunction
+regression_for:
+  - recBOT-term-must-be-well-typed
diff --git a/test/typecheck/cases/ill-recbot-term-not-function.rzk b/test/typecheck/cases/ill-recbot-term-not-function.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recbot-term-not-function.rzk
@@ -0,0 +1,8 @@
+#lang rzk-1
+
+-- Under an absurd tope context the expected type collapses to recBOT, but the term
+-- must still be well-typed in its own right, so that ill-formed bodies are not
+-- silently admitted under a false hypothesis. Here the body `a a` applies the
+-- non-function `a`, so it is rejected even though `t ≡ 0 ∧ t ≡ 1` is absurd.
+#define illRecBotApp (A : U) (a : A) (t : 2 | (t === 0_2) /\ (t === 1_2)) : A
+  := a a
diff --git a/test/typecheck/cases/ill-recbot-term-undefined.expect.yaml b/test/typecheck/cases/ill-recbot-term-undefined.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recbot-term-undefined.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorUndefined
+regression_for:
+  - recBOT-term-must-be-well-typed
diff --git a/test/typecheck/cases/ill-recbot-term-undefined.rzk b/test/typecheck/cases/ill-recbot-term-undefined.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recbot-term-undefined.rzk
@@ -0,0 +1,6 @@
+#lang rzk-1
+
+-- An undefined variable must not be admitted under an absurd hypothesis either:
+-- the body is checked for well-formedness before recBOT is accepted.
+#define illRecBotUndefined (A : U) (t : 2 | (t === 0_2) /\ (t === 1_2)) : A
+  := nonexistent
diff --git a/test/typecheck/cases/ill-recor-as-tope.expect.yaml b/test/typecheck/cases/ill-recor-as-tope.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-as-tope.expect.yaml
@@ -0,0 +1,6 @@
+status: error
+error_tag: TypeErrorOther
+message_contains:
+  - "recOR cannot be used as a tope"
+regression_for:
+  - recOR-in-tope-layer-panic
diff --git a/test/typecheck/cases/ill-recor-as-tope.rzk b/test/typecheck/cases/ill-recor-as-tope.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-as-tope.rzk
@@ -0,0 +1,8 @@
+#lang rzk-1
+
+-- A recOR in another recOR's branch-guard (tope) position must be rejected as a
+-- type error, not crash the tope-layer normaliser. Regression for the reported
+-- "PANIC! Impossible happened (recOR in the tope layer)" (a recOR reaching
+-- nfTope), surfaced by the Yoneda game.
+#def bad (A : U) (a : A) : (2 × 2) → A
+  := \ (t , s) → recOR ( recOR ( s ≤ t ↦ s ≤ t , t ≤ s ↦ t ≤ s ) ↦ a , ⊤ ↦ a )
diff --git a/test/typecheck/cases/ill-recor-coverage-required.expect.yaml b/test/typecheck/cases/ill-recor-coverage-required.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-coverage-required.expect.yaml
@@ -0,0 +1,6 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
+message_contains:
+  - "union of the topes"
+regression_for:
+  - recOR-coverage-required
diff --git a/test/typecheck/cases/ill-recor-coverage-required.rzk b/test/typecheck/cases/ill-recor-coverage-required.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-coverage-required.rzk
@@ -0,0 +1,12 @@
+#lang rzk-1
+
+-- Coverage is the sole tope obligation for `recOR`: the disjunction of branch
+-- guards must entail (cover) the local tope context. Here the context is the
+-- non-trivial boundary `t ≡ 0 ∨ t ≡ 1`, but the single guard `t ≡ 0` covers only
+-- half of it, so `contextEntailsUnion` reports that the context is not covered by (does
+-- not entail) the union of the guards.
+
+#define u : U := Unit -> Unit
+
+#define guardsUndercover (t : 2 | (t === 0_2) \/ (t === 1_2)) : U
+  := recOR( t === 0_2 |-> u )
diff --git a/test/typecheck/cases/ill-recor-guard-disjoint.expect.yaml b/test/typecheck/cases/ill-recor-guard-disjoint.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-guard-disjoint.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorTopeContextDisjoint
+regression_for:
+  - recOR-branch-guard-disjoint-from-context
diff --git a/test/typecheck/cases/ill-recor-guard-disjoint.rzk b/test/typecheck/cases/ill-recor-guard-disjoint.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-recor-guard-disjoint.rzk
@@ -0,0 +1,9 @@
+#lang rzk-1
+
+-- A recOR branch guard disjoint from the local tope context is a dead branch: its
+-- overlap with the context is ⊥, so the branch can never apply. This is rejected.
+-- Here the guard `t ≡ 1` cannot hold in the context `t ≡ 0`.
+#define u : U := Unit -> Unit
+
+#define guardDisjoint (t : 2 | t === 0_2) : U
+  := recOR( t === 1_2 |-> u, t === 0_2 |-> u )
diff --git a/test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml b/test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml
@@ -0,0 +1,4 @@
+status: error
+error_tag: TypeErrorTopeContextDisjoint
+regression_for:
+  - restricted-type-face-disjoint-from-context
diff --git a/test/typecheck/cases/ill-restrict-face-disjoint.rzk b/test/typecheck/cases/ill-restrict-face-disjoint.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-restrict-face-disjoint.rzk
@@ -0,0 +1,8 @@
+#lang rzk-1
+
+-- A restriction face disjoint from the local tope context is vacuous: its overlap
+-- with the context is ⊥, so it constrains the term nowhere. Such a face is always
+-- rejected (whereas a merely overhanging face is only warned about). Here the face
+-- `t ≡ 1` cannot hold in the context `t ≡ 0`.
+#define faceDisjoint (t : 2 | t === 0_2) : Unit [ t === 1_2 |-> unit ]
+  := unit
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml
@@ -1,5 +1,5 @@
 status: error
-error_tag: TypeErrorUnifyTerms
+error_tag: TypeErrorUnify
 message_contains:
   - "cannot unify"
 regression_for:
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk
@@ -2,8 +2,8 @@
 
 -- Ill counterpart to `happy-tope-nested-rec-or-d4.rzk`: **identical** nested binary `recOR`
 -- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t3 ≡ 1₂`),
--- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and
--- `recOR` inference fails only after processing the full tree (see error at innermost branch).
+-- where `u` is replaced by `unit`. The type-level `recOR` is checked against `U`, so
+-- the bad leaf is caught directly when its `unit` (of type `Unit`) is checked against `U`.
 
 #define u : U := Unit
 
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml
@@ -1,5 +1,5 @@
 status: error
-error_tag: TypeErrorUnifyTerms
+error_tag: TypeErrorUnify
 message_contains:
   - "cannot unify"
 regression_for:
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk
@@ -2,8 +2,8 @@
 
 -- Ill counterpart to `happy-tope-nested-rec-or-d5.rzk`: **identical** nested binary `recOR`
 -- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t4 ≡ 1₂`),
--- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and
--- `recOR` inference fails only after processing the full tree (see error at innermost branch).
+-- where `u` is replaced by `unit`. The type-level `recOR` is checked against `U`, so
+-- the bad leaf is caught directly when its `unit` (of type `Unit`) is checked against `U`.
 
 #define u : U := Unit
 
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml
@@ -1,5 +1,5 @@
 status: error
-error_tag: TypeErrorUnifyTerms
+error_tag: TypeErrorUnify
 message_contains:
   - "cannot unify"
 regression_for:
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk
@@ -2,8 +2,8 @@
 
 -- Ill counterpart to `happy-tope-nested-rec-or-d6.rzk`: **identical** nested binary `recOR`
 -- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t5 ≡ 1₂`),
--- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and
--- `recOR` inference fails only after processing the full tree (see error at innermost branch).
+-- where `u` is replaced by `unit`. The type-level `recOR` is checked against `U`, so
+-- the bad leaf is caught directly when its `unit` (of type `Unit`) is checked against `U`.
 
 #define u : U := Unit
 
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml
@@ -1,6 +1,6 @@
 status: error
 error_tag: TypeErrorTopeNotSatisfied
 message_contains:
-  - "equivalent to the union"
+  - "union of the topes"
 regression_for:
-  - nested-recOR-contextEquiv-inner-singleton
+  - nested-recOR-contextEntailsUnion-inner-singleton
diff --git a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk
--- a/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk
+++ b/test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk
@@ -1,7 +1,7 @@
 #lang rzk-1
 
 -- Inner `recOR` on `t2` must cover both endpoints while `t2 ≡ 0 ∨ t2 ≡ 1` holds.
--- A singleton inner `recOR` leaves `contextEquiv` unsatisfied on the `t1 ≡ 0₂` face.
+-- A singleton inner `recOR` leaves `contextEntailsUnion` unsatisfied on the `t1 ≡ 0₂` face.
 
 #define u : U := Unit
 
diff --git a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml
--- a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml
+++ b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml
@@ -1,7 +1,7 @@
 status: error
 error_tag: TypeErrorTopeNotSatisfied
 message_contains:
-  - "equivalent to the union"
+  - "union of the topes"
   - "recOR"
 regression_for:
-  - contextEquiv-recOR-boundary
+  - contextEntailsUnion-recOR-boundary
diff --git a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk
--- a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk
+++ b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk
@@ -1,8 +1,10 @@
 #lang rzk-1
 
 -- After the branches of `recOR`, the checker requires the local tope context to be
--- equivalent to the disjunction of branch guard topes (`contextEquiv`).
--- With only `⊤` on `t : 2`, the boundary `t ≡ 0 ∨ t ≡ 1` is not entailed.
+-- covered by (to entail) the disjunction of branch guard topes (`contextEntailsUnion`).
+-- With only `⊤` on `t : 2`, the boundary `t ≡ 0 ∨ t ≡ 1` is not entailed. The branches
+-- are the type `Unit` (a valid type in U) so the type-level recOR is well-formed up to
+-- the coverage obligation, which is what this fixture pins down.
 
 #define boundaryUnit (t : 2) : U
-  := recOR( t === 0_2 |-> unit, t === 1_2 |-> unit )
+  := recOR( t === 0_2 |-> Unit, t === 1_2 |-> Unit )
diff --git a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml
--- a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml
+++ b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml
@@ -1,6 +1,6 @@
 status: error
 error_tag: TypeErrorTopeNotSatisfied
 message_contains:
-  - "equivalent to the union"
+  - "union of the topes"
 regression_for:
-  - contextEquiv-recOR-singleton
+  - contextEntailsUnion-recOR-singleton
diff --git a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk
--- a/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk
+++ b/test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk
@@ -1,7 +1,7 @@
 #lang rzk-1
 
--- Single-branch `recOR` on unrestricted `t : 2`: `contextEquiv` requires `⊤` to match
--- `t ≡ 0₂ ∨ ⊥` (`contextEquiv` after `recOR`).
+-- Single-branch `recOR` on unrestricted `t : 2`: `contextEntailsUnion` requires `⊤` to entail
+-- `t ≡ 0₂ ∨ ⊥`, which fails (`contextEntailsUnion` after `recOR`).
 
 #define u : U := Unit -> Unit
 
diff --git a/test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml b/test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml
@@ -0,0 +1,7 @@
+status: error
+error_tag: TypeErrorUndefined
+message_contains:
+  - "Local tope context:"
+  - "Δ² (t, s)"
+regression_for:
+  - render-bare-pattern-point
diff --git a/test/typecheck/cases/ill-tope-pattern-binder-bare.rzk b/test/typecheck/cases/ill-tope-pattern-binder-bare.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-tope-pattern-binder-bare.rzk
@@ -0,0 +1,11 @@
+#lang rzk-1
+
+-- A pattern-bound point used bare in a shape's membership tope must render as
+-- the pattern (Δ² (t , s)) in a type error's local tope context, not as a fresh
+-- variable (Δ² x₁). The undefined body forces an error whose context shows the
+-- tope. Regression for the bare-pattern rendering fix.
+#def Δ² : (2 × 2) → TOPE
+  := \ (t , s) → s ≤ t
+
+#def bad (A : U) (x : A) : ( ((t , s) : Δ²) → A )
+  := \ (t , s) → nonexistent
diff --git a/test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml b/test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml
@@ -0,0 +1,2 @@
+status: error
+error_tag: TypeErrorTopeNotSatisfied
diff --git a/test/typecheck/cases/ill-tope-recOR-non-discrete.rzk b/test/typecheck/cases/ill-tope-recOR-non-discrete.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/ill-tope-recOR-non-discrete.rzk
@@ -0,0 +1,13 @@
+#lang rzk-1
+
+-- recOR with === on a plain (non-flat) interval variable.
+-- Only flat (_b) variables have discrete axioms (LEM: i === 0 ∨ i === 1).
+-- A plain variable does not have LEM, so recOR with === 0 / === 1 is not total.
+
+#def ill-recOR-non-discrete
+  (A : U)
+  (a b : A)
+  (i : 2)
+  : A
+  := recOR( i === 0_2 |-> a , i === 1_2 |-> b )
+
diff --git a/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml b/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml
--- a/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml
+++ b/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml
@@ -1,6 +1,6 @@
 status: error
 error_tag: TypeErrorTopeNotSatisfied
 message_contains:
-  - "equivalent to the union"
+  - "union of the topes"
 regression_for:
-  - contextEquiv-recOR-high-dim
+  - contextEntailsUnion-recOR-high-dim
diff --git a/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk b/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk
--- a/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk
+++ b/test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk
@@ -1,7 +1,7 @@
 #lang rzk-1
 
--- `recOR` requires the local tope context to match the disjunction of branch guards
--- (`contextEquiv`: local Φ must be equivalent to the disjunction of branch guards).
+-- `recOR` requires the local tope context to be covered by the disjunction of branch guards
+-- (`contextEntailsUnion`: local Φ must entail the disjunction of branch guards).
 -- On the full 5-cube only `⊤` holds, so
 -- pinning the *first* coordinate to `0₂` or `1₂` is not entailed (interior points).
 
diff --git a/test/typecheck/cases/uses-whnf-discarded.expect.yaml b/test/typecheck/cases/uses-whnf-discarded.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/uses-whnf-discarded.expect.yaml
@@ -0,0 +1,3 @@
+status: ok
+regression_for:
+  - uses-checks-key-off-actual-term-not-whnf
diff --git a/test/typecheck/cases/uses-whnf-discarded.rzk b/test/typecheck/cases/uses-whnf-discarded.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/uses-whnf-discarded.rzk
@@ -0,0 +1,18 @@
+#lang rzk-1
+
+-- An assumption whose only occurrence sits in a redex that weak head
+-- normalisation discards (here the argument to a constant function) is still
+-- a genuine use: the section unused-variable check must see the term the user
+-- wrote, not its WHNF. Before the fix, `b` was reported as an unused variable.
+
+#section sec-whnf-discarded
+
+#variable A : U
+#variable a : A
+#variable b : A
+
+#define pick
+  : A
+  := (\ (_ : A) → a) b
+
+#end sec-whnf-discarded
diff --git a/test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml b/test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml
@@ -0,0 +1,7 @@
+status: error
+error_tag: TypeErrorImplicitAssumption
+message_contains:
+  - "implicit assumption"
+  - "used in definition of"
+regression_for:
+  - uses-checks-key-off-actual-term-not-whnf
diff --git a/test/typecheck/cases/uses-whnf-masked-transitive.rzk b/test/typecheck/cases/uses-whnf-masked-transitive.rzk
new file mode 100644
--- /dev/null
+++ b/test/typecheck/cases/uses-whnf-masked-transitive.rzk
@@ -0,0 +1,22 @@
+#lang rzk-1
+
+-- A transitive dependency on a section assumption that weak head normalisation
+-- would otherwise hide. `d2`'s value `first (unit , d1)` mentions `d1`, whose
+-- type `a =_{A} a` depends on the assumption `a`; reducing the value to `unit`
+-- discards `d1` and so masks the dependency. Keying the use check off the term
+-- the user wrote catches it: `d2` implicitly relies on `a` and must say so.
+
+#section sec-whnf-masked
+
+#variable A : U
+#variable a : A
+
+#define d1
+  : a =_{A} a
+  := refl
+
+#define d2
+  : Unit
+  := first (unit , d1)
+
+#end sec-whnf-masked
