structure Nlexer = struct (* # 14 "parser/nlexer.nl" *) open Misc open Nparser type error = Illegal_character | Unterminated_comment | Unterminated_string | Too_many_character exception Error of error * int * int (* For nested comments *) val comment_depth = ref 0 (* The table of keywords *) val keyword_table = create_hashtable 149 [ ("and", AND), ("as", AS), ("case", CASE), ("do", DO), ("else", ELSE), ("end", END), ("exception", EXCEPTION), ("fn", FN), ("for", FOR), ("fun", FUN), ("functor", FUNCTOR), ("handle", HANDLE), ("if", IF), ("in", IN), ("include", INCLUDE), ("let", LET), ("local", LOCAL), ("of", OF), ("open", OPEN), ("raise", RAISE), ("rec", REC), ("ref", REF), ("sig", SIG), ("signature", SIGNATURE), ("struct", STRUCT), ("structure", STRUCTURE), ("then", THEN), ("type", TYPE), ("val", VAL), ("where", WHERE), ("while", WHILE), ("true", UID("True")), (* cookcu *) ("false", UID("False")), (* cookcu *) ("andalso", ANDALSO), (* op *) ("orelse", ORELSE), (* op *) ("not", NOT), (* op *) ("nil", NIL), (* op *) ("Nil", NIL) (* op *) (* removed ("div", INFIX3("div")), (* op *) ("mod", INFIX3("mod")), (* op *) ("land", INFIX1("land")), (* op *) ("lor", INFIX1("lor")), (* op *) ("lxor", INFIX1("lxor")), (* op *) ("lsl", INFIX1("lsl")), (* op *) ("lsr", INFIX1("lsr")) (* op *) *) ] (* To buffer string literals *) val initial_string_buffer = String.create 256 val string_buff = ref initial_string_buffer val string_index = ref 0 fun reset_string_buffer () = (string_buff := initial_string_buffer; string_index := 0) fun store_string_char c = (if !string_index >= String.length (!string_buff) then ( let val new_buff = String.create (String.length (!string_buff) * 2) in String.blit (!string_buff) 0 new_buff 0 (String.length (!string_buff)); string_buff := new_buff end ); String.unsafe_set (!string_buff) (!string_index) c; incr string_index) fun get_stored_string () = let val s = String.sub (!string_buff) 0 (!string_index) in string_buff := initial_string_buffer; s end (* To translate escape sequences *) val char_for_backslash = case Sys.os_type of "MacOS" => (fn 'n' => '\013' | 'r' => '\010' | 'b' => '\008' | 't' => '\009' | c => c) | _ => (fn 'n' => '\010' | 'r' => '\013' | 'b' => '\008' | 't' => '\009' | c => c) fun char_for_decimal_code lexbuf i = let val c = 100 * (Char.code(Lexing.lexeme_char lexbuf i) - 48) + 10 * (Char.code(Lexing.lexeme_char lexbuf (i+1)) - 48) + (Char.code(Lexing.lexeme_char lexbuf (i+2)) - 48) in Char.chr(land c 0xFF) end (* To store the position of the beginning of a string and comment *) val string_start_pos = ref 0 and comment_start_pos = ref 0 (* Error report *) open Format val report_error = fn Illegal_character => print_string "Illegal character" | Unterminated_comment => print_string "Comment not terminated" | Unterminated_string => print_string "String literal not terminated" | Too_many_character => print_string "Too many charaters in Char literal" exception Not_Found fun wordend m i str = if i = m then raise Not_Found else let val c = String.get str i in if c = ' ' orelse c = '\010' orelse c = '\013' orelse c = '\009' orelse c = '\012' orelse c = '.' then i else wordend m (i+1) str end fun getword str = let val p = wordend (String.length str) 0 str in String.sub str 0 p end val lex_tables = Interop.lexing_to_lex_tables( (* lex_base = *) "\000\000\087\000\062\000\250\255\255\255\118\000\251\255\121\000\ \123\000\253\255\086\000\108\000\252\255\102\000\104\000\254\255\ \255\255\198\255\192\000\184\000\249\255\222\000\003\001\038\001\ \073\001\169\000\104\000\241\255\110\001\145\001\231\255\180\001\ \101\000\215\001\234\001\051\002\090\000\090\000\076\002\111\002\ \146\002\181\002\216\002\023\003\026\000\237\255\185\003\091\004\ \240\255\200\004\239\255\166\004\200\255\126\005\166\005\132\006\ \235\255\167\006\230\006\014\007\241\000\108\007\236\255\098\008\ \138\008\104\009\139\009\174\009\209\009\244\009\023\010\199\255\ \217\255\224\255\076\002\124\003\103\003\245\002\134\003\030\004\ \158\000\244\001\040\010\102\010\010\002\163\000\147\010\185\010\ \220\010\006\000\245\255\157\000\229\255\255\010\034\011\069\011\ \104\011\141\011\176\011\211\011\246\011\244\255\170\000\017\012\ \174\000\004\004\014\004\175\000\246\255\247\255\248\255\059\012\ \112\001", (* lex_backtrk = *) "\255\255\255\255\255\255\255\255\255\255\005\000\255\255\001\000\ \001\000\255\255\255\255\255\255\255\255\003\000\003\000\255\255\ \255\255\255\255\000\000\032\000\255\255\037\000\050\000\054\000\ \050\000\030\000\013\000\255\255\033\000\035\000\255\255\036\000\ \025\000\054\000\004\000\004\000\021\000\022\000\050\000\034\000\ \050\000\049\000\051\000\003\000\017\000\255\255\012\000\001\000\ \255\255\023\000\255\255\057\000\255\255\001\000\255\255\050\000\ \255\255\040\000\003\000\255\255\255\255\255\255\255\255\003\000\ \255\255\051\000\049\000\047\000\029\000\028\000\048\000\255\255\ \255\255\255\255\255\255\004\000\255\255\255\255\005\000\005\000\ \255\255\255\255\255\255\004\000\004\000\004\000\054\000\054\000\ \046\000\255\255\255\255\255\255\255\255\052\000\042\000\044\000\ \027\000\041\000\043\000\053\000\045\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\039\000\ \000\000", (* lex_default = *) "\017\000\012\000\003\000\000\000\000\000\255\255\000\000\255\255\ \255\255\000\000\255\255\255\255\000\000\255\255\255\255\000\000\ \000\000\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\102\000\255\255\000\000\255\255\255\255\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\000\000\255\255\255\255\ \000\000\255\255\000\000\255\255\000\000\255\255\255\255\255\255\ \000\000\255\255\255\255\255\255\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ \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\089\000\ \255\255\089\000\000\000\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\000\000\255\255\255\255\ \255\255\255\255\255\255\255\255\000\000\000\000\000\000\255\255\ \255\255", (* lex_trans = *) "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\018\000\018\000\000\000\018\000\018\000\000\000\000\000\ \090\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \018\000\019\000\020\000\021\000\022\000\023\000\024\000\025\000\ \026\000\027\000\028\000\029\000\030\000\031\000\032\000\033\000\ \034\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\036\000\037\000\038\000\039\000\040\000\041\000\ \042\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\044\000\022\000\045\000\042\000\046\000\ \004\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\048\000\049\000\050\000\041\000\013\000\ \007\000\014\000\007\000\008\000\007\000\007\000\011\000\011\000\ \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\ \016\000\015\000\101\000\091\000\072\000\071\000\062\000\073\000\ \009\000\007\000\005\000\007\000\012\000\012\000\012\000\012\000\ \012\000\012\000\012\000\012\000\012\000\012\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\112\000\112\000\092\000\112\000\112\000\085\000\085\000\ \255\255\110\000\009\000\085\000\085\000\109\000\108\000\000\000\ \009\000\066\000\000\000\066\000\066\000\066\000\066\000\000\000\ \112\000\000\000\066\000\066\000\009\000\066\000\066\000\066\000\ \009\000\000\000\009\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\066\000\000\000\066\000\066\000\066\000\066\000\ \066\000\000\000\060\000\060\000\000\000\060\000\060\000\055\000\ \052\000\055\000\055\000\055\000\055\000\103\000\255\255\000\000\ \055\000\055\000\000\000\055\000\055\000\055\000\000\000\000\000\ \000\000\060\000\000\000\000\000\066\000\000\000\066\000\000\000\ \055\000\000\000\055\000\055\000\055\000\055\000\055\000\009\000\ \000\000\000\000\000\000\000\000\055\000\000\000\055\000\055\000\ \055\000\055\000\000\000\000\000\000\000\055\000\055\000\000\000\ \055\000\055\000\055\000\000\000\066\000\000\000\066\000\000\000\ \000\000\000\000\055\000\000\000\055\000\055\000\006\000\055\000\ \055\000\055\000\055\000\055\000\000\000\000\000\000\000\086\000\ \000\000\086\000\086\000\086\000\086\000\000\000\000\000\000\000\ \086\000\086\000\000\000\086\000\086\000\086\000\000\000\009\000\ \000\000\000\000\055\000\000\000\055\000\000\000\000\000\055\000\ \086\000\055\000\086\000\086\000\086\000\086\000\086\000\000\000\ \000\000\000\000\055\000\000\000\055\000\055\000\055\000\111\000\ \000\000\000\000\000\000\055\000\055\000\000\000\055\000\055\000\ \055\000\112\000\112\000\000\000\112\000\112\000\000\000\055\000\ \000\000\055\000\086\000\055\000\086\000\055\000\055\000\055\000\ \055\000\055\000\000\000\000\000\000\000\000\000\000\000\086\000\ \112\000\086\000\086\000\086\000\086\000\000\000\000\000\000\000\ \099\000\086\000\000\000\086\000\086\000\086\000\000\000\000\000\ \000\000\000\000\086\000\000\000\086\000\055\000\000\000\055\000\ \086\000\255\255\086\000\100\000\086\000\086\000\086\000\000\000\ \000\000\000\000\093\000\000\000\093\000\093\000\093\000\093\000\ \000\000\000\000\000\000\093\000\097\000\000\000\093\000\093\000\ \093\000\000\000\000\000\000\000\000\000\055\000\000\000\055\000\ \000\000\000\000\086\000\093\000\086\000\093\000\098\000\093\000\ \093\000\093\000\000\000\000\000\000\000\093\000\000\000\093\000\ \093\000\093\000\093\000\000\000\000\000\000\000\093\000\093\000\ \000\000\094\000\093\000\093\000\000\000\000\000\000\000\000\000\ \000\000\000\000\086\000\000\000\086\000\093\000\093\000\093\000\ \093\000\095\000\096\000\093\000\093\000\000\000\000\000\000\000\ \086\000\000\000\086\000\086\000\086\000\086\000\000\000\000\000\ \000\000\086\000\086\000\000\000\086\000\086\000\087\000\000\000\ \000\000\000\000\000\000\000\000\000\000\093\000\000\000\093\000\ \093\000\086\000\093\000\086\000\088\000\086\000\086\000\086\000\ \074\000\000\000\075\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\080\000\000\000\000\000\076\000\ \093\000\000\000\093\000\086\000\000\000\086\000\000\000\000\000\ \000\000\081\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\082\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\080\000\000\000\000\000\076\000\ \000\000\000\000\000\000\086\000\000\000\086\000\000\000\000\000\ \000\000\081\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\074\000\082\000\075\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\055\000\000\000\055\000\ \055\000\055\000\055\000\000\000\000\000\000\000\055\000\055\000\ \076\000\069\000\055\000\055\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\055\000\000\000\ \070\000\055\000\055\000\055\000\055\000\000\000\000\000\000\000\ \055\000\000\000\055\000\055\000\055\000\055\000\000\000\000\000\ \076\000\055\000\055\000\000\000\055\000\055\000\055\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \055\000\055\000\055\000\055\000\055\000\068\000\055\000\055\000\ \000\000\000\000\000\000\055\000\000\000\055\000\055\000\055\000\ \055\000\000\000\000\000\000\000\055\000\055\000\000\000\055\000\ \055\000\055\000\000\000\000\000\000\000\000\000\000\000\000\000\ \055\000\000\000\055\000\055\000\055\000\055\000\055\000\055\000\ \067\000\055\000\055\000\000\000\000\000\000\000\066\000\000\000\ \066\000\066\000\066\000\066\000\000\000\000\000\000\000\066\000\ \066\000\000\000\066\000\066\000\066\000\000\000\000\000\000\000\ \000\000\000\000\000\000\055\000\000\000\055\000\055\000\066\000\ \055\000\066\000\066\000\066\000\066\000\066\000\000\000\000\000\ \000\000\065\000\000\000\065\000\065\000\065\000\065\000\000\000\ \000\000\000\000\065\000\065\000\000\000\065\000\065\000\065\000\ \000\000\000\000\000\000\000\000\000\000\000\000\055\000\000\000\ \055\000\066\000\065\000\066\000\065\000\065\000\065\000\065\000\ \065\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \060\000\060\000\000\000\060\000\060\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\000\000\ \000\000\066\000\000\000\066\000\065\000\000\000\065\000\060\000\ \000\000\000\000\000\000\000\000\000\000\000\000\063\000\000\000\ \000\000\000\000\000\000\000\000\000\000\009\000\000\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\000\000\000\000\000\000\065\000\000\000\065\000\000\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\000\000\000\000\000\000\000\000\063\000\000\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\077\000\000\000\077\000\000\000\000\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\074\000\000\000\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \000\000\076\000\000\000\000\000\000\000\000\000\000\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \058\000\076\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\000\000\000\000\000\000\000\000\ \058\000\000\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\107\000\107\000\ \107\000\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \000\000\000\000\000\000\000\000\000\000\000\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\076\000\000\000\000\000\000\000\000\000\ \000\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\053\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\000\000\000\000\ \000\000\000\000\053\000\000\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\055\000\000\000\055\000\055\000\055\000\055\000\000\000\ \000\000\000\000\055\000\055\000\000\000\055\000\055\000\055\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\055\000\000\000\055\000\055\000\055\000\055\000\ \055\000\000\000\000\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\055\000\056\000\055\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\057\000\000\000\055\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\000\000\000\000\000\000\000\000\053\000\000\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\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\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\055\000\000\000\055\000\ \055\000\055\000\055\000\000\000\000\000\000\000\055\000\055\000\ \000\000\055\000\055\000\055\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\055\000\000\000\ \055\000\055\000\055\000\055\000\055\000\000\000\000\000\000\000\ \055\000\000\000\055\000\055\000\055\000\055\000\000\000\000\000\ \000\000\055\000\055\000\000\000\055\000\055\000\055\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\060\000\ \060\000\000\000\060\000\060\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \055\000\000\000\055\000\055\000\000\000\055\000\060\000\000\000\ \000\000\000\000\000\000\000\000\000\000\058\000\000\000\000\000\ \000\000\000\000\000\000\000\000\009\000\000\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \000\000\000\000\000\000\055\000\000\000\055\000\000\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\000\000\000\000\000\000\000\000\058\000\000\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\060\000\060\000\000\000\060\000\060\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\060\000\000\000\000\000\000\000\000\000\000\000\ \000\000\063\000\000\000\000\000\000\000\000\000\000\000\000\000\ \009\000\000\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\063\000\000\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\065\000\000\000\065\000\065\000\065\000\065\000\000\000\ \000\000\000\000\065\000\065\000\000\000\065\000\065\000\065\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\065\000\000\000\065\000\065\000\065\000\065\000\ \065\000\000\000\000\000\000\000\066\000\000\000\066\000\066\000\ \066\000\066\000\000\000\000\000\000\000\066\000\066\000\000\000\ \066\000\066\000\066\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\065\000\066\000\065\000\066\000\ \066\000\066\000\066\000\066\000\000\000\000\000\000\000\055\000\ \000\000\055\000\055\000\055\000\055\000\000\000\000\000\000\000\ \055\000\055\000\000\000\055\000\055\000\055\000\000\000\000\000\ \000\000\000\000\000\000\000\000\065\000\000\000\065\000\066\000\ \055\000\066\000\055\000\055\000\055\000\055\000\055\000\000\000\ \000\000\000\000\055\000\000\000\055\000\055\000\055\000\055\000\ \000\000\000\000\000\000\055\000\055\000\000\000\055\000\055\000\ \055\000\000\000\000\000\000\000\000\000\000\000\000\000\066\000\ \000\000\066\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\000\000\000\000\000\000\055\000\000\000\055\000\ \055\000\055\000\055\000\000\000\000\000\000\000\055\000\055\000\ \000\000\055\000\055\000\055\000\000\000\000\000\000\000\000\000\ \000\000\000\000\055\000\000\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\000\000\000\000\000\000\ \055\000\000\000\055\000\055\000\055\000\055\000\000\000\000\000\ \000\000\055\000\055\000\000\000\055\000\055\000\055\000\000\000\ \000\000\000\000\000\000\000\000\000\000\055\000\000\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\083\000\083\000\083\000\083\000\083\000\083\000\000\000\ \055\000\000\000\055\000\055\000\000\000\055\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\083\000\083\000\083\000\083\000\083\000\083\000\000\000\ \000\000\000\000\000\000\055\000\000\000\055\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\083\000\ \083\000\083\000\083\000\083\000\083\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\086\000\000\000\086\000\086\000\ \086\000\086\000\000\000\000\000\000\000\086\000\086\000\000\000\ \086\000\086\000\086\000\090\000\000\000\000\000\000\000\083\000\ \083\000\083\000\083\000\083\000\083\000\086\000\000\000\086\000\ \086\000\086\000\086\000\086\000\000\000\000\000\000\000\000\000\ \000\000\000\000\087\000\000\000\087\000\087\000\087\000\087\000\ \000\000\000\000\000\000\087\000\087\000\000\000\087\000\087\000\ \087\000\000\000\000\000\000\000\000\000\000\000\000\000\086\000\ \000\000\086\000\000\000\087\000\000\000\087\000\087\000\087\000\ \087\000\087\000\000\000\000\000\000\000\086\000\000\000\086\000\ \086\000\086\000\086\000\000\000\000\000\000\000\086\000\086\000\ \000\000\086\000\086\000\086\000\000\000\000\000\000\000\086\000\ \000\000\086\000\000\000\000\000\000\000\087\000\086\000\087\000\ \086\000\086\000\086\000\086\000\086\000\000\000\000\000\000\000\ \093\000\000\000\093\000\093\000\093\000\093\000\000\000\000\000\ \000\000\093\000\093\000\000\000\093\000\093\000\093\000\000\000\ \000\000\000\000\000\000\000\000\000\000\087\000\000\000\087\000\ \086\000\093\000\086\000\093\000\093\000\093\000\093\000\093\000\ \000\000\000\000\000\000\093\000\000\000\093\000\093\000\093\000\ \093\000\000\000\000\000\000\000\093\000\093\000\000\000\093\000\ \093\000\093\000\000\000\000\000\000\000\000\000\000\000\000\000\ \086\000\000\000\086\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\000\000\000\000\000\000\093\000\000\000\ \093\000\093\000\093\000\093\000\000\000\000\000\000\000\093\000\ \093\000\000\000\093\000\093\000\093\000\000\000\000\000\000\000\ \000\000\000\000\000\000\093\000\000\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\000\000\000\000\ \000\000\093\000\000\000\093\000\093\000\093\000\093\000\000\000\ \000\000\000\000\093\000\093\000\000\000\093\000\093\000\093\000\ \000\000\000\000\000\000\000\000\000\000\000\000\093\000\000\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\000\000\000\000\000\000\000\000\000\000\093\000\000\000\ \093\000\093\000\093\000\093\000\000\000\000\000\000\000\093\000\ \093\000\255\255\093\000\093\000\093\000\000\000\000\000\000\000\ \000\000\093\000\000\000\093\000\093\000\000\000\093\000\093\000\ \000\000\093\000\093\000\093\000\093\000\093\000\000\000\000\000\ \000\000\093\000\000\000\093\000\093\000\093\000\093\000\000\000\ \000\000\000\000\093\000\093\000\000\000\093\000\093\000\093\000\ \000\000\000\000\000\000\000\000\093\000\000\000\093\000\000\000\ \000\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\000\000\000\000\000\000\099\000\000\000\099\000\099\000\ \099\000\099\000\000\000\000\000\000\000\099\000\099\000\000\000\ \099\000\099\000\099\000\000\000\000\000\000\000\000\000\000\000\ \000\000\093\000\000\000\093\000\093\000\099\000\093\000\099\000\ \099\000\099\000\099\000\099\000\000\000\000\000\000\000\086\000\ \000\000\086\000\086\000\086\000\086\000\000\000\000\000\000\000\ \086\000\086\000\000\000\086\000\086\000\086\000\000\000\000\000\ \000\000\000\000\000\000\000\000\093\000\000\000\093\000\099\000\ \086\000\099\000\086\000\086\000\086\000\086\000\086\000\000\000\ \104\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\000\000\000\000\000\000\000\000\099\000\ \000\000\099\000\086\000\000\000\086\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\055\000\000\000\055\000\055\000\ \055\000\055\000\000\000\000\000\000\000\055\000\055\000\000\000\ \055\000\055\000\055\000\000\000\000\000\104\000\000\000\000\000\ \000\000\000\000\086\000\104\000\086\000\055\000\000\000\055\000\ \055\000\055\000\055\000\055\000\000\000\000\000\000\000\104\000\ \000\000\000\000\000\000\104\000\000\000\104\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\055\000\ \000\000\055\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\055\000\ \000\000\055\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000", (* lex_check = *) "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\255\255\000\000\000\000\255\255\255\255\ \089\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\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \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\001\000\ \005\000\001\000\007\000\005\000\008\000\008\000\010\000\010\000\ \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\ \013\000\014\000\026\000\032\000\036\000\037\000\044\000\036\000\ \005\000\007\000\002\000\008\000\011\000\011\000\011\000\011\000\ \011\000\011\000\011\000\011\000\011\000\011\000\005\000\005\000\ \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\018\000\018\000\091\000\018\000\018\000\080\000\080\000\ \025\000\102\000\005\000\085\000\085\000\104\000\107\000\255\255\ \005\000\019\000\255\255\019\000\019\000\019\000\019\000\255\255\ \018\000\255\255\019\000\019\000\005\000\019\000\019\000\019\000\ \005\000\255\255\005\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\019\000\255\255\019\000\019\000\019\000\019\000\ \019\000\255\255\060\000\060\000\255\255\060\000\060\000\021\000\ \000\000\021\000\021\000\021\000\021\000\025\000\089\000\255\255\ \021\000\021\000\255\255\021\000\021\000\021\000\255\255\255\255\ \255\255\060\000\255\255\255\255\019\000\255\255\019\000\255\255\ \021\000\255\255\021\000\021\000\021\000\021\000\021\000\060\000\ \255\255\255\255\255\255\255\255\022\000\255\255\022\000\022\000\ \022\000\022\000\255\255\255\255\255\255\022\000\022\000\255\255\ \022\000\022\000\022\000\255\255\019\000\255\255\019\000\255\255\ \255\255\255\255\021\000\255\255\021\000\022\000\002\000\022\000\ \022\000\022\000\022\000\022\000\255\255\255\255\255\255\023\000\ \255\255\023\000\023\000\023\000\023\000\255\255\255\255\255\255\ \023\000\023\000\255\255\023\000\023\000\023\000\255\255\001\000\ \255\255\255\255\021\000\255\255\021\000\255\255\255\255\022\000\ \023\000\022\000\023\000\023\000\023\000\023\000\023\000\255\255\ \255\255\255\255\024\000\255\255\024\000\024\000\024\000\024\000\ \255\255\255\255\255\255\024\000\024\000\255\255\024\000\024\000\ \024\000\112\000\112\000\255\255\112\000\112\000\255\255\022\000\ \255\255\022\000\023\000\024\000\023\000\024\000\024\000\024\000\ \024\000\024\000\255\255\255\255\255\255\255\255\255\255\028\000\ \112\000\028\000\028\000\028\000\028\000\255\255\255\255\255\255\ \028\000\028\000\255\255\028\000\028\000\028\000\255\255\255\255\ \255\255\255\255\023\000\255\255\023\000\024\000\255\255\024\000\ \028\000\025\000\028\000\028\000\028\000\028\000\028\000\255\255\ \255\255\255\255\029\000\255\255\029\000\029\000\029\000\029\000\ \255\255\255\255\255\255\029\000\029\000\255\255\029\000\029\000\ \029\000\255\255\255\255\255\255\255\255\024\000\255\255\024\000\ \255\255\255\255\028\000\029\000\028\000\029\000\029\000\029\000\ \029\000\029\000\255\255\255\255\255\255\031\000\255\255\031\000\ \031\000\031\000\031\000\255\255\255\255\255\255\031\000\031\000\ \255\255\031\000\031\000\031\000\255\255\255\255\255\255\255\255\ \255\255\255\255\028\000\255\255\028\000\029\000\031\000\029\000\ \031\000\031\000\031\000\031\000\031\000\255\255\255\255\255\255\ \033\000\255\255\033\000\033\000\033\000\033\000\255\255\255\255\ \255\255\033\000\033\000\255\255\033\000\033\000\033\000\255\255\ \255\255\255\255\255\255\255\255\255\255\029\000\255\255\029\000\ \031\000\033\000\031\000\033\000\033\000\033\000\033\000\033\000\ \034\000\255\255\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\034\000\255\255\255\255\034\000\ \031\000\255\255\031\000\033\000\255\255\033\000\255\255\255\255\ \255\255\034\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\034\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\034\000\255\255\255\255\034\000\ \255\255\255\255\255\255\033\000\255\255\033\000\255\255\255\255\ \255\255\034\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\035\000\034\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\038\000\255\255\038\000\ \038\000\038\000\038\000\255\255\255\255\255\255\038\000\038\000\ \035\000\038\000\038\000\038\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\038\000\255\255\ \038\000\038\000\038\000\038\000\038\000\255\255\255\255\255\255\ \039\000\255\255\039\000\039\000\039\000\039\000\255\255\255\255\ \035\000\039\000\039\000\255\255\039\000\039\000\039\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \038\000\039\000\038\000\039\000\039\000\039\000\039\000\039\000\ \255\255\255\255\255\255\040\000\255\255\040\000\040\000\040\000\ \040\000\255\255\255\255\255\255\040\000\040\000\255\255\040\000\ \040\000\040\000\255\255\255\255\255\255\255\255\255\255\255\255\ \038\000\255\255\038\000\039\000\040\000\039\000\040\000\040\000\ \040\000\040\000\040\000\255\255\255\255\255\255\041\000\255\255\ \041\000\041\000\041\000\041\000\255\255\255\255\255\255\041\000\ \041\000\255\255\041\000\041\000\041\000\255\255\255\255\255\255\ \255\255\255\255\255\255\039\000\255\255\039\000\040\000\041\000\ \040\000\041\000\041\000\041\000\041\000\041\000\255\255\255\255\ \255\255\042\000\255\255\042\000\042\000\042\000\042\000\255\255\ \255\255\255\255\042\000\042\000\255\255\042\000\042\000\042\000\ \255\255\255\255\255\255\255\255\255\255\255\255\040\000\255\255\ \040\000\041\000\042\000\041\000\042\000\042\000\042\000\042\000\ \042\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \043\000\043\000\255\255\043\000\043\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\255\255\ \255\255\041\000\255\255\041\000\042\000\255\255\042\000\043\000\ \255\255\255\255\255\255\255\255\255\255\255\255\043\000\255\255\ \255\255\255\255\255\255\255\255\255\255\043\000\255\255\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\255\255\255\255\255\255\042\000\255\255\042\000\255\255\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\255\255\255\255\255\255\255\255\043\000\255\255\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\076\000\255\255\076\000\255\255\255\255\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\075\000\255\255\075\000\075\000\075\000\075\000\ \075\000\075\000\075\000\075\000\075\000\075\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \255\255\075\000\255\255\255\255\255\255\255\255\255\255\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \043\000\043\000\043\000\043\000\043\000\043\000\043\000\043\000\ \046\000\075\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\255\255\255\255\255\255\255\255\ \046\000\255\255\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\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\ \255\255\255\255\255\255\255\255\255\255\255\255\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\079\000\255\255\255\255\255\255\255\255\ \255\255\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\046\000\046\000\046\000\046\000\046\000\046\000\ \046\000\046\000\047\000\079\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\255\255\255\255\ \255\255\255\255\047\000\255\255\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\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\049\000\255\255\049\000\049\000\049\000\049\000\255\255\ \255\255\255\255\049\000\049\000\255\255\049\000\049\000\049\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\049\000\255\255\049\000\049\000\049\000\049\000\ \049\000\255\255\255\255\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\ \047\000\047\000\047\000\047\000\049\000\049\000\049\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\049\000\255\255\049\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\053\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\255\255\255\255\255\255\255\255\053\000\255\255\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\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\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\ \053\000\053\000\053\000\053\000\053\000\053\000\053\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\055\000\255\255\055\000\ \055\000\055\000\055\000\255\255\255\255\255\255\055\000\055\000\ \255\255\055\000\055\000\055\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\055\000\255\255\ \055\000\055\000\055\000\055\000\055\000\255\255\255\255\255\255\ \057\000\255\255\057\000\057\000\057\000\057\000\255\255\255\255\ \255\255\057\000\057\000\255\255\057\000\057\000\057\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \055\000\057\000\055\000\057\000\057\000\057\000\057\000\057\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\058\000\ \058\000\255\255\058\000\058\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\ \055\000\255\255\055\000\057\000\255\255\057\000\058\000\255\255\ \255\255\255\255\255\255\255\255\255\255\058\000\255\255\255\255\ \255\255\255\255\255\255\255\255\058\000\255\255\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \255\255\255\255\255\255\057\000\255\255\057\000\255\255\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\255\255\255\255\255\255\255\255\058\000\255\255\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\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\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\ \058\000\058\000\058\000\058\000\058\000\058\000\058\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\ \059\000\059\000\059\000\059\000\059\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\ \061\000\061\000\061\000\063\000\063\000\255\255\063\000\063\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\063\000\255\255\255\255\255\255\255\255\255\255\ \255\255\063\000\255\255\255\255\255\255\255\255\255\255\255\255\ \063\000\255\255\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\255\255\255\255\255\255\ \255\255\063\000\255\255\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\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\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\ \064\000\065\000\255\255\065\000\065\000\065\000\065\000\255\255\ \255\255\255\255\065\000\065\000\255\255\065\000\065\000\065\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\065\000\255\255\065\000\065\000\065\000\065\000\ \065\000\255\255\255\255\255\255\066\000\255\255\066\000\066\000\ \066\000\066\000\255\255\255\255\255\255\066\000\066\000\255\255\ \066\000\066\000\066\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\065\000\066\000\065\000\066\000\ \066\000\066\000\066\000\066\000\255\255\255\255\255\255\067\000\ \255\255\067\000\067\000\067\000\067\000\255\255\255\255\255\255\ \067\000\067\000\255\255\067\000\067\000\067\000\255\255\255\255\ \255\255\255\255\255\255\255\255\065\000\255\255\065\000\066\000\ \067\000\066\000\067\000\067\000\067\000\067\000\067\000\255\255\ \255\255\255\255\068\000\255\255\068\000\068\000\068\000\068\000\ \255\255\255\255\255\255\068\000\068\000\255\255\068\000\068\000\ \068\000\255\255\255\255\255\255\255\255\255\255\255\255\066\000\ \255\255\066\000\067\000\068\000\067\000\068\000\068\000\068\000\ \068\000\068\000\255\255\255\255\255\255\069\000\255\255\069\000\ \069\000\069\000\069\000\255\255\255\255\255\255\069\000\069\000\ \255\255\069\000\069\000\069\000\255\255\255\255\255\255\255\255\ \255\255\255\255\067\000\255\255\067\000\068\000\069\000\068\000\ \069\000\069\000\069\000\069\000\069\000\255\255\255\255\255\255\ \070\000\255\255\070\000\070\000\070\000\070\000\255\255\255\255\ \255\255\070\000\070\000\255\255\070\000\070\000\070\000\255\255\ \255\255\255\255\255\255\255\255\255\255\068\000\255\255\068\000\ \069\000\070\000\069\000\070\000\070\000\070\000\070\000\070\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\082\000\082\000\082\000\082\000\082\000\082\000\255\255\ \069\000\255\255\069\000\070\000\255\255\070\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\082\000\082\000\082\000\082\000\082\000\082\000\255\255\ \255\255\255\255\255\255\070\000\255\255\070\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\083\000\ \083\000\083\000\083\000\083\000\083\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\086\000\255\255\086\000\086\000\ \086\000\086\000\255\255\255\255\255\255\086\000\086\000\255\255\ \086\000\086\000\086\000\087\000\255\255\255\255\255\255\083\000\ \083\000\083\000\083\000\083\000\083\000\086\000\255\255\086\000\ \086\000\086\000\086\000\086\000\255\255\255\255\255\255\255\255\ \255\255\255\255\087\000\255\255\087\000\087\000\087\000\087\000\ \255\255\255\255\255\255\087\000\087\000\255\255\087\000\087\000\ \087\000\255\255\255\255\255\255\255\255\255\255\255\255\086\000\ \255\255\086\000\255\255\087\000\255\255\087\000\087\000\087\000\ \087\000\087\000\255\255\255\255\255\255\088\000\255\255\088\000\ \088\000\088\000\088\000\255\255\255\255\255\255\088\000\088\000\ \255\255\088\000\088\000\088\000\255\255\255\255\255\255\086\000\ \255\255\086\000\255\255\255\255\255\255\087\000\088\000\087\000\ \088\000\088\000\088\000\088\000\088\000\255\255\255\255\255\255\ \093\000\255\255\093\000\093\000\093\000\093\000\255\255\255\255\ \255\255\093\000\093\000\255\255\093\000\093\000\093\000\255\255\ \255\255\255\255\255\255\255\255\255\255\087\000\255\255\087\000\ \088\000\093\000\088\000\093\000\093\000\093\000\093\000\093\000\ \255\255\255\255\255\255\094\000\255\255\094\000\094\000\094\000\ \094\000\255\255\255\255\255\255\094\000\094\000\255\255\094\000\ \094\000\094\000\255\255\255\255\255\255\255\255\255\255\255\255\ \088\000\255\255\088\000\093\000\094\000\093\000\094\000\094\000\ \094\000\094\000\094\000\255\255\255\255\255\255\095\000\255\255\ \095\000\095\000\095\000\095\000\255\255\255\255\255\255\095\000\ \095\000\255\255\095\000\095\000\095\000\255\255\255\255\255\255\ \255\255\255\255\255\255\093\000\255\255\093\000\094\000\095\000\ \094\000\095\000\095\000\095\000\095\000\095\000\255\255\255\255\ \255\255\096\000\255\255\096\000\096\000\096\000\096\000\255\255\ \255\255\255\255\096\000\096\000\255\255\096\000\096\000\096\000\ \255\255\255\255\255\255\255\255\255\255\255\255\094\000\255\255\ \094\000\095\000\096\000\095\000\096\000\096\000\096\000\096\000\ \096\000\255\255\255\255\255\255\255\255\255\255\097\000\255\255\ \097\000\097\000\097\000\097\000\255\255\255\255\255\255\097\000\ \097\000\087\000\097\000\097\000\097\000\255\255\255\255\255\255\ \255\255\095\000\255\255\095\000\096\000\255\255\096\000\097\000\ \255\255\097\000\097\000\097\000\097\000\097\000\255\255\255\255\ \255\255\098\000\255\255\098\000\098\000\098\000\098\000\255\255\ \255\255\255\255\098\000\098\000\255\255\098\000\098\000\098\000\ \255\255\255\255\255\255\255\255\096\000\255\255\096\000\255\255\ \255\255\097\000\098\000\097\000\098\000\098\000\098\000\098\000\ \098\000\255\255\255\255\255\255\099\000\255\255\099\000\099\000\ \099\000\099\000\255\255\255\255\255\255\099\000\099\000\255\255\ \099\000\099\000\099\000\255\255\255\255\255\255\255\255\255\255\ \255\255\097\000\255\255\097\000\098\000\099\000\098\000\099\000\ \099\000\099\000\099\000\099\000\255\255\255\255\255\255\100\000\ \255\255\100\000\100\000\100\000\100\000\255\255\255\255\255\255\ \100\000\100\000\255\255\100\000\100\000\100\000\255\255\255\255\ \255\255\255\255\255\255\255\255\098\000\255\255\098\000\099\000\ \100\000\099\000\100\000\100\000\100\000\100\000\100\000\255\255\ \103\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\255\255\255\255\255\255\255\255\099\000\ \255\255\099\000\100\000\255\255\100\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\111\000\255\255\111\000\111\000\ \111\000\111\000\255\255\255\255\255\255\111\000\111\000\255\255\ \111\000\111\000\111\000\255\255\255\255\103\000\255\255\255\255\ \255\255\255\255\100\000\103\000\100\000\111\000\255\255\111\000\ \111\000\111\000\111\000\111\000\255\255\255\255\255\255\103\000\ \255\255\255\255\255\255\103\000\255\255\103\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\111\000\ \255\255\111\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\111\000\ \255\255\111\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\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255" ) fun token lexbuf = n_lex_token_rec lexbuf 0 and n_lex_token_rec lexbuf state = case (Lexing.engine lex_tables state lexbuf) of 0 => ( (* # 202 "parser/nlexer.nl" *) token lexbuf ) | 1 => ( (* # 204 "parser/nlexer.nl" *) let val s = Lexing.lexeme lexbuf in (Hashtbl.find keyword_table s) handle Not_found => LID s end ) | 2 => ( (* # 209 "parser/nlexer.nl" *) PATH (getword (Lexing.lexeme lexbuf)) ) | 3 => ( (* # 211 "parser/nlexer.nl" *) let val s = Lexing.lexeme lexbuf in (Hashtbl.find keyword_table s) handle Not_found => UID s end ) | 4 => ( (* # 216 "parser/nlexer.nl" *) INT (int_of_string(Lexing.lexeme lexbuf)) ) | 5 => ( (* # 218 "parser/nlexer.nl" *) REAL (Lexing.lexeme lexbuf) ) | 6 => ( (* # 220 "parser/nlexer.nl" *) reset_string_buffer(); let val string_start = Lexing.lexeme_start lexbuf in string_start_pos := string_start; string lexbuf; Interop.lexing_field_update_lex_start_pos (lexbuf, string_start - (Interop.lexing_field_lex_abs_pos lexbuf)); STRING (get_stored_string()) end ) | 7 => ( (* # 229 "parser/nlexer.nl" *) CHAR(Lexing.lexeme_char lexbuf 1) ) | 8 => ( (* # 231 "parser/nlexer.nl" *) CHAR(char_for_backslash (Lexing.lexeme_char lexbuf 2)) ) | 9 => ( (* # 233 "parser/nlexer.nl" *) CHAR(char_for_decimal_code lexbuf 2) ) | 10 => ( (* # 234 "parser/nlexer.nl" *) token lexbuf ) | 11 => ( (* # 236 "parser/nlexer.nl" *) comment_depth := 1; comment_start_pos := Lexing.lexeme_start lexbuf; comment lexbuf; token lexbuf ) | 12 => ( (* # 240 "parser/nlexer.nl" *) UNDERSCORE ) | 13 => ( (* # 241 "parser/nlexer.nl" *) LPAREN ) | 14 => ( (* # 242 "parser/nlexer.nl" *) RPAREN ) | 15 => ( (* # 243 "parser/nlexer.nl" *) LBRACE ) | 16 => ( (* # 244 "parser/nlexer.nl" *) RBRACE ) | 17 => ( (* # 245 "parser/nlexer.nl" *) LBRACKET ) | 18 => ( (* # 246 "parser/nlexer.nl" *) RBRACKET ) | 19 => ( (* # 247 "parser/nlexer.nl" *) LBRACKETBAR ) | 20 => ( (* # 248 "parser/nlexer.nl" *) BARRBRACKET ) | 21 => ( (* # 249 "parser/nlexer.nl" *) COLON ) | 22 => ( (* # 250 "parser/nlexer.nl" *) SEMI ) | 23 => ( (* # 251 "parser/nlexer.nl" *) BAR ) | 24 => ( (* # 252 "parser/nlexer.nl" *) COMMA ) | 25 => ( (* # 253 "parser/nlexer.nl" *) DOT ) | 26 => ( (* # 254 "parser/nlexer.nl" *) DOTDOTDOT ) | 27 => ( (* # 255 "parser/nlexer.nl" *) ARROW ) | 28 => ( (* # 256 "parser/nlexer.nl" *) REVERSEARROW ) | 29 => ( (* # 257 "parser/nlexer.nl" *) DOUBLEARROW ) | 30 => ( (* # 258 "parser/nlexer.nl" *) QUOTE ) | 31 => ( (* # 259 "parser/nlexer.nl" *) ASSIGN ) | 32 => ( (* # 260 "parser/nlexer.nl" *) BANG ) | 33 => ( (* # 261 "parser/nlexer.nl" *) STAR ) | 34 => ( (* # 262 "parser/nlexer.nl" *) EQUAL ) | 35 => ( (* # 263 "parser/nlexer.nl" *) PLUS ) | 36 => ( (* # 264 "parser/nlexer.nl" *) MINUS ) | 37 => ( (* # 265 "parser/nlexer.nl" *) SHARP ) | 38 => ( (* # 266 "parser/nlexer.nl" *) COLONCOLON ) | 39 => ( (* # 267 "parser/nlexer.nl" *) ANDALSO ) | 40 => ( (* # 268 "parser/nlexer.nl" *) ORELSE ) | 41 => ( (* # 269 "parser/nlexer.nl" *) PLUSPLUS ) | 42 => ( (* # 270 "parser/nlexer.nl" *) MINUSMINUS ) | 43 => ( (* # 271 "parser/nlexer.nl" *) INFIX0(Lexing.lexeme lexbuf) ) | 44 => ( (* # 272 "parser/nlexer.nl" *) INFIX0(Lexing.lexeme lexbuf) ) | 45 => ( (* # 273 "parser/nlexer.nl" *) INFIX0(Lexing.lexeme lexbuf) ) | 46 => ( (* # 274 "parser/nlexer.nl" *) INFIX0(Lexing.lexeme lexbuf) ) | 47 => ( (* # 275 "parser/nlexer.nl" *) INFIX1(Lexing.lexeme lexbuf) ) | 48 => ( (* # 276 "parser/nlexer.nl" *) INFIX1(Lexing.lexeme lexbuf) ) | 49 => ( (* # 278 "parser/nlexer.nl" *) PREFIX(Lexing.lexeme lexbuf) ) | 50 => ( (* # 280 "parser/nlexer.nl" *) INFIX1(Lexing.lexeme lexbuf) ) | 51 => ( (* # 282 "parser/nlexer.nl" *) INFIX2(Lexing.lexeme lexbuf) ) | 52 => ( (* # 284 "parser/nlexer.nl" *) INFIX3(Lexing.lexeme lexbuf) ) | 53 => ( (* # 286 "parser/nlexer.nl" *) INFIX5(Lexing.lexeme lexbuf) ) | 54 => ( (* # 288 "parser/nlexer.nl" *) INFIX4(Lexing.lexeme lexbuf) ) | 55 => ( (* # 289 "parser/nlexer.nl" *) EOF ) | 56 => ( (* # 290 "parser/nlexer.nl" *) SEMISEMI ) | 57 => ( (* # 292 "parser/nlexer.nl" *) raise (Error(Illegal_character, Lexing.lexeme_start lexbuf, Lexing.lexeme_end lexbuf)) ) | n => (Interop.lexing_field_refill_buff lexbuf) lexbuf; n_lex_token_rec lexbuf n and comment lexbuf = n_lex_comment_rec lexbuf 1 and n_lex_comment_rec lexbuf state = case (Lexing.engine lex_tables state lexbuf) of 0 => ( (* # 297 "parser/nlexer.nl" *) comment_depth := succ !comment_depth; comment lexbuf ) | 1 => ( (* # 299 "parser/nlexer.nl" *) comment_depth := pred !comment_depth; if !comment_depth > 0 then comment lexbuf ) | 2 => ( (* # 318 "parser/nlexer.nl" *) raise (Error (Unterminated_comment, !comment_start_pos, !comment_start_pos+2)) ) | 3 => ( (* # 321 "parser/nlexer.nl" *) comment lexbuf ) | n => (Interop.lexing_field_refill_buff lexbuf) lexbuf; n_lex_comment_rec lexbuf n and string lexbuf = n_lex_string_rec lexbuf 2 and n_lex_string_rec lexbuf state = case (Lexing.engine lex_tables state lexbuf) of 0 => ( (* # 325 "parser/nlexer.nl" *) () ) | 1 => ( (* # 327 "parser/nlexer.nl" *) string lexbuf ) | 2 => ( (* # 329 "parser/nlexer.nl" *) store_string_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)); string lexbuf ) | 3 => ( (* # 332 "parser/nlexer.nl" *) store_string_char(char_for_decimal_code lexbuf 1); string lexbuf ) | 4 => ( (* # 335 "parser/nlexer.nl" *) raise (Error (Unterminated_string, !string_start_pos, !string_start_pos+1)) ) | 5 => ( (* # 338 "parser/nlexer.nl" *) store_string_char(Lexing.lexeme_char lexbuf 0); string lexbuf ) | n => (Interop.lexing_field_refill_buff lexbuf) lexbuf; n_lex_string_rec lexbuf n end