---input---
(* Internal Syntax *)
(* Author: Frank Pfenning, Carsten Schuermann *)
(* Modified: Roberto Virga *)

functor IntSyn (structure Global : GLOBAL) :> INTSYN =
struct

  type cid = int			(* Constant identifier        *)
  type name = string			(* Variable name              *)
  type mid = int                        (* Structure identifier       *)
  type csid = int                       (* CS module identifier       *)


  (* Contexts *)
  datatype 'a Ctx =			(* Contexts                   *)
    Null				(* G ::= .                    *)
  | Decl of 'a Ctx * 'a			(*     | G, D                 *)

  (* ctxPop (G) => G'
     Invariant: G = G',D
  *)
  fun ctxPop (Decl (G, D)) = G

  exception Error of string             (* raised if out of space     *) 
  (* ctxLookup (G, k) = D, kth declaration in G from right to left
     Invariant: 1 <= k <= |G|, where |G| is length of G
  *)

  fun ctxLookup (Decl (G', D), 1) = D
    | ctxLookup (Decl (G', _), k') = ctxLookup (G', k'-1)
(*    | ctxLookup (Null, k') = (print ("Looking up k' = " ^ Int.toString k' ^ "\n"); raise Error "Out of Bounce\n")*)
    (* ctxLookup (Null, k')  should not occur by invariant *)

  (* ctxLength G = |G|, the number of declarations in G *)
  fun ctxLength G =
      let 
	fun ctxLength' (Null, n) = n
	  | ctxLength' (Decl(G, _), n)= ctxLength' (G, n+1)
      in
	ctxLength' (G, 0)
      end
    
  type FgnExp = exn                     (* foreign expression representation *)
  exception UnexpectedFgnExp of FgnExp
                                        (* raised by a constraint solver
					   if passed an incorrect arg *)

  type FgnCnstr = exn                   (* foreign unification constraint
                                           representation *)
  exception UnexpectedFgnCnstr of FgnCnstr
                                        (* raised by a constraint solver
                                           if passed an incorrect arg *)

  datatype Depend =                     (* Dependency information     *)
    No                                  (* P ::= No                   *)
  | Maybe                               (*     | Maybe                *)
  | Meta				(*     | Meta                 *)

  (* Expressions *)

  datatype Uni =			(* Universes:                 *)
    Kind				(* L ::= Kind                 *)
  | Type				(*     | Type                 *)

  datatype Exp =			(* Expressions:               *)
    Uni   of Uni			(* U ::= L                    *)
  | Pi    of (Dec * Depend) * Exp       (*     | bPi (D, P). V         *)
  | Root  of Head * Spine		(*     | C @ S                *)
  | Redex of Exp * Spine		(*     | U @ S                *)
  | Lam   of Dec * Exp			(*     | lam D. U             *)
  | EVar  of Exp option ref * Dec Ctx * Exp * (Cnstr ref) list ref
                                        (*     | X<I> : G|-V, Cnstr   *)

  | EClo  of Exp * Sub			(*     | U[s]                 *)
  | AVar  of Exp option ref             (*     | A<I>                 *)   
  | NVar  of int			(*     | n (linear, fully applied) *)
                                        (* grafting variable *)

  | FgnExp of csid * FgnExp
                                        (*     | (foreign expression) *)
    
  and Head =				(* Heads:                     *)
    BVar  of int			(* H ::= k                    *)
  | Const of cid			(*     | c                    *)
  | Proj  of Block * int		(*     | #k(b)                *)
  | Skonst of cid			(*     | c#                   *)
  | Def   of cid			(*     | d                    *)
  | NSDef of cid			(*     | d (non strict)       *)
  | FVar  of name * Exp * Sub		(*     | F[s]                 *)
  | FgnConst of csid * ConDec           (*     | (foreign constant)   *)
    
  and Spine =				(* Spines:                    *)
    Nil					(* S ::= Nil                  *)
  | App   of Exp * Spine		(*     | U ; S                *)
  | SClo  of Spine * Sub		(*     | S[s]                 *)

  and Sub =				(* Explicit substitutions:    *)
    Shift of int			(* s ::= ^n                   *)
  | Dot   of Front * Sub		(*     | Ft.s                 *)

  and Front =				(* Fronts:                    *)
    Idx of int				(* Ft ::= k                   *)
  | Exp of Exp				(*     | U                    *)
  | Axp of Exp				(*     | U (assignable)       *)
  | Block of Block			(*     | _x                   *)
  | Undef				(*     | _                    *)

  and Dec =				(* Declarations:              *)
    Dec of name option * Exp		(* D ::= x:V                  *)
  | BDec of name option * (cid * Sub)	(*     | v:l[s]               *)
  | ADec of name option * int   	(*     | v[^-d]               *)
  | NDec of name option

  and Block =				(* Blocks:                    *)
    Bidx of int 			(* b ::= v                    *)
  | LVar of Block option ref * Sub * (cid * Sub)
                                        (*     | L(l[^k],t)           *)
  | Inst of Exp list			(*     | u1, ..., Un          *)


  (* Constraints *)

  and Cnstr =				(* Constraint:                *)
    Solved                      	(* Cnstr ::= solved           *)
  | Eqn      of Dec Ctx * Exp * Exp     (*         | G|-(U1 == U2)    *)
  | FgnCnstr of csid * FgnCnstr         (*         | (foreign)        *)

  and Status =                          (* Status of a constant:      *)
    Normal                              (*   inert                    *)
  | Constraint of csid * (Dec Ctx * Spine * int -> Exp option)
                                        (*   acts as constraint       *)
  | Foreign of csid * (Spine -> Exp)    (*   is converted to foreign  *)

  and FgnUnify =                        (* Result of foreign unify    *)
    Succeed of FgnUnifyResidual list
    (* succeed with a list of residual operations *)
  | Fail

  and FgnUnifyResidual =                (* Residual of foreign unify  *)
    Assign of Dec Ctx * Exp * Exp * Sub
    (* perform the assignment G |- X = U [ss] *)
  | Delay of Exp * Cnstr ref
    (* delay cnstr, associating it with all the rigid EVars in U  *)

  (* Global signature *)

  and ConDec =			        (* Constant declaration       *)
    ConDec of string * mid option * int * Status
                                        (* a : K : kind  or           *)
              * Exp * Uni	        (* c : A : type               *)
  | ConDef of string * mid option * int	(* a = A : K : kind  or       *)
              * Exp * Exp * Uni		(* d = M : A : type           *)
              * Ancestor                (* Ancestor info for d or a   *)
  | AbbrevDef of string * mid option * int
                                        (* a = A : K : kind  or       *)
              * Exp * Exp * Uni		(* d = M : A : type           *)
  | BlockDec of string * mid option     (* %block l : SOME G1 PI G2   *)
              * Dec Ctx * Dec list

  | BlockDef of string * mid option * cid list
                                        (* %block l = (l1 | ... | ln) *)

  | SkoDec of string * mid option * int	(* sa: K : kind  or           *)
              * Exp * Uni	        (* sc: A : type               *)

  and Ancestor =			(* Ancestor of d or a         *)
    Anc of cid option * int * cid option (* head(expand(d)), height, head(expand[height](d)) *)
                                        (* NONE means expands to {x:A}B *)

  datatype StrDec =                     (* Structure declaration      *)
      StrDec of string * mid option

  (* Form of constant declaration *)
  datatype ConDecForm =
    FromCS				(* from constraint domain *)
  | Ordinary				(* ordinary declaration *)
  | Clause				(* %clause declaration *)

  (* Type abbreviations *)
  type dctx = Dec Ctx			(* G = . | G,D                *)
  type eclo = Exp * Sub   		(* Us = U[s]                  *)
  type bclo = Block * Sub   		(* Bs = B[s]                  *)
  type cnstr = Cnstr ref

(*  exception Error of string             (* raised if out of space     *) *)


  structure FgnExpStd = struct

    structure ToInternal = FgnOpnTable (type arg = unit
					type result = Exp)

    structure Map = FgnOpnTable (type arg = Exp -> Exp
				 type result = Exp)

    structure App = FgnOpnTable (type arg = Exp -> unit
				 type result = unit)

    structure EqualTo = FgnOpnTable (type arg = Exp
				     type result = bool)

    structure UnifyWith = FgnOpnTable (type arg = Dec Ctx * Exp
				       type result = FgnUnify)

			  

    fun fold csfe f b = let
	val r = ref b
	fun g U = r := f (U,!r)
    in
	App.apply csfe g ; !r
    end

  end

  structure FgnCnstrStd = struct

    structure ToInternal = FgnOpnTable (type arg = unit
					type result = (Dec Ctx * Exp) list)

    structure Awake = FgnOpnTable (type arg = unit
				   type result = bool)

    structure Simplify = FgnOpnTable (type arg = unit
				      type result = bool)

  end

  fun conDecName (ConDec (name, _, _, _, _, _)) = name
    | conDecName (ConDef (name, _, _, _, _, _, _)) = name
    | conDecName (AbbrevDef (name, _, _, _, _, _)) = name
    | conDecName (SkoDec (name, _, _, _, _)) = name
    | conDecName (BlockDec (name, _, _, _)) = name
    | conDecName (BlockDef (name, _, _)) = name

  fun conDecParent (ConDec (_, parent, _, _, _, _)) = parent
    | conDecParent (ConDef (_, parent, _, _, _, _, _)) = parent
    | conDecParent (AbbrevDef (_, parent, _, _, _, _)) = parent
    | conDecParent (SkoDec (_, parent, _, _, _)) = parent
    | conDecParent (BlockDec (_, parent, _, _)) = parent
    | conDecParent (BlockDef (_, parent, _)) = parent
   

  (* conDecImp (CD) = k

     Invariant:
     If   CD is either a declaration, definition, abbreviation, or 
          a Skolem constant
     then k stands for the number of implicit elements.
  *)
  fun conDecImp (ConDec (_, _, i, _, _, _)) = i
    | conDecImp (ConDef (_, _, i, _, _, _, _)) = i
    | conDecImp (AbbrevDef (_, _, i, _, _, _)) = i
    | conDecImp (SkoDec (_, _, i, _, _)) = i
    | conDecImp (BlockDec (_, _,  _, _)) = 0   (* watch out -- carsten *)

  fun conDecStatus (ConDec (_, _, _, status, _, _)) = status
    | conDecStatus _ = Normal

  (* conDecType (CD) =  V

     Invariant:
     If   CD is either a declaration, definition, abbreviation, or 
          a Skolem constant
     then V is the respective type
  *)
  fun conDecType (ConDec (_, _, _, _, V, _)) = V
    | conDecType (ConDef (_, _, _, _, V, _, _)) = V
    | conDecType (AbbrevDef (_, _, _, _, V, _)) = V
    | conDecType (SkoDec (_, _, _, V, _)) = V


  (* conDecBlock (CD) =  (Gsome, Lpi)

     Invariant:
     If   CD is block definition
     then Gsome is the context of some variables
     and  Lpi is the list of pi variables
  *)
  fun conDecBlock (BlockDec (_, _, Gsome, Lpi)) = (Gsome, Lpi)

  (* conDecUni (CD) =  L

     Invariant:
     If   CD is either a declaration, definition, abbreviation, or 
          a Skolem constant
     then L is the respective universe
  *)
  fun conDecUni (ConDec (_, _, _, _, _, L)) = L
    | conDecUni (ConDef (_, _, _, _, _, L, _)) = L
    | conDecUni (AbbrevDef (_, _, _, _, _, L)) = L
    | conDecUni (SkoDec (_, _, _, _, L)) = L


  fun strDecName (StrDec (name, _)) = name

  fun strDecParent (StrDec (_, parent)) = parent

  local
    val maxCid = Global.maxCid
    val dummyEntry = ConDec("", NONE, 0, Normal, Uni (Kind), Kind)
    val sgnArray = Array.array (maxCid+1, dummyEntry)
      : ConDec Array.array
    val nextCid  = ref(0)

    val maxMid = Global.maxMid
    val sgnStructArray = Array.array (maxMid+1, StrDec("", NONE))
      : StrDec Array.array
    val nextMid = ref (0)

  in
    (* Invariants *)
    (* Constant declarations are all well-typed *)
    (* Constant declarations are stored in beta-normal form *)
    (* All definitions are strict in all their arguments *)
    (* If Const(cid) is valid, then sgnArray(cid) = ConDec _ *)
    (* If Def(cid) is valid, then sgnArray(cid) = ConDef _ *)

    fun sgnClean (i) = if i >= !nextCid then ()
                       else (Array.update (sgnArray, i, dummyEntry);
			     sgnClean (i+1))

    fun sgnReset () = ((* Fri Dec 20 12:04:24 2002 -fp *)
		       (* this circumvents a space leak *)
		       sgnClean (0);
		       nextCid := 0; nextMid := 0)
    fun sgnSize () = (!nextCid, !nextMid)

    fun sgnAdd (conDec) = 
        let
	  val cid = !nextCid
	in
	  if cid > maxCid
	    then raise Error ("Global signature size " ^ Int.toString (maxCid+1) ^ " exceeded")
	  else (Array.update (sgnArray, cid, conDec) ;
		nextCid := cid + 1;
		cid)
	end

    (* 0 <= cid < !nextCid *)
    fun sgnLookup (cid) = Array.sub (sgnArray, cid)

    fun sgnApp (f) =
        let
	  fun sgnApp' (cid) = 
	      if cid = !nextCid then () else (f cid; sgnApp' (cid+1)) 
	in
	  sgnApp' (0)
	end

    fun sgnStructAdd (strDec) = 
        let
	  val mid = !nextMid
	in
	  if mid > maxMid
	    then raise Error ("Global signature size " ^ Int.toString (maxMid+1) ^ " exceeded")
	  else (Array.update (sgnStructArray, mid, strDec) ;
		nextMid := mid + 1;
		mid)
	end

    (* 0 <= mid < !nextMid *)
    fun sgnStructLookup (mid) = Array.sub (sgnStructArray, mid)

    (* A hack used in Flit - jcreed 6/05 *)
    fun rename (cid, new) =
	let
	    val newConDec = case sgnLookup cid of 
		ConDec (n,m,i,s,e,u) => ConDec(new,m,i,s,e,u)
	      | ConDef (n,m,i,e,e',u,a) => ConDef(new,m,i,e,e',u,a)
	      | AbbrevDef (n,m,i,e,e',u) => AbbrevDef (new,m,i,e,e',u)
	      | BlockDec (n,m,d,d') => BlockDec (new,m,d,d')
	      | SkoDec (n,m,i,e,u) => SkoDec (new,m,i,e,u)
	in
	    Array.update (sgnArray, cid, newConDec)
	end

  end

  fun constDef (d) =
      (case sgnLookup (d)
	 of ConDef(_, _, _, U,_, _, _) => U
	  | AbbrevDef (_, _, _, U,_, _) => U)

  fun constType (c) = conDecType (sgnLookup c)
  fun constImp (c) = conDecImp (sgnLookup c)
  fun constUni (c) = conDecUni (sgnLookup c)
  fun constBlock (c) = conDecBlock (sgnLookup c)

  fun constStatus (c) =
      (case sgnLookup (c)
	 of ConDec (_, _, _, status, _, _) => status
          | _ => Normal)


  (* Explicit Substitutions *)

  (* id = ^0 
  
     Invariant:
     G |- id : G        id is patsub
  *)
  val id = Shift(0)

  (* shift = ^1
  
     Invariant:
     G, V |- ^ : G       ^ is patsub
  *)
  val shift = Shift(1)

  (* invShift = ^-1 = _.^0
     Invariant:
     G |- ^-1 : G, V     ^-1 is patsub
  *)
  val invShift = Dot(Undef, id)


  (* comp (s1, s2) = s'

     Invariant:
     If   G'  |- s1 : G 
     and  G'' |- s2 : G'
     then s'  = s1 o s2
     and  G'' |- s1 o s2 : G

     If  s1, s2 patsub
     then s' patsub
   *)
  fun comp (Shift (0), s) = s
    (* next line is an optimization *)
    (* roughly 15% on standard suite for Twelf 1.1 *)
    (* Sat Feb 14 10:15:16 1998 -fp *)
    | comp (s, Shift (0)) = s
    | comp (Shift (n), Dot (Ft, s)) = comp (Shift (n-1), s)
    | comp (Shift (n), Shift (m)) = Shift (n+m)
    | comp (Dot (Ft, s), s') = Dot (frontSub (Ft, s'), comp (s, s'))

  (* bvarSub (n, s) = Ft'
   
      Invariant: 
     If    G |- s : G'    G' |- n : V
     then  Ft' = Ftn         if  s = Ft1 .. Ftn .. ^k
       or  Ft' = ^(n+k)     if  s = Ft1 .. Ftm ^k   and m<n
     and   G |- Ft' : V [s]
  *)
  and bvarSub (1, Dot(Ft, s)) = Ft
    | bvarSub (n, Dot(Ft, s)) = bvarSub (n-1, s)
    | bvarSub (n, Shift(k))  = Idx (n+k)

  (* blockSub (B, s) = B' 
    
     Invariant:
     If   G |- s : G'   
     and  G' |- B block
     then G |- B' block
     and  B [s] == B' 
  *)
  (* in front of substitutions, first case is irrelevant *)
  (* Sun Dec  2 11:56:41 2001 -fp *)
  and blockSub (Bidx k, s) =
      (case bvarSub (k, s)
	 of Idx k' => Bidx k'
          | Block B => B)
    | blockSub (LVar (ref (SOME B), sk, _), s) =
        blockSub (B, comp (sk, s))
    (* -fp Sun Dec  1 21:18:30 2002 *)
    (* --cs Sun Dec  1 11:25:41 2002 *)
    (* Since always . |- t : Gsome, discard s *)
    (* where is this needed? *)
    (* Thu Dec  6 20:30:26 2001 -fp !!! *)
    | blockSub (LVar (r as ref NONE, sk, (l, t)), s) = 
        LVar(r, comp(sk, s), (l, t))
      (* was:
	LVar (r, comp(sk, s), (l, comp (t, s)))
	July 22, 2010 -fp -cs
       *)
	(* comp(^k, s) = ^k' for some k' by invariant *)
    | blockSub (L as Inst ULs, s') = Inst (map (fn U => EClo (U, s')) ULs)
    (* this should be right but somebody should verify *) 

  (* frontSub (Ft, s) = Ft'

     Invariant:
     If   G |- s : G'     G' |- Ft : V
     then Ft' = Ft [s]
     and  G |- Ft' : V [s]

     NOTE: EClo (U, s) might be undefined, so if this is ever
     computed eagerly, we must introduce an "Undefined" exception,
     raise it in whnf and handle it here so Exp (EClo (U, s)) => Undef
  *)
  and frontSub (Idx (n), s) = bvarSub (n, s)
    | frontSub (Exp (U), s) = Exp (EClo (U, s))
    | frontSub (Undef, s) = Undef
    | frontSub (Block (B), s) = Block (blockSub (B, s))

  (* decSub (x:V, s) = D'

     Invariant:
     If   G  |- s : G'    G' |- V : L
     then D' = x:V[s]
     and  G  |- V[s] : L
  *)
  (* First line is an optimization suggested by cs *)
  (* D[id] = D *)
  (* Sat Feb 14 18:37:44 1998 -fp *)
  (* seems to have no statistically significant effect *)
  (* undo for now Sat Feb 14 20:22:29 1998 -fp *)
  (*
  fun decSub (D, Shift(0)) = D
    | decSub (Dec (x, V), s) = Dec (x, EClo (V, s))
  *)
  fun decSub (Dec (x, V), s) = Dec (x, EClo (V, s))
    | decSub (NDec x, s) = NDec x
    | decSub (BDec (n, (l, t)), s) = BDec (n, (l, comp (t, s)))

  (* dot1 (s) = s'

     Invariant:
     If   G |- s : G'
     then s' = 1. (s o ^)
     and  for all V s.t.  G' |- V : L
          G, V[s] |- s' : G', V 

     If s patsub then s' patsub
  *)
  (* first line is an optimization *)
  (* roughly 15% on standard suite for Twelf 1.1 *)
  (* Sat Feb 14 10:16:16 1998 -fp *)
  fun dot1 (s as Shift (0)) = s
    | dot1 s = Dot (Idx(1), comp(s, shift))

  (* invDot1 (s) = s'
     invDot1 (1. s' o ^) = s'

     Invariant:
     s = 1 . s' o ^
     If G' |- s' : G
     (so G',V[s] |- s : G,V)
  *)
  fun invDot1 (s) = comp (comp(shift, s), invShift)


  (* Declaration Contexts *)

  (* ctxDec (G, k) = x:V
     Invariant: 
     If      |G| >= k, where |G| is size of G,
     then    G |- k : V  and  G |- V : L
  *)
  fun ctxDec (G, k) =
      let (* ctxDec' (G'', k') = x:V
	     where G |- ^(k-k') : G'', 1 <= k' <= k
           *)
	fun ctxDec' (Decl (G', Dec (x, V')), 1) = Dec (x, EClo (V', Shift (k)))
	  | ctxDec' (Decl (G', BDec (n, (l, s))), 1) = BDec (n, (l, comp (s, Shift (k))))
	  | ctxDec' (Decl (G', _), k') = ctxDec' (G', k'-1)
	 (* ctxDec' (Null, k')  should not occur by invariant *)
      in
	ctxDec' (G, k)
      end

  (* blockDec (G, v, i) = V
     
     Invariant:
     If   G (v) = l[s]
     and  Sigma (l) = SOME Gsome BLOCK Lblock
     and  G |- s : Gsome
     then G |- pi (v, i) : V
  *)

  fun blockDec (G, v as (Bidx k), i) =
    let 
      val BDec (_, (l, s)) = ctxDec (G, k)  
      (* G |- s : Gsome *)
      val (Gsome, Lblock) = conDecBlock (sgnLookup l)
      fun blockDec' (t, D :: L, 1, j) = decSub (D, t)
	| blockDec' (t, _ :: L, n, j) =
	    blockDec' (Dot (Exp (Root (Proj (v, j), Nil)), t),
			  L, n-1, j+1)
    in
      blockDec' (s, Lblock, i, 1)
    end


  (* EVar related functions *)

  (* newEVar (G, V) = newEVarCnstr (G, V, nil) *)
  fun newEVar (G, V) = EVar(ref NONE, G, V, ref nil)

  (* newAVar G = new AVar (assignable variable) *)
  (* AVars carry no type, ctx, or cnstr *)
  fun newAVar () = AVar(ref NONE)

  (* newTypeVar (G) = X, X new
     where G |- X : type
  *)
  fun newTypeVar (G) = EVar(ref NONE, G, Uni(Type), ref nil)

  (* newLVar (l, s) = (l[s]) *)
  fun newLVar (sk, (cid, t)) = LVar (ref NONE, sk, (cid, t))

  (* Definition related functions *)
  (* headOpt (U) = SOME(H) or NONE, U should be strict, normal *)
  fun headOpt (Root (H, _)) = SOME(H)
    | headOpt (Lam (_, U)) = headOpt U
    | headOpt _ = NONE

  fun ancestor' (NONE) = Anc(NONE, 0, NONE)
    | ancestor' (SOME(Const(c))) = Anc(SOME(c), 1, SOME(c))
    | ancestor' (SOME(Def(d))) =
      (case sgnLookup(d)
	 of ConDef(_, _, _, _, _, _, Anc(_, height, cOpt))
            => Anc(SOME(d), height+1, cOpt))
    | ancestor' (SOME _) = (* FgnConst possible, BVar impossible by strictness *)
      Anc(NONE, 0, NONE)
  (* ancestor(U) = ancestor info for d = U *)
  fun ancestor (U) = ancestor' (headOpt U)

  (* defAncestor(d) = ancestor of d, d must be defined *)
  fun defAncestor (d) =
      (case sgnLookup(d)
	 of ConDef(_, _, _, _, _, _, anc) => anc)

  (* Type related functions *)

  (* targetHeadOpt (V) = SOME(H) or NONE
     where H is the head of the atomic target type of V,
     NONE if V is a kind or object or have variable type.
     Does not expand type definitions.
  *)
  (* should there possibly be a FgnConst case? also targetFamOpt -kw *)
  fun targetHeadOpt (Root (H, _)) = SOME(H)
    | targetHeadOpt (Pi(_, V)) = targetHeadOpt V
    | targetHeadOpt (Redex (V, S)) = targetHeadOpt V
    | targetHeadOpt (Lam (_, V)) = targetHeadOpt V
    | targetHeadOpt (EVar (ref (SOME(V)),_,_,_)) = targetHeadOpt V
    | targetHeadOpt (EClo (V, s)) = targetHeadOpt V
    | targetHeadOpt _ = NONE
      (* Root(Bvar _, _), Root(FVar _, _), Root(FgnConst _, _),
         EVar(ref NONE,..), Uni, FgnExp _
      *)
      (* Root(Skonst _, _) can't occur *)
  (* targetHead (A) = a
     as in targetHeadOpt, except V must be a valid type
  *)
  fun targetHead (A) = valOf (targetHeadOpt A)
                      
  (* targetFamOpt (V) = SOME(cid) or NONE
     where cid is the type family of the atomic target type of V,
     NONE if V is a kind or object or have variable type.
     Does expand type definitions.
  *)
  fun targetFamOpt (Root (Const(cid), _)) = SOME(cid)
    | targetFamOpt (Pi(_, V)) = targetFamOpt V
    | targetFamOpt (Root (Def(cid), _)) = targetFamOpt (constDef cid)
    | targetFamOpt (Redex (V, S)) = targetFamOpt V
    | targetFamOpt (Lam (_, V)) = targetFamOpt V
    | targetFamOpt (EVar (ref (SOME(V)),_,_,_)) = targetFamOpt V
    | targetFamOpt (EClo (V, s)) = targetFamOpt V
    | targetFamOpt _ = NONE
      (* Root(Bvar _, _), Root(FVar _, _), Root(FgnConst _, _),
         EVar(ref NONE,..), Uni, FgnExp _
      *)
      (* Root(Skonst _, _) can't occur *)
  (* targetFam (A) = a
     as in targetFamOpt, except V must be a valid type
  *)
  fun targetFam (A) = valOf (targetFamOpt A)
                      
end;  (* functor IntSyn *)

structure IntSyn :> INTSYN =
  IntSyn (structure Global = Global);

---tokens---
'(*'          Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'y'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'x'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n'          Text

'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'P'           Comment.Multiline
'f'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'c'           Comment.Multiline
'h'           Comment.Multiline
'u'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n'          Text

'(*'          Comment.Multiline
' '           Comment.Multiline
'M'           Comment.Multiline
'o'           Comment.Multiline
'd'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n'        Text

'functor'     Keyword.Reserved
' '           Text
'IntSyn'      Name.Namespace
' '           Text
'('           Punctuation
'structure'   Keyword.Reserved
' '           Text
'Global'      Name.Namespace
' '           Text
':'           Punctuation
' '           Text
'GLOBAL'      Name
')'           Punctuation
' '           Text
':>'          Punctuation
' '           Text
'INTSYN'      Name
' '           Text
'='           Punctuation
'\n'          Text

'struct'      Keyword.Reserved
'\n\n  '      Text
'type'        Keyword.Reserved
' '           Text
'cid'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'int'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'name'        Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'string'      Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'mid'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'int'         Name
'                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'u'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'csid'        Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'int'         Name
'                       ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'S'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'o'           Comment.Multiline
'd'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'datatype'    Keyword.Reserved
' '           Text
"'a"          Name.Decorator
' '           Text
'Ctx'         Keyword.Type
' '           Text
'='           Punctuation
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Null'        Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Decl'        Name.Class
' '           Text
'of'          Keyword.Reserved
' '           Text
"'a"          Name.Decorator
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
"'a"          Name.Decorator
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'P'           Comment.Multiline
'o'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
'>'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
','           Comment.Multiline
'D'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'fun'         Keyword.Reserved
' '           Text
'ctxPop'      Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'D'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'G'           Name
'\n\n  '      Text
'exception'   Keyword.Reserved
' '           Text
'Error'       Name.Class
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name.Class
'             ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
' \n  '       Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'L'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
'k'           Comment.Multiline
'u'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
't'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'fun'         Name.Class
' '           Text
'ctxLookup'   Name.Class
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
'D'           Name
')'           Punctuation
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'D'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'ctxLookup'   Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
"k'"          Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'ctxLookup'   Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
"k'"          Name
'-'           Name
'1'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'L'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
'k'           Comment.Multiline
'u'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'N'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'"'           Comment.Multiline
'L'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'"'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'.'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'S'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
' '           Comment.Multiline
'"'           Comment.Multiline
'\\'          Comment.Multiline
'n'           Comment.Multiline
'"'           Comment.Multiline
')'           Comment.Multiline
';'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'"'           Comment.Multiline
'O'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'\\'          Comment.Multiline
'n'           Comment.Multiline
'"'           Comment.Multiline
')'           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'L'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
'k'           Comment.Multiline
'u'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'N'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'c'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'L'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'u'           Comment.Multiline
'm'           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'ctxLength'   Name.Function
' '           Text
'G'           Name
' '           Text
'='           Punctuation
'\n      '    Text
'let'         Keyword.Reserved
' \n\t'       Text
'fun'         Keyword.Reserved
' '           Text
"ctxLength'"  Name.Function
' '           Text
'('           Punctuation
'Null'        Name
','           Punctuation
' '           Text
'n'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'n'           Name
'\n\t  '      Text
'|'           Punctuation
' '           Text
"ctxLength'"  Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
'n'           Name
')'           Punctuation
'='           Punctuation
' '           Text
"ctxLength'"  Name
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'n'           Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
'\n      '    Text
'in'          Keyword.Reserved
'\n\t'        Text
"ctxLength'"  Name
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n      '    Text
'end'         Keyword.Reserved
'\n    \n  '  Text
'type'        Keyword.Reserved
' '           Text
'FgnExp'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'exn'         Name
'                     ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'exception'   Keyword.Reserved
' '           Text
'UnexpectedFgnExp' Name.Class
' '           Text
'of'          Keyword.Reserved
' '           Text
'FgnExp'      Name.Class
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'\n'          Comment.Multiline

'\t'          Comment.Multiline
'\t'          Comment.Multiline
'\t'          Comment.Multiline
'\t'          Comment.Multiline
'\t'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'type'        Name.Class
' '           Text
'FgnCnstr'    Name.Class
' '           Text
'='           Name.Class
' '           Text
'exn'         Name.Class
'                   ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'exception'   Name.Class
' '           Text
'UnexpectedFgnCnstr' Name.Class
' '           Text
'of'          Keyword.Reserved
' '           Text
'FgnCnstr'    Name.Class
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'datatype'    Name.Class
' '           Text
'Depend'      Name.Class
' '           Text
'='           Name.Class
'                     ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'No'          Name.Class
'                                  ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'P'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Name.Class
' '           Text
'Maybe'       Name.Class
'                               ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'M'           Comment.Multiline
'a'           Comment.Multiline
'y'           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Name.Class
' '           Text
'Meta'        Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'M'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'datatype'    Name.Class
' '           Text
'Uni'         Name.Class
' '           Text
'='           Name.Class
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Kind'        Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'K'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Name.Class
' '           Text
'Type'        Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'datatype'    Name.Class
' '           Text
'Exp'         Name.Class
' '           Text
'='           Name.Class
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Uni'         Name.Class
'   '         Text
'of'          Keyword.Reserved
' '           Text
'Uni'         Name.Class
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Name.Class
' '           Text
'Pi'          Name.Class
'    '        Text
'of'          Keyword.Reserved
' '           Text
'('           Punctuation
'Dec'         Name
' '           Text
'*'           Name
' '           Text
'Depend'      Name
')'           Punctuation
' '           Text
'*'           Name
' '           Text
'Exp'         Name
'       '     Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'P'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'D'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'P'           Comment.Multiline
')'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Root'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Head'        Name
' '           Text
'*'           Name
' '           Text
'Spine'       Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
' '           Comment.Multiline
'@'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Redex'       Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Spine'       Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
'@'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Lam'         Name.Function
'   '         Text
'of'          Keyword.Reserved
' '           Text
'Dec'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'EVar'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'option'      Name
' '           Text
'ref'         Name
' '           Text
'*'           Name
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'('           Punctuation
'Cnstr'       Name
' '           Text
'ref'         Name
')'           Punctuation
' '           Text
'list'        Name
' '           Text
'ref'         Name
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'X'           Comment.Multiline
'<'           Comment.Multiline
'I'           Comment.Multiline
'>'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'|'           Punctuation
' '           Text
'EClo'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'AVar'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'option'      Name
' '           Text
'ref'         Name
'             ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'<'           Comment.Multiline
'I'           Comment.Multiline
'>'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'   \n  '     Text
'|'           Punctuation
' '           Text
'NVar'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'int'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'p'           Comment.Multiline
'p'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'g'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'f'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'|'           Punctuation
' '           Text
'FgnExp'      Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'csid'        Name
' '           Text
'*'           Name
' '           Text
'FgnExp'      Name
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    \n  '  Text
'and'         Keyword.Reserved
' '           Text
'Head'        Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'H'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'BVar'        Name
'  '          Text
'of'          Keyword.Reserved
' '           Text
'int'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'H'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Const'       Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'cid'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Proj'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Block'       Name
' '           Text
'*'           Name
' '           Text
'int'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'#'           Comment.Multiline
'k'           Comment.Multiline
'('           Comment.Multiline
'b'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Skonst'      Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'cid'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'#'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Def'         Name.Function
'   '         Text
'of'          Keyword.Reserved
' '           Text
'cid'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'NSDef'       Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'cid'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'FVar'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'name'        Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'FgnConst'    Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'csid'        Name
' '           Text
'*'           Name
' '           Text
'ConDec'      Name
'           ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    \n  '  Text
'and'         Keyword.Reserved
' '           Text
'Spine'       Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'p'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Nil'         Name
'\t\t\t\t\t'  Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'i'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'App'         Name.Function
'   '         Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Spine'       Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
';'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'SClo'        Name.Function
'  '          Text
'of'          Keyword.Reserved
' '           Text
'Spine'       Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Sub'         Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Shift'       Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'int'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Dot'         Name.Function
'   '         Text
'of'          Keyword.Reserved
' '           Text
'Front'       Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'.'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Front'       Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Idx'         Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'int'         Name
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Exp'         Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Axp'         Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Block'       Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Block'       Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
'x'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Undef'       Name.Function
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Dec'         Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Dec'         Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'name'        Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'BDec'        Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'name'        Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'('           Punctuation
'cid'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
')'           Punctuation
'\t'          Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
':'           Comment.Multiline
'l'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'ADec'        Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'name'        Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
'   \t'       Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'['           Comment.Multiline
'^'           Comment.Multiline
'-'           Comment.Multiline
'd'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'NDec'        Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'name'        Name
' '           Text
'option'      Name
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Block'       Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Bidx'        Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'int'         Name
' \t\t\t'     Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'LVar'        Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Block'       Name
' '           Text
'option'      Name
' '           Text
'ref'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
' '           Text
'*'           Name
' '           Text
'('           Punctuation
'cid'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
')'           Punctuation
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
'['           Comment.Multiline
'^'           Comment.Multiline
'k'           Comment.Multiline
']'           Comment.Multiline
','           Comment.Multiline
't'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Inst'        Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'list'        Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'1'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Cnstr'       Name.Function
' '           Text
'='           Punctuation
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Solved'      Name
'                      \t' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
':'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Eqn'         Name.Function
'      '      Text
'of'          Keyword.Reserved
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
'     '       Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
'('           Comment.Multiline
'U'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'2'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'FgnCnstr'    Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'csid'        Name
' '           Text
'*'           Name
' '           Text
'FgnCnstr'    Name
'         '   Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Status'      Name.Function
' '           Text
'='           Punctuation
'                          ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Normal'      Name
'                              ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Constraint'  Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'csid'        Name
' '           Text
'*'           Name
' '           Text
'('           Punctuation
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Spine'       Name
' '           Text
'*'           Name
' '           Text
'int'         Name
' '           Text
'->'          Punctuation
' '           Text
'Exp'         Name
' '           Text
'option'      Name
')'           Punctuation
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Foreign'     Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'csid'        Name
' '           Text
'*'           Name
' '           Text
'('           Punctuation
'Spine'       Name
' '           Text
'->'          Punctuation
' '           Text
'Exp'         Name
')'           Punctuation
'    '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'FgnUnify'    Name.Function
' '           Text
'='           Punctuation
'                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Succeed'     Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'FgnUnifyResidual' Name
' '           Text
'list'        Name
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'c'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
'u'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Fail'        Name.Function
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'FgnUnifyResidual' Name.Function
' '           Text
'='           Punctuation
'                ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
'u'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Assign'      Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'X'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Delay'       Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Cnstr'       Name
' '           Text
'ref'         Name
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'b'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'ConDec'      Name.Function
' '           Text
'='           Punctuation
'\t\t\t        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'ConDec'      Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
' '           Text
'*'           Name
' '           Text
'Status'      Name
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'K'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Uni'         Name
'\t        '  Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'ConDef'      Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
'\t'          Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'K'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Uni'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'M'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Ancestor'    Name
'                ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'AbbrevDef'   Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'K'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Uni'         Name
'\t\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'M'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'BlockDec'    Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
'     '       Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'%'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'O'           Comment.Multiline
'M'           Comment.Multiline
'E'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'P'           Comment.Multiline
'I'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Dec'         Name
' '           Text
'list'        Name
'\n\n  '      Text
'|'           Punctuation
' '           Text
'BlockDef'    Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'cid'         Name
' '           Text
'list'        Name
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'%'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'n'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'|'           Punctuation
' '           Text
'SkoDec'      Name.Function
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
'\t'          Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'a'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'K'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n              ' Text
'*'           Name
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Uni'         Name
'\t        '  Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'c'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'and'         Keyword.Reserved
' '           Text
'Ancestor'    Name.Function
' '           Text
'='           Punctuation
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'Anc'         Name
' '           Text
'of'          Keyword.Reserved
' '           Text
'cid'         Name
' '           Text
'option'      Name
' '           Text
'*'           Name
' '           Text
'int'         Name
' '           Text
'*'           Name
' '           Text
'cid'         Name
' '           Text
'option'      Name
' '           Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
'('           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'('           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
'('           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'['           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
't'           Comment.Multiline
']'           Comment.Multiline
'('           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n                                        ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'{'           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'A'           Comment.Multiline
'}'           Comment.Multiline
'B'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'datatype'    Keyword.Reserved
' '           Text
'StrDec'      Keyword.Type
' '           Text
'='           Punctuation
'                     ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'u'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'StrDec'      Name.Class
' '           Text
'of'          Keyword.Reserved
' '           Text
'string'      Name
' '           Text
'*'           Name
' '           Text
'mid'         Name
' '           Text
'option'      Name
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'datatype'    Keyword.Reserved
' '           Text
'ConDecForm'  Keyword.Type
' '           Text
'='           Punctuation
'\n    '      Text
'FromCS'      Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Ordinary'    Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'd'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'|'           Punctuation
' '           Text
'Clause'      Name.Class
'\t\t\t\t'    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'%'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'b'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'dctx'        Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
'\t\t\t'      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'eclo'        Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'   \t\t'     Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'bclo'        Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Block'       Name
' '           Text
'*'           Name
' '           Text
'Sub'         Name
'   \t\t'     Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
''            Text
'type'        Keyword.Reserved
' '           Text
'cnstr'       Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Cnstr'       Name
' '           Text
'ref'         Name
'\n\n'        Text

'(*'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'g'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n\n  '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'FgnExpStd'   Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'struct'      Keyword.Reserved
'\n\n    '    Text
'structure'   Keyword.Reserved
' '           Text
'ToInternal'  Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'unit'        Name
'\n\t\t\t\t\t' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'Map'         Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
' '           Text
'->'          Punctuation
' '           Text
'Exp'         Name
'\n\t\t\t\t ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'App'         Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
' '           Text
'->'          Punctuation
' '           Text
'unit'        Name
'\n\t\t\t\t ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'unit'        Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'EqualTo'     Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
'\n\t\t\t\t     ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'bool'        Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'UnifyWith'   Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
'\n\t\t\t\t       ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'FgnUnify'    Name
')'           Punctuation
'\n\n\t\t\t  \n\n    ' Text
''            Text
'fun'         Keyword.Reserved
' '           Text
'fold'        Name.Function
' '           Text
'csfe'        Name
' '           Text
'f'           Name
' '           Text
'b'           Name
' '           Text
'='           Punctuation
' '           Text
'let'         Keyword.Reserved
'\n\t'        Text
'val'         Keyword.Reserved
' '           Text
'r'           Name.Variable
' '           Text
'='           Punctuation
' '           Text
'ref'         Name
' '           Text
'b'           Name
'\n\t'        Text
'fun'         Keyword.Reserved
' '           Text
'g'           Name.Function
' '           Text
'U'           Name
' '           Text
'='           Punctuation
' '           Text
'r'           Name
' '           Text
':='          Name
' '           Text
'f'           Name
' '           Text
'('           Punctuation
'U'           Name
','           Punctuation
'!'           Name
'r'           Name
')'           Punctuation
'\n    '      Text
'in'          Keyword.Reserved
'\n\t'        Text
'App'         Name.Namespace
'.'           Punctuation
'apply'       Name
' '           Text
'csfe'        Name
' '           Text
'g'           Name
' '           Text
';'           Punctuation
' '           Text
'!'           Name
'r'           Name
'\n    '      Text
'end'         Keyword.Reserved
'\n\n  '      Text
'end'         Keyword.Reserved
'\n\n  '      Text
'structure'   Keyword.Reserved
' '           Text
'FgnCnstrStd' Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'struct'      Keyword.Reserved
'\n\n    '    Text
'structure'   Keyword.Reserved
' '           Text
'ToInternal'  Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'unit'        Name
'\n\t\t\t\t\t' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'Dec'         Name
' '           Text
'Ctx'         Name
' '           Text
'*'           Name
' '           Text
'Exp'         Name
')'           Punctuation
' '           Text
'list'        Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'Awake'       Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'unit'        Name
'\n\t\t\t\t   ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'bool'        Name
')'           Punctuation
'\n\n    '    Text
''            Text
'structure'   Keyword.Reserved
' '           Text
'Simplify'    Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'FgnOpnTable' Name
' '           Text
'('           Punctuation
'type'        Keyword.Reserved
' '           Text
'arg'         Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'unit'        Name
'\n\t\t\t\t      ' Text
''            Text
'type'        Keyword.Reserved
' '           Text
'result'      Keyword.Type
' '           Text
'='           Punctuation
' '           Text
'bool'        Name
')'           Punctuation
'\n\n  '      Text
''            Text
'end'         Keyword.Reserved
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'ConDef'      Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'SkoDec'      Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'BlockDec'    Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecName'  Name.Function
' '           Text
'('           Punctuation
'BlockDef'    Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'ConDef'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'SkoDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'BlockDec'    Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecParent' Name.Function
' '           Text
'('           Punctuation
'BlockDef'    Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n   \n\n  ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'I'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'b'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'k'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'u'           Comment.Multiline
'm'           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'.'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'conDecImp'   Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'i'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecImp'   Name.Function
' '           Text
'('           Punctuation
'ConDef'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'i'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecImp'   Name.Function
' '           Text
'('           Punctuation
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'i'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecImp'   Name.Function
' '           Text
'('           Punctuation
'SkoDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'i'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecImp'   Name.Function
' '           Text
'('           Punctuation
'BlockDec'    Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
'  '          Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'0'           Literal.Number.Integer
'   '         Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'c'           Comment.Multiline
'h'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'conDecStatus' Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'status'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'status'      Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecStatus' Name.Function
' '           Text
'_'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Normal'      Name
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'T'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'b'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'k'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'conDecType'  Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecType'  Name.Function
' '           Text
'('           Punctuation
'ConDef'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecType'  Name.Function
' '           Text
'('           Punctuation
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecType'  Name.Function
' '           Text
'('           Punctuation
'SkoDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'V'           Name
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'B'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'p'           Comment.Multiline
'i'           Comment.Multiline
')'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'p'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'conDecBlock' Name.Function
' '           Text
'('           Punctuation
'BlockDec'    Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'Gsome'       Name
','           Punctuation
' '           Text
'Lpi'         Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'Gsome'       Name
','           Punctuation
' '           Text
'Lpi'         Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'b'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'k'           Comment.Multiline
'o'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'conDecUni'   Name.Function
' '           Text
'('           Punctuation
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'L'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'L'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecUni'   Name.Function
' '           Text
'('           Punctuation
'ConDef'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'L'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'L'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecUni'   Name.Function
' '           Text
'('           Punctuation
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'L'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'L'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'conDecUni'   Name.Function
' '           Text
'('           Punctuation
'SkoDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'L'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'L'           Name
'\n\n\n  '    Text
'fun'         Keyword.Reserved
' '           Text
'strDecName'  Name.Function
' '           Text
'('           Punctuation
'StrDec'      Name
' '           Text
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'name'        Name
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'strDecParent' Name.Function
' '           Text
'('           Punctuation
'StrDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'parent'      Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'parent'      Name
'\n\n  '      Text
'local'       Keyword.Reserved
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'maxCid'      Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Global'      Name.Namespace
'.'           Punctuation
'maxCid'      Name
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'dummyEntry'  Name.Variable
' '           Text
'='           Punctuation
' '           Text
'ConDec'      Name
'('           Punctuation
'"'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text
'NONE'        Name
','           Punctuation
' '           Text
'0'           Literal.Number.Integer
','           Punctuation
' '           Text
'Normal'      Name
','           Punctuation
' '           Text
'Uni'         Name
' '           Text
'('           Punctuation
'Kind'        Name
')'           Punctuation
','           Punctuation
' '           Text
'Kind'        Name
')'           Punctuation
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'sgnArray'    Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'array'       Name
' '           Text
'('           Punctuation
'maxCid'      Name
'+'           Name
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'dummyEntry'  Name
')'           Punctuation
'\n      '    Text
':'           Punctuation
' '           Text
'ConDec'      Name
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'array'       Name
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'nextCid'     Name.Variable
'  '          Text
'='           Punctuation
' '           Text
'ref'         Name
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
'\n\n    '    Text
'val'         Keyword.Reserved
' '           Text
'maxMid'      Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Global'      Name.Namespace
'.'           Punctuation
'maxMid'      Name
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'sgnStructArray' Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'array'       Name
' '           Text
'('           Punctuation
'maxMid'      Name
'+'           Name
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'StrDec'      Name
'('           Punctuation
'"'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text
'NONE'        Name
')'           Punctuation
')'           Punctuation
'\n      '    Text
':'           Punctuation
' '           Text
'StrDec'      Name
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'array'       Name
'\n    '      Text
'val'         Keyword.Reserved
' '           Text
'nextMid'     Name.Variable
' '           Text
'='           Punctuation
' '           Text
'ref'         Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
'\n\n  '      Text
'in'          Keyword.Reserved
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
'-'           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'-'           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'u'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'A'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'y'           Comment.Multiline
'('           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'('           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'A'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'y'           Comment.Multiline
'('           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n    '    Text
'fun'         Keyword.Reserved
' '           Text
'sgnClean'    Name.Function
' '           Text
'('           Punctuation
'i'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'if'          Keyword.Reserved
' '           Text
'i'           Name
' '           Text
'>='          Name
' '           Text
'!'           Name
'nextCid'     Name
' '           Text
'then'        Keyword.Reserved
' '           Text
'('           Punctuation
')'           Punctuation
'\n                       ' Text
'else'        Keyword.Reserved
' '           Text
'('           Punctuation
'Array'       Name.Namespace
'.'           Punctuation
'update'      Name
' '           Text
'('           Punctuation
'sgnArray'    Name
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'dummyEntry'  Name
')'           Punctuation
';'           Punctuation
'\n\t\t\t     ' Text
'sgnClean'    Name
' '           Text
'('           Punctuation
'i'           Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
'\n\n    '    Text
'fun'         Keyword.Reserved
' '           Text
'sgnReset'    Name.Function
' '           Text
'('           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'2'           Comment.Multiline
':'           Comment.Multiline
'0'           Comment.Multiline
'4'           Comment.Multiline
':'           Comment.Multiline
'2'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'0'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\t\t       ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
'c'           Comment.Multiline
'u'           Comment.Multiline
'm'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\t\t       ' Text
'sgnClean'    Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n\t\t       ' Text
'nextCid'     Name
' '           Text
':='          Name
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
' '           Text
'nextMid'     Name
' '           Text
':='          Name
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n    '      Text
'fun'         Keyword.Reserved
' '           Text
'sgnSize'     Name.Function
' '           Text
'('           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'!'           Name
'nextCid'     Name
','           Punctuation
' '           Text
'!'           Name
'nextMid'     Name
')'           Punctuation
'\n\n    '    Text
'fun'         Keyword.Reserved
' '           Text
'sgnAdd'      Name.Function
' '           Text
'('           Punctuation
'conDec'      Name
')'           Punctuation
' '           Text
'='           Punctuation
' \n        ' Text
'let'         Keyword.Reserved
'\n\t  '      Text
'val'         Keyword.Reserved
' '           Text
'cid'         Name.Variable
' '           Text
'='           Punctuation
' '           Text
'!'           Name
'nextCid'     Name
'\n\t'        Text
'in'          Keyword.Reserved
'\n\t  '      Text
'if'          Keyword.Reserved
' '           Text
'cid'         Name
' '           Text
'>'           Name
' '           Text
'maxCid'      Name
'\n\t    '    Text
'then'        Keyword.Reserved
' '           Text
'raise'       Keyword.Reserved
' '           Text
'Error'       Name
' '           Text
'('           Punctuation
'"'           Literal.String.Double
'G'           Literal.String.Double
'l'           Literal.String.Double
'o'           Literal.String.Double
'b'           Literal.String.Double
'a'           Literal.String.Double
'l'           Literal.String.Double
' '           Literal.String.Double
's'           Literal.String.Double
'i'           Literal.String.Double
'g'           Literal.String.Double
'n'           Literal.String.Double
'a'           Literal.String.Double
't'           Literal.String.Double
'u'           Literal.String.Double
'r'           Literal.String.Double
'e'           Literal.String.Double
' '           Literal.String.Double
's'           Literal.String.Double
'i'           Literal.String.Double
'z'           Literal.String.Double
'e'           Literal.String.Double
' '           Literal.String.Double
'"'           Literal.String.Double
' '           Text
'^'           Name
' '           Text
'Int'         Name.Namespace
'.'           Punctuation
'toString'    Name
' '           Text
'('           Punctuation
'maxCid'      Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'^'           Name
' '           Text
'"'           Literal.String.Double
' '           Literal.String.Double
'e'           Literal.String.Double
'x'           Literal.String.Double
'c'           Literal.String.Double
'e'           Literal.String.Double
'e'           Literal.String.Double
'd'           Literal.String.Double
'e'           Literal.String.Double
'd'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n\t  '      Text
'else'        Keyword.Reserved
' '           Text
'('           Punctuation
'Array'       Name.Namespace
'.'           Punctuation
'update'      Name
' '           Text
'('           Punctuation
'sgnArray'    Name
','           Punctuation
' '           Text
'cid'         Name
','           Punctuation
' '           Text
'conDec'      Name
')'           Punctuation
' '           Text
';'           Punctuation
'\n\t\t'      Text
'nextCid'     Name
' '           Text
':='          Name
' '           Text
'cid'         Name
' '           Text
'+'           Name
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n\t\t'      Text
'cid'         Name
')'           Punctuation
'\n\t'        Text
'end'         Keyword.Reserved
'\n\n    '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
' '           Comment.Multiline
'!'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
'C'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'fun'         Keyword.Reserved
' '           Text
'sgnLookup'   Name.Function
' '           Text
'('           Punctuation
'cid'         Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'sub'         Name
' '           Text
'('           Punctuation
'sgnArray'    Name
','           Punctuation
' '           Text
'cid'         Name
')'           Punctuation
'\n\n    '    Text
'fun'         Keyword.Reserved
' '           Text
'sgnApp'      Name.Function
' '           Text
'('           Punctuation
'f'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n        '  Text
'let'         Keyword.Reserved
'\n\t  '      Text
'fun'         Keyword.Reserved
' '           Text
"sgnApp'"     Name.Function
' '           Text
'('           Punctuation
'cid'         Name
')'           Punctuation
' '           Text
'='           Punctuation
' \n\t      ' Text
'if'          Keyword.Reserved
' '           Text
'cid'         Name
' '           Text
'='           Punctuation
' '           Text
'!'           Name
'nextCid'     Name
' '           Text
'then'        Keyword.Reserved
' '           Text
'('           Punctuation
')'           Punctuation
' '           Text
'else'        Keyword.Reserved
' '           Text
'('           Punctuation
'f'           Name
' '           Text
'cid'         Name
';'           Punctuation
' '           Text
"sgnApp'"     Name
' '           Text
'('           Punctuation
'cid'         Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
' \n\t'       Text
'in'          Keyword.Reserved
'\n\t  '      Text
"sgnApp'"     Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
'\n\t'        Text
'end'         Keyword.Reserved
'\n\n    '    Text
'fun'         Keyword.Reserved
' '           Text
'sgnStructAdd' Name.Function
' '           Text
'('           Punctuation
'strDec'      Name
')'           Punctuation
' '           Text
'='           Punctuation
' \n        ' Text
'let'         Keyword.Reserved
'\n\t  '      Text
'val'         Keyword.Reserved
' '           Text
'mid'         Name.Variable
' '           Text
'='           Punctuation
' '           Text
'!'           Name
'nextMid'     Name
'\n\t'        Text
'in'          Keyword.Reserved
'\n\t  '      Text
'if'          Keyword.Reserved
' '           Text
'mid'         Name
' '           Text
'>'           Name
' '           Text
'maxMid'      Name
'\n\t    '    Text
'then'        Keyword.Reserved
' '           Text
'raise'       Keyword.Reserved
' '           Text
'Error'       Name
' '           Text
'('           Punctuation
'"'           Literal.String.Double
'G'           Literal.String.Double
'l'           Literal.String.Double
'o'           Literal.String.Double
'b'           Literal.String.Double
'a'           Literal.String.Double
'l'           Literal.String.Double
' '           Literal.String.Double
's'           Literal.String.Double
'i'           Literal.String.Double
'g'           Literal.String.Double
'n'           Literal.String.Double
'a'           Literal.String.Double
't'           Literal.String.Double
'u'           Literal.String.Double
'r'           Literal.String.Double
'e'           Literal.String.Double
' '           Literal.String.Double
's'           Literal.String.Double
'i'           Literal.String.Double
'z'           Literal.String.Double
'e'           Literal.String.Double
' '           Literal.String.Double
'"'           Literal.String.Double
' '           Text
'^'           Name
' '           Text
'Int'         Name.Namespace
'.'           Punctuation
'toString'    Name
' '           Text
'('           Punctuation
'maxMid'      Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'^'           Name
' '           Text
'"'           Literal.String.Double
' '           Literal.String.Double
'e'           Literal.String.Double
'x'           Literal.String.Double
'c'           Literal.String.Double
'e'           Literal.String.Double
'e'           Literal.String.Double
'd'           Literal.String.Double
'e'           Literal.String.Double
'd'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n\t  '      Text
'else'        Keyword.Reserved
' '           Text
'('           Punctuation
'Array'       Name.Namespace
'.'           Punctuation
'update'      Name
' '           Text
'('           Punctuation
'sgnStructArray' Name
','           Punctuation
' '           Text
'mid'         Name
','           Punctuation
' '           Text
'strDec'      Name
')'           Punctuation
' '           Text
';'           Punctuation
'\n\t\t'      Text
'nextMid'     Name
' '           Text
':='          Name
' '           Text
'mid'         Name
' '           Text
'+'           Name
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n\t\t'      Text
'mid'         Name
')'           Punctuation
'\n\t'        Text
'end'         Keyword.Reserved
'\n\n    '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
' '           Comment.Multiline
'!'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
'M'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'fun'         Keyword.Reserved
' '           Text
'sgnStructLookup' Name.Function
' '           Text
'('           Punctuation
'mid'         Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Array'       Name.Namespace
'.'           Punctuation
'sub'         Name
' '           Text
'('           Punctuation
'sgnStructArray' Name
','           Punctuation
' '           Text
'mid'         Name
')'           Punctuation
'\n\n    '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'a'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'j'           Comment.Multiline
'c'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'6'           Comment.Multiline
'/'           Comment.Multiline
'0'           Comment.Multiline
'5'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'fun'         Keyword.Reserved
' '           Text
'rename'      Name.Function
' '           Text
'('           Punctuation
'cid'         Name
','           Punctuation
' '           Text
'new'         Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n\t'        Text
'let'         Keyword.Reserved
'\n\t    '    Text
'val'         Keyword.Reserved
' '           Text
'newConDec'   Name.Variable
' '           Text
'='           Punctuation
' '           Text
'case'        Keyword.Reserved
' '           Text
'sgnLookup'   Name
' '           Text
'cid'         Name
' '           Text
'of'          Keyword.Reserved
' \n\t\t'     Text
'ConDec'      Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
's'           Name
','           Punctuation
'e'           Name
','           Punctuation
'u'           Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'ConDec'      Name
'('           Punctuation
'new'         Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
's'           Name
','           Punctuation
'e'           Name
','           Punctuation
'u'           Name
')'           Punctuation
'\n\t      '  Text
'|'           Name
' '           Text
'ConDef'      Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
"e'"          Name
','           Punctuation
'u'           Name
','           Punctuation
'a'           Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'ConDef'      Name
'('           Punctuation
'new'         Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
"e'"          Name
','           Punctuation
'u'           Name
','           Punctuation
'a'           Name
')'           Punctuation
'\n\t      '  Text
'|'           Name
' '           Text
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
"e'"          Name
','           Punctuation
'u'           Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'new'         Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
"e'"          Name
','           Punctuation
'u'           Name
')'           Punctuation
'\n\t      '  Text
'|'           Name
' '           Text
'BlockDec'    Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
'm'           Name
','           Punctuation
'd'           Name
','           Punctuation
"d'"          Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'BlockDec'    Name
' '           Text
'('           Punctuation
'new'         Name
','           Punctuation
'm'           Name
','           Punctuation
'd'           Name
','           Punctuation
"d'"          Name
')'           Punctuation
'\n\t      '  Text
'|'           Name
' '           Text
'SkoDec'      Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
'u'           Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'SkoDec'      Name
' '           Text
'('           Punctuation
'new'         Name
','           Punctuation
'm'           Name
','           Punctuation
'i'           Name
','           Punctuation
'e'           Name
','           Punctuation
'u'           Name
')'           Punctuation
'\n\t'        Text
'in'          Keyword.Reserved
'\n\t    '    Text
'Array'       Name.Namespace
'.'           Punctuation
'update'      Name
' '           Text
'('           Punctuation
'sgnArray'    Name
','           Punctuation
' '           Text
'cid'         Name
','           Punctuation
' '           Text
'newConDec'   Name
')'           Punctuation
'\n\t'        Text
'end'         Keyword.Reserved
'\n\n  '      Text
'end'         Keyword.Reserved
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'constDef'    Name.Function
' '           Text
'('           Punctuation
'd'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'('           Punctuation
'case'        Keyword.Reserved
' '           Text
'sgnLookup'   Name
' '           Text
'('           Punctuation
'd'           Name
')'           Punctuation
'\n\t '       Text
'of'          Keyword.Reserved
' '           Text
'ConDef'      Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'U'           Name
','           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'U'           Name
'\n\t  '      Text
'|'           Name
' '           Text
'AbbrevDef'   Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'U'           Name
','           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'U'           Name
')'           Punctuation
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'constType'   Name.Function
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'conDecType'  Name
' '           Text
'('           Punctuation
'sgnLookup'   Name
' '           Text
'c'           Name
')'           Punctuation
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'constImp'    Name.Function
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'conDecImp'   Name
' '           Text
'('           Punctuation
'sgnLookup'   Name
' '           Text
'c'           Name
')'           Punctuation
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'constUni'    Name.Function
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'conDecUni'   Name
' '           Text
'('           Punctuation
'sgnLookup'   Name
' '           Text
'c'           Name
')'           Punctuation
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'constBlock'  Name.Function
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'conDecBlock' Name
' '           Text
'('           Punctuation
'sgnLookup'   Name
' '           Text
'c'           Name
')'           Punctuation
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'constStatus' Name.Function
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'('           Punctuation
'case'        Keyword.Reserved
' '           Text
'sgnLookup'   Name
' '           Text
'('           Punctuation
'c'           Name
')'           Punctuation
'\n\t '       Text
'of'          Keyword.Reserved
' '           Text
'ConDec'      Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'status'      Name
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'status'      Name
'\n          ' Text
'|'           Name
' '           Text
'_'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'Normal'      Name
')'           Punctuation
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'val'         Keyword.Reserved
' '           Text
'id'          Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Shift'       Name
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'1'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'val'         Keyword.Reserved
' '           Text
'shift'       Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Shift'       Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'S'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'-'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
'.'           Comment.Multiline
'^'           Comment.Multiline
'0'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'-'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'-'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'val'         Keyword.Reserved
' '           Text
'invShift'    Name.Variable
' '           Text
'='           Punctuation
' '           Text
'Dot'         Name
'('           Punctuation
'Undef'       Name
','           Punctuation
' '           Text
'id'          Name
')'           Punctuation
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
'1'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'2'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'2'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'1'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'comp'        Name.Function
' '           Text
'('           Punctuation
'Shift'       Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
's'           Name
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'z'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'5'           Comment.Multiline
'%'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'w'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'.'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'e'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'0'           Comment.Multiline
':'           Comment.Multiline
'1'           Comment.Multiline
'5'           Comment.Multiline
':'           Comment.Multiline
'1'           Comment.Multiline
'6'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'9'           Comment.Multiline
'9'           Comment.Multiline
'8'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'|'           Punctuation
' '           Text
'comp'        Name.Function
' '           Text
'('           Punctuation
's'           Name
','           Punctuation
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
's'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'comp'        Name.Function
' '           Text
'('           Punctuation
'Shift'       Name
' '           Text
'('           Punctuation
'n'           Name
')'           Punctuation
','           Punctuation
' '           Text
'Dot'         Name
' '           Text
'('           Punctuation
'Ft'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
'Shift'       Name
' '           Text
'('           Punctuation
'n'           Name
'-'           Name
'1'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'comp'        Name.Function
' '           Text
'('           Punctuation
'Shift'       Name
' '           Text
'('           Punctuation
'n'           Name
')'           Punctuation
','           Punctuation
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'm'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'n'           Name
'+'           Name
'm'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'comp'        Name.Function
' '           Text
'('           Punctuation
'Dot'         Name
' '           Text
'('           Punctuation
'Ft'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
','           Punctuation
' '           Text
"s'"          Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Dot'         Name
' '           Text
'('           Punctuation
'frontSub'    Name
' '           Text
'('           Punctuation
'Ft'          Name
','           Punctuation
' '           Text
"s'"          Name
')'           Punctuation
','           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
's'           Name
','           Punctuation
' '           Text
"s'"          Name
')'           Punctuation
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'('           Comment.Multiline
'n'           Comment.Multiline
'+'           Comment.Multiline
'k'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'<'           Comment.Multiline
'n'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'and'         Keyword.Reserved
' '           Text
'bvarSub'     Name.Function
' '           Text
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'Dot'         Name
'('           Punctuation
'Ft'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Ft'          Name
'\n    '      Text
'|'           Punctuation
' '           Text
'bvarSub'     Name.Function
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'Dot'         Name
'('           Punctuation
'Ft'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'bvarSub'     Name
' '           Text
'('           Punctuation
'n'           Name
'-'           Name
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'bvarSub'     Name.Function
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'Shift'       Name
'('           Punctuation
'k'           Name
')'           Punctuation
')'           Punctuation
'  '          Text
'='           Punctuation
' '           Text
'Idx'         Name
' '           Text
'('           Punctuation
'n'           Name
'+'           Name
'k'           Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'B'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
' '           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'1'           Comment.Multiline
':'           Comment.Multiline
'5'           Comment.Multiline
'6'           Comment.Multiline
':'           Comment.Multiline
'4'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'0'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'and'         Keyword.Reserved
' '           Text
'blockSub'    Name.Function
' '           Text
'('           Punctuation
'Bidx'        Name
' '           Text
'k'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'('           Punctuation
'case'        Keyword.Reserved
' '           Text
'bvarSub'     Name
' '           Text
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
'\n\t '       Text
'of'          Keyword.Reserved
' '           Text
'Idx'         Name
' '           Text
"k'"          Name
' '           Text
'=>'          Punctuation
' '           Text
'Bidx'        Name
' '           Text
"k'"          Name
'\n          ' Text
'|'           Name
' '           Text
'Block'       Name
' '           Text
'B'           Name
' '           Text
'=>'          Punctuation
' '           Text
'B'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'blockSub'    Name.Function
' '           Text
'('           Punctuation
'LVar'        Name
' '           Text
'('           Punctuation
'ref'         Name
' '           Text
'('           Punctuation
'SOME'        Name
' '           Text
'B'           Name
')'           Punctuation
','           Punctuation
' '           Text
'sk'          Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n        '  Text
'blockSub'    Name
' '           Text
'('           Punctuation
'B'           Name
','           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
'sk'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'1'           Comment.Multiline
':'           Comment.Multiline
'1'           Comment.Multiline
'8'           Comment.Multiline
':'           Comment.Multiline
'3'           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'0'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'-'           Comment.Multiline
'c'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'1'           Comment.Multiline
':'           Comment.Multiline
'2'           Comment.Multiline
'5'           Comment.Multiline
':'           Comment.Multiline
'4'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'0'           Comment.Multiline
'2'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'w'           Comment.Multiline
'a'           Comment.Multiline
'y'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
'?'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'h'           Comment.Multiline
'u'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'6'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
':'           Comment.Multiline
'3'           Comment.Multiline
'0'           Comment.Multiline
':'           Comment.Multiline
'2'           Comment.Multiline
'6'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'0'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'!'           Comment.Multiline
'!'           Comment.Multiline
'!'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'|'           Punctuation
' '           Text
'blockSub'    Name.Function
' '           Text
'('           Punctuation
'LVar'        Name
' '           Text
'('           Punctuation
'r'           Name
' '           Text
'as'          Keyword.Reserved
' '           Text
'ref'         Name
' '           Text
'NONE'        Name
','           Punctuation
' '           Text
'sk'          Name
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' \n        ' Text
'LVar'        Name
'('           Punctuation
'r'           Name
','           Punctuation
' '           Text
'comp'        Name
'('           Punctuation
'sk'          Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
')'           Punctuation
'\n      '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

'\t'          Comment.Multiline
'L'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'r'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
'k'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
'\n'          Comment.Multiline

'\t'          Comment.Multiline
'J'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'2'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
'1'           Comment.Multiline
'0'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'c'           Comment.Multiline
's'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\t'        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
'('           Comment.Multiline
'^'           Comment.Multiline
'k'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n    '      Text
'|'           Punctuation
' '           Text
'blockSub'    Name.Function
' '           Text
'('           Punctuation
'L'           Name
' '           Text
'as'          Keyword.Reserved
' '           Text
'Inst'        Name
' '           Text
'ULs'         Name
','           Punctuation
' '           Text
"s'"          Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Inst'        Name
' '           Text
'('           Punctuation
'map'         Name
' '           Text
'('           Punctuation
'fn'          Keyword.Reserved
' '           Text
'U'           Name
' '           Text
'=>'          Punctuation
' '           Text
'EClo'        Name
' '           Text
'('           Punctuation
'U'           Name
','           Punctuation
' '           Text
"s'"          Name
')'           Punctuation
')'           Punctuation
' '           Text
'ULs'         Name
')'           Punctuation
'\n    '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'b'           Comment.Multiline
'o'           Comment.Multiline
'd'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
' \n\n  '     Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
't'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'T'           Comment.Multiline
'E'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'C'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'U'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
'u'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'd'           Comment.Multiline
'u'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'"'           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
'"'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'n'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'E'           Comment.Multiline
'C'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'U'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
'>'           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'and'         Keyword.Reserved
' '           Text
'frontSub'    Name.Function
' '           Text
'('           Punctuation
'Idx'         Name
' '           Text
'('           Punctuation
'n'           Name
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'bvarSub'     Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'frontSub'    Name.Function
' '           Text
'('           Punctuation
'Exp'         Name
' '           Text
'('           Punctuation
'U'           Name
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Exp'         Name
' '           Text
'('           Punctuation
'EClo'        Name
' '           Text
'('           Punctuation
'U'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'frontSub'    Name.Function
' '           Text
'('           Punctuation
'Undef'       Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Undef'       Name
'\n    '      Text
'|'           Punctuation
' '           Text
'frontSub'    Name.Function
' '           Text
'('           Punctuation
'Block'       Name
' '           Text
'('           Punctuation
'B'           Name
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Block'       Name
' '           Text
'('           Punctuation
'blockSub'    Name
' '           Text
'('           Punctuation
'B'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'V'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'z'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'g'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'['           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'e'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'8'           Comment.Multiline
':'           Comment.Multiline
'3'           Comment.Multiline
'7'           Comment.Multiline
':'           Comment.Multiline
'4'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'9'           Comment.Multiline
'9'           Comment.Multiline
'8'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'e'           Comment.Multiline
'm'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'a'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'f'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
'w'           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'e'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'2'           Comment.Multiline
'0'           Comment.Multiline
':'           Comment.Multiline
'2'           Comment.Multiline
'2'           Comment.Multiline
':'           Comment.Multiline
'2'           Comment.Multiline
'9'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'9'           Comment.Multiline
'9'           Comment.Multiline
'8'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'D'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'h'           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'0'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'S'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'x'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'x'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'C'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
')'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'decSub'      Name.Function
' '           Text
'('           Punctuation
'Dec'         Name
' '           Text
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Dec'         Name
' '           Text
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text
'EClo'        Name
' '           Text
'('           Punctuation
'V'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'decSub'      Name.Function
' '           Text
'('           Punctuation
'NDec'        Name
' '           Text
'x'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'NDec'        Name
' '           Text
'x'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'decSub'      Name.Function
' '           Text
'('           Punctuation
'BDec'        Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'BDec'        Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
't'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
')'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'.'           Comment.Multiline
't'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'b'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'z'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'g'           Comment.Multiline
'h'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'5'           Comment.Multiline
'%'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'u'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'w'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'.'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'e'           Comment.Multiline
'b'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'4'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'0'           Comment.Multiline
':'           Comment.Multiline
'1'           Comment.Multiline
'6'           Comment.Multiline
':'           Comment.Multiline
'1'           Comment.Multiline
'6'           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
'9'           Comment.Multiline
'9'           Comment.Multiline
'8'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'f'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'dot1'        Name.Function
' '           Text
'('           Punctuation
's'           Name
' '           Text
'as'          Keyword.Reserved
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'0'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
's'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'dot1'        Name.Function
' '           Text
's'           Name
' '           Text
'='           Punctuation
' '           Text
'Dot'         Name
' '           Text
'('           Punctuation
'Idx'         Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
' '           Text
'comp'        Name
'('           Punctuation
's'           Name
','           Punctuation
' '           Text
'shift'       Name
')'           Punctuation
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'D'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'D'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'1'           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
'\n'          Comment.Multiline

'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'.'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
','           Comment.Multiline
'V'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
'V'           Comment.Multiline
')'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'invDot1'     Name.Function
' '           Text
'('           Punctuation
's'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
'comp'        Name
'('           Punctuation
'shift'       Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
','           Punctuation
' '           Text
'invShift'    Name
')'           Punctuation
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
't'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'>'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'G'           Comment.Multiline
'|'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'z'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'ctxDec'      Name.Function
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'k'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'let'         Keyword.Reserved
' '           Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
"'"           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'x'           Comment.Multiline
':'           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

'\t'          Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'^'           Comment.Multiline
'('           Comment.Multiline
'k'           Comment.Multiline
'-'           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
"'"           Comment.Multiline
"'"           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'1'           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'<'           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\t'        Text
'fun'         Keyword.Reserved
' '           Text
"ctxDec'"     Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
'Dec'         Name
' '           Text
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text
"V'"          Name
')'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Dec'         Name
' '           Text
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text
'EClo'        Name
' '           Text
'('           Punctuation
"V'"          Name
','           Punctuation
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'k'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
'\n\t  '      Text
'|'           Punctuation
' '           Text
"ctxDec'"     Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
'BDec'        Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'BDec'        Name
' '           Text
'('           Punctuation
'n'           Name
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
'comp'        Name
' '           Text
'('           Punctuation
's'           Name
','           Punctuation
' '           Text
'Shift'       Name
' '           Text
'('           Punctuation
'k'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
'\n\t  '      Text
'|'           Punctuation
' '           Text
"ctxDec'"     Name.Function
' '           Text
'('           Punctuation
'Decl'        Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
"k'"          Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
"ctxDec'"     Name
' '           Text
'('           Punctuation
"G'"          Name
','           Punctuation
' '           Text
"k'"          Name
'-'           Name
'1'           Literal.Number.Integer
')'           Punctuation
'\n\t '       Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
"'"           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'N'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'l'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
"'"           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'c'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'in'          Keyword.Reserved
'\n\t'        Text
"ctxDec'"     Name
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'k'           Name
')'           Punctuation
'\n      '    Text
'end'         Keyword.Reserved
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
':'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'v'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'l'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'O'           Comment.Multiline
'M'           Comment.Multiline
'E'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
'L'           Comment.Multiline
'O'           Comment.Multiline
'C'           Comment.Multiline
'K'           Comment.Multiline
' '           Comment.Multiline
'L'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'k'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'i'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'v'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
'blockDec'    Name.Function
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'v'           Name
' '           Text
'as'          Keyword.Reserved
' '           Text
'('           Punctuation
'Bidx'        Name
' '           Text
'k'           Name
')'           Punctuation
','           Punctuation
' '           Text
'i'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n    '      Text
'let'         Keyword.Reserved
' \n      '   Text
'val'         Keyword.Reserved
' '           Text
'BDec'        Name.Variable
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'('           Punctuation
'l'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'ctxDec'      Name
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'k'           Name
')'           Punctuation
'  \n      '  Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'val'         Keyword.Reserved
' '           Text
'('           Punctuation
'Gsome'       Name
','           Punctuation
' '           Text
'Lblock'      Name
')'           Punctuation
' '           Text
'='           Name.Variable
' '           Text
'conDecBlock' Name
' '           Text
'('           Punctuation
'sgnLookup'   Name
' '           Text
'l'           Name
')'           Punctuation
'\n      '    Text
'fun'         Keyword.Reserved
' '           Text
"blockDec'"   Name.Function
' '           Text
'('           Punctuation
't'           Name
','           Punctuation
' '           Text
'D'           Name
' '           Text
'::'          Name
' '           Text
'L'           Name
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'j'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'decSub'      Name
' '           Text
'('           Punctuation
'D'           Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
'\n\t'        Text
'|'           Punctuation
' '           Text
"blockDec'"   Name.Function
' '           Text
'('           Punctuation
't'           Name
','           Punctuation
' '           Text
'_'           Punctuation
' '           Text
'::'          Name
' '           Text
'L'           Name
','           Punctuation
' '           Text
'n'           Name
','           Punctuation
' '           Text
'j'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n\t    '    Text
"blockDec'"   Name
' '           Text
'('           Punctuation
'Dot'         Name
' '           Text
'('           Punctuation
'Exp'         Name
' '           Text
'('           Punctuation
'Root'        Name
' '           Text
'('           Punctuation
'Proj'        Name
' '           Text
'('           Punctuation
'v'           Name
','           Punctuation
' '           Text
'j'           Name
')'           Punctuation
','           Punctuation
' '           Text
'Nil'         Name
')'           Punctuation
')'           Punctuation
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
','           Punctuation
'\n\t\t\t  '  Text
'L'           Name
','           Punctuation
' '           Text
'n'           Name
'-'           Name
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'j'           Name
'+'           Name
'1'           Literal.Number.Integer
')'           Punctuation
'\n    '      Text
'in'          Keyword.Reserved
'\n      '    Text
"blockDec'"   Name
' '           Text
'('           Punctuation
's'           Name
','           Punctuation
' '           Text
'Lblock'      Name
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
'\n    '      Text
'end'         Keyword.Reserved
'\n\n\n  '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'C'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
'l'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'newEVar'     Name.Function
' '           Text
'('           Punctuation
'G'           Name
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'EVar'        Name
'('           Punctuation
'ref'         Name
' '           Text
'NONE'        Name
','           Punctuation
' '           Text
'G'           Name
','           Punctuation
' '           Text
'V'           Name
','           Punctuation
' '           Text
'ref'         Name
' '           Text
'nil'         Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'A'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'A'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'r'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'x'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'newAVar'     Name.Function
' '           Text
'('           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'AVar'        Name
'('           Punctuation
'ref'         Name
' '           Text
'NONE'        Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'T'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'G'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'X'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'X'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'G'           Comment.Multiline
' '           Comment.Multiline
'|'           Comment.Multiline
'-'           Comment.Multiline
' '           Comment.Multiline
'X'           Comment.Multiline
' '           Comment.Multiline
':'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'newTypeVar'  Name.Function
' '           Text
'('           Punctuation
'G'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'EVar'        Name
'('           Punctuation
'ref'         Name
' '           Text
'NONE'        Name
','           Punctuation
' '           Text
'G'           Name
','           Punctuation
' '           Text
'Uni'         Name
'('           Punctuation
'Type'        Name
')'           Punctuation
','           Punctuation
' '           Text
'ref'         Name
' '           Text
'nil'         Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'w'           Comment.Multiline
'L'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'l'           Comment.Multiline
'['           Comment.Multiline
's'           Comment.Multiline
']'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'newLVar'     Name.Function
' '           Text
'('           Punctuation
'sk'          Name
','           Punctuation
' '           Text
'('           Punctuation
'cid'         Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'LVar'        Name
' '           Text
'('           Punctuation
'ref'         Name
' '           Text
'NONE'        Name
','           Punctuation
' '           Text
'sk'          Name
','           Punctuation
' '           Text
'('           Punctuation
'cid'         Name
','           Punctuation
' '           Text
't'           Name
')'           Punctuation
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'U'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'O'           Comment.Multiline
'M'           Comment.Multiline
'E'           Comment.Multiline
'('           Comment.Multiline
'H'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'm'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'headOpt'     Name.Function
' '           Text
'('           Punctuation
'Root'        Name
' '           Text
'('           Punctuation
'H'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'SOME'        Name
'('           Punctuation
'H'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'headOpt'     Name.Function
' '           Text
'('           Punctuation
'Lam'         Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'U'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'headOpt'     Name
' '           Text
'U'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'headOpt'     Name.Function
' '           Text
'_'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'NONE'        Name
'\n\n  '      Text
'fun'         Keyword.Reserved
' '           Text
"ancestor'"   Name.Function
' '           Text
'('           Punctuation
'NONE'        Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Anc'         Name
'('           Punctuation
'NONE'        Name
','           Punctuation
' '           Text
'0'           Literal.Number.Integer
','           Punctuation
' '           Text
'NONE'        Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
"ancestor'"   Name.Function
' '           Text
'('           Punctuation
'SOME'        Name
'('           Punctuation
'Const'       Name
'('           Punctuation
'c'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'Anc'         Name
'('           Punctuation
'SOME'        Name
'('           Punctuation
'c'           Name
')'           Punctuation
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'SOME'        Name
'('           Punctuation
'c'           Name
')'           Punctuation
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
"ancestor'"   Name.Function
' '           Text
'('           Punctuation
'SOME'        Name
'('           Punctuation
'Def'         Name
'('           Punctuation
'd'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'('           Punctuation
'case'        Keyword.Reserved
' '           Text
'sgnLookup'   Name
'('           Punctuation
'd'           Name
')'           Punctuation
'\n\t '       Text
'of'          Keyword.Reserved
' '           Text
'ConDef'      Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'Anc'         Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'height'      Name
','           Punctuation
' '           Text
'cOpt'        Name
')'           Punctuation
')'           Punctuation
'\n            ' Text
'=>'          Punctuation
' '           Text
'Anc'         Name
'('           Punctuation
'SOME'        Name
'('           Punctuation
'd'           Name
')'           Punctuation
','           Punctuation
' '           Text
'height'      Name
'+'           Name
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'cOpt'        Name
')'           Punctuation
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
"ancestor'"   Name.Function
' '           Text
'('           Punctuation
'SOME'        Name
' '           Text
'_'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'o'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'B'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'm'           Comment.Multiline
'p'           Comment.Multiline
'o'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'Anc'         Name
'('           Punctuation
'NONE'        Name
','           Punctuation
' '           Text
'0'           Literal.Number.Integer
','           Punctuation
' '           Text
'NONE'        Name
')'           Punctuation
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'('           Comment.Multiline
'U'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'ancestor'    Name.Function
' '           Text
'('           Punctuation
'U'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
"ancestor'"   Name
' '           Text
'('           Punctuation
'headOpt'     Name
' '           Text
'U'           Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'A'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
'('           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'defAncestor' Name.Function
' '           Text
'('           Punctuation
'd'           Name
')'           Punctuation
' '           Text
'='           Punctuation
'\n      '    Text
'('           Punctuation
'case'        Keyword.Reserved
' '           Text
'sgnLookup'   Name
'('           Punctuation
'd'           Name
')'           Punctuation
'\n\t '       Text
'of'          Keyword.Reserved
' '           Text
'ConDef'      Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
','           Punctuation
' '           Text
'anc'         Name
')'           Punctuation
' '           Text
'=>'          Punctuation
' '           Text
'anc'         Name
')'           Punctuation
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'T'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'l'           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'e'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n  '      Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'H'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'V'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'O'           Comment.Multiline
'M'           Comment.Multiline
'E'           Comment.Multiline
'('           Comment.Multiline
'H'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'H'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'b'           Comment.Multiline
'j'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'a'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'.'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'o'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'n'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
'.'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
's'           Comment.Multiline
'h'           Comment.Multiline
'o'           Comment.Multiline
'u'           Comment.Multiline
'l'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'p'           Comment.Multiline
'o'           Comment.Multiline
's'           Comment.Multiline
's'           Comment.Multiline
'i'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
'e'           Comment.Multiline
'?'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
's'           Comment.Multiline
'o'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'F'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'-'           Comment.Multiline
'k'           Comment.Multiline
'w'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'Root'        Name
' '           Text
'('           Punctuation
'H'           Name
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'SOME'        Name
'('           Punctuation
'H'           Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'Pi'          Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetHeadOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'Redex'       Name
' '           Text
'('           Punctuation
'V'           Name
','           Punctuation
' '           Text
'S'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetHeadOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'Lam'         Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetHeadOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'EVar'        Name
' '           Text
'('           Punctuation
'ref'         Name
' '           Text
'('           Punctuation
'SOME'        Name
'('           Punctuation
'V'           Name
')'           Punctuation
')'           Punctuation
','           Punctuation
'_'           Punctuation
','           Punctuation
'_'           Punctuation
','           Punctuation
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetHeadOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'('           Punctuation
'EClo'        Name
' '           Text
'('           Punctuation
'V'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetHeadOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetHeadOpt' Name.Function
' '           Text
'_'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'NONE'        Name
'\n      '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'B'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'F'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'('           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
','           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'S'           Comment.Multiline
'k'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
"'"           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'c'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'H'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'A'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'H'           Comment.Multiline
'e'           Comment.Multiline
'a'           Comment.Multiline
'd'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'targetHead'  Name.Function
' '           Text
'('           Punctuation
'A'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'valOf'       Name
' '           Text
'('           Punctuation
'targetHeadOpt' Name
' '           Text
'A'           Name
')'           Punctuation
'\n                      \n  ' Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'F'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'V'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'S'           Comment.Multiline
'O'           Comment.Multiline
'M'           Comment.Multiline
'E'           Comment.Multiline
'('           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'w'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'l'           Comment.Multiline
'y'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'h'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'm'           Comment.Multiline
'i'           Comment.Multiline
'c'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'k'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'b'           Comment.Multiline
'j'           Comment.Multiline
'e'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'h'           Comment.Multiline
'a'           Comment.Multiline
'v'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'i'           Comment.Multiline
'a'           Comment.Multiline
'b'           Comment.Multiline
'l'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'.'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'D'           Comment.Multiline
'o'           Comment.Multiline
'e'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'd'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
't'           Comment.Multiline
'i'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
'.'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'Root'        Name
' '           Text
'('           Punctuation
'Const'       Name
'('           Punctuation
'cid'         Name
')'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'SOME'        Name
'('           Punctuation
'cid'         Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'Pi'          Name
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'Root'        Name
' '           Text
'('           Punctuation
'Def'         Name
'('           Punctuation
'cid'         Name
')'           Punctuation
','           Punctuation
' '           Text
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'('           Punctuation
'constDef'    Name
' '           Text
'cid'         Name
')'           Punctuation
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'Redex'       Name
' '           Text
'('           Punctuation
'V'           Name
','           Punctuation
' '           Text
'S'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'Lam'         Name
' '           Text
'('           Punctuation
'_'           Punctuation
','           Punctuation
' '           Text
'V'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'EVar'        Name
' '           Text
'('           Punctuation
'ref'         Name
' '           Text
'('           Punctuation
'SOME'        Name
'('           Punctuation
'V'           Name
')'           Punctuation
')'           Punctuation
','           Punctuation
'_'           Punctuation
','           Punctuation
'_'           Punctuation
','           Punctuation
'_'           Punctuation
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'('           Punctuation
'EClo'        Name
' '           Text
'('           Punctuation
'V'           Name
','           Punctuation
' '           Text
's'           Name
')'           Punctuation
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'targetFamOpt' Name
' '           Text
'V'           Name
'\n    '      Text
'|'           Punctuation
' '           Text
'targetFamOpt' Name.Function
' '           Text
'_'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'NONE'        Name
'\n      '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'B'           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'F'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'C'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'E'           Comment.Multiline
'V'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'('           Comment.Multiline
'r'           Comment.Multiline
'e'           Comment.Multiline
'f'           Comment.Multiline
' '           Comment.Multiline
'N'           Comment.Multiline
'O'           Comment.Multiline
'N'           Comment.Multiline
'E'           Comment.Multiline
','           Comment.Multiline
'.'           Comment.Multiline
'.'           Comment.Multiline
')'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'U'           Comment.Multiline
'n'           Comment.Multiline
'i'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'F'           Comment.Multiline
'g'           Comment.Multiline
'n'           Comment.Multiline
'E'           Comment.Multiline
'x'           Comment.Multiline
'p'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n      '    Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'R'           Comment.Multiline
'o'           Comment.Multiline
'o'           Comment.Multiline
't'           Comment.Multiline
'('           Comment.Multiline
'S'           Comment.Multiline
'k'           Comment.Multiline
'o'           Comment.Multiline
'n'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'_'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'c'           Comment.Multiline
'a'           Comment.Multiline
'n'           Comment.Multiline
"'"           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'o'           Comment.Multiline
'c'           Comment.Multiline
'c'           Comment.Multiline
'u'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'(*'          Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'F'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
' '           Comment.Multiline
'('           Comment.Multiline
'A'           Comment.Multiline
')'           Comment.Multiline
' '           Comment.Multiline
'='           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
's'           Comment.Multiline
' '           Comment.Multiline
'i'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'a'           Comment.Multiline
'r'           Comment.Multiline
'g'           Comment.Multiline
'e'           Comment.Multiline
't'           Comment.Multiline
'F'           Comment.Multiline
'a'           Comment.Multiline
'm'           Comment.Multiline
'O'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
','           Comment.Multiline
' '           Comment.Multiline
'e'           Comment.Multiline
'x'           Comment.Multiline
'c'           Comment.Multiline
'e'           Comment.Multiline
'p'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'V'           Comment.Multiline
' '           Comment.Multiline
'm'           Comment.Multiline
'u'           Comment.Multiline
's'           Comment.Multiline
't'           Comment.Multiline
' '           Comment.Multiline
'b'           Comment.Multiline
'e'           Comment.Multiline
' '           Comment.Multiline
'a'           Comment.Multiline
' '           Comment.Multiline
'v'           Comment.Multiline
'a'           Comment.Multiline
'l'           Comment.Multiline
'i'           Comment.Multiline
'd'           Comment.Multiline
' '           Comment.Multiline
't'           Comment.Multiline
'y'           Comment.Multiline
'p'           Comment.Multiline
'e'           Comment.Multiline
'\n'          Comment.Multiline

' '           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n  '        Text
'fun'         Keyword.Reserved
' '           Text
'targetFam'   Name.Function
' '           Text
'('           Punctuation
'A'           Name
')'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'valOf'       Name
' '           Text
'('           Punctuation
'targetFamOpt' Name
' '           Text
'A'           Name
')'           Punctuation
'\n                      \n' Text

'end'         Keyword.Reserved
';'           Punctuation
'  '          Text
'(*'          Comment.Multiline
' '           Comment.Multiline
'f'           Comment.Multiline
'u'           Comment.Multiline
'n'           Comment.Multiline
'c'           Comment.Multiline
't'           Comment.Multiline
'o'           Comment.Multiline
'r'           Comment.Multiline
' '           Comment.Multiline
'I'           Comment.Multiline
'n'           Comment.Multiline
't'           Comment.Multiline
'S'           Comment.Multiline
'y'           Comment.Multiline
'n'           Comment.Multiline
' '           Comment.Multiline
'*)'          Comment.Multiline
'\n\n'        Text

'structure'   Keyword.Reserved
' '           Text
'IntSyn'      Name.Namespace
' '           Text
':>'          Punctuation
' '           Text
'INTSYN'      Name
' '           Text
'='           Punctuation
'\n  '        Text
'IntSyn'      Name
' '           Text
'('           Punctuation
'structure'   Keyword.Reserved
' '           Text
'Global'      Name.Namespace
' '           Text
'='           Punctuation
' '           Text
'Global'      Name
')'           Punctuation
';'           Punctuation
'\n'          Text
