// This program was compiled from OCaml by js_of_ocaml 1.0 function caml_raise_with_arg (tag, arg) { throw [0, tag, arg]; } function caml_raise_with_string (tag, msg) { caml_raise_with_arg (tag, new MlWrappedString (msg)); } function caml_invalid_argument (msg) { caml_raise_with_string(caml_global_data[4], msg); } function caml_array_bound_error () { caml_invalid_argument("index out of bounds"); } function caml_str_repeat(n, s) { if (!n) { return ""; } if (n & 1) { return caml_str_repeat(n - 1, s) + s; } var r = caml_str_repeat(n >> 1, s); return r + r; } function MlString(param) { if (param != null) { this.bytes = this.fullBytes = param; this.last = this.len = param.length; } } MlString.prototype = { string:null, bytes:null, fullBytes:null, array:null, len:null, last:0, toJsString:function() { return this.string = decodeURIComponent (escape(this.getFullBytes())); }, toBytes:function() { if (this.string != null) var b = unescape (encodeURIComponent (this.string)); else { var b = "", a = this.array, l = a.length; for (var i = 0; i < l; i ++) b += String.fromCharCode (a[i]); } this.bytes = this.fullBytes = b; this.last = this.len = b.length; return b; }, getBytes:function() { var b = this.bytes; if (b == null) b = this.toBytes(); return b; }, getFullBytes:function() { var b = this.fullBytes; if (b !== null) return b; b = this.bytes; if (b == null) b = this.toBytes (); if (this.last < this.len) { this.bytes = (b += caml_str_repeat(this.len - this.last, '\0')); this.last = this.len; } this.fullBytes = b; return b; }, toArray:function() { var b = this.bytes; if (b == null) b = this.toBytes (); var a = [], l = this.last; for (var i = 0; i < l; i++) a[i] = b.charCodeAt(i); for (l = this.len; i < l; i++) a[i] = 0; this.string = this.bytes = this.fullBytes = null; this.last = this.len; this.array = a; return a; }, getArray:function() { var a = this.array; if (!a) a = this.toArray(); return a; }, getLen:function() { var len = this.len; if (len !== null) return len; this.toBytes(); return this.len; }, toString:function() { var s = this.string; return s?s:this.toJsString(); }, valueOf:function() { var s = this.string; return s?s:this.toJsString(); }, blitToArray:function(i1, a2, i2, l) { var a1 = this.array; if (a1) for (var i = 0; i < l; i++) a2 [i2 + i] = a1 [i1 + i]; else { var b = this.bytes; if (b == null) b = this.toBytes(); var l1 = this.last - i1; if (l <= l1) for (var i = 0; i < l; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); else { for (var i = 0; i < l1; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); for (; i < l; i++) a2 [i2 + i] = 0; } } }, get:function (i) { var a = this.array; if (a) return a[i]; var b = this.bytes; if (b == null) b = this.toBytes(); return (i= this.len)) caml_array_bound_error (); return this.get(i); }, set:function (i, c) { var a = this.array; if (!a) { if (this.last == i) { this.bytes += String.fromCharCode (c & 0xff); this.last ++; return 0; } a = this.toArray(); } else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } a[i] = c & 0xff; return 0; }, safeSet:function (i, c) { if (this.len == null) this.toBytes (); if ((i < 0) || (i >= this.len)) caml_array_bound_error (); this.set(i, c); }, fill:function (ofs, len, c) { if (ofs >= this.last && this.last && c == 0) return; var a = this.array; if (!a) a = this.toArray(); else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } var l = ofs + len; for (var i = ofs; i < l; i++) a[i] = c; }, compare:function (s2) { if (this.string != null && s2.string != null) { if (this.string < s2.string) return -1; if (this.string > s2.string) return 1; return 0; } var b1 = this.getFullBytes (); var b2 = s2.getFullBytes (); if (b1 < b2) return -1; if (b1 > b2) return 1; return 0; }, equal:function (s2) { if (this.string != null && s2.string != null) return this.string == s2.string; return this.getFullBytes () == s2.getFullBytes (); }, lessThan:function (s2) { if (this.string != null && s2.string != null) return this.string < s2.string; return this.getFullBytes () < s2.getFullBytes (); }, lessEqual:function (s2) { if (this.string != null && s2.string != null) return this.string <= s2.string; return this.getFullBytes () <= s2.getFullBytes (); } } function MlWrappedString (s) { this.string = s; } MlWrappedString.prototype = new MlString(); function MlMakeString (l) { this.bytes = ""; this.len = l; } MlMakeString.prototype = new MlString (); function caml_array_get (array, index) { if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error(); return array[index+1]; } function caml_blit_string(s1, i1, s2, i2, len) { if (len === 0) return; if (i2 === s2.last && s2.bytes != null) { var b = s1.bytes; if (b == null) b = s1.toBytes (); if (i1 > 0 || s1.last > len) b = b.slice(i1, i1 + len); s2.bytes += b; s2.last += b.length; return; } var a = s2.array; if (!a) a = s2.toArray(); else { s2.bytes = s2.string = null; } s1.blitToArray (i1, a, i2, len); } function caml_call_gen(f, args) { if(f.fun) return caml_call_gen(f.fun, args); var n = f.length; var d = n - args.length; if (d == 0) return f.apply(null, args); else if (d < 0) return caml_call_gen(f.apply(null, args.slice(0,n)), args.slice(n)); else return function (x){ return caml_call_gen(f, args.concat([x])); }; } function caml_int64_compare(x,y) { var x3 = x[3] << 16; var y3 = y[3] << 16; if (x3 > y3) return 1; if (x3 < y3) return -1; if (x[2] > y[2]) return 1; if (x[2] < y[2]) return -1; if (x[1] > y[1]) return 1; if (x[1] < y[1]) return -1; return 0; } function caml_int_compare (a, b) { if (a < b) return (-1); if (a == b) return 0; return 1; } function caml_compare_val (a, b, total) { var stack = []; for(;;) { if (!(total && a === b)) { if (a instanceof MlString) { if (b instanceof MlString) { if (a != b) { var x = a.compare(b); if (x != 0) return x; } } else return 1; } else if (a instanceof Array && a[0] === (a[0]|0)) { var ta = a[0]; if (ta === 250) { a = a[1]; continue; } else if (b instanceof Array && b[0] === (b[0]|0)) { var tb = b[0]; if (tb === 250) { b = b[1]; continue; } else if (ta != tb) { return (ta < tb)?-1:1; } else { switch (ta) { case 248: { var x = caml_int_compare(a[2], b[2]); if (x != 0) return x; break; } case 255: { var x = caml_int64_compare(a, b); if (x != 0) return x; break; } default: if (a.length != b.length) return (a.length < b.length)?-1:1; if (a.length > 1) stack.push(a, b, 1); } } } else return 1; } else if (b instanceof MlString || (b instanceof Array && b[0] === (b[0]|0))) { return -1; } else { if (a < b) return -1; if (a > b) return 1; if (total && a != b) { if (a == a) return 1; if (b == b) return -1; } } } if (stack.length == 0) return 0; var i = stack.pop(); b = stack.pop(); a = stack.pop(); if (i + 1 < a.length) stack.push(a, b, i + 1); a = a[i]; b = b[i]; } } function caml_compare (a, b) { return caml_compare_val (a, b, true); } function caml_create_string(len) { if (len < 0) caml_invalid_argument("String.create"); return new MlMakeString(len); } function caml_parse_format (fmt) { fmt = fmt.toString (); var len = fmt.length; if (len > 31) caml_invalid_argument("format_int: format too long"); var f = { justify:'+', signstyle:'-', filler:' ', alternate:false, base:0, signedconv:false, width:0, uppercase:false, sign:1, prec:-1, conv:'f' }; for (var i = 0; i < len; i++) { var c = fmt.charAt(i); switch (c) { case '-': f.justify = '-'; break; case '+': case ' ': f.signstyle = c; break; case '0': f.filler = '0'; break; case '#': f.alternate = true; break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': f.width = 0; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.width = f.width * 10 + c; i++ } i--; break; case '.': f.prec = 0; i++; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.prec = f.prec * 10 + c; i++ } i--; case 'd': case 'i': f.signedconv = true; /* fallthrough */ case 'u': f.base = 10; break; case 'x': f.base = 16; break; case 'X': f.base = 16; f.uppercase = true; break; case 'o': f.base = 8; break; case 'e': case 'f': case 'g': f.signedconv = true; f.conv = c; break; case 'E': case 'F': case 'G': f.signedconv = true; f.uppercase = true; f.conv = c.toLowerCase (); break; } } return f; } function caml_finish_formatting(f, rawbuffer) { if (f.uppercase) rawbuffer = rawbuffer.toUpperCase(); var len = rawbuffer.length; if (f.signedconv && (f.sign < 0 || f.signstyle != '-')) len++; if (f.alternate) { if (f.base == 8) len += 1; if (f.base == 16) len += 2; } var buffer = ""; if (f.justify == '+' && f.filler == ' ') for (var i = len; i < f.width; i++) buffer += ' '; if (f.signedconv) { if (f.sign < 0) buffer += '-'; else if (f.signstyle != '-') buffer += f.signstyle; } if (f.alternate && f.base == 8) buffer += '0'; if (f.alternate && f.base == 16) buffer += "0x"; if (f.justify == '+' && f.filler == '0') for (var i = len; i < f.width; i++) buffer += '0'; buffer += rawbuffer; if (f.justify == '-') for (var i = len; i < f.width; i++) buffer += ' '; return new MlWrappedString (buffer); } function caml_format_int(fmt, i) { if (fmt.toString() == "%d") return new MlWrappedString(""+i); var f = caml_parse_format(fmt); if (i < 0) { if (f.signedconv) { f.sign = -1; i = -i; } else i >>>= 0; } var s = i.toString(f.base); if (f.prec >= 0) { f.filler = ' '; var n = f.prec - s.length; if (n > 0) s = caml_str_repeat (n, '0') + s; } return caml_finish_formatting(f, s); } function caml_greaterequal (x, y) { return +(caml_compare(x,y,false) >= 0); } var caml_js_regexps = { amp:/&/g, lt:/ 0)?toArray.call (arguments):[undefined]; return caml_call_gen(f, args); } } var caml_global_data = [0]; function caml_failwith (msg) { caml_raise_with_string(caml_global_data[3], msg); } function caml_lex_array(s) { s = s.getFullBytes(); var a = [], l = s.length / 2; for (var i = 0; i < l; i++) a[i] = (s.charCodeAt(2 * i) | (s.charCodeAt(2 * i + 1) << 8)) << 16 >> 16; return a; } function caml_lex_engine(tbl, start_state, lexbuf) { var lex_buffer = 2; var lex_buffer_len = 3; var lex_start_pos = 5; var lex_curr_pos = 6; var lex_last_pos = 7; var lex_last_action = 8; var lex_eof_reached = 9; var lex_base = 1; var lex_backtrk = 2; var lex_default = 3; var lex_trans = 4; var lex_check = 5; if (!tbl.lex_default) { tbl.lex_base = caml_lex_array (tbl[lex_base]); tbl.lex_backtrk = caml_lex_array (tbl[lex_backtrk]); tbl.lex_check = caml_lex_array (tbl[lex_check]); tbl.lex_trans = caml_lex_array (tbl[lex_trans]); tbl.lex_default = caml_lex_array (tbl[lex_default]); } var c, state = start_state; var buffer = lexbuf[lex_buffer].getArray(); if (state >= 0) { lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = -1; } else { state = -state - 1; } for(;;) { var base = tbl.lex_base[state]; if (base < 0) return -base-1; var backtrk = tbl.lex_backtrk[state]; if (backtrk >= 0) { lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = backtrk; } if (lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]){ if (lexbuf[lex_eof_reached] == 0) return -state - 1; else c = 256; }else{ c = buffer[lexbuf[lex_curr_pos]]; lexbuf[lex_curr_pos] ++; } if (tbl.lex_check[base + c] == state) state = tbl.lex_trans[base + c]; else state = tbl.lex_default[state]; if (state < 0) { lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; if (lexbuf[lex_last_action] == -1) caml_failwith("lexing: empty token"); else return lexbuf[lex_last_action]; }else{ /* Erase the EOF condition only if the EOF pseudo-character was consumed by the automaton (i.e. there was no backtrack above) */ if (c == 256) lexbuf[lex_eof_reached] = 0; } } } function caml_make_vect (len, init) { var b = [0]; for (var i = 1; i <= len; i++) b[i] = init; return b; } function caml_ml_out_channels_list () { return 0; } function caml_obj_is_block (x) { return +(x instanceof Array); } function caml_obj_tag (x) { return (x instanceof Array)?x[0]:1000; } function caml_parse_engine(tables, env, cmd, arg) { var ERRCODE = 256; var START = 0; var TOKEN_READ = 1; var STACKS_GROWN_1 = 2; var STACKS_GROWN_2 = 3; var SEMANTIC_ACTION_COMPUTED = 4; var ERROR_DETECTED = 5; var loop = 6; var testshift = 7; var shift = 8; var shift_recover = 9; var reduce = 10; var READ_TOKEN = 0; var RAISE_PARSE_ERROR = 1; var GROW_STACKS_1 = 2; var GROW_STACKS_2 = 3; var COMPUTE_SEMANTIC_ACTION = 4; var CALL_ERROR_FUNCTION = 5; var env_s_stack = 1; var env_v_stack = 2; var env_symb_start_stack = 3; var env_symb_end_stack = 4; var env_stacksize = 5; var env_stackbase = 6; var env_curr_char = 7; var env_lval = 8; var env_symb_start = 9; var env_symb_end = 10; var env_asp = 11; var env_rule_len = 12; var env_rule_number = 13; var env_sp = 14; var env_state = 15; var env_errflag = 16; var tbl_actions = 1; var tbl_transl_const = 2; var tbl_transl_block = 3; var tbl_lhs = 4; var tbl_len = 5; var tbl_defred = 6; var tbl_dgoto = 7; var tbl_sindex = 8; var tbl_rindex = 9; var tbl_gindex = 10; var tbl_tablesize = 11; var tbl_table = 12; var tbl_check = 13; var tbl_error_function = 14; var tbl_names_const = 15; var tbl_names_block = 16; if (!tables.dgoto) { tables.defred = caml_lex_array (tables[tbl_defred]); tables.sindex = caml_lex_array (tables[tbl_sindex]); tables.check = caml_lex_array (tables[tbl_check]); tables.rindex = caml_lex_array (tables[tbl_rindex]); tables.table = caml_lex_array (tables[tbl_table]); tables.len = caml_lex_array (tables[tbl_len]); tables.lhs = caml_lex_array (tables[tbl_lhs]); tables.gindex = caml_lex_array (tables[tbl_gindex]); tables.dgoto = caml_lex_array (tables[tbl_dgoto]); } var res = 0, n, n1, n2, state1; var sp = env[env_sp]; var state = env[env_state]; var errflag = env[env_errflag]; exit:for (;;) { switch(cmd) { case START: state = 0; errflag = 0; case loop: n = tables.defred[state]; if (n != 0) { cmd = reduce; break; } if (env[env_curr_char] >= 0) { cmd = testshift; break; } res = READ_TOKEN; break exit; case TOKEN_READ: if (arg instanceof Array) { env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1]; env[env_lval] = arg[1]; } else { env[env_curr_char] = tables[tbl_transl_const][arg + 1]; env[env_lval] = 0; } case testshift: n1 = tables.sindex[state]; n2 = n1 + env[env_curr_char]; if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] && tables.check[n2] == env[env_curr_char]) { cmd = shift; break; } n1 = tables.rindex[state]; n2 = n1 + env[env_curr_char]; if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] && tables.check[n2] == env[env_curr_char]) { n = tables.table[n2]; cmd = reduce; break; } if (errflag <= 0) { res = CALL_ERROR_FUNCTION; break exit; } case ERROR_DETECTED: if (errflag < 3) { errflag = 3; for (;;) { state1 = env[env_s_stack][sp + 1]; n1 = tables.sindex[state1]; n2 = n1 + ERRCODE; if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] && tables.check[n2] == ERRCODE) { cmd = shift_recover; break; } else { if (sp <= env[env_stackbase]) return RAISE_PARSE_ERROR; sp--; } } } else { if (env[env_curr_char] == 0) return RAISE_PARSE_ERROR; env[env_curr_char] = -1; cmd = loop; break; } case shift: env[env_curr_char] = -1; if (errflag > 0) errflag--; case shift_recover: state = tables.table[n2]; sp++; if (sp >= env[env_stacksize]) { res = GROW_STACKS_1; break exit; } case STACKS_GROWN_1: env[env_s_stack][sp + 1] = state; env[env_v_stack][sp + 1] = env[env_lval]; env[env_symb_start_stack][sp + 1] = env[env_symb_start]; env[env_symb_end_stack][sp + 1] = env[env_symb_end]; cmd = loop; break; case reduce: var m = tables.len[n]; env[env_asp] = sp; env[env_rule_number] = n; env[env_rule_len] = m; sp = sp - m + 1; m = tables.lhs[n]; state1 = env[env_s_stack][sp]; n1 = tables.gindex[m]; n2 = n1 + state1; if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] && tables.check[n2] == state1) state = tables.table[n2]; else state = tables.dgoto[m]; if (sp >= env[env_stacksize]) { res = GROW_STACKS_2; break exit; } case STACKS_GROWN_2: res = COMPUTE_SEMANTIC_ACTION; break exit; case SEMANTIC_ACTION_COMPUTED: env[env_s_stack][sp + 1] = state; env[env_v_stack][sp + 1] = arg; var asp = env[env_asp]; env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; if (sp > asp) { env[env_symb_start_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; } cmd = loop; break; default: return RAISE_PARSE_ERROR; } } env[env_sp] = sp; env[env_state] = state; env[env_errflag] = errflag; return res; } function caml_register_global (n, v) { caml_global_data[n + 1] = v; } var caml_named_values = {}; function caml_register_named_value(nm,v) { caml_named_values[nm] = v; return 0; } function caml_string_equal(s1, s2) { var b1 = s1.fullBytes; var b2 = s2.fullBytes; if (b1 != null && b2 != null) return (b1 == b2)?1:0; return (s1.getFullBytes () == s2.getFullBytes ())?1:0; } (function(){function fU(jB,jC,jD,jE){return jB.length==3?jB(jC,jD,jE):caml_call_gen(jB,[jC,jD,jE]);}function bz(jy,jz,jA){return jy.length==2?jy(jz,jA):caml_call_gen(jy,[jz,jA]);}function bo(jw,jx){return jw.length==1?jw(jx):caml_call_gen(jw,[jx]);}var a=[0,new MlString("Failure")],b=[0,new MlString("Invalid_argument")],c=[0,new MlString("Not_found")],d=[0,new MlString(""),0,0,-1],e=[0,new MlString(""),1,0,0],f=new MlString("#FFFFFF"),g=[0,-1,-1];caml_register_global(5,[0,new MlString("Division_by_zero")]);caml_register_global(3,b);caml_register_global(2,a);var aU=[0,new MlString("Assert_failure")],aT=new MlString("%d"),aS=new MlString("Pervasives.do_at_exit"),aR=new MlString("Array.blit"),aQ=new MlString("List.map2"),aP=new MlString(""),aO=new MlString("syntax error"),aN=new MlString("Parsing.YYexit"),aM=new MlString("Parsing.Parse_error"),aL=new MlString("canvas"),aK=new MlString("br"),aJ=new MlString("textarea"),aI=new MlString("input"),aH=new MlString("\""),aG=new MlString(" name=\""),aF=new MlString("\""),aE=new MlString(" type=\""),aD=new MlString("<"),aC=new MlString(">"),aB=new MlString(""),aA=new MlString("2d"),az=new MlString("Dom_html.Canvas_not_available"),ay=new MlString("_"),ax=new MlString("0"),aw=new MlString("\n"),av=[0,new MlString("html.ml"),109,17],au=new MlString("main"),at=new MlString("middle"),as=new MlString("px 'Arial'"),ar=new MlString("top"),aq=new MlString("px 'Arial'"),ap=new MlString("px 'Arial'"),ao=new MlString("px 'Arial'"),an=new MlString("text"),am=new MlString("submit"),al=new MlString("#FF0000"),ak=new MlString("#55FF55"),aj=new MlString("code cannot be unified"),ai=new MlString("Dummy"),ah=new MlString("Fix.Cannot_take"),ag=new MlString("Fix.Unify_Error"),af=new MlString(""),ae=new MlString("Cannot happen in insert_rule"),ad=new MlString("Cannot happen in insert_rule"),ac=new MlString("Input Term: "),ab=new MlString("root judgement"),aa=new MlString("go"),$=new MlString("delete"),_=new MlString(""),Z=new MlString(" "),Y=new MlString("\xe9\x81\xa9\xe7\x94\xa8\xe5\x8f\xaf\xe8\x83\xbd\xe8\xa6\x8f\xe5\x89\x87\xef\xbc\x9a"),X=new MlString(""),W=new MlString(""),V=new MlString(""),U=new MlString(""),T=new MlString(""),S=new MlString(""),R=[0,new MlString(""),[0,0,0,0,0]],Q=new MlString("t"),P=new MlString("t"),O=new MlString("t"),N=new MlString("t"),M=new MlString("t"),L=new MlString("t"),K=new MlString("t"),J=new MlString(")"),I=new MlString("\xe2\x8a\x83"),H=new MlString("("),G=new MlString("of Term"),F=new MlString("of Var"),E=new MlString("MP"),D=new MlString("K"),C=new MlString("S"),B=new MlString("parser"),A=[0,259,260,261,262,0],z=new MlString("\xff\xff\x01\0\x02\0\x03\0\x03\0\x03\0\x03\0\0\0\0\0"),y=new MlString("\x02\0\x02\0\x02\0\x01\0\x01\0\x03\0\x03\0\x02\0\x02\0"),x=new MlString("\0\0\0\0\0\0\0\0\x04\0\x03\0\0\0\x07\0\0\0\b\0\0\0\0\0\0\0\x01\0\x02\0\x06\0\0\0"),w=new MlString("\x03\0\x07\0\t\0\b\0"),v=new MlString("\x07\0\0\xff\0\xff\0\0\0\0\0\0\0\xff\0\0\x06\xff\0\0\b\xff\x0b\xff\0\xff\0\0\0\0\0\0\f\xff"),u=new MlString("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\xff"),t=new MlString("\0\0\0\0\0\0\xfe\xff"),s=new MlString("\n\0\x04\0\x05\0\x06\0\x0b\0\x05\0\0\0\x05\0\x01\0\x02\0\x10\0\f\0\r\0\f\0\x0e\0\x0f\0\f\0\f\0"),r=new MlString("\x02\0\x01\x01\x02\x01\x03\x01\x06\0\x04\x01\xff\xff\x06\x01\x01\0\x02\0\f\0\x05\x01\x06\x01\x05\x01\x06\x01\x04\x01\x05\x01\x05\x01"),q=new MlString("LPAREN\0RPAREN\0ARROW\0EOI\0"),p=new MlString("VAR\0LVAR\0"),o=new MlString("unknown token"),n=[0,new MlString("\0\0\xf8\xffK\0\xa0\0\x01\0\0\0\xfd\xff\xfe\xff\x01\0\xfc\xff\xfb\xff"),new MlString("\xff\xff\xff\xff\x06\0\x05\0\x07\0\x07\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff"),new MlString("\x01\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0"),new MlString("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\b\0\0\0\0\0\b\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\x06\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\n\0\0\0\t\0\0\0\0\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\xff\xff\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),new MlString("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\b\0\xff\xff\xff\xff\0\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x04\0\xff\xff\x05\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),new MlString(""),new MlString(""),new MlString(""),new MlString(""),new MlString(""),new MlString("")],m=new MlString(";;");function l(h){throw [0,a,h];}function aV(i){throw [0,b,i];}function aW(k,j){return caml_greaterequal(k,j)?k:j;}function a7(aX,aZ){var aY=aX.getLen(),a0=aZ.getLen(),a1=caml_create_string(aY+a0|0);caml_blit_string(aX,0,a1,0,aY);caml_blit_string(aZ,0,a1,aY,a0);return a1;}function a8(a2){return caml_format_int(aT,a2);}function a9(a6){var a3=caml_ml_out_channels_list(0);for(;;){if(a3){var a4=a3[2];try {}catch(a5){}var a3=a4;continue;}return 0;}}caml_register_named_value(aS,a9);function bl(ba,a$,bc,bb,a_){if(0<=a_&&0<=a$&&!((ba.length-1-a_|0)