Sophie

Sophie

distrib > Fedora > 18 > x86_64 > media > updates > by-pkgid > 3866615ed9f87500bac83f78574eecc8 > files > 604

js-of-ocaml-doc-1.2-2.fc18.noarch.rpm

// 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.last)?b.charCodeAt(i):0;
  },
  safeGet:function (i) {
    if (!this.len) this.toBytes();
    if ((i < 0) || (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_array_set (array, index, newval) {
  if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error();
  array[index+1]=newval; return 0;
}
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_classify_float (x) {
  if (isFinite (x)) {
    if (Math.abs(x) >= 2.2250738585072014e-308) return 0;
    if (x != 0) return 1;
    return 2;
  }
  return isNaN(x)?4:3;
}
function caml_create_string(len) {
  if (len < 0) caml_invalid_argument("String.create");
  return new MlMakeString(len);
}
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_equal (x, y) { return +(caml_compare_val(x,y,false) == 0); }
function caml_fill_string(s, i, l, c) { s.fill (i, l, c); }
var caml_global_data = [0];
function caml_failwith (msg) {
  caml_raise_with_string(caml_global_data[3], msg);
}
function caml_float_of_string(s) {
  var res;
  s = s.getFullBytes();
  res = +s;
  if ((s.length > 0) && (res === res)) return res;
  s = s.replace(/_/g,"");
  res = +s;
  if (((s.length > 0) && (res === res)) || /^[+-]?nan$/i.test(s)) return res;
  caml_failwith("float_of_string");
}
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_float (fmt, x) {
  var s, f = caml_parse_format(fmt);
  var prec = (f.prec < 0)?6:f.prec;
  if (x < 0) { f.sign = -1; x = -x; }
  if (isNaN(x)) { s = "nan"; f.filler = ' '; }
  else if (!isFinite(x)) { s = "inf"; f.filler = ' '; }
  else
    switch (f.conv) {
    case 'e':
      var s = x.toExponential(prec);
      var i = s.length;
      if (s.charAt(i - 3) == 'e')
        s = s.slice (0, i - 1) + '0' + s.slice (i - 1);
      break;
    case 'f':
      s = x.toFixed(prec); break;
    case 'g':
      prec = prec?prec:1;
      s = x.toExponential(prec - 1);
      var j = s.indexOf('e');
      var exp = +s.slice(j + 1);
      if (exp < -4 || x.toFixed(0).length > prec) {
        var i = j - 1; while (s.charAt(i) == '0') i--;
        if (s.charAt(i) == '.') i--;
        s = s.slice(0, i + 1) + s.slice(j);
        i = s.length;
        if (s.charAt(i - 3) == 'e')
          s = s.slice (0, i - 1) + '0' + s.slice (i - 1);
        break;
      } else {
        var p = prec;
        if (exp < 0) { p -= exp + 1; s = x.toFixed(p); }
        else while (s = x.toFixed(p), s.length > prec + 1) p--;
        if (p) {
          var i = s.length - 1; while (s.charAt(i) == '0') i--;
          if (s.charAt(i) == '.') i--;
          s = s.slice(0, i + 1);
        }
      }
      break;
    }
  return caml_finish_formatting(f, s);
}
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_compare (a, b) { return caml_compare_val (a, b, true); }
function caml_greaterequal (x, y) { return +(caml_compare(x,y,false) >= 0); }
function caml_int64_is_negative(x) {
  return (x[3] << 16) < 0;
}
function caml_int64_neg (x) {
  var y1 = - x[1];
  var y2 = - x[2] + (y1 >> 24);
  var y3 = - x[3] + (y2 >> 24);
  return [255, y1 & 0xffffff, y2 & 0xffffff, y3 & 0xffff];
}
function caml_int64_of_int32 (x) {
  return [255, x & 0xffffff, (x >> 24) & 0xffffff, (x >> 31) & 0xffff]
}
function caml_int64_ucompare(x,y) {
  if (x[3] > y[3]) return 1;
  if (x[3] < y[3]) 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_int64_lsl1 (x) {
  x[3] = (x[3] << 1) | (x[2] >> 23);
  x[2] = ((x[2] << 1) | (x[1] >> 23)) & 0xffffff;
  x[1] = (x[1] << 1) & 0xffffff;
}
function caml_int64_lsr1 (x) {
  x[1] = ((x[1] >>> 1) | (x[2] << 23)) & 0xffffff;
  x[2] = ((x[2] >>> 1) | (x[3] << 23)) & 0xffffff;
  x[3] = x[3] >>> 1;
}
function caml_int64_sub (x, y) {
  var z1 = x[1] - y[1];
  var z2 = x[2] - y[2] + (z1 >> 24);
  var z3 = x[3] - y[3] + (z2 >> 24);
  return [255, z1 & 0xffffff, z2 & 0xffffff, z3 & 0xffff];
}
function caml_int64_udivmod (x, y) {
  var offset = 0;
  var modulus = x.slice ();
  var divisor = y.slice ();
  var quotient = [255, 0, 0, 0];
  while (caml_int64_ucompare (modulus, divisor) > 0) {
    offset++;
    caml_int64_lsl1 (divisor);
  }
  while (offset >= 0) {
    offset --;
    caml_int64_lsl1 (quotient);
    if (caml_int64_ucompare (modulus, divisor) >= 0) {
      quotient[1] ++;
      modulus = caml_int64_sub (modulus, divisor);
    }
    caml_int64_lsr1 (divisor);
  }
  return [0,quotient, modulus];
}
function caml_int64_to_int32 (x) {
  return x[1] | (x[2] << 24);
}
function caml_int64_is_zero(x) {
  return (x[3]|x[2]|x[1]) == 0;
}
function caml_int64_format (fmt, x) {
  var f = caml_parse_format(fmt);
  if (f.signedconv && caml_int64_is_negative(x)) {
    f.sign = -1; x = caml_int64_neg(x);
  }
  var buffer = "";
  var wbase = caml_int64_of_int32(f.base);
  var cvtbl = "0123456789abcdef";
  do {
    var p = caml_int64_udivmod(x, wbase);
    x = p[1];
    buffer = cvtbl.charAt(caml_int64_to_int32(p[2])) + buffer;
  } while (! caml_int64_is_zero(x));
  if (f.prec >= 0) {
    f.filler = ' ';
    var n = f.prec - buffer.length;
    if (n > 0) buffer = caml_str_repeat (n, '0') + buffer;
  }
  return caml_finish_formatting(f, buffer);
}
function caml_parse_sign_and_base (s) {
  var i = 0, base = 10, sign = s.get(0) == 45?(i++,-1):1;
  if (s.get(i) == 48)
    switch (s.get(i + 1)) {
    case 120: case 88: base = 16; i += 2; break;
    case 111: case 79: base =  8; i += 2; break;
    case  98: case 66: base =  2; i += 2; break;
    }
  return [i, sign, base];
}
function caml_parse_digit(c) {
  if (c >= 48 && c <= 57)  return c - 48;
  if (c >= 65 && c <= 90)  return c - 55;
  if (c >= 97 && c <= 122) return c - 87;
  return -1;
}
function caml_int_of_string (s) {
  var r = caml_parse_sign_and_base (s);
  var i = r[0], sign = r[1], base = r[2];
  var threshold = -1 >>> 0;
  var c = s.get(i);
  var d = caml_parse_digit(c);
  if (d < 0 || d >= base) caml_failwith("int_of_string");
  var res = d;
  for (;;) {
    i++;
    c = s.get(i);
    if (c == 95) continue;
    d = caml_parse_digit(c);
    if (d < 0 || d >= base) break;
    res = base * res + d;
    if (res > threshold) caml_failwith("int_of_string");
  }
  if (i != s.getLen()) caml_failwith("int_of_string");
  res = sign * res;
  if ((res | 0) != res) caml_failwith("int_of_string");
  return res;
}
function caml_is_printable(c) { return +(c > 31 && c < 127); }
function caml_js_from_byte_string (s) {return s.getFullBytes();}
function caml_js_get_console () {
  var c = window.console?window.console:{};
  var m = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
           "trace", "group", "groupCollapsed", "groupEnd", "time", "timeEnd"];
  function f () {}
  for (var i = 0; i < m.length; i++) if (!c[m[i]]) c[m[i]]=f;
  return c;
}
function caml_js_on_ie () {
  var ua = window.navigator?window.navigator.userAgent:"";
  return ua.indexOf("MSIE") != -1 && ua.indexOf("Opera") != 0;
}
function caml_js_to_byte_string (s) {return new MlString (s);}
function caml_js_wrap_callback(f) {
  var toArray = Array.prototype.slice;
  return function () {
    var args = (arguments.length > 0)?toArray.call (arguments):[undefined];
    return caml_call_gen(f, args);
  }
}
function caml_make_vect (len, init) {
  var b = [0]; for (var i = 1; i <= len; i++) b[i] = init; return b;
}
function MlStringFromArray (a) {
  var len = a.length; this.array = a; this.len = this.last = len;
}
MlStringFromArray.prototype = new MlString ();
var caml_md5_string =
function () {
  function add (x, y) { return (x + y) | 0; }
  function xx(q,a,b,x,s,t) {
    a = add(add(a, q), add(x, t));
    return add((a << s) | (a >>> (32 - s)), b);
  }
  function ff(a,b,c,d,x,s,t) {
    return xx((b & c) | ((~b) & d), a, b, x, s, t);
  }
  function gg(a,b,c,d,x,s,t) {
    return xx((b & d) | (c & (~d)), a, b, x, s, t);
  }
  function hh(a,b,c,d,x,s,t) { return xx(b ^ c ^ d, a, b, x, s, t); }
  function ii(a,b,c,d,x,s,t) { return xx(c ^ (b | (~d)), a, b, x, s, t); }
  function md5(buffer, length) {
    var i = length;
    buffer[i >> 2] |= 0x80 << (8 * (i & 3));
    for (i = (i & ~0x3) + 4;(i & 0x3F) < 56 ;i += 4)
      buffer[i >> 2] = 0;
    buffer[i >> 2] = length << 3;
    i += 4;
    buffer[i >> 2] = (length >> 29) & 0x1FFFFFFF;
    var w = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476];
    for(i = 0; i < buffer.length; i += 16) {
      var a = w[0], b = w[1], c = w[2], d = w[3];
      a = ff(a, b, c, d, buffer[i+ 0], 7, 0xD76AA478);
      d = ff(d, a, b, c, buffer[i+ 1], 12, 0xE8C7B756);
      c = ff(c, d, a, b, buffer[i+ 2], 17, 0x242070DB);
      b = ff(b, c, d, a, buffer[i+ 3], 22, 0xC1BDCEEE);
      a = ff(a, b, c, d, buffer[i+ 4], 7, 0xF57C0FAF);
      d = ff(d, a, b, c, buffer[i+ 5], 12, 0x4787C62A);
      c = ff(c, d, a, b, buffer[i+ 6], 17, 0xA8304613);
      b = ff(b, c, d, a, buffer[i+ 7], 22, 0xFD469501);
      a = ff(a, b, c, d, buffer[i+ 8], 7, 0x698098D8);
      d = ff(d, a, b, c, buffer[i+ 9], 12, 0x8B44F7AF);
      c = ff(c, d, a, b, buffer[i+10], 17, 0xFFFF5BB1);
      b = ff(b, c, d, a, buffer[i+11], 22, 0x895CD7BE);
      a = ff(a, b, c, d, buffer[i+12], 7, 0x6B901122);
      d = ff(d, a, b, c, buffer[i+13], 12, 0xFD987193);
      c = ff(c, d, a, b, buffer[i+14], 17, 0xA679438E);
      b = ff(b, c, d, a, buffer[i+15], 22, 0x49B40821);
      a = gg(a, b, c, d, buffer[i+ 1], 5, 0xF61E2562);
      d = gg(d, a, b, c, buffer[i+ 6], 9, 0xC040B340);
      c = gg(c, d, a, b, buffer[i+11], 14, 0x265E5A51);
      b = gg(b, c, d, a, buffer[i+ 0], 20, 0xE9B6C7AA);
      a = gg(a, b, c, d, buffer[i+ 5], 5, 0xD62F105D);
      d = gg(d, a, b, c, buffer[i+10], 9, 0x02441453);
      c = gg(c, d, a, b, buffer[i+15], 14, 0xD8A1E681);
      b = gg(b, c, d, a, buffer[i+ 4], 20, 0xE7D3FBC8);
      a = gg(a, b, c, d, buffer[i+ 9], 5, 0x21E1CDE6);
      d = gg(d, a, b, c, buffer[i+14], 9, 0xC33707D6);
      c = gg(c, d, a, b, buffer[i+ 3], 14, 0xF4D50D87);
      b = gg(b, c, d, a, buffer[i+ 8], 20, 0x455A14ED);
      a = gg(a, b, c, d, buffer[i+13], 5, 0xA9E3E905);
      d = gg(d, a, b, c, buffer[i+ 2], 9, 0xFCEFA3F8);
      c = gg(c, d, a, b, buffer[i+ 7], 14, 0x676F02D9);
      b = gg(b, c, d, a, buffer[i+12], 20, 0x8D2A4C8A);
      a = hh(a, b, c, d, buffer[i+ 5], 4, 0xFFFA3942);
      d = hh(d, a, b, c, buffer[i+ 8], 11, 0x8771F681);
      c = hh(c, d, a, b, buffer[i+11], 16, 0x6D9D6122);
      b = hh(b, c, d, a, buffer[i+14], 23, 0xFDE5380C);
      a = hh(a, b, c, d, buffer[i+ 1], 4, 0xA4BEEA44);
      d = hh(d, a, b, c, buffer[i+ 4], 11, 0x4BDECFA9);
      c = hh(c, d, a, b, buffer[i+ 7], 16, 0xF6BB4B60);
      b = hh(b, c, d, a, buffer[i+10], 23, 0xBEBFBC70);
      a = hh(a, b, c, d, buffer[i+13], 4, 0x289B7EC6);
      d = hh(d, a, b, c, buffer[i+ 0], 11, 0xEAA127FA);
      c = hh(c, d, a, b, buffer[i+ 3], 16, 0xD4EF3085);
      b = hh(b, c, d, a, buffer[i+ 6], 23, 0x04881D05);
      a = hh(a, b, c, d, buffer[i+ 9], 4, 0xD9D4D039);
      d = hh(d, a, b, c, buffer[i+12], 11, 0xE6DB99E5);
      c = hh(c, d, a, b, buffer[i+15], 16, 0x1FA27CF8);
      b = hh(b, c, d, a, buffer[i+ 2], 23, 0xC4AC5665);
      a = ii(a, b, c, d, buffer[i+ 0], 6, 0xF4292244);
      d = ii(d, a, b, c, buffer[i+ 7], 10, 0x432AFF97);
      c = ii(c, d, a, b, buffer[i+14], 15, 0xAB9423A7);
      b = ii(b, c, d, a, buffer[i+ 5], 21, 0xFC93A039);
      a = ii(a, b, c, d, buffer[i+12], 6, 0x655B59C3);
      d = ii(d, a, b, c, buffer[i+ 3], 10, 0x8F0CCC92);
      c = ii(c, d, a, b, buffer[i+10], 15, 0xFFEFF47D);
      b = ii(b, c, d, a, buffer[i+ 1], 21, 0x85845DD1);
      a = ii(a, b, c, d, buffer[i+ 8], 6, 0x6FA87E4F);
      d = ii(d, a, b, c, buffer[i+15], 10, 0xFE2CE6E0);
      c = ii(c, d, a, b, buffer[i+ 6], 15, 0xA3014314);
      b = ii(b, c, d, a, buffer[i+13], 21, 0x4E0811A1);
      a = ii(a, b, c, d, buffer[i+ 4], 6, 0xF7537E82);
      d = ii(d, a, b, c, buffer[i+11], 10, 0xBD3AF235);
      c = ii(c, d, a, b, buffer[i+ 2], 15, 0x2AD7D2BB);
      b = ii(b, c, d, a, buffer[i+ 9], 21, 0xEB86D391);
      w[0] = add(a, w[0]);
      w[1] = add(b, w[1]);
      w[2] = add(c, w[2]);
      w[3] = add(d, w[3]);
    }
    var t = [];
    for (var i = 0; i < 4; i++)
      for (var j = 0; j < 4; j++)
        t[i * 4 + j] = (w[i] >> (8 * j)) & 0xFF;
    return t;
  }
  return function (s, ofs, len) {
    var buf = [];
    if (s.array) {
      var a = s.array;
      for (var i = 0; i < len; i+=4) {
        var j = i + ofs;
        buf[i>>2] = a[j] | (a[j+1] << 8) | (a[j+2] << 16) | (a[j+3] << 24);
      }
      for (; i < len; i++) buf[i>>2] |= a[i + ofs] << (8 * (i & 3));
    } else {
      var b = s.getFullBytes();
      for (var i = 0; i < len; i+=4) {
        var j = i + ofs;
        buf[i>>2] =
          b.charCodeAt(j) | (b.charCodeAt(j+1) << 8) |
          (b.charCodeAt(j+2) << 16) | (b.charCodeAt(j+3) << 24);
      }
      for (; i < len; i++) buf[i>>2] |= b.charCodeAt(i + ofs) << (8 * (i & 3));
    }
    return new MlStringFromArray(md5(buf, len));
  }
} ();
function caml_ml_out_channels_list () { return 0; }
function caml_raise_constant (tag) { throw [0, tag]; }
function caml_raise_zero_divide () {
  caml_raise_constant(caml_global_data[6]);
}
function caml_mod(x,y) {
  if (y == 0) caml_raise_zero_divide ();
  return x%y;
}
function caml_mul(x,y) {
  return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0;
}
function caml_notequal (x, y) { return +(caml_compare_val(x,y,false) != 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_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 caml_string_notequal(s1, s2) { return 1-caml_string_equal(s1, s2); }
function caml_sys_get_config () {
  return [0, new MlWrappedString("Unix"), 32];
}
function caml_update_dummy (x, y) {
  if( typeof y==="function" ) { x.fun = y; return 0; }
  if( y.fun ) { x.fun = y.fun; return 0; }
  var i = y.length; while (i--) x[i] = y[i]; return 0;
}
(function()
   {function _jn_(_vw_,_vx_,_vy_,_vz_,_vA_,_vB_,_vC_)
     {return _vw_.length==6
              ?_vw_(_vx_,_vy_,_vz_,_vA_,_vB_,_vC_)
              :caml_call_gen(_vw_,[_vx_,_vy_,_vz_,_vA_,_vB_,_vC_]);}
    function _fb_(_vs_,_vt_,_vu_,_vv_)
     {return _vs_.length==3
              ?_vs_(_vt_,_vu_,_vv_)
              :caml_call_gen(_vs_,[_vt_,_vu_,_vv_]);}
    function _fG_(_vp_,_vq_,_vr_)
     {return _vp_.length==2?_vp_(_vq_,_vr_):caml_call_gen(_vp_,[_vq_,_vr_]);}
    function _cQ_(_vn_,_vo_)
     {return _vn_.length==1?_vn_(_vo_):caml_call_gen(_vn_,[_vo_]);}
    var
     _a_=[0,new MlString("Failure")],
     _b_=[0,new MlString("Invalid_argument")],
     _c_=[0,new MlString("Not_found")],
     _d_=[0,new MlString("Assert_failure")],
     _e_=new MlString("File \"%s\", line %d, characters %d-%d: %s"),
     _f_=new MlString("monkey.model"),
     _g_=new MlString("canvas");
    caml_register_global(5,[0,new MlString("Division_by_zero")]);
    caml_register_global(3,_b_);
    caml_register_global(2,_a_);
    var
     _cm_=[0,new MlString("Out_of_memory")],
     _cl_=[0,new MlString("Match_failure")],
     _ck_=[0,new MlString("Stack_overflow")],
     _cj_=new MlString("%.12g"),
     _ci_=new MlString("."),
     _ch_=new MlString("%d"),
     _cg_=new MlString("true"),
     _cf_=new MlString("false"),
     _ce_=new MlString("Pervasives.do_at_exit"),
     _cd_=new MlString("\\b"),
     _cc_=new MlString("\\t"),
     _cb_=new MlString("\\n"),
     _ca_=new MlString("\\r"),
     _b$_=new MlString("\\\\"),
     _b__=new MlString("\\'"),
     _b9_=new MlString(""),
     _b8_=new MlString("String.blit"),
     _b7_=new MlString("String.sub"),
     _b6_=new MlString("Queue.Empty"),
     _b5_=new MlString("Buffer.add: cannot grow buffer"),
     _b4_=new MlString("%"),
     _b3_=new MlString(""),
     _b2_=new MlString(""),
     _b1_=new MlString("\""),
     _b0_=new MlString("\""),
     _bZ_=new MlString("'"),
     _bY_=new MlString("'"),
     _bX_=new MlString("."),
     _bW_=new MlString("printf: bad positional specification (0)."),
     _bV_=new MlString("%_"),
     _bU_=[0,new MlString("printf.ml"),144,8],
     _bT_=new MlString("''"),
     _bS_=new MlString("Printf: premature end of format string ``"),
     _bR_=new MlString("''"),
     _bQ_=new MlString(" in format string ``"),
     _bP_=new MlString(", at char number "),
     _bO_=new MlString("Printf: bad conversion %"),
     _bN_=new MlString("Sformat.index_of_int: negative argument "),
     _bM_=new MlString(""),
     _bL_=new MlString(", %s%s"),
     _bK_=new MlString("Out of memory"),
     _bJ_=new MlString("Stack overflow"),
     _bI_=new MlString("Pattern matching failed"),
     _bH_=new MlString("Assertion failed"),
     _bG_=new MlString("(%s%s)"),
     _bF_=new MlString(""),
     _bE_=new MlString(""),
     _bD_=new MlString("(%s)"),
     _bC_=new MlString("%d"),
     _bB_=new MlString("%S"),
     _bA_=new MlString("_"),
     _bz_=new MlString("x"),
     _by_=[0,new MlString("src/core/lwt.ml"),483,20],
     _bx_=[0,new MlString("src/core/lwt.ml"),486,8],
     _bw_=[0,new MlString("src/core/lwt.ml"),461,20],
     _bv_=[0,new MlString("src/core/lwt.ml"),464,8],
     _bu_=[0,new MlString("src/core/lwt.ml"),440,20],
     _bt_=[0,new MlString("src/core/lwt.ml"),443,8],
     _bs_=new MlString("Lwt.fast_connect"),
     _br_=new MlString("Lwt.connect"),
     _bq_=new MlString("Lwt.wakeup_exn"),
     _bp_=new MlString("Lwt.wakeup"),
     _bo_=new MlString("Lwt.Canceled"),
     _bn_=new MlString("script"),
     _bm_=new MlString("canvas"),
     _bl_=new MlString("\\$&"),
     _bk_=new MlString("$$$$"),
     _bj_=new MlString("g"),
     _bi_=new MlString("g"),
     _bh_=new MlString("[$]"),
     _bg_=new MlString("[\\][()\\\\|+*.?{}^$]"),
     _bf_=[0,new MlString(""),0],
     _be_=new MlString(""),
     _bd_=new MlString(""),
     _bc_=new MlString("#"),
     _bb_=new MlString(""),
     _ba_=new MlString("?"),
     _a$_=new MlString(""),
     _a__=new MlString("/"),
     _a9_=new MlString("/"),
     _a8_=new MlString(":"),
     _a7_=new MlString(""),
     _a6_=new MlString("http://"),
     _a5_=new MlString(""),
     _a4_=new MlString("#"),
     _a3_=new MlString(""),
     _a2_=new MlString("?"),
     _a1_=new MlString(""),
     _a0_=new MlString("/"),
     _aZ_=new MlString("/"),
     _aY_=new MlString(":"),
     _aX_=new MlString(""),
     _aW_=new MlString("https://"),
     _aV_=new MlString(""),
     _aU_=new MlString("#"),
     _aT_=new MlString(""),
     _aS_=new MlString("?"),
     _aR_=new MlString(""),
     _aQ_=new MlString("/"),
     _aP_=new MlString("file://"),
     _aO_=new MlString(""),
     _aN_=new MlString(""),
     _aM_=new MlString(""),
     _aL_=new MlString(""),
     _aK_=new MlString(""),
     _aJ_=new MlString(""),
     _aI_=new MlString("="),
     _aH_=new MlString("&"),
     _aG_=new MlString("file"),
     _aF_=new MlString("file:"),
     _aE_=new MlString("http"),
     _aD_=new MlString("http:"),
     _aC_=new MlString("https"),
     _aB_=new MlString("https:"),
     _aA_=new MlString("%2B"),
     _az_=new MlString("Url.Local_exn"),
     _ay_=new MlString("+"),
     _ax_=new MlString("Url.Not_an_http_protocol"),
     _aw_=
      new
       MlString
       ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?/([^\\?#]*)(\\?([^#]*))?(#(.*))?$"),
     _av_=
      new MlString("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#])*)?(#(.*))?$"),
     _au_=new MlString("browser can't read file: unimplemented"),
     _at_=new MlString("utf8"),
     _as_=[0,new MlString("file.ml"),132,15],
     _ar_=new MlString("string"),
     _aq_=new MlString("can't retrieve file name: not implemented"),
     _ap_=new MlString(""),
     _ao_=new MlString("POST"),
     _an_=new MlString("multipart/form-data; boundary="),
     _am_=new MlString("POST"),
     _al_=
      [0,
       new MlString("POST"),
       [0,new MlString("application/x-www-form-urlencoded")],
       126925477],
     _ak_=[0,new MlString("POST"),0,126925477],
     _aj_=new MlString("GET"),
     _ai_=new MlString("?"),
     _ah_=new MlString("Content-type"),
     _ag_=new MlString("="),
     _af_=new MlString("="),
     _ae_=new MlString("&"),
     _ad_=new MlString("Content-Type: application/octet-stream\r\n"),
     _ac_=new MlString("\"\r\n"),
     _ab_=new MlString("\"; filename=\""),
     _aa_=new MlString("Content-Disposition: form-data; name=\""),
     _$_=new MlString("\r\n"),
     ___=new MlString("\r\n"),
     _Z_=new MlString("\r\n"),
     _Y_=new MlString("--"),
     _X_=new MlString("\r\n"),
     _W_=new MlString("\"\r\n\r\n"),
     _V_=new MlString("Content-Disposition: form-data; name=\""),
     _U_=new MlString("--\r\n"),
     _T_=new MlString("--"),
     _S_=new MlString("js_of_ocaml-------------------"),
     _R_=new MlString("Msxml2.XMLHTTP"),
     _Q_=new MlString("Msxml3.XMLHTTP"),
     _P_=new MlString("Microsoft.XMLHTTP"),
     _O_=[0,new MlString("xmlHttpRequest.ml"),79,2],
     _N_=new MlString("XmlHttpRequest.Wrong_headers"),
     _M_=new MlString("webgl"),
     _L_=new MlString("experimental-webgl"),
     _K_=new MlString("uncaught exception: %s"),
     _J_=new MlString("%.1f"),
     _I_=new MlString("loading"),
     _H_=new MlString("fps"),
     _G_=new MlString("fragment-shader"),
     _F_=new MlString("vertex-shader"),
     _E_=new MlString("program loaded"),
     _D_=new MlString("u_proj"),
     _C_=new MlString("u_lightPos"),
     _B_=new MlString("u_ambientLight"),
     _A_=new MlString("a_position"),
     _z_=new MlString("a_normal"),
     _y_=new MlString("ready"),
     _x_=new MlString("\n"),
     _w_=[0,1,[0,2,[0,3,[0,4,0]]]],
     _v_=new MlString("f"),
     _u_=new MlString("v"),
     _t_=new MlString("vn"),
     _s_=[0,1,[0,2,0]],
     _r_=new MlString("can't find script element %s"),
     _q_=new MlString("Unable to link the shader program."),
     _p_=new MlString("An error occurred compiling the shaders: \n%s\n%s"),
     _o_=new MlString("can't initialise webgl context"),
     _n_=new MlString("can't find canvas element %s"),
     _m_=new MlString("WebGL error"),
     _l_=new MlString("(v|vn|f)\\ ([^\\ ]+)\\ ([^\\ ]+)\\ ([^\\ ]+)"),
     _k_=new MlString("([0-9]+)//([0-9]+)");
    function _j_(s_h_){throw [0,_a_,s_h_];}
    function _cn_(s_i_){throw [0,_b_,s_i_];}
    function _cy_(s1_co_,s2_cq_)
     {var
       l1_cp_=s1_co_.getLen(),
       l2_cr_=s2_cq_.getLen(),
       s_cs_=caml_create_string(l1_cp_+l2_cr_|0);
      caml_blit_string(s1_co_,0,s_cs_,0,l1_cp_);
      caml_blit_string(s2_cq_,0,s_cs_,l1_cp_,l2_cr_);
      return s_cs_;}
    function string_of_int_cL_(n_ct_){return caml_format_int(_ch_,n_ct_);}
    function string_of_float_cM_(f_cu_)
     {var _cv_=caml_format_float(_cj_,f_cu_),i_cw_=0,l_cx_=_cv_.getLen();
      for(;;)
       {if(l_cx_<=i_cw_)
         var _cz_=_cy_(_cv_,_ci_);
        else
         {var
           _cA_=_cv_.safeGet(i_cw_),
           _cB_=48<=_cA_?58<=_cA_?0:1:45===_cA_?1:0;
          if(_cB_){var _cC_=i_cw_+1|0,i_cw_=_cC_;continue;}
          var _cz_=_cv_;}
        return _cz_;}}
    function _cE_(l1_cD_,l2_cF_)
     {if(l1_cD_)
       {var hd_cG_=l1_cD_[1];return [0,hd_cG_,_cE_(l1_cD_[2],l2_cF_)];}
      return l2_cF_;}
    function do_at_exit_cN_(param_cK_)
     {var param_cH_=caml_ml_out_channels_list(0);
      for(;;)
       {if(param_cH_)
         {var l_cI_=param_cH_[2];
          try {}catch(_cJ_){}
          var param_cH_=l_cI_;
          continue;}
        return 0;}}
    caml_register_named_value(_ce_,do_at_exit_cN_);
    function _c8_(l_cO_,f_cP_)
     {if(0===l_cO_)return [0];
      var res_cR_=caml_make_vect(l_cO_,_cQ_(f_cP_,0)),_cS_=1,_cT_=l_cO_-1|0;
      if(!(_cT_<_cS_))
       {var i_cU_=_cS_;
        for(;;)
         {res_cR_[i_cU_+1]=_cQ_(f_cP_,i_cU_);
          var _cV_=i_cU_+1|0;
          if(_cT_!==i_cU_){var i_cU_=_cV_;continue;}
          break;}}
      return res_cR_;}
    function _c9_(l_cW_)
     {if(l_cW_)
       {var accu_cX_=0,param_cY_=l_cW_,tl_c4_=l_cW_[2],hd_c1_=l_cW_[1];
        for(;;)
         {if(param_cY_)
           {var
             t_c0_=param_cY_[2],
             _cZ_=accu_cX_+1|0,
             accu_cX_=_cZ_,
             param_cY_=t_c0_;
            continue;}
          var a_c2_=caml_make_vect(accu_cX_,hd_c1_),i_c3_=1,param_c5_=tl_c4_;
          for(;;)
           {if(param_c5_)
             {var tl_c6_=param_c5_[2];
              a_c2_[i_c3_+1]=param_c5_[1];
              var _c7_=i_c3_+1|0,i_c3_=_c7_,param_c5_=tl_c6_;
              continue;}
            return a_c2_;}}}
      return [0];}
    function _dm_(l_c__)
     {var l1_c$_=l_c__,l2_da_=0;
      for(;;)
       {if(l1_c$_)
         {var
           l_db_=l1_c$_[2],
           _dc_=[0,l1_c$_[1],l2_da_],
           l1_c$_=l_db_,
           l2_da_=_dc_;
          continue;}
        return l2_da_;}}
    function _dg_(f_de_,param_dd_)
     {if(param_dd_)
       {var l_df_=param_dd_[2],r_dh_=_cQ_(f_de_,param_dd_[1]);
        return [0,r_dh_,_dg_(f_de_,l_df_)];}
      return 0;}
    function _dn_(f_dk_,param_di_)
     {var param_dj_=param_di_;
      for(;;)
       {if(param_dj_)
         {var l_dl_=param_dj_[2];
          _cQ_(f_dk_,param_dj_[1]);
          var param_dj_=l_dl_;
          continue;}
        return 0;}}
    function _dK_(n_do_,c_dq_)
     {var s_dp_=caml_create_string(n_do_);
      caml_fill_string(s_dp_,0,n_do_,c_dq_);
      return s_dp_;}
    function _dL_(s_dt_,ofs_dr_,len_ds_)
     {if(0<=ofs_dr_&&0<=len_ds_&&!((s_dt_.getLen()-len_ds_|0)<ofs_dr_))
       {var r_du_=caml_create_string(len_ds_);
        caml_blit_string(s_dt_,ofs_dr_,r_du_,0,len_ds_);
        return r_du_;}
      return _cn_(_b7_);}
    function _dM_(s1_dx_,ofs1_dw_,s2_dz_,ofs2_dy_,len_dv_)
     {if
       (0<=
        len_dv_&&
        0<=
        ofs1_dw_&&
        !((s1_dx_.getLen()-len_dv_|0)<ofs1_dw_)&&
        0<=
        ofs2_dy_&&
        !((s2_dz_.getLen()-len_dv_|0)<ofs2_dy_))
       return caml_blit_string(s1_dx_,ofs1_dw_,s2_dz_,ofs2_dy_,len_dv_);
      return _cn_(_b8_);}
    function _dN_(sep_dG_,l_dA_)
     {if(l_dA_)
       {var hd_dB_=l_dA_[1],num_dC_=[0,0],len_dD_=[0,0],tl_dF_=l_dA_[2];
        _dn_
         (function(s_dE_)
           {num_dC_[1]+=1;len_dD_[1]=len_dD_[1]+s_dE_.getLen()|0;return 0;},
          l_dA_);
        var
         r_dH_=
          caml_create_string
           (len_dD_[1]+caml_mul(sep_dG_.getLen(),num_dC_[1]-1|0)|0);
        caml_blit_string(hd_dB_,0,r_dH_,0,hd_dB_.getLen());
        var pos_dI_=[0,hd_dB_.getLen()];
        _dn_
         (function(s_dJ_)
           {caml_blit_string(sep_dG_,0,r_dH_,pos_dI_[1],sep_dG_.getLen());
            pos_dI_[1]=pos_dI_[1]+sep_dG_.getLen()|0;
            caml_blit_string(s_dJ_,0,r_dH_,pos_dI_[1],s_dJ_.getLen());
            pos_dI_[1]=pos_dI_[1]+s_dJ_.getLen()|0;
            return 0;},
          tl_dF_);
        return r_dH_;}
      return _b9_;}
    var
     _dO_=caml_sys_get_config(0)[2],
     _dP_=caml_mul(_dO_/8|0,(1<<(_dO_-10|0))-1|0)-1|0,
     _dU_=252,
     _dT_=253,
     _dS_=[0,_b6_];
    function _dR_(q_dQ_){return q_dQ_[1];}
    function _ea_(n_dV_)
     {var
       n_dW_=1<=n_dV_?n_dV_:1,
       n_dX_=_dP_<n_dW_?_dP_:n_dW_,
       s_dY_=caml_create_string(n_dX_);
      return [0,s_dY_,0,n_dX_,s_dY_];}
    function _eb_(b_dZ_){return _dL_(b_dZ_[1],0,b_dZ_[2]);}
    function _d6_(b_d0_,more_d2_)
     {var new_len_d1_=[0,b_d0_[3]];
      for(;;)
       {if(new_len_d1_[1]<(b_d0_[2]+more_d2_|0))
         {new_len_d1_[1]=2*new_len_d1_[1]|0;continue;}
        if(_dP_<new_len_d1_[1])
         if((b_d0_[2]+more_d2_|0)<=_dP_)new_len_d1_[1]=_dP_;else _j_(_b5_);
        var new_buffer_d3_=caml_create_string(new_len_d1_[1]);
        _dM_(b_d0_[1],0,new_buffer_d3_,0,b_d0_[2]);
        b_d0_[1]=new_buffer_d3_;
        b_d0_[3]=new_len_d1_[1];
        return 0;}}
    function _ec_(b_d4_,c_d7_)
     {var pos_d5_=b_d4_[2];
      if(b_d4_[3]<=pos_d5_)_d6_(b_d4_,1);
      b_d4_[1].safeSet(pos_d5_,c_d7_);
      b_d4_[2]=pos_d5_+1|0;
      return 0;}
    function _ed_(b_d__,s_d8_)
     {var len_d9_=s_d8_.getLen(),new_position_d$_=b_d__[2]+len_d9_|0;
      if(b_d__[3]<new_position_d$_)_d6_(b_d__,len_d9_);
      _dM_(s_d8_,0,b_d__[1],b_d__[2],len_d9_);
      b_d__[2]=new_position_d$_;
      return 0;}
    function index_of_int_eh_(i_ee_)
     {return 0<=i_ee_?i_ee_:_j_(_cy_(_bN_,string_of_int_cL_(i_ee_)));}
    function add_int_index_ei_(i_ef_,idx_eg_)
     {return index_of_int_eh_(i_ef_+idx_eg_|0);}
    var _ej_=_cQ_(add_int_index_ei_,1);
    function _eq_(fmt_ek_){return _dL_(fmt_ek_,0,fmt_ek_.getLen());}
    function bad_conversion_es_(sfmt_el_,i_em_,c_eo_)
     {var
       _en_=_cy_(_bQ_,_cy_(sfmt_el_,_bR_)),
       _ep_=_cy_(_bP_,_cy_(string_of_int_cL_(i_em_),_en_));
      return _cn_(_cy_(_bO_,_cy_(_dK_(1,c_eo_),_ep_)));}
    function bad_conversion_format_fh_(fmt_er_,i_eu_,c_et_)
     {return bad_conversion_es_(_eq_(fmt_er_),i_eu_,c_et_);}
    function incomplete_format_fi_(fmt_ev_)
     {return _cn_(_cy_(_bS_,_cy_(_eq_(fmt_ev_),_bT_)));}
    function extract_format_eP_(fmt_ew_,start_eE_,stop_eG_,widths_eI_)
     {function skip_positional_spec_eD_(start_ex_)
       {if
         ((fmt_ew_.safeGet(start_ex_)-48|0)<
          0||
          9<
          (fmt_ew_.safeGet(start_ex_)-48|0))
         return start_ex_;
        var i_ey_=start_ex_+1|0;
        for(;;)
         {var _ez_=fmt_ew_.safeGet(i_ey_);
          if(48<=_ez_)
           {if(!(58<=_ez_)){var _eB_=i_ey_+1|0,i_ey_=_eB_;continue;}
            var _eA_=0;}
          else
           if(36===_ez_){var _eC_=i_ey_+1|0,_eA_=1;}else var _eA_=0;
          if(!_eA_)var _eC_=start_ex_;
          return _eC_;}}
      var
       start_eF_=skip_positional_spec_eD_(start_eE_+1|0),
       b_eH_=_ea_((stop_eG_-start_eF_|0)+10|0);
      _ec_(b_eH_,37);
      var i_eJ_=start_eF_,widths_eK_=_dm_(widths_eI_);
      for(;;)
       {if(i_eJ_<=stop_eG_)
         {var _eL_=fmt_ew_.safeGet(i_eJ_);
          if(42===_eL_)
           {if(widths_eK_)
             {var t_eM_=widths_eK_[2];
              _ed_(b_eH_,string_of_int_cL_(widths_eK_[1]));
              var
               i_eN_=skip_positional_spec_eD_(i_eJ_+1|0),
               i_eJ_=i_eN_,
               widths_eK_=t_eM_;
              continue;}
            throw [0,_d_,_bU_];}
          _ec_(b_eH_,_eL_);
          var _eO_=i_eJ_+1|0,i_eJ_=_eO_;
          continue;}
        return _eb_(b_eH_);}}
    function extract_format_int_gI_
     (conv_eV_,fmt_eT_,start_eS_,stop_eR_,widths_eQ_)
     {var sfmt_eU_=extract_format_eP_(fmt_eT_,start_eS_,stop_eR_,widths_eQ_);
      if(78!==conv_eV_&&110!==conv_eV_)return sfmt_eU_;
      sfmt_eU_.safeSet(sfmt_eU_.getLen()-1|0,117);
      return sfmt_eU_;}
    function sub_format_fj_
     (incomplete_format_e2_,bad_conversion_format_fa_,conv_ff_,fmt_eW_,i_fe_)
     {var len_eX_=fmt_eW_.getLen();
      function sub_fmt_fc_(c_eY_,i_e$_)
       {var close_eZ_=40===c_eY_?41:125;
        function sub_e__(j_e0_)
         {var j_e1_=j_e0_;
          for(;;)
           {if(len_eX_<=j_e1_)return _cQ_(incomplete_format_e2_,fmt_eW_);
            if(37===fmt_eW_.safeGet(j_e1_))
             {var _e3_=j_e1_+1|0;
              if(len_eX_<=_e3_)
               var _e4_=_cQ_(incomplete_format_e2_,fmt_eW_);
              else
               {var _e5_=fmt_eW_.safeGet(_e3_),_e6_=_e5_-40|0;
                if(_e6_<0||1<_e6_)
                 {var _e7_=_e6_-83|0;
                  if(_e7_<0||2<_e7_)
                   var _e8_=1;
                  else
                   switch(_e7_)
                    {case 1:var _e8_=1;break;
                     case 2:var _e9_=1,_e8_=0;break;
                     default:var _e9_=0,_e8_=0;}
                  if(_e8_){var _e4_=sub_e__(_e3_+1|0),_e9_=2;}}
                else
                 var _e9_=0===_e6_?0:1;
                switch(_e9_)
                 {case 1:
                   var
                    _e4_=
                     _e5_===close_eZ_
                      ?_e3_+1|0
                      :_fb_(bad_conversion_format_fa_,fmt_eW_,i_e$_,_e5_);
                   break;
                  case 2:break;
                  default:var _e4_=sub_e__(sub_fmt_fc_(_e5_,_e3_+1|0)+1|0);}}
              return _e4_;}
            var _fd_=j_e1_+1|0,j_e1_=_fd_;
            continue;}}
        return sub_e__(i_e$_);}
      return sub_fmt_fc_(conv_ff_,i_fe_);}
    function sub_format_for_printf_fJ_(conv_fg_)
     {return _fb_
              (sub_format_fj_,
               incomplete_format_fi_,
               bad_conversion_format_fh_,
               conv_fg_);}
    function iter_on_format_args_fZ_(fmt_fk_,add_conv_fv_,add_char_fF_)
     {var lim_fl_=fmt_fk_.getLen()-1|0;
      function scan_fmt_fH_(i_fm_)
       {var i_fn_=i_fm_;
        a:
        for(;;)
         {if(i_fn_<lim_fl_)
           {if(37===fmt_fk_.safeGet(i_fn_))
             {var skip_fo_=0,i_fp_=i_fn_+1|0;
              for(;;)
               {if(lim_fl_<i_fp_)
                 var _fq_=incomplete_format_fi_(fmt_fk_);
                else
                 {var _fr_=fmt_fk_.safeGet(i_fp_);
                  if(58<=_fr_)
                   {if(95===_fr_)
                     {var _ft_=i_fp_+1|0,_fs_=1,skip_fo_=_fs_,i_fp_=_ft_;
                      continue;}}
                  else
                   if(32<=_fr_)
                    switch(_fr_-32|0)
                     {case 1:
                      case 2:
                      case 4:
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                      case 9:
                      case 12:
                      case 15:break;
                      case 0:
                      case 3:
                      case 11:
                      case 13:var _fu_=i_fp_+1|0,i_fp_=_fu_;continue;
                      case 10:
                       var _fw_=_fb_(add_conv_fv_,skip_fo_,i_fp_,105),i_fp_=_fw_;
                       continue;
                      default:var _fx_=i_fp_+1|0,i_fp_=_fx_;continue;}
                  var i_fy_=i_fp_;
                  c:
                  for(;;)
                   {if(lim_fl_<i_fy_)
                     var _fz_=incomplete_format_fi_(fmt_fk_);
                    else
                     {var _fA_=fmt_fk_.safeGet(i_fy_);
                      if(126<=_fA_)
                       var _fB_=0;
                      else
                       switch(_fA_)
                        {case 78:
                         case 88:
                         case 100:
                         case 105:
                         case 111:
                         case 117:
                         case 120:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,105),_fB_=1;break;
                         case 69:
                         case 70:
                         case 71:
                         case 101:
                         case 102:
                         case 103:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,102),_fB_=1;break;
                         case 33:
                         case 37:
                         case 44:var _fz_=i_fy_+1|0,_fB_=1;break;
                         case 83:
                         case 91:
                         case 115:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,115),_fB_=1;break;
                         case 97:
                         case 114:
                         case 116:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,_fA_),_fB_=1;
                          break;
                         case 76:
                         case 108:
                         case 110:
                          var j_fC_=i_fy_+1|0;
                          if(lim_fl_<j_fC_)
                           {var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,105),_fB_=1;}
                          else
                           {var _fD_=fmt_fk_.safeGet(j_fC_)-88|0;
                            if(_fD_<0||32<_fD_)
                             var _fE_=1;
                            else
                             switch(_fD_)
                              {case 0:
                               case 12:
                               case 17:
                               case 23:
                               case 29:
                               case 32:
                                var
                                 _fz_=
                                  _fG_
                                   (add_char_fF_,_fb_(add_conv_fv_,skip_fo_,i_fy_,_fA_),105),
                                 _fB_=1,
                                 _fE_=0;
                                break;
                               default:var _fE_=1;}
                            if(_fE_)
                             {var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,105),_fB_=1;}}
                          break;
                         case 67:
                         case 99:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,99),_fB_=1;break;
                         case 66:
                         case 98:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,66),_fB_=1;break;
                         case 41:
                         case 125:
                          var _fz_=_fb_(add_conv_fv_,skip_fo_,i_fy_,_fA_),_fB_=1;
                          break;
                         case 40:
                          var
                           _fz_=scan_fmt_fH_(_fb_(add_conv_fv_,skip_fo_,i_fy_,_fA_)),
                           _fB_=1;
                          break;
                         case 123:
                          var
                           i_fI_=_fb_(add_conv_fv_,skip_fo_,i_fy_,_fA_),
                           j_fK_=_fb_(sub_format_for_printf_fJ_,_fA_,fmt_fk_,i_fI_),
                           i_fL_=i_fI_;
                          for(;;)
                           {if(i_fL_<(j_fK_-2|0))
                             {var
                               _fM_=_fG_(add_char_fF_,i_fL_,fmt_fk_.safeGet(i_fL_)),
                               i_fL_=_fM_;
                              continue;}
                            var _fN_=j_fK_-1|0,i_fy_=_fN_;
                            continue c;}
                         default:var _fB_=0;}
                      if(!_fB_)
                       var _fz_=bad_conversion_format_fh_(fmt_fk_,i_fy_,_fA_);}
                    var _fq_=_fz_;
                    break;}}
                var i_fn_=_fq_;
                continue a;}}
            var _fO_=i_fn_+1|0,i_fn_=_fO_;
            continue;}
          return i_fn_;}}
      scan_fmt_fH_(0);
      return 0;}
    function count_arguments_of_format_hX_(fmt_f0_)
     {var ac_fP_=[0,0,0,0];
      function add_conv_fY_(skip_fU_,i_fV_,c_fQ_)
       {var _fR_=41!==c_fQ_?1:0,_fS_=_fR_?125!==c_fQ_?1:0:_fR_;
        if(_fS_)
         {var inc_fT_=97===c_fQ_?2:1;
          if(114===c_fQ_)ac_fP_[3]=ac_fP_[3]+1|0;
          if(skip_fU_)
           ac_fP_[2]=ac_fP_[2]+inc_fT_|0;
          else
           ac_fP_[1]=ac_fP_[1]+inc_fT_|0;}
        return i_fV_+1|0;}
      iter_on_format_args_fZ_
       (fmt_f0_,add_conv_fY_,function(i_fW_,c_fX_){return i_fW_+1|0;});
      return ac_fP_[1];}
    function scan_positional_spec_gE_(fmt_f1_,got_spec_f4_,n_ga_,i_f2_)
     {var _f3_=fmt_f1_.safeGet(i_f2_);
      if((_f3_-48|0)<0||9<(_f3_-48|0))return _fG_(got_spec_f4_,0,i_f2_);
      var accu_f5_=_f3_-48|0,j_f6_=i_f2_+1|0;
      for(;;)
       {var _f7_=fmt_f1_.safeGet(j_f6_);
        if(48<=_f7_)
         {if(!(58<=_f7_))
           {var
             _f__=j_f6_+1|0,
             _f9_=(10*accu_f5_|0)+(_f7_-48|0)|0,
             accu_f5_=_f9_,
             j_f6_=_f__;
            continue;}
          var _f8_=0;}
        else
         if(36===_f7_)
          if(0===accu_f5_)
           {var _f$_=_j_(_bW_),_f8_=1;}
          else
           {var
             _f$_=
              _fG_(got_spec_f4_,[0,index_of_int_eh_(accu_f5_-1|0)],j_f6_+1|0),
             _f8_=1;}
         else
          var _f8_=0;
        if(!_f8_)var _f$_=_fG_(got_spec_f4_,0,i_f2_);
        return _f$_;}}
    function next_index_gz_(spec_gb_,n_gc_)
     {return spec_gb_?n_gc_:_cQ_(_ej_,n_gc_);}
    function get_index_go_(spec_gd_,n_ge_){return spec_gd_?spec_gd_[1]:n_ge_;}
    function _jm_
     (to_s_if_,get_out_gg_,outc_ir_,outs_ig_,flush_h2_,k_ix_,fmt_gf_)
     {var out_gh_=_cQ_(get_out_gg_,fmt_gf_);
      function pr_h1_(k_gm_,n_iw_,fmt_gi_,v_gr_)
       {var len_gl_=fmt_gi_.getLen();
        function doprn_hY_(n_io_,i_gj_)
         {var i_gk_=i_gj_;
          for(;;)
           {if(len_gl_<=i_gk_)return _cQ_(k_gm_,out_gh_);
            var _gn_=fmt_gi_.safeGet(i_gk_);
            if(37===_gn_)
             {var
               get_arg_gv_=
                function(spec_gq_,n_gp_)
                 {return caml_array_get(v_gr_,get_index_go_(spec_gq_,n_gp_));},
               scan_flags_gB_=
                function(spec_gD_,n_gw_,widths_gy_,i_gs_)
                 {var i_gt_=i_gs_;
                  for(;;)
                   {var _gu_=fmt_gi_.safeGet(i_gt_)-32|0;
                    if(!(_gu_<0||25<_gu_))
                     switch(_gu_)
                      {case 1:
                       case 2:
                       case 4:
                       case 5:
                       case 6:
                       case 7:
                       case 8:
                       case 9:
                       case 12:
                       case 15:break;
                       case 10:
                        return scan_positional_spec_gE_
                                (fmt_gi_,
                                 function(wspec_gx_,i_gC_)
                                  {var _gA_=[0,get_arg_gv_(wspec_gx_,n_gw_),widths_gy_];
                                   return scan_flags_gB_
                                           (spec_gD_,next_index_gz_(wspec_gx_,n_gw_),_gA_,i_gC_);},
                                 n_gw_,
                                 i_gt_+1|0);
                       default:var _gF_=i_gt_+1|0,i_gt_=_gF_;continue;}
                    var _gG_=fmt_gi_.safeGet(i_gt_);
                    if(124<=_gG_)
                     var _gH_=0;
                    else
                     switch(_gG_)
                      {case 78:
                       case 88:
                       case 100:
                       case 105:
                       case 111:
                       case 117:
                       case 120:
                        var
                         x_gJ_=get_arg_gv_(spec_gD_,n_gw_),
                         s_gK_=
                          caml_format_int
                           (extract_format_int_gI_(_gG_,fmt_gi_,i_gk_,i_gt_,widths_gy_),
                            x_gJ_),
                         _gM_=
                          cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_gK_,i_gt_+1|0),
                         _gH_=1;
                        break;
                       case 69:
                       case 71:
                       case 101:
                       case 102:
                       case 103:
                        var
                         x_gN_=get_arg_gv_(spec_gD_,n_gw_),
                         s_gO_=
                          caml_format_float
                           (extract_format_eP_(fmt_gi_,i_gk_,i_gt_,widths_gy_),x_gN_),
                         _gM_=
                          cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_gO_,i_gt_+1|0),
                         _gH_=1;
                        break;
                       case 76:
                       case 108:
                       case 110:
                        var _gP_=fmt_gi_.safeGet(i_gt_+1|0)-88|0;
                        if(_gP_<0||32<_gP_)
                         var _gQ_=1;
                        else
                         switch(_gP_)
                          {case 0:
                           case 12:
                           case 17:
                           case 23:
                           case 29:
                           case 32:
                            var i_gR_=i_gt_+1|0,_gS_=_gG_-108|0;
                            if(_gS_<0||2<_gS_)
                             var _gT_=0;
                            else
                             {switch(_gS_)
                               {case 1:var _gT_=0,_gU_=0;break;
                                case 2:
                                 var
                                  x_gV_=get_arg_gv_(spec_gD_,n_gw_),
                                  _gW_=
                                   caml_format_int
                                    (extract_format_eP_(fmt_gi_,i_gk_,i_gR_,widths_gy_),x_gV_),
                                  _gU_=1;
                                 break;
                                default:
                                 var
                                  x_gX_=get_arg_gv_(spec_gD_,n_gw_),
                                  _gW_=
                                   caml_format_int
                                    (extract_format_eP_(fmt_gi_,i_gk_,i_gR_,widths_gy_),x_gX_),
                                  _gU_=1;}
                              if(_gU_){var s_gY_=_gW_,_gT_=1;}}
                            if(!_gT_)
                             {var
                               x_gZ_=get_arg_gv_(spec_gD_,n_gw_),
                               s_gY_=
                                caml_int64_format
                                 (extract_format_eP_(fmt_gi_,i_gk_,i_gR_,widths_gy_),x_gZ_);}
                            var
                             _gM_=
                              cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_gY_,i_gR_+1|0),
                             _gH_=1,
                             _gQ_=0;
                            break;
                           default:var _gQ_=1;}
                        if(_gQ_)
                         {var
                           x_g0_=get_arg_gv_(spec_gD_,n_gw_),
                           s_g1_=
                            caml_format_int
                             (extract_format_int_gI_(110,fmt_gi_,i_gk_,i_gt_,widths_gy_),
                              x_g0_),
                           _gM_=
                            cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_g1_,i_gt_+1|0),
                           _gH_=1;}
                        break;
                       case 83:
                       case 115:
                        var x_g2_=get_arg_gv_(spec_gD_,n_gw_);
                        if(115===_gG_)
                         var x_g3_=x_g2_;
                        else
                         {var n_g4_=[0,0],_g5_=0,_g6_=x_g2_.getLen()-1|0;
                          if(!(_g6_<_g5_))
                           {var i_g7_=_g5_;
                            for(;;)
                             {var
                               _g8_=x_g2_.safeGet(i_g7_),
                               _g9_=
                                14<=_g8_
                                 ?34===_g8_?1:92===_g8_?1:0
                                 :11<=_g8_?13<=_g8_?1:0:8<=_g8_?1:0,
                               _g__=_g9_?2:caml_is_printable(_g8_)?1:4;
                              n_g4_[1]=n_g4_[1]+_g__|0;
                              var _g$_=i_g7_+1|0;
                              if(_g6_!==i_g7_){var i_g7_=_g$_;continue;}
                              break;}}
                          if(n_g4_[1]===x_g2_.getLen())
                           var _ha_=x_g2_;
                          else
                           {var s__hb_=caml_create_string(n_g4_[1]);
                            n_g4_[1]=0;
                            var _hc_=0,_hd_=x_g2_.getLen()-1|0;
                            if(!(_hd_<_hc_))
                             {var i_he_=_hc_;
                              for(;;)
                               {var _hf_=x_g2_.safeGet(i_he_),_hg_=_hf_-34|0;
                                if(_hg_<0||58<_hg_)
                                 if(-20<=_hg_)
                                  var _hh_=1;
                                 else
                                  {switch(_hg_+34|0)
                                    {case 8:
                                      s__hb_.safeSet(n_g4_[1],92);
                                      n_g4_[1]+=1;
                                      s__hb_.safeSet(n_g4_[1],98);
                                      var _hi_=1;
                                      break;
                                     case 9:
                                      s__hb_.safeSet(n_g4_[1],92);
                                      n_g4_[1]+=1;
                                      s__hb_.safeSet(n_g4_[1],116);
                                      var _hi_=1;
                                      break;
                                     case 10:
                                      s__hb_.safeSet(n_g4_[1],92);
                                      n_g4_[1]+=1;
                                      s__hb_.safeSet(n_g4_[1],110);
                                      var _hi_=1;
                                      break;
                                     case 13:
                                      s__hb_.safeSet(n_g4_[1],92);
                                      n_g4_[1]+=1;
                                      s__hb_.safeSet(n_g4_[1],114);
                                      var _hi_=1;
                                      break;
                                     default:var _hh_=1,_hi_=0;}
                                   if(_hi_)var _hh_=0;}
                                else
                                 var
                                  _hh_=
                                   (_hg_-1|0)<0||56<(_hg_-1|0)
                                    ?(s__hb_.safeSet(n_g4_[1],92),
                                      n_g4_[1]+=
                                      1,
                                      s__hb_.safeSet(n_g4_[1],_hf_),
                                      0)
                                    :1;
                                if(_hh_)
                                 if(caml_is_printable(_hf_))
                                  s__hb_.safeSet(n_g4_[1],_hf_);
                                 else
                                  {s__hb_.safeSet(n_g4_[1],92);
                                   n_g4_[1]+=1;
                                   s__hb_.safeSet(n_g4_[1],48+(_hf_/100|0)|0);
                                   n_g4_[1]+=1;
                                   s__hb_.safeSet(n_g4_[1],48+((_hf_/10|0)%10|0)|0);
                                   n_g4_[1]+=1;
                                   s__hb_.safeSet(n_g4_[1],48+(_hf_%10|0)|0);}
                                n_g4_[1]+=1;
                                var _hj_=i_he_+1|0;
                                if(_hd_!==i_he_){var i_he_=_hj_;continue;}
                                break;}}
                            var _ha_=s__hb_;}
                          var x_g3_=_cy_(_b0_,_cy_(_ha_,_b1_));}
                        if(i_gt_===(i_gk_+1|0))
                         var s_hk_=x_g3_;
                        else
                         {var
                           _hl_=
                            extract_format_eP_(fmt_gi_,i_gk_,i_gt_,widths_gy_);
                          try
                           {var neg_hm_=0,i_hn_=1;
                            for(;;)
                             {if(_hl_.getLen()<=i_hn_)
                               var _ho_=[0,0,neg_hm_];
                              else
                               {var _hp_=_hl_.safeGet(i_hn_);
                                if(49<=_hp_)
                                 if(58<=_hp_)
                                  var _hq_=0;
                                 else
                                  {var
                                    _ho_=
                                     [0,
                                      caml_int_of_string
                                       (_dL_(_hl_,i_hn_,(_hl_.getLen()-i_hn_|0)-1|0)),
                                      neg_hm_],
                                    _hq_=1;}
                                else
                                 {if(45===_hp_)
                                   {var _hs_=i_hn_+1|0,_hr_=1,neg_hm_=_hr_,i_hn_=_hs_;
                                    continue;}
                                  var _hq_=0;}
                                if(!_hq_){var _ht_=i_hn_+1|0,i_hn_=_ht_;continue;}}
                              var match_hu_=_ho_;
                              break;}}
                          catch(_hv_)
                           {if(_hv_[1]!==_a_)throw _hv_;
                            var match_hu_=bad_conversion_es_(_hl_,0,115);}
                          var
                           p_hw_=match_hu_[1],
                           _hx_=x_g3_.getLen(),
                           _hy_=0,
                           neg_hC_=match_hu_[2],
                           _hB_=32;
                          if(p_hw_===_hx_&&0===_hy_)
                           {var _hz_=x_g3_,_hA_=1;}
                          else
                           var _hA_=0;
                          if(!_hA_)
                           if(p_hw_<=_hx_)
                            var _hz_=_dL_(x_g3_,_hy_,_hx_);
                           else
                            {var res_hD_=_dK_(p_hw_,_hB_);
                             if(neg_hC_)
                              _dM_(x_g3_,_hy_,res_hD_,0,_hx_);
                             else
                              _dM_(x_g3_,_hy_,res_hD_,p_hw_-_hx_|0,_hx_);
                             var _hz_=res_hD_;}
                          var s_hk_=_hz_;}
                        var
                         _gM_=
                          cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_hk_,i_gt_+1|0),
                         _gH_=1;
                        break;
                       case 67:
                       case 99:
                        var x_hE_=get_arg_gv_(spec_gD_,n_gw_);
                        if(99===_gG_)
                         var s_hF_=_dK_(1,x_hE_);
                        else
                         {if(39===x_hE_)
                           var _hG_=_b__;
                          else
                           if(92===x_hE_)
                            var _hG_=_b$_;
                           else
                            {if(14<=x_hE_)
                              var _hH_=0;
                             else
                              switch(x_hE_)
                               {case 8:var _hG_=_cd_,_hH_=1;break;
                                case 9:var _hG_=_cc_,_hH_=1;break;
                                case 10:var _hG_=_cb_,_hH_=1;break;
                                case 13:var _hG_=_ca_,_hH_=1;break;
                                default:var _hH_=0;}
                             if(!_hH_)
                              if(caml_is_printable(x_hE_))
                               {var s_hI_=caml_create_string(1);
                                s_hI_.safeSet(0,x_hE_);
                                var _hG_=s_hI_;}
                              else
                               {var s_hJ_=caml_create_string(4);
                                s_hJ_.safeSet(0,92);
                                s_hJ_.safeSet(1,48+(x_hE_/100|0)|0);
                                s_hJ_.safeSet(2,48+((x_hE_/10|0)%10|0)|0);
                                s_hJ_.safeSet(3,48+(x_hE_%10|0)|0);
                                var _hG_=s_hJ_;}}
                          var s_hF_=_cy_(_bY_,_cy_(_hG_,_bZ_));}
                        var
                         _gM_=
                          cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_hF_,i_gt_+1|0),
                         _gH_=1;
                        break;
                       case 66:
                       case 98:
                        var
                         _hL_=i_gt_+1|0,
                         _hK_=get_arg_gv_(spec_gD_,n_gw_)?_cg_:_cf_,
                         _gM_=cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),_hK_,_hL_),
                         _gH_=1;
                        break;
                       case 40:
                       case 123:
                        var
                         xf_hM_=get_arg_gv_(spec_gD_,n_gw_),
                         j_hN_=_fb_(sub_format_for_printf_fJ_,_gG_,fmt_gi_,i_gt_+1|0);
                        if(123===_gG_)
                         {var
                           b_hO_=_ea_(xf_hM_.getLen()),
                           add_char_hS_=
                            function(i_hQ_,c_hP_){_ec_(b_hO_,c_hP_);return i_hQ_+1|0;};
                          iter_on_format_args_fZ_
                           (xf_hM_,
                            function(skip_hR_,i_hU_,c_hT_)
                             {if(skip_hR_)_ed_(b_hO_,_bV_);else _ec_(b_hO_,37);
                              return add_char_hS_(i_hU_,c_hT_);},
                            add_char_hS_);
                          var
                           _hV_=_eb_(b_hO_),
                           _gM_=cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),_hV_,j_hN_),
                           _gH_=1;}
                        else
                         {var
                           _hW_=next_index_gz_(spec_gD_,n_gw_),
                           m_hZ_=
                            add_int_index_ei_
                             (count_arguments_of_format_hX_(xf_hM_),_hW_),
                           _gM_=
                            pr_h1_
                             (function(param_h0_){return doprn_hY_(m_hZ_,j_hN_);},
                              _hW_,
                              xf_hM_,
                              v_gr_),
                           _gH_=1;}
                        break;
                       case 33:
                        _cQ_(flush_h2_,out_gh_);
                        var _gM_=doprn_hY_(n_gw_,i_gt_+1|0),_gH_=1;
                        break;
                       case 37:
                        var _gM_=cont_s_gL_(n_gw_,_b4_,i_gt_+1|0),_gH_=1;break;
                       case 41:
                        var _gM_=cont_s_gL_(n_gw_,_b3_,i_gt_+1|0),_gH_=1;break;
                       case 44:
                        var _gM_=cont_s_gL_(n_gw_,_b2_,i_gt_+1|0),_gH_=1;break;
                       case 70:
                        var x_h3_=get_arg_gv_(spec_gD_,n_gw_);
                        if(0===widths_gy_)
                         var s_h4_=string_of_float_cM_(x_h3_);
                        else
                         {var
                           sfmt_h5_=
                            extract_format_eP_(fmt_gi_,i_gk_,i_gt_,widths_gy_);
                          if(70===_gG_)sfmt_h5_.safeSet(sfmt_h5_.getLen()-1|0,103);
                          var s_h6_=caml_format_float(sfmt_h5_,x_h3_);
                          if(3<=caml_classify_float(x_h3_))
                           var _h7_=s_h6_;
                          else
                           {var i_h8_=0,l_h9_=s_h6_.getLen();
                            for(;;)
                             {if(l_h9_<=i_h8_)
                               var _h__=_cy_(s_h6_,_bX_);
                              else
                               {var
                                 _h$_=s_h6_.safeGet(i_h8_)-46|0,
                                 _ia_=
                                  _h$_<0||23<_h$_
                                   ?55===_h$_?1:0
                                   :(_h$_-1|0)<0||21<(_h$_-1|0)?1:0;
                                if(!_ia_){var _ib_=i_h8_+1|0,i_h8_=_ib_;continue;}
                                var _h__=s_h6_;}
                              var _h7_=_h__;
                              break;}}
                          var s_h4_=_h7_;}
                        var
                         _gM_=
                          cont_s_gL_(next_index_gz_(spec_gD_,n_gw_),s_h4_,i_gt_+1|0),
                         _gH_=1;
                        break;
                       case 97:
                        var
                         printer_ic_=get_arg_gv_(spec_gD_,n_gw_),
                         n_id_=_cQ_(_ej_,get_index_go_(spec_gD_,n_gw_)),
                         arg_ie_=get_arg_gv_(0,n_id_),
                         _ii_=i_gt_+1|0,
                         _ih_=next_index_gz_(spec_gD_,n_id_);
                        if(to_s_if_)
                         _fG_(outs_ig_,out_gh_,_fG_(printer_ic_,0,arg_ie_));
                        else
                         _fG_(printer_ic_,out_gh_,arg_ie_);
                        var _gM_=doprn_hY_(_ih_,_ii_),_gH_=1;
                        break;
                       case 116:
                        var
                         printer_ij_=get_arg_gv_(spec_gD_,n_gw_),
                         _il_=i_gt_+1|0,
                         _ik_=next_index_gz_(spec_gD_,n_gw_);
                        if(to_s_if_)
                         _fG_(outs_ig_,out_gh_,_cQ_(printer_ij_,0));
                        else
                         _cQ_(printer_ij_,out_gh_);
                        var _gM_=doprn_hY_(_ik_,_il_),_gH_=1;
                        break;
                       default:var _gH_=0;}
                    if(!_gH_)
                     var _gM_=bad_conversion_format_fh_(fmt_gi_,i_gt_,_gG_);
                    return _gM_;}},
               _iq_=i_gk_+1|0,
               _in_=0;
              return scan_positional_spec_gE_
                      (fmt_gi_,
                       function(spec_ip_,i_im_)
                        {return scan_flags_gB_(spec_ip_,n_io_,_in_,i_im_);},
                       n_io_,
                       _iq_);}
            _fG_(outc_ir_,out_gh_,_gn_);
            var _is_=i_gk_+1|0,i_gk_=_is_;
            continue;}}
        function cont_s_gL_(n_iv_,s_it_,i_iu_)
         {_fG_(outs_ig_,out_gh_,s_it_);return doprn_hY_(n_iv_,i_iu_);}
        return doprn_hY_(n_iw_,0);}
      var
       kpr_iy_=_fG_(pr_h1_,k_ix_,index_of_int_eh_(0)),
       _iz_=count_arguments_of_format_hX_(fmt_gf_);
      if(_iz_<0||6<_iz_)
       {var
         loop_iM_=
          function(i_iA_,args_iG_)
           {if(_iz_<=i_iA_)
             {var
               a_iB_=caml_make_vect(_iz_,0),
               _iE_=
                function(i_iC_,arg_iD_)
                 {return caml_array_set(a_iB_,(_iz_-i_iC_|0)-1|0,arg_iD_);},
               i_iF_=0,
               param_iH_=args_iG_;
              for(;;)
               {if(param_iH_)
                 {var _iI_=param_iH_[2],_iJ_=param_iH_[1];
                  if(_iI_)
                   {_iE_(i_iF_,_iJ_);
                    var _iK_=i_iF_+1|0,i_iF_=_iK_,param_iH_=_iI_;
                    continue;}
                  _iE_(i_iF_,_iJ_);}
                return _fG_(kpr_iy_,fmt_gf_,a_iB_);}}
            return function(x_iL_)
             {return loop_iM_(i_iA_+1|0,[0,x_iL_,args_iG_]);};},
         _iN_=loop_iM_(0,0);}
      else
       switch(_iz_)
        {case 1:
          var
           _iN_=
            function(x_iP_)
             {var a_iO_=caml_make_vect(1,0);
              caml_array_set(a_iO_,0,x_iP_);
              return _fG_(kpr_iy_,fmt_gf_,a_iO_);};
          break;
         case 2:
          var
           _iN_=
            function(x_iR_,y_iS_)
             {var a_iQ_=caml_make_vect(2,0);
              caml_array_set(a_iQ_,0,x_iR_);
              caml_array_set(a_iQ_,1,y_iS_);
              return _fG_(kpr_iy_,fmt_gf_,a_iQ_);};
          break;
         case 3:
          var
           _iN_=
            function(x_iU_,y_iV_,z_iW_)
             {var a_iT_=caml_make_vect(3,0);
              caml_array_set(a_iT_,0,x_iU_);
              caml_array_set(a_iT_,1,y_iV_);
              caml_array_set(a_iT_,2,z_iW_);
              return _fG_(kpr_iy_,fmt_gf_,a_iT_);};
          break;
         case 4:
          var
           _iN_=
            function(x_iY_,y_iZ_,z_i0_,t_i1_)
             {var a_iX_=caml_make_vect(4,0);
              caml_array_set(a_iX_,0,x_iY_);
              caml_array_set(a_iX_,1,y_iZ_);
              caml_array_set(a_iX_,2,z_i0_);
              caml_array_set(a_iX_,3,t_i1_);
              return _fG_(kpr_iy_,fmt_gf_,a_iX_);};
          break;
         case 5:
          var
           _iN_=
            function(x_i3_,y_i4_,z_i5_,t_i6_,u_i7_)
             {var a_i2_=caml_make_vect(5,0);
              caml_array_set(a_i2_,0,x_i3_);
              caml_array_set(a_i2_,1,y_i4_);
              caml_array_set(a_i2_,2,z_i5_);
              caml_array_set(a_i2_,3,t_i6_);
              caml_array_set(a_i2_,4,u_i7_);
              return _fG_(kpr_iy_,fmt_gf_,a_i2_);};
          break;
         case 6:
          var
           _iN_=
            function(x_i9_,y_i__,z_i$_,t_ja_,u_jb_,v_jc_)
             {var a_i8_=caml_make_vect(6,0);
              caml_array_set(a_i8_,0,x_i9_);
              caml_array_set(a_i8_,1,y_i__);
              caml_array_set(a_i8_,2,z_i$_);
              caml_array_set(a_i8_,3,t_ja_);
              caml_array_set(a_i8_,4,u_jb_);
              caml_array_set(a_i8_,5,v_jc_);
              return _fG_(kpr_iy_,fmt_gf_,a_i8_);};
          break;
         default:var _iN_=_fG_(kpr_iy_,fmt_gf_,[0]);}
      return _iN_;}
    function _jl_(fmt_jd_){return _ea_(2*fmt_jd_.getLen()|0);}
    function _ji_(k_jg_,b_je_)
     {var s_jf_=_eb_(b_je_);b_je_[2]=0;return _cQ_(k_jg_,s_jf_);}
    function _jq_(k_jh_)
     {var _jk_=_cQ_(_ji_,k_jh_);
      return _jn_(_jm_,1,_jl_,_ec_,_ed_,function(_jj_){return 0;},_jk_);}
    function _jr_(fmt_jp_)
     {return _fG_(_jq_,function(s_jo_){return s_jo_;},fmt_jp_);}
    var _js_=[0,0];
    function _jz_(x_jt_,i_ju_)
     {var f_jv_=x_jt_[i_ju_+1];
      return caml_obj_is_block(f_jv_)
              ?caml_obj_tag(f_jv_)===_dU_
                ?_fG_(_jr_,_bB_,f_jv_)
                :caml_obj_tag(f_jv_)===_dT_?string_of_float_cM_(f_jv_):_bA_
              :_fG_(_jr_,_bC_,f_jv_);}
    function _jy_(x_jw_,i_jx_)
     {if(x_jw_.length-1<=i_jx_)return _bM_;
      var _jA_=_jy_(x_jw_,i_jx_+1|0);
      return _fb_(_jr_,_bL_,_jz_(x_jw_,i_jx_),_jA_);}
    32===_dO_;
    function _jD_(param_jC_)
     {var seq_jB_=[];
      caml_update_dummy(seq_jB_,[0,seq_jB_,seq_jB_]);
      return seq_jB_;}
    var Canceled_jE_=[0,_bo_],current_data_jF_=[0,0],max_removed_kr_=42;
    function repr_rec_jJ_(t_jG_)
     {var _jH_=t_jG_[1];
      {if(3===_jH_[0])
        {var t__jI_=_jH_[1],t___jK_=repr_rec_jJ_(t__jI_);
         if(t___jK_!==t__jI_)t_jG_[1]=[3,t___jK_];
         return t___jK_;}
       return t_jG_;}}
    function repr_kg_(t_jL_){return repr_rec_jJ_(t_jL_);}
    function run_waiters_j__(waiters_jM_,state_jQ_)
     {var ws_jN_=waiters_jM_,rem_jO_=0,save_j3_=current_data_jF_[1];
      for(;;)
       {if(typeof ws_jN_==="number")
         {if(rem_jO_)
           {var
             rem_j2_=rem_jO_[2],
             ws_j1_=rem_jO_[1],
             ws_jN_=ws_j1_,
             rem_jO_=rem_j2_;
            continue;}}
        else
         switch(ws_jN_[0])
          {case 1:
            var _jP_=ws_jN_[1];
            if(rem_jO_)
             {var rem_jS_=rem_jO_[2],ws_jR_=rem_jO_[1];
              _cQ_(_jP_,state_jQ_);
              var ws_jN_=ws_jR_,rem_jO_=rem_jS_;
              continue;}
            _cQ_(_jP_,state_jQ_);
            break;
           case 2:
            var
             ws1_jT_=ws_jN_[1],
             _jU_=[0,ws_jN_[2],rem_jO_],
             ws_jN_=ws1_jT_,
             rem_jO_=_jU_;
            continue;
           default:
            var _jV_=ws_jN_[1][1];
            if(_jV_)
             {var _jW_=_jV_[1];
              if(rem_jO_)
               {var rem_jY_=rem_jO_[2],ws_jX_=rem_jO_[1];
                _cQ_(_jW_,state_jQ_);
                var ws_jN_=ws_jX_,rem_jO_=rem_jY_;
                continue;}
              _cQ_(_jW_,state_jQ_);}
            else
             if(rem_jO_)
              {var
                rem_j0_=rem_jO_[2],
                ws_jZ_=rem_jO_[1],
                ws_jN_=ws_jZ_,
                rem_jO_=rem_j0_;
               continue;}}
        current_data_jF_[1]=save_j3_;
        return 0;}}
    function wakeup_lp_(t_j4_,v_j7_)
     {var t_j5_=repr_rec_jJ_(t_j4_),_j6_=t_j5_[1];
      switch(_j6_[0])
       {case 1:if(_j6_[1][1]===Canceled_jE_)return 0;break;
        case 2:
         var state_j8_=[0,v_j7_],waiters_j9_=_j6_[1][2];
         t_j5_[1]=state_j8_;
         return run_waiters_j__(waiters_j9_,state_j8_);
        default:}
      return _cn_(_bp_);}
    function append_kf_(l1_j$_,l2_ka_)
     {return typeof l1_j$_==="number"
              ?l2_ka_
              :typeof l2_ka_==="number"?l1_j$_:[2,l1_j$_,l2_ka_];}
    function cleanup_kc_(ws_kb_)
     {if(typeof ws_kb_!=="number")
       switch(ws_kb_[0])
        {case 2:
          var l1_kd_=ws_kb_[1],_ke_=cleanup_kc_(ws_kb_[2]);
          return append_kf_(cleanup_kc_(l1_kd_),_ke_);
         case 1:break;
         default:if(!ws_kb_[1][1])return 0;}
      return ws_kb_;}
    function connect_k9_(t1_kh_,t2_kj_)
     {var t1_ki_=repr_kg_(t1_kh_),t2_kk_=repr_kg_(t2_kj_),_kl_=t1_ki_[1];
      {if(2===_kl_[0])
        {var sleeper1_km_=_kl_[1];
         if(t1_ki_===t2_kk_)return 0;
         var _kn_=t2_kk_[1];
         {if(2===_kn_[0])
           {var sleeper2_ko_=_kn_[1];
            t2_kk_[1]=[3,t1_ki_];
            sleeper1_km_[1][1]=[1,sleeper2_ko_[1]];
            var
             waiters_kp_=append_kf_(sleeper1_km_[2],sleeper2_ko_[2]),
             removed_kq_=sleeper1_km_[3]+sleeper2_ko_[3]|0;
            return max_removed_kr_<removed_kq_
                    ?(sleeper1_km_[3]=
                      0,
                      sleeper1_km_[2]=
                      cleanup_kc_(waiters_kp_),
                      0)
                    :(sleeper1_km_[3]=removed_kq_,sleeper1_km_[2]=waiters_kp_,0);}
          t1_ki_[1]=_kn_;
          return run_waiters_j__(sleeper1_km_[2],_kn_);}}
       return _cn_(_br_);}}
    function fast_connect_k__(t_ks_,state_kv_)
     {var t_kt_=repr_kg_(t_ks_),_ku_=t_kt_[1];
      {if(2===_ku_[0])
        {var waiters_kw_=_ku_[1][2];
         t_kt_[1]=state_kv_;
         return run_waiters_j__(waiters_kw_,state_kv_);}
       return _cn_(_bs_);}}
    function return_lo_(v_kx_){return [0,[0,v_kx_]];}
    function fail_kY_(e_ky_){return [0,[1,e_ky_]];}
    function temp_k0_(r_kz_){return [0,[2,[0,r_kz_,0,0]]];}
    function task_lq_(param_kJ_)
     {var t_kA_=[],_kI_=0,_kH_=0;
      caml_update_dummy
       (t_kA_,
        [0,
         [2,
          [0,
           [0,
            [0,
             function(param_kG_)
              {var t_kB_=repr_rec_jJ_(t_kA_),_kC_=t_kB_[1];
               if(2===_kC_[0])
                {var state_kD_=[1,[0,Canceled_jE_]],waiters_kE_=_kC_[1][2];
                 t_kB_[1]=state_kD_;
                 var _kF_=run_waiters_j__(waiters_kE_,state_kD_);}
               else
                var _kF_=0;
               return _kF_;}]],
           _kH_,
           _kI_]]]);
      return [0,t_kA_,t_kA_];}
    function add_immutable_waiter_kV_(sleeper_kK_,waiter_kL_)
     {var
       _kM_=
        typeof sleeper_kK_[2]==="number"
         ?[1,waiter_kL_]
         :[2,[1,waiter_kL_],sleeper_kK_[2]];
      sleeper_kK_[2]=_kM_;
      return 0;}
    function on_cancel_lr_(t_kN_,f_kP_)
     {var _kO_=repr_kg_(t_kN_)[1];
      switch(_kO_[0])
       {case 1:if(_kO_[1][1]===Canceled_jE_)return _cQ_(f_kP_,0);break;
        case 2:
         var sleeper_kU_=_kO_[1],data_kR_=current_data_jF_[1];
         return add_immutable_waiter_kV_
                 (sleeper_kU_,
                  function(param_kQ_)
                   {if(1===param_kQ_[0]&&param_kQ_[1][1]===Canceled_jE_)
                     {current_data_jF_[1]=data_kR_;
                      try {var _kS_=_cQ_(f_kP_,0);}catch(_kT_){return 0;}
                      return _kS_;}
                    return 0;});
        default:}
      return 0;}
    function bind_k$_(t_kW_,f_k5_)
     {var _kX_=repr_kg_(t_kW_)[1];
      switch(_kX_[0])
       {case 1:return fail_kY_(_kX_[1]);
        case 2:
         var
          sleeper_kZ_=_kX_[1],
          res_k1_=temp_k0_(sleeper_kZ_[1]),
          data_k3_=current_data_jF_[1];
         add_immutable_waiter_kV_
          (sleeper_kZ_,
           function(param_k2_)
            {switch(param_k2_[0])
              {case 0:
                var v_k4_=param_k2_[1];
                current_data_jF_[1]=data_k3_;
                try
                 {var _k6_=_cQ_(f_k5_,v_k4_),_k7_=_k6_;}
                catch(_k8_){var _k7_=fail_kY_(_k8_);}
                return connect_k9_(res_k1_,_k7_);
               case 1:return fast_connect_k__(res_k1_,[1,param_k2_[1]]);
               default:throw [0,_d_,_bu_];}});
         return res_k1_;
        case 3:throw [0,_d_,_bt_];
        default:return _cQ_(f_k5_,_kX_[1]);}}
    function _ls_(t_lb_,f_la_){return bind_k$_(t_lb_,f_la_);}
    function _lt_(t_lc_,f_lk_)
     {var _ld_=repr_kg_(t_lc_)[1];
      switch(_ld_[0])
       {case 1:var _le_=[0,[1,_ld_[1]]];break;
        case 2:
         var
          sleeper_lf_=_ld_[1],
          res_lg_=temp_k0_(sleeper_lf_[1]),
          data_li_=current_data_jF_[1];
         add_immutable_waiter_kV_
          (sleeper_lf_,
           function(param_lh_)
            {switch(param_lh_[0])
              {case 0:
                var v_lj_=param_lh_[1];
                current_data_jF_[1]=data_li_;
                try
                 {var _ll_=[0,_cQ_(f_lk_,v_lj_)],_lm_=_ll_;}
                catch(_ln_){var _lm_=[1,_ln_];}
                return fast_connect_k__(res_lg_,_lm_);
               case 1:return fast_connect_k__(res_lg_,[1,param_lh_[1]]);
               default:throw [0,_d_,_bw_];}});
         var _le_=res_lg_;
         break;
        case 3:throw [0,_d_,_bv_];
        default:var _le_=return_lo_(_cQ_(f_lk_,_ld_[1]));}
      return _le_;}
    var
     _lu_=[0],
     _lv_=[0,caml_make_vect(55,0),0],
     seed_lw_=caml_equal(_lu_,[0])?[0,0]:_lu_,
     l_lx_=seed_lw_.length-1,
     _ly_=0,
     _lz_=54;
    if(!(_lz_<_ly_))
     {var i_lA_=_ly_;
      for(;;)
       {caml_array_set(_lv_[1],i_lA_,i_lA_);
        var _lB_=i_lA_+1|0;
        if(_lz_!==i_lA_){var i_lA_=_lB_;continue;}
        break;}}
    var
     accu_lC_=[0,_bz_],
     _lD_=0,
     _lE_=55,
     _lF_=caml_greaterequal(_lE_,l_lx_)?_lE_:l_lx_,
     _lG_=54+_lF_|0;
    if(!(_lG_<_lD_))
     {var i_lH_=_lD_;
      for(;;)
       {var
         j_lI_=i_lH_%55|0,
         _lJ_=accu_lC_[1],
         _lK_=
          _cy_
           (_lJ_,
            string_of_int_cL_(caml_array_get(seed_lw_,caml_mod(i_lH_,l_lx_))));
        accu_lC_[1]=caml_md5_string(_lK_,0,_lK_.getLen());
        var _lL_=accu_lC_[1];
        caml_array_set
         (_lv_[1],
          j_lI_,
          caml_array_get(_lv_[1],j_lI_)^
          (((_lL_.safeGet(0)+(_lL_.safeGet(1)<<8)|0)+(_lL_.safeGet(2)<<16)|0)+
           (_lL_.safeGet(3)<<24)|
           0));
        var _lM_=i_lH_+1|0;
        if(_lG_!==i_lH_){var i_lH_=_lM_;continue;}
        break;}}
    _lv_[2]=0;
    var pause_hook_lP_=[0,function(_lN_){return 0;}],_lO_=_jD_(0),_lR_=[0,0];
    function _l1_(param_lU_)
     {if(_lO_[2]===_lO_)return 0;
      var tmp_lQ_=_jD_(0);
      tmp_lQ_[1][2]=_lO_[2];
      _lO_[2][1]=tmp_lQ_[1];
      tmp_lQ_[1]=_lO_[1];
      _lO_[1][2]=tmp_lQ_;
      _lO_[1]=_lO_;
      _lO_[2]=_lO_;
      _lR_[1]=0;
      var curr_lS_=tmp_lQ_[2];
      for(;;)
       {if(curr_lS_!==tmp_lQ_)
         {if(curr_lS_[4])wakeup_lp_(curr_lS_[3],0);
          var _lT_=curr_lS_[2],curr_lS_=_lT_;
          continue;}
        return 0;}}
    function _lY_(f_lW_,l_lV_)
     {if(l_lV_)
       {var l_lX_=l_lV_[2],__pa_lwt_0_l0_=_cQ_(f_lW_,l_lV_[1]);
        return bind_k$_
                (__pa_lwt_0_l0_,
                 function(param_lZ_){return _lY_(f_lW_,l_lX_);});}
      return return_lo_(0);}
    var null_l2_=null,undefined_l3_=undefined;
    function _mp_(x_l4_,f_l5_)
     {return x_l4_==null_l2_?null_l2_:_cQ_(f_l5_,x_l4_);}
    function _mc_(x_l6_,f_l7_,g_l8_)
     {return x_l6_==null_l2_?_cQ_(f_l7_,0):_cQ_(g_l8_,x_l6_);}
    function _mq_(x_l9_,f_l__){return x_l9_==null_l2_?_cQ_(f_l__,0):x_l9_;}
    function _mr_(x_md_)
     {function _mb_(x_l$_){return [0,x_l$_];}
      return _mc_(x_md_,function(param_ma_){return 0;},_mb_);}
    function _ms_(x_me_){return x_me_!==undefined_l3_?1:0;}
    function _mn_(x_mf_,f_mg_,g_mh_)
     {return x_mf_===undefined_l3_?_cQ_(f_mg_,0):_cQ_(g_mh_,x_mf_);}
    function _mt_(x_mi_,f_mj_)
     {return x_mi_===undefined_l3_?_cQ_(f_mj_,0):x_mi_;}
    function _mu_(x_mo_)
     {function _mm_(x_mk_){return [0,x_mk_];}
      return _mn_(x_mo_,function(param_ml_){return 0;},_mm_);}
    var
     _true_mv_=true,
     _false_mw_=false,
     regExp_mx_=RegExp,
     array_constructor_my_=Array;
    function array_get_mD_(_mz_,_mA_){return _mz_[_mA_];}
    function str_array_mE_(_mB_){return _mB_;}
    function match_result_mF_(_mC_){return _mC_;}
    var date_constr_mG_=Date,math_mK_=Math;
    function escape_mJ_(s_mH_){return escape(s_mH_);}
    function _mL_(e_mI_)
     {return e_mI_ instanceof array_constructor_my_
              ?0
              :[0,new MlWrappedString(e_mI_.toString())];}
    _js_[1]=[0,_mL_,_js_[1]];
    function _mO_(_mM_){return _mM_;}
    function _mP_(_mN_){return _mN_;}
    function handler_mV_(f_mR_)
     {return _mP_
              (caml_js_wrap_callback
                (function(e_mQ_)
                  {if(e_mQ_)
                    {var res_mS_=_cQ_(f_mR_,e_mQ_);
                     if(!(res_mS_|0))e_mQ_.preventDefault();
                     return res_mS_;}
                   var _mT_=event,res_mU_=_cQ_(f_mR_,_mT_);
                   _mT_.returnValue=res_mU_;
                   return res_mU_;}));}
    var
     onIE_mW_=caml_js_on_ie(0)|0,
     window_mX_=window,
     document_mY_=window_mX_.document,
     html_element_mZ_=window.HTMLElement,
     float32Array_m3_=window.Float32Array,
     _m1_=
      _mO_(html_element_mZ_)===undefined_l3_
       ?function(e_m0_)
         {return _mO_(e_m0_.innerHTML)===undefined_l3_?null_l2_:_mP_(e_m0_);}
       :function(e_m2_)
         {return e_m2_ instanceof html_element_mZ_?_mP_(e_m2_):null_l2_;};
    function _m7_(tag_m4_,e_m5_)
     {var _m6_=tag_m4_.toString();
      return e_m5_.tagName.toLowerCase()===_m6_?_mP_(e_m5_):null_l2_;}
    function _m__(e_m8_){return _m7_(_bm_,e_m8_);}
    function _na_(e_m9_){return _m7_(_bn_,e_m9_);}
    pause_hook_lP_[1]=
    function(param_m$_)
     {return 1===param_m$_
              ?(window_mX_.setTimeout(caml_js_wrap_callback(_l1_),0),0)
              :0;};
    var _nb_=caml_js_get_console(0);
    function regexp_nn_(s_nc_)
     {var _nd_=_bj_.toString();
      return new regExp_mx_(caml_js_from_byte_string(s_nc_),_nd_);}
    function string_match_no_(r_ne_,s_ng_,i_nf_)
     {r_ne_.lastIndex=i_nf_;
      var
       _nh_=r_ne_.exec(caml_js_from_byte_string(s_ng_)),
       _ni_=_nh_==null_l2_?null_l2_:match_result_mF_(_nh_);
      return _mr_(_ni_);}
    function matched_group_np_(r_nk_,i_nj_)
     {var
       _nl_=array_get_mD_(r_nk_,i_nj_),
       _nm_=_nl_===undefined_l3_?undefined_l3_:caml_js_to_byte_string(_nl_);
      return _mu_(_nm_);}
    var
     quote_repl_re_nq_=new regExp_mx_(_bh_.toString(),_bi_.toString()),
     _ns_=regexp_nn_(_bg_),
     l_nr_=window_mX_.location;
    function split_nv_(c_nt_,s_nu_)
     {return str_array_mE_(s_nu_.split(_dK_(1,c_nt_).toString()));}
    var Local_exn_nw_=[0,_az_];
    function interrupt_ny_(param_nx_){throw [0,Local_exn_nw_];}
    var
     af2e6a4db_nz_=caml_js_from_byte_string(_ay_),
     _nA_=
      regexp_nn_
       (caml_js_to_byte_string(af2e6a4db_nz_.replace(_ns_,_bl_.toString())));
    function urldecode_js_string_string_nI_(s_nB_)
     {return caml_js_to_byte_string(unescape(s_nB_));}
    function urlencode_nJ_(_opt__nC_,s_nE_)
     {var with_plus_nD_=_opt__nC_?_opt__nC_[1]:1;
      if(with_plus_nD_)
       {var
         _nF_=
          caml_js_to_byte_string(escape_mJ_(caml_js_from_byte_string(s_nE_)));
        _nA_.lastIndex=0;
        var
         a41432fb9_nG_=caml_js_from_byte_string(_nF_),
         a11bb050d_nH_=caml_js_from_byte_string(_aA_);
        return caml_js_to_byte_string
                (a41432fb9_nG_.replace
                  (_nA_,
                   a11bb050d_nH_.replace(quote_repl_re_nq_,_bk_.toString())));}
      return caml_js_to_byte_string
              (escape_mJ_(caml_js_from_byte_string(s_nE_)));}
    var Not_an_http_protocol_ok_=[0,_ax_];
    function path_of_path_string_nQ_(s_nK_)
     {try
       {var length_nL_=s_nK_.getLen();
        if(0===length_nL_)
         var _nM_=_bf_;
        else
         {var i_nN_=0,_nP_=47,_nO_=s_nK_.getLen();
          for(;;)
           {if(_nO_<=i_nN_)throw [0,_c_];
            if(s_nK_.safeGet(i_nN_)!==_nP_)
             {var _nT_=i_nN_+1|0,i_nN_=_nT_;continue;}
            if(0===i_nN_)
             var
              _nR_=
               [0,_be_,path_of_path_string_nQ_(_dL_(s_nK_,1,length_nL_-1|0))];
            else
             {var
               _nS_=
                path_of_path_string_nQ_
                 (_dL_(s_nK_,i_nN_+1|0,(length_nL_-i_nN_|0)-1|0)),
               _nR_=[0,_dL_(s_nK_,0,i_nN_),_nS_];}
            var _nM_=_nR_;
            break;}}}
      catch(_nU_){if(_nU_[1]===_c_)return [0,s_nK_,0];throw _nU_;}
      return _nM_;}
    function encode_arguments_ol_(l_nY_)
     {return _dN_
              (_aH_,
               _dg_
                (function(param_nV_)
                  {var
                    n_nW_=param_nV_[1],
                    _nX_=_cy_(_aI_,urlencode_nJ_(0,param_nV_[2]));
                   return _cy_(urlencode_nJ_(0,n_nW_),_nX_);},
                 l_nY_));}
    function decode_arguments_js_string_om_(s_nZ_)
     {var arr_n0_=split_nv_(38,s_nZ_),len_oj_=arr_n0_.length;
      function aux_of_(acc_oe_,idx_n1_)
       {var idx_n2_=idx_n1_;
        for(;;)
         {if(0<=idx_n2_)
           {try
             {var
               _oc_=idx_n2_-1|0,
               _od_=
                function(s_n9_)
                 {function _n$_(param_n3_)
                   {var y_n7_=param_n3_[2],x_n6_=param_n3_[1];
                    function get_n5_(t_n4_)
                     {return urldecode_js_string_string_nI_
                              (_mt_(t_n4_,interrupt_ny_));}
                    var _n8_=get_n5_(y_n7_);
                    return [0,get_n5_(x_n6_),_n8_];}
                  var arr_bis_n__=split_nv_(61,s_n9_);
                  if(2===arr_bis_n__.length)
                   {var
                     _oa_=array_get_mD_(arr_bis_n__,1),
                     _ob_=_mO_([0,array_get_mD_(arr_bis_n__,0),_oa_]);}
                  else
                   var _ob_=undefined_l3_;
                  return _mn_(_ob_,interrupt_ny_,_n$_);},
               _og_=
                aux_of_
                 ([0,
                   _mn_(array_get_mD_(arr_n0_,idx_n2_),interrupt_ny_,_od_),
                   acc_oe_],
                  _oc_);}
            catch(_oh_)
             {if(_oh_[1]===Local_exn_nw_)
               {var _oi_=idx_n2_-1|0,idx_n2_=_oi_;continue;}
              throw _oh_;}
            return _og_;}
          return acc_oe_;}}
      return aux_of_(0,len_oj_-1|0);}
    var
     url_re_on_=new regExp_mx_(caml_js_from_byte_string(_aw_)),
     file_re_oY_=new regExp_mx_(caml_js_from_byte_string(_av_));
    function string_of_url_oX_(param_oo_)
     {switch(param_oo_[0])
       {case 1:
         var
          match_op_=param_oo_[1],
          frag_oq_=match_op_[6],
          args_or_=match_op_[5],
          port_os_=match_op_[2],
          path_ov_=match_op_[3],
          host_ou_=match_op_[1],
          _ot_=
           caml_string_notequal(frag_oq_,_a5_)
            ?_cy_(_a4_,urlencode_nJ_(0,frag_oq_))
            :_a3_,
          _ow_=args_or_?_cy_(_a2_,encode_arguments_ol_(args_or_)):_a1_,
          _oy_=_cy_(_ow_,_ot_),
          _oA_=
           _cy_
            (_aZ_,
             _cy_
              (_dN_
                (_a0_,
                 _dg_
                  (function(eta_ox_){return urlencode_nJ_(0,eta_ox_);},
                   path_ov_)),
               _oy_)),
          _oz_=443===port_os_?_aX_:_cy_(_aY_,string_of_int_cL_(port_os_)),
          _oB_=_cy_(_oz_,_oA_);
         return _cy_(_aW_,_cy_(urlencode_nJ_(0,host_ou_),_oB_));
        case 2:
         var
          match_oC_=param_oo_[1],
          frag_oD_=match_oC_[4],
          args_oE_=match_oC_[3],
          path_oG_=match_oC_[1],
          _oF_=
           caml_string_notequal(frag_oD_,_aV_)
            ?_cy_(_aU_,urlencode_nJ_(0,frag_oD_))
            :_aT_,
          _oH_=args_oE_?_cy_(_aS_,encode_arguments_ol_(args_oE_)):_aR_,
          _oJ_=_cy_(_oH_,_oF_);
         return _cy_
                 (_aP_,
                  _cy_
                   (_dN_
                     (_aQ_,
                      _dg_
                       (function(eta_oI_){return urlencode_nJ_(0,eta_oI_);},
                        path_oG_)),
                    _oJ_));
        default:
         var
          match_oK_=param_oo_[1],
          frag_oL_=match_oK_[6],
          args_oM_=match_oK_[5],
          port_oN_=match_oK_[2],
          path_oQ_=match_oK_[3],
          host_oP_=match_oK_[1],
          _oO_=
           caml_string_notequal(frag_oL_,_bd_)
            ?_cy_(_bc_,urlencode_nJ_(0,frag_oL_))
            :_bb_,
          _oR_=args_oM_?_cy_(_ba_,encode_arguments_ol_(args_oM_)):_a$_,
          _oT_=_cy_(_oR_,_oO_),
          _oV_=
           _cy_
            (_a9_,
             _cy_
              (_dN_
                (_a__,
                 _dg_
                  (function(eta_oS_){return urlencode_nJ_(0,eta_oS_);},
                   path_oQ_)),
               _oT_)),
          _oU_=80===port_oN_?_a7_:_cy_(_a8_,string_of_int_cL_(port_oN_)),
          _oW_=_cy_(_oU_,_oV_);
         return _cy_(_a6_,_cy_(urlencode_nJ_(0,host_oP_),_oW_));}}
    urldecode_js_string_string_nI_(l_nr_.hostname);
    try
     {caml_int_of_string(caml_js_to_byte_string(l_nr_.port));}
    catch(_oZ_){if(_oZ_[1]!==_a_)throw _oZ_;}
    path_of_path_string_nQ_(urldecode_js_string_string_nI_(l_nr_.pathname));
    decode_arguments_js_string_om_(l_nr_.search);
    urldecode_js_string_string_nI_(l_nr_.href);
    var _o8_=window.FileReader,formData_o7_=window.FormData;
    function _o6_(form_contents_o0_,form_elt_o2_)
     {if(891486873<=form_contents_o0_[1])
       {var list_o1_=form_contents_o0_[2];
        list_o1_[1]=[0,form_elt_o2_,list_o1_[1]];
        return 0;}
      var
       f_o3_=form_contents_o0_[2],
       _o4_=form_elt_o2_[2],
       _o5_=form_elt_o2_[1];
      return 781515420<=_o4_[1]
              ?f_o3_.append(_o5_.toString(),_o4_[2])
              :f_o3_.append(_o5_.toString(),_o4_[2]);}
    function _o__(param_o9_){return ActiveXObject;}
    var _pI_=[0,_N_];
    function error_pf_(f_pa_)
     {return _fG_
              (_jq_,
               function(s_o$_)
                {_nb_.error(s_o$_.toString());return _j_(s_o$_);},
               f_pa_);}
    function debug_pJ_(f_pc_)
     {return _fG_
              (_jq_,function(s_pb_){return _nb_.log(s_pb_.toString());},f_pc_);}
    function check_error_pK_(gl_pd_)
     {var _pe_=gl_pd_.NO;
      return caml_notequal(gl_pd_.getError(),_pe_)?error_pf_(_m_):0;}
    function load_shader_pL_(gl_pg_,shader_pi_,text_ph_)
     {gl_pg_.shaderSource(shader_pi_,text_ph_);
      gl_pg_.compileShader(shader_pi_);
      if(gl_pg_.getShaderParameter(shader_pi_,gl_pg_.COMPILE_STATUS)|0)
       return 0;
      var _pj_=new MlWrappedString(gl_pg_.getShaderInfoLog(shader_pi_));
      return _fb_(error_pf_,_p_,new MlWrappedString(text_ph_),_pj_);}
    function get_source_pM_(src_id_pk_)
     {function _pm_(param_pl_){return _fG_(error_pf_,_r_,src_id_pk_);}
      return _mq_
              (_mp_(document_mY_.getElementById(src_id_pk_.toString()),_na_),
               _pm_).text;}
    function float32array_pN_(a_pn_)
     {var
       array_po_=new float32Array_m3_(a_pn_.length-1),
       _pp_=0,
       _pq_=a_pn_.length-1-1|0;
      if(!(_pq_<_pp_))
       {var i_pr_=_pp_;
        for(;;)
         {array_po_[i_pr_]=a_pn_[i_pr_+1];
          var _ps_=i_pr_+1|0;
          if(_pq_!==i_pr_){var i_pr_=_ps_;continue;}
          break;}}
      return array_po_;}
    function _py_(i_pt_,j_pu_){return (i_pt_*4|0)+j_pu_|0;}
    function _pO_(m1_pB_,m2_pz_)
     {return _c8_
              (16,
               function(p_pv_)
                {var
                  _pw_=p_pv_%4|0,
                  _px_=p_pv_/4|0,
                  _pA_=caml_array_get(m2_pz_,_py_(3,_pw_)),
                  _pC_=caml_array_get(m1_pB_,_py_(_px_,3))*_pA_,
                  _pD_=caml_array_get(m2_pz_,_py_(2,_pw_)),
                  _pE_=caml_array_get(m1_pB_,_py_(_px_,2))*_pD_,
                  _pF_=caml_array_get(m2_pz_,_py_(1,_pw_)),
                  _pG_=caml_array_get(m1_pB_,_py_(_px_,1))*_pF_,
                  _pH_=caml_array_get(m2_pz_,_py_(0,_pw_));
                 return caml_array_get(m1_pB_,_py_(_px_,0))*
                        _pH_+
                        _pG_+
                        _pE_+
                        _pC_;});}
    var line_regexp_pP_=regexp_nn_(_l_),couple_regexp_pR_=regexp_nn_(_k_);
    function read_coord_couple_qf_(c_pQ_)
     {var _pS_=string_match_no_(couple_regexp_pR_,c_pQ_,0);
      if(_pS_)
       {var _pT_=_dg_(_cQ_(matched_group_np_,_pS_[1]),_s_);
        if(_pT_)
         {var _pU_=_pT_[1];
          if(_pU_)
           {var _pV_=_pT_[2];
            if(_pV_)
             {var _pW_=_pV_[1];
              if(_pW_&&!_pV_[2])
               {var v_pX_=_pU_[1],_pY_=caml_int_of_string(_pW_[1]);
                return [0,[0,caml_int_of_string(v_pX_),_pY_]];}}}}
        return 0;}
      return 0;}
    function concat_qe_(a_p1_)
     {var r_pZ_=[0,0],_p0_=0,_p2_=a_p1_.length-1-1|0;
      if(!(_p2_<_p0_))
       {var i_p3_=_p0_;
        a:
        for(;;)
         {var len_p4_=0,param_p5_=a_p1_[i_p3_+1],_p8_=r_pZ_[1];
          for(;;)
           {if(param_p5_)
             {var
               l_p7_=param_p5_[2],
               _p6_=len_p4_+1|0,
               len_p4_=_p6_,
               param_p5_=l_p7_;
              continue;}
            r_pZ_[1]=_p8_+len_p4_|0;
            var _p9_=i_p3_+1|0;
            if(_p2_!==i_p3_){var i_p3_=_p9_;continue a;}
            break;}
          break;}}
      var pos_p__=[0,-1],l_p$_=[0,0],_qd_=r_pZ_[1];
      return _c8_
              (_qd_,
               function(param_qc_)
                {for(;;)
                  {var _qa_=l_p$_[1];
                   if(_qa_){var t_qb_=_qa_[1];l_p$_[1]=_qa_[2];return t_qb_;}
                   pos_p__[1]+=1;
                   l_p$_[1]=caml_array_get(a_p1_,pos_p__[1]);
                   continue;}});}
    var pi_qJ_=4*Math.atan(1);
    function start_u__(param_qg_)
     {var
       pos_qh_=param_qg_[1],
       norm_qj_=param_qg_[2],
       fps_text_qi_=document_mY_.createTextNode(_I_.toString()),
       _qk_=_mp_(document_mY_.getElementById(_H_.toString()),_m1_);
      if(_qk_!=null_l2_)_qk_.appendChild(fps_text_qi_);
      function _qm_(param_ql_){return _fG_(error_pf_,_n_,_g_);}
      var
       canvas_qn_=
        _mq_(_mp_(document_mY_.getElementById(_g_.toString()),_m__),_qm_);
      function _qt_(param_qp_)
       {return _fG_
                (_jq_,
                 function(s_qo_)
                  {window_mX_.alert(s_qo_.toString());return _j_(s_qo_);},
                 _o_);}
      try
       {var
         ctx_qq_=canvas_qn_.getContext(_M_.toString()),
         _qr_=
          1-(ctx_qq_==null_l2_?1:0)
           ?ctx_qq_
           :canvas_qn_.getContext(_L_.toString()),
         _qs_=_qr_;}
      catch(_re_){var _qs_=null_l2_;}
      var
       gl_qu_=_mq_(_qs_,_qt_),
       _qv_=get_source_pM_(_G_),
       _qw_=get_source_pM_(_F_),
       vertexShader_qx_=gl_qu_.createShader(gl_qu_.VERTEX_SHADER),
       fragmentShader_qy_=gl_qu_.createShader(gl_qu_.FRAGMENT_SHADER);
      load_shader_pL_(gl_qu_,vertexShader_qx_,_qw_);
      load_shader_pL_(gl_qu_,fragmentShader_qy_,_qv_);
      var prog_qz_=gl_qu_.createProgram();
      gl_qu_.attachShader(prog_qz_,vertexShader_qx_);
      gl_qu_.attachShader(prog_qz_,fragmentShader_qy_);
      gl_qu_.linkProgram(prog_qz_);
      if(!(gl_qu_.getProgramParameter(prog_qz_,gl_qu_.LINK_STATUS)|0))
       error_pf_(_q_);
      gl_qu_.useProgram(prog_qz_);
      check_error_pK_(gl_qu_);
      debug_pJ_(_E_);
      gl_qu_.enable(gl_qu_.DEPTH_TEST);
      gl_qu_.depthFunc(gl_qu_.LESS);
      var
       proj_loc_qA_=gl_qu_.getUniformLocation(prog_qz_,_D_.toString()),
       lightPos_loc_qB_=gl_qu_.getUniformLocation(prog_qz_,_C_.toString()),
       ambientLight_loc_qC_=gl_qu_.getUniformLocation(prog_qz_,_B_.toString()),
       lightPos_qD_=float32array_pN_([-1,3,0,-1]),
       ambientLight_qE_=float32array_pN_([-1,0.1,0.1,0.1]);
      gl_qu_.uniform3fv(lightPos_loc_qB_,lightPos_qD_);
      gl_qu_.uniform3fv(ambientLight_loc_qC_,ambientLight_qE_);
      var pos_attr_qF_=gl_qu_.getAttribLocation(prog_qz_,_A_.toString());
      gl_qu_.enableVertexAttribArray(pos_attr_qF_);
      var array_buffer_qG_=gl_qu_.createBuffer();
      gl_qu_.bindBuffer(gl_qu_.ARRAY_BUFFER,array_buffer_qG_);
      gl_qu_.bufferData(gl_qu_.ARRAY_BUFFER,pos_qh_,gl_qu_.STATIC_DRAW);
      gl_qu_.vertexAttribPointer(pos_attr_qF_,3,gl_qu_.FLOAT,_false_mw_,0,0);
      var norm_attr_qH_=gl_qu_.getAttribLocation(prog_qz_,_z_.toString());
      gl_qu_.enableVertexAttribArray(norm_attr_qH_);
      var norm_buffer_qI_=gl_qu_.createBuffer();
      gl_qu_.bindBuffer(gl_qu_.ARRAY_BUFFER,norm_buffer_qI_);
      gl_qu_.bufferData(gl_qu_.ARRAY_BUFFER,norm_qj_,gl_qu_.STATIC_DRAW);
      gl_qu_.vertexAttribPointer(norm_attr_qH_,3,gl_qu_.FLOAT,_false_mw_,0,0);
      var
       _qK_=pi_qJ_/2,
       mat_qL_=
        _pO_
         ([-1,
           1,
           0,
           0,
           0,
           0,
           Math.cos(_qK_),
           Math.sin(_qK_),
           0,
           0,
           -Math.sin(_qK_),
           Math.cos(_qK_),
           0,
           0,
           0,
           0,
           1],
          _pO_
           ([-1,0.5,0,0,0,0,0.5,0,0,0,0,0.5,0,0,0,0,1],
            [-1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]));
      check_error_pK_(gl_qu_);
      debug_pJ_(_y_);
      function get_time_qN_(param_qM_)
       {return new date_constr_mG_().getTime();}
      var last_draw_qO_=[0,get_time_qN_(0)],_qP_=[0,0,0];
      function f_rc_(param_rd_)
       {var _qQ_=1*(new date_constr_mG_().getTime()/1000);
        gl_qu_.uniformMatrix4fv
         (proj_loc_qA_,
          _false_mw_,
          float32array_pN_
           (_pO_
             (mat_qL_,
              [-1,
               Math.cos(_qQ_),
               0,
               -Math.sin(_qQ_),
               0,
               0,
               1,
               0,
               0,
               Math.sin(_qQ_),
               0,
               Math.cos(_qQ_),
               0,
               0,
               0,
               0,
               1])));
        gl_qu_.clear(gl_qu_.DEPTH_BUFFER_BIT|gl_qu_.COLOR_BUFFER_BIT);
        gl_qu_.drawArrays(gl_qu_.TRIANGLES,0,pos_qh_.length/3|0);
        check_error_pK_(gl_qu_);
        var now_qR_=get_time_qN_(0),_qS_=now_qR_-last_draw_qO_[1];
        _qP_[1]=_qP_[1]+1|0;
        if(1===_qP_[1])
         {var cell_qT_=[];
          caml_update_dummy(cell_qT_,[0,_qS_,cell_qT_]);
          _qP_[2]=cell_qT_;}
        else
         {var tail_qU_=_qP_[2],cell_qV_=[0,_qS_,tail_qU_[2]];
          tail_qU_[2]=cell_qV_;
          _qP_[2]=cell_qV_;}
        last_draw_qO_[1]=now_qR_;
        if(50<_dR_(_qP_))
         {if(0===_qP_[1])throw [0,_dS_];
          _qP_[1]=_qP_[1]-1|0;
          var tail_qW_=_qP_[2],head_qX_=tail_qW_[2];
          if(head_qX_===tail_qW_)_qP_[2]=0;else tail_qW_[2]=head_qX_[2];}
        var _qY_=0,_qZ_=_dR_(_qP_),_q6_=1000;
        if(0===_qP_[1])
         var _q0_=_qY_;
        else
         {var tail_q1_=_qP_[2],accu_q2_=_qY_,cell_q3_=tail_q1_[2];
          for(;;)
           {var _q4_=accu_q2_+cell_q3_[1];
            if(cell_q3_!==tail_q1_)
             {var _q5_=cell_q3_[2],accu_q2_=_q4_,cell_q3_=_q5_;continue;}
            var _q0_=_q4_;
            break;}}
        fps_text_qi_.data=_fG_(_jr_,_J_,1/_q0_*_qZ_*_q6_).toString();
        var
         match_q7_=task_lq_(0),
         t_q8_=match_q7_[1],
         w_q9_=match_q7_[2],
         _q$_=0.02*1000,
         id_ra_=
          window_mX_.setTimeout
           (caml_js_wrap_callback
             (function(param_q__){return wakeup_lp_(w_q9_,0);}),
            _q$_);
        on_cancel_lr_
         (t_q8_,function(param_rb_){return window_mX_.clearTimeout(id_ra_);});
        return _ls_(t_q8_,f_rc_);}
      return f_rc_(0);}
    window_mX_.onload=
    handler_mV_
     (function(param_vm_)
       {function _rv_(exn_rg_)
         {var param_rf_=_js_[1];
          for(;;)
           {if(param_rf_)
             {var tl_rl_=param_rf_[2],hd_rh_=param_rf_[1];
              try
               {var _ri_=_cQ_(hd_rh_,exn_rg_),_rj_=_ri_;}
              catch(_rm_){var _rj_=0;}
              if(!_rj_){var param_rf_=tl_rl_;continue;}
              var _rk_=_rj_[1];}
            else
             if(exn_rg_[1]===_cm_)
              var _rk_=_bK_;
             else
              if(exn_rg_[1]===_ck_)
               var _rk_=_bJ_;
              else
               if(exn_rg_[1]===_cl_)
                {var
                  match_rn_=exn_rg_[2],
                  char_ro_=match_rn_[3],
                  _rk_=
                   _jn_
                    (_jr_,
                     _e_,
                     match_rn_[1],
                     match_rn_[2],
                     char_ro_,
                     char_ro_+5|0,
                     _bI_);}
               else
                if(exn_rg_[1]===_d_)
                 {var
                   match_rp_=exn_rg_[2],
                   char_rq_=match_rp_[3],
                   _rk_=
                    _jn_
                     (_jr_,
                      _e_,
                      match_rp_[1],
                      match_rp_[2],
                      char_rq_,
                      char_rq_+6|0,
                      _bH_);}
                else
                 {var _rr_=exn_rg_.length-1,constructor_ru_=exn_rg_[0+1][0+1];
                  if(_rr_<0||2<_rr_)
                   {var
                     _rs_=_jy_(exn_rg_,2),
                     _rt_=_fb_(_jr_,_bG_,_jz_(exn_rg_,1),_rs_);}
                  else
                   switch(_rr_)
                    {case 1:var _rt_=_bE_;break;
                     case 2:var _rt_=_fG_(_jr_,_bD_,_jz_(exn_rg_,1));break;
                     default:var _rt_=_bF_;}
                  var _rk_=_cy_(constructor_ru_,_rt_);}
            return _fG_(error_pf_,_K_,_rk_);}}
        try
         {var
           _sr_=0,
           _ss_=0,
           _st_=0,
           _su_=0,
           _sv_=0,
           _sw_=0,
           _sy_=
            function(frame_rw_)
             {var
               a_rx_=
                str_array_mE_(frame_rw_[4].toString().split(_x_.toString()));
              window_mX_.arr=a_rx_;
              var vertex_ry_=[0,0],norm_rz_=[0,0],face_rA_=[0,0],i_rB_=0;
              for(;;)
               {var _rC_=_mu_(array_get_mD_(a_rx_,i_rB_));
                if(_rC_)
                 {var
                   _rD_=
                    string_match_no_
                     (line_regexp_pP_,new MlWrappedString(_rC_[1]),0);
                  if(_rD_)
                   {var _rE_=_dg_(_cQ_(matched_group_np_,_rD_[1]),_w_);
                    if(_rE_)
                     {var _rF_=_rE_[1];
                      if(_rF_)
                       {var _rG_=_rF_[1];
                        if(caml_string_notequal(_rG_,_v_))
                         if(caml_string_notequal(_rG_,_u_))
                          if(caml_string_notequal(_rG_,_t_))
                           var _rH_=0;
                          else
                           {var _rI_=_rE_[2];
                            if(_rI_)
                             {var _rJ_=_rI_[1];
                              if(_rJ_)
                               {var _rK_=_rI_[2];
                                if(_rK_)
                                 {var _rL_=_rK_[1];
                                  if(_rL_)
                                   {var _rM_=_rK_[2];
                                    if(_rM_)
                                     {var _rN_=_rM_[1];
                                      if(_rN_&&!_rM_[2])
                                       {var
                                         _rO_=
                                          [0,
                                           [1,
                                            [0,
                                             caml_float_of_string(_rJ_[1]),
                                             caml_float_of_string(_rL_[1]),
                                             caml_float_of_string(_rN_[1])]]],
                                         _rH_=1;}
                                      else
                                       var _rH_=0;}
                                    else
                                     var _rH_=0;}
                                  else
                                   var _rH_=0;}
                                else
                                 var _rH_=0;}
                              else
                               var _rH_=0;}
                            else
                             var _rH_=0;}
                         else
                          {var _rP_=_rE_[2];
                           if(_rP_)
                            {var _rQ_=_rP_[1];
                             if(_rQ_)
                              {var _rR_=_rP_[2];
                               if(_rR_)
                                {var _rS_=_rR_[1];
                                 if(_rS_)
                                  {var _rT_=_rR_[2];
                                   if(_rT_)
                                    {var _rU_=_rT_[1];
                                     if(_rU_&&!_rT_[2])
                                      {var
                                        _rO_=
                                         [0,
                                          [0,
                                           [0,
                                            caml_float_of_string(_rQ_[1]),
                                            caml_float_of_string(_rS_[1]),
                                            caml_float_of_string(_rU_[1])]]],
                                        _rH_=1;}
                                     else
                                      var _rH_=0;}
                                   else
                                    var _rH_=0;}
                                 else
                                  var _rH_=0;}
                               else
                                var _rH_=0;}
                             else
                              var _rH_=0;}
                           else
                            var _rH_=0;}
                        else
                         {var _rV_=_rE_[2];
                          if(_rV_)
                           {var _rW_=_rV_[1];
                            if(_rW_)
                             {var _rX_=_rV_[2];
                              if(_rX_)
                               {var _rY_=_rX_[1];
                                if(_rY_)
                                 {var _rZ_=_rX_[2];
                                  if(_rZ_)
                                   {var _r0_=_rZ_[1];
                                    if(_r0_&&!_rZ_[2])
                                     {var
                                       _r1_=
                                        _dg_
                                         (read_coord_couple_qf_,
                                          [0,_rW_[1],[0,_rY_[1],[0,_r0_[1],0]]]);
                                      if(_r1_)
                                       {var _r2_=_r1_[1];
                                        if(_r2_)
                                         {var _r3_=_r1_[2];
                                          if(_r3_)
                                           {var _r4_=_r3_[1];
                                            if(_r4_)
                                             {var _r5_=_r3_[2];
                                              if(_r5_)
                                               {var _r6_=_r5_[1];
                                                if(_r6_&&!_r5_[2])
                                                 {var _rO_=[0,[2,[0,_r2_[1],_r4_[1],_r6_[1]]]],_rH_=1,_r7_=0;}
                                                else
                                                 var _r7_=1;}
                                              else
                                               var _r7_=1;}
                                            else
                                             var _r7_=1;}
                                          else
                                           var _r7_=1;}
                                        else
                                         var _r7_=1;}
                                      else
                                       var _r7_=1;
                                      if(_r7_){var _rO_=0,_rH_=1;}}
                                    else
                                     var _rH_=0;}
                                  else
                                   var _rH_=0;}
                                else
                                 var _rH_=0;}
                              else
                               var _rH_=0;}
                            else
                             var _rH_=0;}
                          else
                           var _rH_=0;}}
                      else
                       var _rH_=0;}
                    else
                     var _rH_=0;
                    if(!_rH_)var _rO_=0;}
                  else
                   var _rO_=0;
                  if(_rO_)
                   {var _r8_=_rO_[1];
                    switch(_r8_[0])
                     {case 1:
                       var match_r9_=_r8_[1];
                       norm_rz_[1]=
                       [0,[0,match_r9_[1],match_r9_[2],match_r9_[3]],norm_rz_[1]];
                       break;
                      case 2:
                       var match_r__=_r8_[1];
                       face_rA_[1]=
                       [0,[0,match_r__[1],match_r__[2],match_r__[3]],face_rA_[1]];
                       break;
                      default:
                       var match_r$_=_r8_[1];
                       vertex_ry_[1]=
                       [0,[0,match_r$_[1],match_r$_[2],match_r$_[3]],vertex_ry_[1]];}}
                  var _sa_=i_rB_+1|0,i_rB_=_sa_;
                  continue;}
                var
                 _sb_=_c9_(_dm_(face_rA_[1])),
                 _sc_=_c9_(_dm_(norm_rz_[1])),
                 _sd_=_c9_(_dm_(vertex_ry_[1])),
                 vertex__so_=
                  _c8_
                   (_sb_.length-1,
                    function(i_se_)
                     {var
                       _sf_=caml_array_get(_sb_,i_se_),
                       match_sg_=caml_array_get(_sd_,_sf_[1][1]-1|0),
                       match_sh_=caml_array_get(_sd_,_sf_[2][1]-1|0),
                       match_si_=caml_array_get(_sd_,_sf_[3][1]-1|0);
                      return [0,
                              match_sg_[1],
                              [0,
                               match_sg_[2],
                               [0,
                                match_sg_[3],
                                [0,
                                 match_sh_[1],
                                 [0,
                                  match_sh_[2],
                                  [0,
                                   match_sh_[3],
                                   [0,match_si_[1],[0,match_si_[2],[0,match_si_[3],0]]]]]]]]];}),
                 norm__sp_=
                  _c8_
                   (_sb_.length-1,
                    function(i_sj_)
                     {var
                       _sk_=caml_array_get(_sb_,i_sj_),
                       match_sl_=caml_array_get(_sc_,_sk_[1][2]-1|0),
                       match_sm_=caml_array_get(_sc_,_sk_[2][2]-1|0),
                       match_sn_=caml_array_get(_sc_,_sk_[3][2]-1|0);
                      return [0,
                              match_sl_[1],
                              [0,
                               match_sl_[2],
                               [0,
                                match_sl_[3],
                                [0,
                                 match_sm_[1],
                                 [0,
                                  match_sm_[2],
                                  [0,
                                   match_sm_[3],
                                   [0,match_sn_[1],[0,match_sn_[2],[0,match_sn_[3],0]]]]]]]]];}),
                 vertex_sq_=float32array_pN_(concat_qe_(vertex__so_));
                return [0,vertex_sq_,float32array_pN_(concat_qe_(norm__sp_))];}},
           headers_sx_=_sw_?_sw_[1]:0,
           get_args_sz_=_st_?_st_[1]:0,
           check_headers_sA_=_sr_?_sr_[1]:function(param_sB_,_sC_){return 1;};
          if(_ss_)
           {var form_arg_sD_=_ss_[1];
            if(_su_)
             {var post_args_sF_=_su_[1];
              _dn_
               (function(param_sE_)
                 {return _o6_
                          (form_arg_sD_,
                           [0,param_sE_[1],[0,-976970511,param_sE_[2].toString()]]);},
                post_args_sF_);}
            var form_arg_sG_=[0,form_arg_sD_];}
          else
           if(_su_)
            {var
              post_args_sH_=_su_[1],
              _sI_=_mu_(_mO_(formData_o7_)),
              contents_sJ_=
               _sI_?[0,808620462,new (_sI_[1])()]:[0,891486873,[0,0]];
             _dn_
              (function(param_sK_)
                {return _o6_
                         (contents_sJ_,
                          [0,param_sK_[1],[0,-976970511,param_sK_[2].toString()]]);},
               post_args_sH_);
             var form_arg_sG_=[0,contents_sJ_];}
           else
            var form_arg_sG_=0;
          if(form_arg_sG_)
           {var _sL_=form_arg_sG_[1];
            if(_sv_)
             var _sM_=[0,_ao_,_sv_,126925477];
            else
             {if(891486873<=_sL_[1])
               {var yes_sN_=0,no_sO_=0,param_sP_=_sL_[2][1];
                for(;;)
                 {if(param_sP_)
                   {var
                     l_sQ_=param_sP_[2],
                     x_sR_=param_sP_[1],
                     _sS_=781515420<=x_sR_[2][1]?0:1;
                    if(_sS_)
                     {var _sT_=[0,x_sR_,yes_sN_],yes_sN_=_sT_,param_sP_=l_sQ_;
                      continue;}
                    var _sU_=[0,x_sR_,no_sO_],no_sO_=_sU_,param_sP_=l_sQ_;
                    continue;}
                  var _sV_=_dm_(no_sO_);
                  _dm_(yes_sN_);
                  if(_sV_)
                   {var
                     nine_digits_sX_=
                      function(param_sW_)
                       {return string_of_int_cL_(math_mK_.random()*1000000000|0);},
                     _sY_=nine_digits_sX_(0),
                     _sZ_=_cy_(_S_,_cy_(nine_digits_sX_(0),_sY_)),
                     _s0_=[0,_am_,[0,_cy_(_an_,_sZ_)],[0,164354597,_sZ_]];}
                  else
                   var _s0_=_al_;
                  var _s1_=_s0_;
                  break;}}
              else
               var _s1_=_ak_;
              var _sM_=_s1_;}
            var match_s2_=_sM_;}
          else
           var match_s2_=[0,_aj_,_sv_,126925477];
          var
           post_encode_s3_=match_s2_[3],
           content_type_s4_=match_s2_[2],
           method__s6_=match_s2_[1],
           _s5_=caml_js_from_byte_string(_f_),
           _tD_=
            function(handle_s7_)
             {var
               res_s8_=match_result_mF_(handle_s7_),
               _s9_=
                caml_js_to_byte_string
                 (_mt_(array_get_mD_(res_s8_,1),interrupt_ny_).toLowerCase());
              if
               (caml_string_notequal(_s9_,_aG_)&&
                caml_string_notequal(_s9_,_aF_))
               {if
                 (caml_string_notequal(_s9_,_aE_)&&
                  caml_string_notequal(_s9_,_aD_))
                 {if
                   (caml_string_notequal(_s9_,_aC_)&&
                    caml_string_notequal(_s9_,_aB_))
                   {var _s$_=1,_s__=0;}
                  else
                   var _s__=1;
                  if(_s__){var ssl_ta_=1,_s$_=2;}}
                else
                 var _s$_=0;
                switch(_s$_)
                 {case 1:var _tb_=0;break;
                  case 2:var _tb_=1;break;
                  default:var ssl_ta_=0,_tb_=1;}
                if(_tb_)
                 {var
                   path_str_tc_=
                    urldecode_js_string_string_nI_
                     (_mt_(array_get_mD_(res_s8_,5),interrupt_ny_)),
                   _te_=
                    function(param_td_){return caml_js_from_byte_string(_aK_);},
                   _tg_=
                    urldecode_js_string_string_nI_
                     (_mt_(array_get_mD_(res_s8_,9),_te_)),
                   _th_=
                    function(param_tf_){return caml_js_from_byte_string(_aL_);},
                   _ti_=
                    decode_arguments_js_string_om_
                     (_mt_(array_get_mD_(res_s8_,7),_th_)),
                   _tk_=path_of_path_string_nQ_(path_str_tc_),
                   _tl_=
                    function(param_tj_){return caml_js_from_byte_string(_aM_);},
                   _tm_=
                    caml_js_to_byte_string(_mt_(array_get_mD_(res_s8_,4),_tl_)),
                   _tn_=
                    caml_string_notequal(_tm_,_aJ_)
                     ?caml_int_of_string(_tm_)
                     :ssl_ta_?443:80,
                   url_to_=
                    [0,
                     urldecode_js_string_string_nI_
                      (_mt_(array_get_mD_(res_s8_,2),interrupt_ny_)),
                     _tn_,
                     _tk_,
                     path_str_tc_,
                     _ti_,
                     _tg_],
                   _tp_=ssl_ta_?[1,url_to_]:[0,url_to_];
                  return [0,_tp_];}}
              throw [0,Not_an_http_protocol_ok_];},
           _tE_=
            function(param_tC_)
             {function _tA_(handle_tq_)
               {var
                 res_tr_=match_result_mF_(handle_tq_),
                 path_str_ts_=
                  urldecode_js_string_string_nI_
                   (_mt_(array_get_mD_(res_tr_,2),interrupt_ny_));
                function _tu_(param_tt_)
                 {return caml_js_from_byte_string(_aN_);}
                var
                 _tw_=
                  caml_js_to_byte_string(_mt_(array_get_mD_(res_tr_,6),_tu_));
                function _tx_(param_tv_)
                 {return caml_js_from_byte_string(_aO_);}
                var
                 _ty_=
                  decode_arguments_js_string_om_
                   (_mt_(array_get_mD_(res_tr_,4),_tx_));
                return [0,
                        [2,
                         [0,
                          path_of_path_string_nQ_(path_str_ts_),
                          path_str_ts_,
                          _ty_,
                          _tw_]]];}
              function _tB_(param_tz_){return 0;}
              return _mc_(file_re_oY_.exec(_s5_),_tB_,_tA_);},
           _tF_=_mc_(url_re_on_.exec(_s5_),_tE_,_tD_);
          if(_tF_)
           {var _tG_=_tF_[1];
            switch(_tG_[0])
             {case 0:
               var url_tH_=_tG_[1],_tI_=url_tH_.slice(),_tJ_=url_tH_[5];
               _tI_[5]=0;
               var match_tK_=[0,string_of_url_oX_([0,_tI_]),_tJ_],_tL_=1;
               break;
              case 1:
               var url_tM_=_tG_[1],_tN_=url_tM_.slice(),_tO_=url_tM_[5];
               _tN_[5]=0;
               var match_tK_=[0,string_of_url_oX_([1,_tN_]),_tO_],_tL_=1;
               break;
              default:var _tL_=0;}}
          else
           var _tL_=0;
          if(!_tL_)var match_tK_=[0,_f_,0];
          var
           url_tP_=match_tK_[1],
           _tQ_=_cE_(match_tK_[2],get_args_sz_),
           url_tR_=
            _tQ_?_cy_(url_tP_,_cy_(_ai_,encode_arguments_ol_(_tQ_))):url_tP_,
           match_tS_=task_lq_(0),
           w_tT_=match_tS_[2],
           res_tU_=match_tS_[1];
          try
           {var _tV_=new XMLHttpRequest(),req_tW_=_tV_;}
          catch(_vb_)
           {try
             {var
               a5f6575ba_tX_=_o__(0),
               _tY_=new a5f6575ba_tX_(_R_.toString()),
               req_tW_=_tY_;}
            catch(_t5_)
             {try
               {var
                 a64f1392a_tZ_=_o__(0),
                 _t0_=new a64f1392a_tZ_(_Q_.toString()),
                 req_tW_=_t0_;}
              catch(_t4_)
               {try
                 {var
                   a30a5da5a_t1_=_o__(0),
                   _t2_=new a30a5da5a_t1_(_P_.toString());}
                catch(_t3_){throw [0,_d_,_O_];}
                var req_tW_=_t2_;}}}
          req_tW_.open(method__s6_.toString(),url_tR_.toString(),_true_mv_);
          if(content_type_s4_)
           req_tW_.setRequestHeader
            (_ah_.toString(),content_type_s4_[1].toString());
          _dn_
           (function(param_t6_)
             {return req_tW_.setRequestHeader
                      (param_t6_[1].toString(),param_t6_[2].toString());},
            headers_sx_);
          var
           headers_ua_=
            function(s_t__)
             {function _t9_(v_t7_){return [0,new MlWrappedString(v_t7_)];}
              function _t$_(param_t8_){return 0;}
              return _mc_
                      (req_tW_.getResponseHeader(caml_js_from_byte_string(s_t__)),
                       _t$_,
                       _t9_);},
           checked_ub_=[0,0],
           do_check_headers_uk_=
            function(param_uj_)
             {if
               (checked_ub_[1]||
                _fG_(check_headers_sA_,req_tW_.status,headers_ua_))
               var _uc_=0;
              else
               {var
                 _ue_=[0,_pI_,[0,req_tW_.status,headers_ua_]],
                 t_ud_=repr_rec_jJ_(w_tT_),
                 _uf_=t_ud_[1];
                switch(_uf_[0])
                 {case 1:var _ug_=_uf_[1][1]===Canceled_jE_?1:0;break;
                  case 2:
                   var state_uh_=[1,_ue_],waiters_ui_=_uf_[1][2];
                   t_ud_[1]=state_uh_;
                   run_waiters_j__(waiters_ui_,state_uh_);
                   var _ug_=1;
                   break;
                  default:var _ug_=0;}
                if(!_ug_)_cn_(_bq_);
                req_tW_.abort();
                var _uc_=1;}
              _uc_;
              checked_ub_[1]=1;
              return 0;};
          req_tW_.onreadystatechange=
          caml_js_wrap_callback
           (function(param_up_)
             {switch(req_tW_.readyState)
               {case 2:if(!onIE_mW_)return do_check_headers_uk_(0);break;
                case 3:if(onIE_mW_)return do_check_headers_uk_(0);break;
                case 4:
                 do_check_headers_uk_(0);
                 var
                  _uo_=
                   function(param_un_)
                    {var _ul_=_mr_(req_tW_.responseXML);
                     if(_ul_)
                      {var doc_um_=_ul_[1];
                       return _mP_(doc_um_.documentElement)===null_l2_
                               ?0
                               :[0,doc_um_];}
                     return 0;};
                 return wakeup_lp_
                         (w_tT_,
                          [0,
                           url_tR_,
                           req_tW_.status,
                           headers_ua_,
                           new MlWrappedString(req_tW_.responseText),
                           _uo_]);
                default:}
              return 0;});
          if(form_arg_sG_)
           {var _uq_=form_arg_sG_[1];
            if(891486873<=_uq_[1])
             {var l_ur_=_uq_[2];
              if(typeof post_encode_s3_==="number")
               {var _ux_=l_ur_[1];
                req_tW_.send
                 (_mP_
                   (_dN_
                      (_ae_,
                       _dg_
                        (function(param_us_)
                          {var _ut_=param_us_[2],_uu_=param_us_[1];
                           if(781515420<=_ut_[1])
                            {var
                              _uv_=
                               _cy_
                                (_ag_,urlencode_nJ_(0,new MlWrappedString(_ut_[2].name)));
                             return _cy_(urlencode_nJ_(0,_uu_),_uv_);}
                           var
                            _uw_=
                             _cy_(_af_,urlencode_nJ_(0,new MlWrappedString(_ut_[2])));
                           return _cy_(urlencode_nJ_(0,_uu_),_uw_);},
                         _ux_)).toString
                     ()));}
              else
               {var
                 boundary_uy_=post_encode_s3_[2],
                 _uB_=
                  function(data_uz_)
                   {var data_uA_=_mP_(data_uz_.join(_ap_.toString()));
                    return _ms_(req_tW_.sendAsBinary)
                            ?req_tW_.sendAsBinary(data_uA_)
                            :req_tW_.send(data_uA_);},
                 _uD_=l_ur_[1],
                 b_uC_=new array_constructor_my_(),
                 _u8_=
                  function(param_uE_)
                   {b_uC_.push(_cy_(_T_,_cy_(boundary_uy_,_U_)).toString());
                    return b_uC_;};
                _lt_
                 (_lt_
                   (_lY_
                     (function(v_uF_)
                       {b_uC_.push(_cy_(_Y_,_cy_(boundary_uy_,_Z_)).toString());
                        var _uG_=v_uF_[2],_uH_=v_uF_[1];
                        if(781515420<=_uG_[1])
                         {var
                           value_uI_=_uG_[2],
                           _uP_=-1041425454,
                           _uQ_=
                            function(file_uO_)
                             {var
                               _uL_=_ad_.toString(),
                               _uK_=_ac_.toString(),
                               _uJ_=_mu_(value_uI_.name);
                              if(_uJ_)
                               var _uM_=_uJ_[1];
                              else
                               {var
                                 _uN_=_mu_(value_uI_.fileName),
                                 _uM_=_uN_?_uN_[1]:_j_(_aq_);}
                              b_uC_.push
                               (_cy_(_aa_,_cy_(_uH_,_ab_)).toString(),_uM_,_uK_,_uL_);
                              b_uC_.push(___.toString(),file_uO_,_$_.toString());
                              return return_lo_(0);},
                           _uR_=_mu_(_mO_(_o8_));
                          if(_uR_)
                           {var
                             reader_uS_=new (_uR_[1])(),
                             match_uT_=task_lq_(0),
                             res_uU_=match_uT_[1],
                             w_uY_=match_uT_[2];
                            reader_uS_.onloadend=
                            handler_mV_
                             (function(param_uZ_)
                               {if(2===reader_uS_.readyState)
                                 {var
                                   _uV_=reader_uS_.result,
                                   _uW_=
                                    caml_equal(typeof _uV_,_ar_.toString())?_mP_(_uV_):null_l2_,
                                   _uX_=_mr_(_uW_);
                                  if(!_uX_)throw [0,_d_,_as_];
                                  wakeup_lp_(w_uY_,_uX_[1]);}
                                return _false_mw_;});
                            on_cancel_lr_
                             (res_uU_,function(param_u0_){return reader_uS_.abort();});
                            if(typeof _uP_==="number")
                             if(-550809787===_uP_)
                              reader_uS_.readAsDataURL(value_uI_);
                             else
                              if(936573133<=_uP_)
                               reader_uS_.readAsText(value_uI_);
                              else
                               reader_uS_.readAsBinaryString(value_uI_);
                            else
                             reader_uS_.readAsText(value_uI_,_uP_[2]);
                            var _u1_=res_uU_;}
                          else
                           {var fail_u3_=function(param_u2_){return _j_(_au_);};
                            if(typeof _uP_==="number")
                             var
                              _u4_=
                               -550809787===_uP_
                                ?_ms_(value_uI_.getAsDataURL)
                                  ?value_uI_.getAsDataURL()
                                  :fail_u3_(0)
                                :936573133<=_uP_
                                  ?_ms_(value_uI_.getAsText)
                                    ?value_uI_.getAsText(_at_.toString())
                                    :fail_u3_(0)
                                  :_ms_(value_uI_.getAsBinary)
                                    ?value_uI_.getAsBinary()
                                    :fail_u3_(0);
                            else
                             {var
                               e_u5_=_uP_[2],
                               _u4_=
                                _ms_(value_uI_.getAsText)
                                 ?value_uI_.getAsText(e_u5_)
                                 :fail_u3_(0);}
                            var _u1_=return_lo_(_u4_);}
                          return _ls_(_u1_,_uQ_);}
                        var value_u7_=_uG_[2],_u6_=_X_.toString();
                        b_uC_.push
                         (_cy_(_V_,_cy_(_uH_,_W_)).toString(),value_u7_,_u6_);
                        return return_lo_(0);},
                      _uD_),
                    _u8_),
                  _uB_);}}
            else
             req_tW_.send(_uq_[2]);}
          else
           req_tW_.send(null_l2_);
          on_cancel_lr_(res_tU_,function(param_u9_){return req_tW_.abort();});
          var _u$_=_ls_(_lt_(res_tU_,_sy_),start_u__),t_va_=_u$_;}
        catch(_vc_){var t_va_=fail_kY_(_vc_);}
        var _vd_=repr_kg_(t_va_)[1];
        switch(_vd_[0])
         {case 1:_rv_(_vd_[1]);break;
          case 2:
           var
            sleeper_ve_=_vd_[1],
            res_vf_=temp_k0_(sleeper_ve_[1]),
            data_vh_=current_data_jF_[1];
           add_immutable_waiter_kV_
            (sleeper_ve_,
             function(state_vg_)
              {switch(state_vg_[0])
                {case 0:return fast_connect_k__(res_vf_,state_vg_);
                 case 1:
                  var exn_vi_=state_vg_[1];
                  current_data_jF_[1]=data_vh_;
                  try
                   {var _vj_=_rv_(exn_vi_),_vk_=_vj_;}
                  catch(_vl_){var _vk_=fail_kY_(_vl_);}
                  return connect_k9_(res_vf_,_vk_);
                 default:throw [0,_d_,_by_];}});
           break;
          case 3:throw [0,_d_,_bx_];
          default:}
        return _true_mv_;});
    do_at_exit_cN_(0);
    return;}
  ());