# 14 "lexer.mll" open Lexing open Parser open Positions (* This wrapper saves the current lexeme start, invokes its argument, and restores it. This allows transmitting better positions to the parser. *) let savestart lexbuf f = let startp = lexbuf.lex_start_p in let token = f lexbuf in lexbuf.lex_start_p <- startp; token (* Updates the line counter, which is used in some error messages. *) let update_loc lexbuf = let pos = lexbuf.lex_curr_p in lexbuf.lex_curr_p <- { pos with pos_lnum = pos.pos_lnum + 1; pos_bol = pos.pos_cnum; } (* Extracts a chunk out of the source file. *) let chunk ofs1 ofs2 = let len = ofs2 - ofs1 in let c = Error.get_file() in let p = pos_in c in seek_in c ofs1; let buffer = String.create len in really_input c buffer 0 len; seek_in c p; buffer (* Extracts a chunk out of the source file, delimited by one position and extending to the end of the file. *) let echunk ofs1 = let c = Error.get_file() in chunk ofs1 (in_channel_length c) (* Overwrites an old character with a new one at a specified offset in a string. *) let overwrite content offset c1 c2 = assert (content.[offset] = c1); content.[offset] <- c2 (* Creates a stretch. *) let mk_stretch parenthesize pos1 pos2 pkeywords = let ofs1 = pos1.pos_cnum and ofs2 = pos2.pos_cnum in let raw_content = chunk ofs1 ofs2 in let content = String.copy raw_content in (* Turn our keywords into valid Objective Caml identifiers by replacing '$', '(', and ')' with '_'. Bloody. *) List.iter (function { value = keyword; position = pos } -> let pos = start_of_position pos in let ofs = pos.pos_cnum - ofs1 in overwrite content ofs '$' '_'; match keyword with | Keyword.Dollar _ | Keyword.Position (Keyword.Left, _, _) | Keyword.PreviousError -> () | Keyword.SyntaxError -> (* $syntaxerror is replaced with (raise _eRR) *) let source = "(raise _eRR)" in String.blit source 0 content ofs (String.length source) | Keyword.Position (subject, where, _) -> let ofslpar = match where with | Keyword.WhereStart -> ofs + 9 | Keyword.WhereEnd -> ofs + 7 in overwrite content ofslpar '(' '_'; match subject with | Keyword.Left -> assert false | Keyword.RightDollar i -> overwrite content (ofslpar + 1) '$' '_'; overwrite content (ofslpar + 2 + String.length (string_of_int i)) ')' '_' | Keyword.RightNamed id -> overwrite content (ofslpar + 1 + String.length id) ')' '_' ) pkeywords; (* Add whitespace so that the column numbers match those of the source file. If requested, add parentheses so that the semantic action can be inserted into other code without ambiguity. *) let content = if parenthesize then (String.make (pos1.pos_cnum - pos1.pos_bol - 1) ' ') ^ "(" ^ content ^ ")" else (String.make (pos1.pos_cnum - pos1.pos_bol) ' ') ^ content in { Stretch.stretch_filename = Error.get_basename(); Stretch.stretch_linenum = pos1.pos_lnum; Stretch.stretch_linecount = pos2.pos_lnum - pos1.pos_lnum; Stretch.stretch_content = content; Stretch.stretch_raw_content = raw_content; Stretch.stretch_keywords = pkeywords } (* Translates the family of position-related keywords to abstract syntax. *) let mk_keyword lexbuf w f n id = let where = match w with | Some _ -> Keyword.WhereStart | None -> Keyword.WhereEnd and flavor = match f with | Some _ -> Keyword.FlavorPosition | None -> Keyword.FlavorOffset and subject = match n, id with | Some n, None -> Keyword.RightDollar (int_of_string n) | None, Some id -> Keyword.RightNamed id | None, None -> Keyword.Left | Some _, Some _ -> assert false in let keyword = Keyword.Position (subject, where, flavor) in with_cpos lexbuf keyword (* Objective Caml's reserved words. *) let reserved = let table = Hashtbl.create 149 in List.iter (fun word -> Hashtbl.add table word ()) [ "and"; "as"; "assert"; "begin"; "class"; "constraint"; "do"; "done"; "downto"; "else"; "end"; "exception"; "external"; "false"; "for"; "fun"; "function"; "functor"; "if"; "in"; "include"; "inherit"; "initializer"; "lazy"; "let"; "match"; "method"; "module"; "mutable"; "new"; "object"; "of"; "open"; "or"; "parser"; "private"; "rec"; "sig"; "struct"; "then"; "to"; "true"; "try"; "type"; "val"; "virtual"; "when"; "while"; "with"; "mod"; "land"; "lor"; "lxor"; "lsl"; "lsr"; "asr"; ]; table # 208 "lexer.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\225\255\226\255\227\255\229\255\003\000\001\000\233\255\ \003\000\209\000\161\001\236\255\237\255\238\255\239\255\240\255\ \004\000\242\255\243\255\244\255\020\000\228\255\245\255\016\000\ \030\000\013\000\020\000\028\000\036\000\027\000\027\000\033\000\ \040\000\032\000\255\255\044\000\254\255\044\000\033\000\253\255\ \047\000\047\000\036\000\252\255\043\000\057\000\040\000\041\000\ \046\000\059\000\251\255\062\000\046\000\045\000\250\255\048\000\ \065\000\063\000\066\000\249\255\058\000\062\000\069\000\248\255\ \072\000\061\000\070\000\056\000\072\000\060\000\247\255\067\000\ \071\000\067\000\077\000\246\255\230\255\231\255\011\000\004\000\ \012\000\001\000\005\000\036\001\006\000\007\000\002\000\096\001\ \007\000\113\002\009\000\054\000\066\000\071\000\066\000\034\001\ \073\000\087\000\071\000\070\000\077\000\088\000\080\000\100\000\ \012\000\084\002\167\002\062\001\245\001\251\255\251\255\132\000\ \013\000\090\003\172\003\072\001\006\002\251\255\251\255\153\000\ \173\000\151\000\171\000\159\000\186\000\190\000\189\000\233\000\ \223\000\234\000\237\000\234\000\015\000\095\004\177\004\016\002\ \033\002\251\255\251\255\235\000\016\000\100\005\182\005\242\002\ \043\003\251\255\251\255\250\000\234\000\248\000\244\000\239\000\ \242\000\001\001\245\000\246\000\250\000\249\000\172\006\008\000\ \247\003\049\000\250\000\021\001\018\001\119\003\028\001\043\001\ \027\001\026\001\032\001\066\001\089\001\105\001\052\000\137\006\ \237\006\045\004\131\004\107\001\053\000\160\007\242\007\252\004\ \054\005\107\001\127\001\105\001\151\001\139\001\140\001\144\001\ \143\001\184\001\176\001\183\001\178\001\175\001\054\000\165\008\ \247\008\129\005\008\006\176\001\056\000\170\009\252\009\052\006\ \142\006\203\001\187\001\201\001\196\001\191\001\194\001\230\001\ \218\001\219\001\223\001\221\001\242\010\009\000\038\002\050\002\ \243\010\010\000\216\002\013\000\172\010\000\000\168\002\053\002\ \123\010\054\002\239\010\166\006\170\002\055\002\056\002\212\006\ \113\002\006\011\132\002"; Lexing.lex_backtrk = "\255\255\255\255\255\255\255\255\255\255\023\000\022\000\255\255\ \030\000\021\000\020\000\255\255\255\255\255\255\255\255\255\255\ \014\000\255\255\255\255\255\255\030\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\022\000\ \255\255\003\000\000\000\255\255\003\000\005\000\005\000\255\255\ \010\000\012\000\002\000\012\000\255\255\255\255\255\255\003\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \004\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \004\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\004\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\004\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\010\000\ \012\000\000\000\255\255\255\255\255\255\003\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\004\000\255\255\ \255\255\255\255\255\255\255\255\004\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\004\000\255\255\ \255\255\255\255\255\255\255\255\004\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\004\000\006\000\006\000\ \255\255\001\000\004\000\001\000\001\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255"; Lexing.lex_default = "\001\000\000\000\000\000\000\000\000\000\255\255\255\255\000\000\ \255\255\255\255\255\255\000\000\000\000\000\000\000\000\000\000\ \255\255\000\000\000\000\000\000\255\255\000\000\000\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\255\255\000\000\255\255\255\255\000\000\ \255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\255\255\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\000\000\255\255\255\255\255\255\000\000\ \255\255\255\255\255\255\255\255\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\000\000\000\000\000\000\078\000\255\255\ \043\000\255\255\255\255\054\000\255\255\255\255\255\255\018\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\000\000\000\000\255\255\ \255\255\255\255\255\255\255\255\255\255\000\000\000\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\018\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\059\000\255\255\255\255\255\255\ \050\000\255\255\039\000\255\255\229\000\255\255\255\255\255\255\ \233\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\005\000\007\000\007\000\005\000\006\000\007\000\034\000\ \043\000\022\000\022\000\050\000\036\000\007\000\034\000\036\000\ \079\000\082\000\000\000\000\000\000\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\000\000\020\000\000\000\036\000\ \016\000\015\000\012\000\011\000\018\000\077\000\076\000\008\000\ \036\000\039\000\078\000\075\000\105\000\113\000\081\000\133\000\ \141\000\022\000\019\000\005\000\004\000\017\000\005\000\013\000\ \034\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\075\000\175\000\181\000\199\000\010\000\ \205\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\003\000\014\000\023\000\071\000\055\000\ \028\000\051\000\026\000\044\000\024\000\040\000\027\000\025\000\ \029\000\037\000\031\000\035\000\032\000\033\000\034\000\021\000\ \057\000\036\000\038\000\056\000\030\000\039\000\041\000\042\000\ \043\000\045\000\046\000\047\000\048\000\049\000\050\000\052\000\ \053\000\054\000\064\000\060\000\058\000\059\000\061\000\062\000\ \063\000\065\000\066\000\067\000\068\000\069\000\070\000\072\000\ \073\000\074\000\075\000\036\000\147\000\127\000\097\000\119\000\ \098\000\099\000\100\000\096\000\101\000\102\000\111\000\103\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\104\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\112\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \002\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\255\255\039\000\120\000\121\000\122\000\ \123\000\124\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\125\000\126\000\043\000\059\000\ \009\000\084\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\085\000\128\000\129\000\130\000\ \139\000\086\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\131\000\132\000\140\000\148\000\ \149\000\150\000\036\000\151\000\152\000\153\000\154\000\155\000\ \156\000\157\000\022\000\054\000\209\000\088\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\108\000\108\000\108\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \116\000\116\000\063\000\193\000\089\000\091\000\167\000\070\000\ \090\000\019\000\185\000\166\000\168\000\169\000\170\000\171\000\ \172\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \179\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \173\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\034\000\174\000\036\000\180\000\186\000\ \187\000\188\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\189\000\190\000\191\000\192\000\ \010\000\059\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\194\000\203\000\109\000\195\000\ \196\000\197\000\198\000\204\000\050\000\108\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\108\000\108\000\117\000\ \210\000\211\000\212\000\213\000\214\000\215\000\116\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \136\000\136\000\136\000\136\000\136\000\136\000\136\000\136\000\ \136\000\136\000\137\000\216\000\217\000\218\000\219\000\054\000\ \036\000\136\000\136\000\136\000\136\000\136\000\136\000\136\000\ \136\000\136\000\136\000\034\000\034\000\036\000\034\000\034\000\ \019\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \107\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \036\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\036\000\000\000\000\000\000\000\000\000\ \000\000\000\000\238\000\106\000\238\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\034\000\ \110\000\034\000\000\000\000\000\000\000\000\000\093\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\092\000\036\000\000\000\094\000\227\000\000\000\000\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\000\000\000\000\000\000\000\000\106\000\000\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\144\000\144\000\144\000\144\000\144\000\144\000\ \144\000\144\000\144\000\144\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\000\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\145\000\000\000\000\000\000\000\ \000\000\000\000\000\000\144\000\144\000\144\000\144\000\144\000\ \144\000\144\000\144\000\144\000\144\000\000\000\000\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\115\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\000\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\165\000\ \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ \165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\114\000\000\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\118\000\000\000\000\000\ \255\255\000\000\000\000\000\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\000\000\ \000\000\000\000\000\000\114\000\000\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\165\000\ \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ \165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\000\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\000\000\000\000\163\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\178\000\178\000\162\000\ \000\000\000\000\164\000\000\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\135\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\000\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\109\000\000\000\000\000\000\000\ \000\000\000\000\000\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\000\000\134\000\000\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\138\000\000\000\000\000\000\000\000\000\000\000\ \000\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\000\000\000\000\000\000\000\000\ \134\000\000\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\000\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\117\000\ \000\000\000\000\000\000\000\000\000\000\000\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \000\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \143\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \000\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\202\000\202\000\202\000\202\000\202\000\202\000\202\000\ \202\000\202\000\202\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\142\000\000\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\146\000\ \000\000\000\000\000\000\000\000\000\000\000\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\000\000\000\000\000\000\000\000\142\000\000\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\137\000\000\000\000\000\000\000\000\000\000\000\000\000\ \202\000\202\000\202\000\202\000\202\000\202\000\202\000\202\000\ \202\000\202\000\000\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\000\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\208\000\208\000\208\000\208\000\ \208\000\208\000\208\000\208\000\208\000\208\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\000\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\177\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\022\000\145\000\ \000\000\159\000\000\000\000\000\000\000\000\000\208\000\208\000\ \208\000\208\000\208\000\208\000\208\000\208\000\208\000\208\000\ \000\000\000\000\000\000\000\000\000\000\036\000\063\000\000\000\ \160\000\000\000\000\000\070\000\161\000\036\000\239\000\239\000\ \239\000\239\000\239\000\239\000\239\000\239\000\239\000\239\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \176\000\000\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\240\000\240\000\240\000\240\000\ \240\000\240\000\240\000\240\000\240\000\240\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\110\000\000\000\ \000\000\000\000\000\000\000\000\000\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\039\000\ \000\000\019\000\000\000\000\000\000\000\000\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \000\000\000\000\000\000\000\000\176\000\000\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \000\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\019\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\183\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\000\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\182\000\ \000\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\118\000\000\000\000\000\000\000\000\000\ \000\000\000\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\000\000\000\000\000\000\ \000\000\182\000\000\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\000\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\201\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\000\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\200\000\000\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \138\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\000\000\000\000\000\000\000\000\200\000\000\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\000\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\207\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\000\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\206\000\000\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\146\000\000\000\000\000\ \000\000\000\000\000\000\000\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\000\000\ \000\000\000\000\000\000\206\000\000\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\237\000\000\000\000\000\ \236\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\000\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\000\000\235\000\235\000\235\000\235\000\235\000\ \235\000\235\000\235\000\235\000\235\000\000\000\231\000\000\000\ \000\000\230\000\000\000\000\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\255\255\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\234\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\050\000\036\000\000\000\221\000\ \225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\039\000\034\000\036\000\000\000\ \000\000\043\000\222\000\000\000\223\000\000\000\000\000\241\000\ \241\000\241\000\241\000\241\000\241\000\241\000\241\000\241\000\ \241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \241\000\241\000\241\000\241\000\241\000\241\000\242\000\242\000\ \242\000\242\000\242\000\242\000\242\000\242\000\242\000\242\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\ \242\000\242\000\242\000\242\000\242\000\000\000\000\000\226\000\ \241\000\241\000\241\000\241\000\241\000\241\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\ \242\000\242\000\242\000\242\000\242\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\255\255\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\255\255\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\054\000\043\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\006\000\005\000\000\000\079\000\082\000\ \084\000\088\000\159\000\221\000\225\000\078\000\080\000\227\000\ \078\000\080\000\255\255\255\255\255\255\255\255\255\255\255\255\ \000\000\255\255\255\255\005\000\255\255\000\000\255\255\229\000\ \000\000\000\000\000\000\000\000\000\000\008\000\016\000\000\000\ \081\000\085\000\008\000\090\000\104\000\112\000\080\000\132\000\ \140\000\020\000\000\000\000\000\000\000\000\000\005\000\000\000\ \086\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\161\000\174\000\180\000\198\000\000\000\ \204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\020\000\023\000\024\000\ \020\000\025\000\020\000\026\000\020\000\027\000\020\000\020\000\ \020\000\028\000\029\000\030\000\031\000\032\000\033\000\020\000\ \024\000\035\000\037\000\024\000\029\000\038\000\040\000\041\000\ \042\000\044\000\045\000\046\000\047\000\048\000\049\000\051\000\ \052\000\053\000\055\000\056\000\057\000\058\000\060\000\061\000\ \062\000\064\000\065\000\066\000\067\000\068\000\069\000\071\000\ \072\000\073\000\074\000\091\000\092\000\093\000\094\000\096\000\ \097\000\098\000\099\000\094\000\100\000\100\000\101\000\102\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\103\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\111\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\078\000\080\000\119\000\120\000\121\000\ \122\000\123\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\124\000\125\000\083\000\126\000\ \009\000\083\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\083\000\127\000\128\000\128\000\ \129\000\083\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\130\000\131\000\139\000\147\000\ \148\000\149\000\083\000\150\000\151\000\152\000\153\000\154\000\ \155\000\156\000\087\000\157\000\162\000\087\000\107\000\107\000\ \107\000\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\115\000\087\000\163\000\087\000\087\000\164\000\087\000\ \087\000\087\000\166\000\164\000\167\000\168\000\169\000\170\000\ \170\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \171\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \172\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\ \009\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\087\000\173\000\087\000\179\000\185\000\ \186\000\187\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\188\000\189\000\190\000\191\000\ \010\000\192\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\193\000\195\000\108\000\194\000\ \194\000\196\000\197\000\203\000\083\000\108\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\108\000\108\000\116\000\ \209\000\210\000\211\000\212\000\213\000\214\000\116\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \135\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ \135\000\135\000\136\000\215\000\216\000\217\000\218\000\219\000\ \222\000\136\000\136\000\136\000\136\000\136\000\136\000\136\000\ \136\000\136\000\136\000\223\000\231\000\233\000\237\000\238\000\ \087\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \105\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \240\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \010\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\242\000\255\255\255\255\255\255\255\255\ \255\255\255\255\230\000\105\000\236\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\230\000\ \106\000\236\000\255\255\255\255\255\255\255\255\089\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\089\000\226\000\255\255\089\000\226\000\255\255\255\255\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\255\255\255\255\255\255\255\255\106\000\255\255\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\143\000\143\000\143\000\143\000\143\000\143\000\ \143\000\143\000\143\000\143\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\255\255\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\144\000\255\255\255\255\255\255\ \255\255\255\255\255\255\144\000\144\000\144\000\144\000\144\000\ \144\000\144\000\144\000\144\000\144\000\255\255\255\255\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\113\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\255\255\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\165\000\ \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ \165\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\113\000\255\255\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\114\000\255\255\255\255\ \226\000\255\255\255\255\255\255\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\255\255\ \255\255\255\255\255\255\114\000\255\255\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\160\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ \160\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\255\255\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\255\255\255\255\160\000\177\000\177\000\177\000\ \177\000\177\000\177\000\177\000\177\000\177\000\177\000\160\000\ \255\255\255\255\160\000\255\255\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\133\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\255\255\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\178\000\255\255\255\255\255\255\ \255\255\255\255\255\255\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\178\000\178\000\255\255\133\000\255\255\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\134\000\255\255\255\255\255\255\255\255\255\255\ \255\255\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\255\255\255\255\255\255\255\255\ \134\000\255\255\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\183\000\183\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\255\255\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\184\000\ \255\255\255\255\255\255\255\255\255\255\255\255\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\184\000\184\000\ \255\255\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \141\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \255\255\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\201\000\201\000\201\000\201\000\201\000\201\000\201\000\ \201\000\201\000\201\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\141\000\255\255\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\142\000\ \255\255\255\255\255\255\255\255\255\255\255\255\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\255\255\255\255\255\255\255\255\142\000\255\255\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\202\000\255\255\255\255\255\255\255\255\255\255\255\255\ \202\000\202\000\202\000\202\000\202\000\202\000\202\000\202\000\ \202\000\202\000\255\255\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\255\255\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\207\000\207\000\207\000\207\000\ \207\000\207\000\207\000\207\000\207\000\207\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\255\255\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\175\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\158\000\208\000\ \255\255\158\000\255\255\255\255\255\255\255\255\208\000\208\000\ \208\000\208\000\208\000\208\000\208\000\208\000\208\000\208\000\ \255\255\255\255\255\255\255\255\255\255\235\000\158\000\255\255\ \158\000\255\255\255\255\158\000\158\000\158\000\235\000\235\000\ \235\000\235\000\235\000\235\000\235\000\235\000\235\000\235\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \175\000\255\255\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\239\000\239\000\239\000\239\000\ \239\000\239\000\239\000\239\000\239\000\239\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\176\000\255\255\ \255\255\255\255\255\255\255\255\255\255\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\158\000\ \255\255\158\000\255\255\255\255\255\255\255\255\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \255\255\255\255\255\255\255\255\176\000\255\255\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \255\255\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\158\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\181\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\255\255\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\181\000\ \255\255\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\182\000\255\255\255\255\255\255\255\255\ \255\255\255\255\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\255\255\255\255\255\255\ \255\255\182\000\255\255\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\255\255\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\199\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\255\255\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\199\000\255\255\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \200\000\255\255\255\255\255\255\255\255\255\255\255\255\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\255\255\255\255\255\255\255\255\200\000\255\255\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\255\255\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\205\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\255\255\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\205\000\255\255\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\206\000\255\255\255\255\ \255\255\255\255\255\255\255\255\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\255\255\ \255\255\255\255\255\255\206\000\255\255\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\232\000\255\255\255\255\ \232\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\255\255\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\255\255\232\000\232\000\232\000\232\000\232\000\ \232\000\232\000\232\000\232\000\232\000\255\255\228\000\255\255\ \255\255\228\000\255\255\255\255\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\228\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\232\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\220\000\224\000\255\255\220\000\ \224\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \228\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\220\000\224\000\234\000\255\255\ \255\255\220\000\220\000\255\255\220\000\255\255\255\255\234\000\ \234\000\234\000\234\000\234\000\234\000\234\000\234\000\234\000\ \234\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \234\000\234\000\234\000\234\000\234\000\234\000\241\000\241\000\ \241\000\241\000\241\000\241\000\241\000\241\000\241\000\241\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\241\000\ \241\000\241\000\241\000\241\000\241\000\255\255\255\255\224\000\ \234\000\234\000\234\000\234\000\234\000\234\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\241\000\ \241\000\241\000\241\000\241\000\241\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\232\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\228\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\220\000\224\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255"; Lexing.lex_base_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\022\000\097\000\000\000\011\000\037\000\052\000\000\000\ \001\000\020\001\095\001\021\000\031\000\078\000\091\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\003\000\002\000\018\002\093\002\041\000\ \053\000\118\000\131\000\000\000\003\000\016\003\091\003\172\000\ \182\000\153\000\164\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\039\000\000\000\000\000\000\000\041\000\004\000\014\004\ \089\004\230\000\049\001\000\000\005\000\012\005\087\005\170\001\ \180\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\011\000\000\000\000\000\000\000\042\000\006\000\010\006\ \085\006\228\001\047\002\000\000\007\000\008\007\083\007\168\002\ \178\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \067\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\107\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\000\ \000\000\000\000\000\000\000\000\067\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\107\000\000\000\ \000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\ \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\028\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\104\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\104\000\ \000\000\000\000\000\000\009\000\004\000\031\000\009\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\004\000\009\000\009\000\000\000\000\000\ \000\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\000\000\000\000\000\000\ \031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \028\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\031\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\000\000\000\000\000\000\031\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\000\000\000\000\ \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\028\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\000\000\000\000\000\000\000\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\028\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\000\000\ \000\000\000\000\031\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\028\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\031\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\000\000\000\000\000\000\ \031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \028\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\031\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\000\000\000\000\000\000\031\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\028\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\028\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\ \000\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\000\000\ \000\000\000\000\031\000\000\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\000\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\087\000\158\000\255\255\255\255\ \104\000\112\000\132\000\140\000\174\000\180\000\198\000\204\000\ \107\000\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \107\000\107\000\105\000\108\000\108\000\108\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\115\000\115\000\115\000\ \115\000\115\000\115\000\115\000\115\000\115\000\115\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \116\000\135\000\135\000\135\000\135\000\135\000\135\000\135\000\ \135\000\135\000\135\000\255\255\127\000\136\000\136\000\136\000\ \136\000\136\000\136\000\136\000\136\000\136\000\136\000\193\000\ \255\255\255\255\255\255\103\000\099\000\105\000\131\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\169\000\173\000\197\000\255\255\255\255\ \255\255\255\255\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\255\255\255\255\255\255\255\255\ \106\000\255\255\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\143\000\143\000\143\000\143\000\ \143\000\143\000\143\000\143\000\143\000\143\000\144\000\144\000\ \144\000\144\000\144\000\144\000\144\000\144\000\144\000\144\000\ \255\255\255\255\255\255\255\255\255\255\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\255\255\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\177\000\177\000\ \177\000\177\000\177\000\177\000\177\000\177\000\177\000\177\000\ \255\255\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \113\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \255\255\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\178\000\178\000\178\000\178\000\178\000\178\000\178\000\ \178\000\178\000\178\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\113\000\255\255\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\255\255\255\255\255\255\255\255\114\000\255\255\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\183\000\183\000\183\000\183\000\183\000\183\000\ \183\000\183\000\183\000\183\000\184\000\184\000\184\000\184\000\ \184\000\184\000\184\000\184\000\184\000\184\000\255\255\255\255\ \255\255\255\255\255\255\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\255\255\113\000\113\000\113\000\113\000\ \113\000\113\000\113\000\113\000\201\000\201\000\201\000\201\000\ \201\000\201\000\201\000\201\000\201\000\201\000\255\255\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\133\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\255\255\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\202\000\ \202\000\202\000\202\000\202\000\202\000\202\000\202\000\202\000\ \202\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\133\000\255\255\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \255\255\255\255\255\255\255\255\134\000\255\255\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \207\000\207\000\207\000\207\000\207\000\207\000\207\000\207\000\ \207\000\207\000\208\000\208\000\208\000\208\000\208\000\208\000\ \208\000\208\000\208\000\208\000\255\255\255\255\255\255\255\255\ \255\255\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\255\255\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\141\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\255\255\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\141\000\ \255\255\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\255\255\255\255\ \255\255\255\255\142\000\255\255\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\255\255\ \141\000\141\000\141\000\141\000\141\000\141\000\141\000\141\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\175\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\255\255\142\000\142\000\142\000\142\000\142\000\ \142\000\142\000\142\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\175\000\255\255\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\255\255\255\255\255\255\255\255\ \176\000\255\255\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\255\255\175\000\175\000\ \175\000\175\000\175\000\175\000\175\000\175\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \181\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \255\255\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\181\000\255\255\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\255\255\255\255\255\255\255\255\182\000\255\255\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\255\255\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\199\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\255\255\182\000\ \182\000\182\000\182\000\182\000\182\000\182\000\182\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\199\000\255\255\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \255\255\255\255\255\255\255\255\200\000\255\255\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\255\255\199\000\199\000\199\000\199\000\199\000\199\000\ \199\000\199\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\205\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\255\255\200\000\200\000\200\000\ \200\000\200\000\200\000\200\000\200\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\205\000\ \255\255\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\255\255\255\255\ \255\255\255\255\206\000\255\255\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\255\255\ \205\000\205\000\205\000\205\000\205\000\205\000\205\000\205\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\255\255\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\255\255\206\000\206\000\206\000\206\000\206\000\ \206\000\206\000\206\000\255\255"; Lexing.lex_code = "\255\008\255\255\010\255\009\255\255\011\255\255\005\255\003\255\ \007\008\006\010\001\009\000\011\255\012\255\255\014\255\255\013\ \255\255\015\255\255\003\255\007\008\006\010\005\014\004\015\001\ \009\000\011\255\005\255\007\008\006\010\003\012\002\013\001\009\ \000\011\255\005\255\003\255\001\255\007\008\006\010\255\003\255\ \001\255\007\008\006\010\005\014\004\015\255\005\255\001\255\007\ \008\006\010\003\012\002\013\255\009\255\255\007\255\005\255\003\ \255\001\009\000\011\255\007\255\003\255\005\014\004\015\001\009\ \000\011\255\007\255\005\255\003\012\002\013\001\009\000\011\255\ \007\255\005\255\003\255\001\255\255\007\255\003\255\001\255\005\ \014\004\015\255\007\255\005\255\001\255\003\012\002\013\255"; } let rec main lexbuf = __ocaml_lex_main_rec lexbuf 0 and __ocaml_lex_main_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 246 "lexer.mll" ( TOKEN ) # 1731 "lexer.ml" | 1 -> # 248 "lexer.mll" ( TYPE ) # 1736 "lexer.ml" | 2 -> # 250 "lexer.mll" ( LEFT ) # 1741 "lexer.ml" | 3 -> # 252 "lexer.mll" ( RIGHT ) # 1746 "lexer.ml" | 4 -> # 254 "lexer.mll" ( NONASSOC ) # 1751 "lexer.ml" | 5 -> # 256 "lexer.mll" ( START ) # 1756 "lexer.ml" | 6 -> # 258 "lexer.mll" ( PREC ) # 1761 "lexer.ml" | 7 -> # 260 "lexer.mll" ( PUBLIC ) # 1766 "lexer.ml" | 8 -> # 262 "lexer.mll" ( PARAMETER ) # 1771 "lexer.ml" | 9 -> # 264 "lexer.mll" ( INLINE ) # 1776 "lexer.ml" | 10 -> # 266 "lexer.mll" ( let ofs = lexeme_end lexbuf in PERCENTPERCENT (lazy (echunk ofs)) ) # 1782 "lexer.ml" | 11 -> # 269 "lexer.mll" ( COLON ) # 1787 "lexer.ml" | 12 -> # 271 "lexer.mll" ( COMMA ) # 1792 "lexer.ml" | 13 -> # 273 "lexer.mll" ( EQUAL ) # 1797 "lexer.ml" | 14 -> # 275 "lexer.mll" ( LPAREN ) # 1802 "lexer.ml" | 15 -> # 277 "lexer.mll" ( RPAREN ) # 1807 "lexer.ml" | 16 -> # 279 "lexer.mll" ( BAR ) # 1812 "lexer.ml" | 17 -> # 281 "lexer.mll" ( QUESTION ) # 1817 "lexer.ml" | 18 -> # 283 "lexer.mll" ( STAR ) # 1822 "lexer.ml" | 19 -> # 285 "lexer.mll" ( PLUS ) # 1827 "lexer.ml" | 20 -> let id = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 287 "lexer.mll" ( if Hashtbl.mem reserved id then Error.errorp (Positions.with_poss (lexeme_start_p lexbuf) (lexeme_end_p lexbuf) ()) "this is an Objective Caml reserved word." else LID (with_pos (cpos lexbuf) id) ) # 1840 "lexer.ml" | 21 -> let id = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 295 "lexer.mll" ( UID (with_pos (cpos lexbuf) id) ) # 1847 "lexer.ml" | 22 -> # 298 "lexer.mll" ( update_loc lexbuf; main lexbuf ) # 1852 "lexer.ml" | 23 -> # 300 "lexer.mll" ( main lexbuf ) # 1857 "lexer.ml" | 24 -> # 302 "lexer.mll" ( comment (lexeme_start_p lexbuf) lexbuf; main lexbuf ) # 1862 "lexer.ml" | 25 -> # 304 "lexer.mll" ( ocamlcomment (lexeme_start_p lexbuf) lexbuf; main lexbuf ) # 1867 "lexer.ml" | 26 -> # 306 "lexer.mll" ( savestart lexbuf (ocamltype (lexeme_end_p lexbuf)) ) # 1872 "lexer.ml" | 27 -> # 308 "lexer.mll" ( savestart lexbuf (fun lexbuf -> let openingpos = lexeme_end_p lexbuf in let closingpos, _ = action true openingpos [] lexbuf in (* TEMPORARY if keyword list nonempty, issue an error *) HEADER (mk_stretch false openingpos closingpos []) ) ) # 1882 "lexer.ml" | 28 -> # 315 "lexer.mll" ( savestart lexbuf (fun lexbuf -> let openingpos = lexeme_end_p lexbuf in let closingpos, pkeywords = action false openingpos [] lexbuf in let stretch = mk_stretch true openingpos closingpos pkeywords in ACTION (Action.from_stretch stretch) ) ) # 1892 "lexer.ml" | 29 -> # 326 "lexer.mll" ( EOF ) # 1897 "lexer.ml" | 30 -> # 328 "lexer.mll" ( Error.error1 (lexeme_start_p lexbuf) "unexpected character(s)." ) # 1902 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_main_rec lexbuf __ocaml_lex_state and comment openingpos lexbuf = __ocaml_lex_comment_rec openingpos lexbuf 80 and __ocaml_lex_comment_rec openingpos lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 334 "lexer.mll" ( update_loc lexbuf; comment openingpos lexbuf ) # 1913 "lexer.ml" | 1 -> # 336 "lexer.mll" ( () ) # 1918 "lexer.ml" | 2 -> # 338 "lexer.mll" ( Error.error1 openingpos "unterminated comment." ) # 1923 "lexer.ml" | 3 -> # 340 "lexer.mll" ( comment openingpos lexbuf ) # 1928 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec openingpos lexbuf __ocaml_lex_state and ocamltype openingpos lexbuf = __ocaml_lex_ocamltype_rec openingpos lexbuf 83 and __ocaml_lex_ocamltype_rec openingpos lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 348 "lexer.mll" ( ocamltype openingpos lexbuf ) # 1939 "lexer.ml" | 1 -> # 350 "lexer.mll" ( OCAMLTYPE (Stretch.Declared (mk_stretch true openingpos (lexeme_start_p lexbuf) [])) ) # 1944 "lexer.ml" | 2 -> # 352 "lexer.mll" ( ocamlcomment (lexeme_start_p lexbuf) lexbuf; ocamltype openingpos lexbuf ) # 1949 "lexer.ml" | 3 -> # 354 "lexer.mll" ( update_loc lexbuf; ocamltype openingpos lexbuf ) # 1954 "lexer.ml" | 4 -> # 356 "lexer.mll" ( Error.error1 openingpos "unterminated Objective Caml type." ) # 1959 "lexer.ml" | 5 -> # 358 "lexer.mll" ( ocamltype openingpos lexbuf ) # 1964 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_ocamltype_rec openingpos lexbuf __ocaml_lex_state and action percent openingpos pkeywords lexbuf = lexbuf.Lexing.lex_mem <- Array.create 16 (-1) ; __ocaml_lex_action_rec percent openingpos pkeywords lexbuf 87 and __ocaml_lex_action_rec percent openingpos pkeywords lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 368 "lexer.mll" ( let _, pkeywords = action false (lexeme_end_p lexbuf) pkeywords lexbuf in action percent openingpos pkeywords lexbuf ) # 1976 "lexer.ml" | 1 -> let delimiter = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 371 "lexer.mll" ( match percent, delimiter with | true, "%}" | false, "}" -> (* This is the delimiter we were instructed to look for. *) lexeme_start_p lexbuf, pkeywords | _, _ -> (* This is not it. *) Error.error1 openingpos "unbalanced opening brace." ) # 1991 "lexer.ml" | 2 -> # 381 "lexer.mll" ( let _, pkeywords = parentheses (lexeme_end_p lexbuf) pkeywords lexbuf in action percent openingpos pkeywords lexbuf ) # 1997 "lexer.ml" | 3 -> let n = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_curr_pos in # 384 "lexer.mll" ( let pkeyword = with_cpos lexbuf (Keyword.Dollar (int_of_string n)) in action percent openingpos (pkeyword :: pkeywords) lexbuf ) # 2005 "lexer.ml" | 4 -> let w = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(7) lexbuf.Lexing.lex_mem.(6) and n = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(5) lexbuf.Lexing.lex_mem.(4) and id = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(3) lexbuf.Lexing.lex_mem.(2) and f = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(1) lexbuf.Lexing.lex_mem.(0) in # 387 "lexer.mll" ( let pkeyword = mk_keyword lexbuf w f n id in action percent openingpos (pkeyword :: pkeywords) lexbuf ) # 2016 "lexer.ml" | 5 -> # 390 "lexer.mll" ( let pkeyword = with_cpos lexbuf Keyword.PreviousError in action percent openingpos (pkeyword :: pkeywords) lexbuf ) # 2022 "lexer.ml" | 6 -> # 393 "lexer.mll" ( let pkeyword = with_cpos lexbuf Keyword.SyntaxError in action percent openingpos (pkeyword :: pkeywords) lexbuf ) # 2028 "lexer.ml" | 7 -> # 396 "lexer.mll" ( string (lexeme_start_p lexbuf) lexbuf; action percent openingpos pkeywords lexbuf ) # 2034 "lexer.ml" | 8 -> # 399 "lexer.mll" ( char lexbuf; action percent openingpos pkeywords lexbuf ) # 2040 "lexer.ml" | 9 -> # 402 "lexer.mll" ( ocamlcomment (lexeme_start_p lexbuf) lexbuf; action percent openingpos pkeywords lexbuf ) # 2046 "lexer.ml" | 10 -> # 405 "lexer.mll" ( update_loc lexbuf; action percent openingpos pkeywords lexbuf ) # 2052 "lexer.ml" | 11 -> # 409 "lexer.mll" ( Error.error1 openingpos "unbalanced opening brace." ) # 2057 "lexer.ml" | 12 -> # 411 "lexer.mll" ( action percent openingpos pkeywords lexbuf ) # 2062 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_action_rec percent openingpos pkeywords lexbuf __ocaml_lex_state and parentheses openingpos pkeywords lexbuf = lexbuf.Lexing.lex_mem <- Array.create 16 (-1) ; __ocaml_lex_parentheses_rec openingpos pkeywords lexbuf 158 and __ocaml_lex_parentheses_rec openingpos pkeywords lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 415 "lexer.mll" ( let _, pkeywords = parentheses (lexeme_end_p lexbuf) pkeywords lexbuf in parentheses openingpos pkeywords lexbuf ) # 2074 "lexer.ml" | 1 -> # 418 "lexer.mll" ( lexeme_start_p lexbuf, pkeywords ) # 2079 "lexer.ml" | 2 -> # 420 "lexer.mll" ( let _, pkeywords = action false (lexeme_end_p lexbuf) pkeywords lexbuf in parentheses openingpos pkeywords lexbuf ) # 2085 "lexer.ml" | 3 -> let n = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_curr_pos in # 423 "lexer.mll" ( let pkeyword = with_cpos lexbuf (Keyword.Dollar (int_of_string n)) in parentheses openingpos (pkeyword :: pkeywords) lexbuf ) # 2093 "lexer.ml" | 4 -> let w = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(7) lexbuf.Lexing.lex_mem.(6) and n = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(5) lexbuf.Lexing.lex_mem.(4) and id = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(3) lexbuf.Lexing.lex_mem.(2) and f = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(1) lexbuf.Lexing.lex_mem.(0) in # 426 "lexer.mll" ( let pkeyword = mk_keyword lexbuf w f n id in parentheses openingpos (pkeyword :: pkeywords) lexbuf ) # 2104 "lexer.ml" | 5 -> # 429 "lexer.mll" ( let pkeyword = with_cpos lexbuf Keyword.PreviousError in parentheses openingpos (pkeyword :: pkeywords) lexbuf ) # 2110 "lexer.ml" | 6 -> # 432 "lexer.mll" ( let pkeyword = with_cpos lexbuf Keyword.SyntaxError in parentheses openingpos (pkeyword :: pkeywords) lexbuf ) # 2116 "lexer.ml" | 7 -> # 435 "lexer.mll" ( string (lexeme_start_p lexbuf) lexbuf; parentheses openingpos pkeywords lexbuf ) # 2121 "lexer.ml" | 8 -> # 437 "lexer.mll" ( char lexbuf; parentheses openingpos pkeywords lexbuf ) # 2126 "lexer.ml" | 9 -> # 439 "lexer.mll" ( ocamlcomment (lexeme_start_p lexbuf) lexbuf; parentheses openingpos pkeywords lexbuf ) # 2131 "lexer.ml" | 10 -> # 441 "lexer.mll" ( update_loc lexbuf; parentheses openingpos pkeywords lexbuf ) # 2136 "lexer.ml" | 11 -> # 444 "lexer.mll" ( Error.error1 openingpos "unbalanced opening parenthesis." ) # 2141 "lexer.ml" | 12 -> # 446 "lexer.mll" ( parentheses openingpos pkeywords lexbuf ) # 2146 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_parentheses_rec openingpos pkeywords lexbuf __ocaml_lex_state and ocamlcomment openingpos lexbuf = __ocaml_lex_ocamlcomment_rec openingpos lexbuf 220 and __ocaml_lex_ocamlcomment_rec openingpos lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 456 "lexer.mll" ( () ) # 2157 "lexer.ml" | 1 -> # 458 "lexer.mll" ( ocamlcomment (lexeme_start_p lexbuf) lexbuf; ocamlcomment openingpos lexbuf ) # 2162 "lexer.ml" | 2 -> # 460 "lexer.mll" ( string (lexeme_start_p lexbuf) lexbuf; ocamlcomment openingpos lexbuf ) # 2167 "lexer.ml" | 3 -> # 462 "lexer.mll" ( char lexbuf; ocamlcomment openingpos lexbuf ) # 2172 "lexer.ml" | 4 -> # 464 "lexer.mll" ( update_loc lexbuf; ocamlcomment openingpos lexbuf ) # 2177 "lexer.ml" | 5 -> # 466 "lexer.mll" ( Error.error1 openingpos "unterminated Objective Caml comment." ) # 2182 "lexer.ml" | 6 -> # 468 "lexer.mll" ( ocamlcomment openingpos lexbuf ) # 2187 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_ocamlcomment_rec openingpos lexbuf __ocaml_lex_state and string openingpos lexbuf = __ocaml_lex_string_rec openingpos lexbuf 224 and __ocaml_lex_string_rec openingpos lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 474 "lexer.mll" ( () ) # 2198 "lexer.ml" | 1 -> # 477 "lexer.mll" ( update_loc lexbuf; string openingpos lexbuf ) # 2203 "lexer.ml" | 2 -> # 481 "lexer.mll" ( string openingpos lexbuf ) # 2208 "lexer.ml" | 3 -> # 483 "lexer.mll" ( Error.error1 openingpos "unterminated Objective Caml string." ) # 2213 "lexer.ml" | 4 -> # 485 "lexer.mll" ( string openingpos lexbuf ) # 2218 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec openingpos lexbuf __ocaml_lex_state and char lexbuf = __ocaml_lex_char_rec lexbuf 228 and __ocaml_lex_char_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 493 "lexer.mll" ( update_loc lexbuf ) # 2229 "lexer.ml" | 1 -> # 499 "lexer.mll" ( () ) # 2234 "lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_char_rec lexbuf __ocaml_lex_state ;;