text: (function(Clazz
  ,Clazz_getClassName
  ,Clazz_newLongArray
  ,Clazz_doubleToByte
  ,Clazz_doubleToInt
  ,Clazz_doubleToLong
  ,Clazz_declarePackage
  ,Clazz_instanceOf
  ,Clazz_load
  ,Clazz_instantialize
  ,Clazz_decorateAsClass
  ,Clazz_floatToInt
  ,Clazz_floatToLong
  ,Clazz_makeConstructor
  ,Clazz_defineEnumConstant
  ,Clazz_exceptionOf
  ,Clazz_newIntArray
  ,Clazz_defineStatics
  ,Clazz_newFloatArray
  ,Clazz_declareType
  ,Clazz_prepareFields
  ,Clazz_superConstructor
  ,Clazz_newByteArray
  ,Clazz_declareInterface
  ,Clazz_p0p
  ,Clazz_pu$h
  ,Clazz_newShortArray
  ,Clazz_innerTypeInstance
  ,Clazz_isClassDefined
  ,Clazz_prepareCallback
  ,Clazz_newArray
  ,Clazz_castNullAs
  ,Clazz_floatToShort
  ,Clazz_superCall
  ,Clazz_decorateAsType
  ,Clazz_newBooleanArray
  ,Clazz_newCharArray
  ,Clazz_implementOf
  ,Clazz_newDoubleArray
  ,Clazz_overrideConstructor
  ,Clazz_clone
  ,Clazz_doubleToShort
  ,Clazz_getInheritedLevel
  ,Clazz_getParamsType
  ,Clazz_isAF
  ,Clazz_isAB
  ,Clazz_isAI
  ,Clazz_isAS
  ,Clazz_isASS
  ,Clazz_isAP
  ,Clazz_isAFloat
  ,Clazz_isAII
  ,Clazz_isAFF
  ,Clazz_isAFFF
  ,Clazz_tryToSearchAndExecute
  ,Clazz_getStackTrace
  ,Clazz_inheritArgs
  ,Clazz_alert
  ,Clazz_defineMethod
  ,Clazz_overrideMethod
  ,Clazz_declareAnonymous
  //,Clazz_checkPrivateMethod
  ,Clazz_cloneFinals
  ){
  var $t$;
  //var c$;
  Clazz_load (["java.io.FilterInputStream"], "java.io.PushbackInputStream", ["java.io.IOException", "java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.NullPointerException"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.buf = null;
  this.pos = 0;
  Clazz_instantialize (this, arguments);
  }, java.io, "PushbackInputStream", java.io.FilterInputStream);
  Clazz_defineMethod (c$, "ensureOpen", 
   function () {
  if (this.$in == null) throw  new java.io.IOException ("Stream closed");
  });
  Clazz_makeConstructor (c$, 
  function ($in, size) {
  Clazz_superConstructor (this, java.io.PushbackInputStream, [$in]);
  if (size <= 0) {
  throw  new IllegalArgumentException ("size <= 0");
  }this.buf =  Clazz_newByteArray (size, 0);
  this.pos = size;
  }, "java.io.InputStream,~N");
  Clazz_overrideMethod (c$, "readByteAsInt", 
  function () {
  this.ensureOpen ();
  if (this.pos < this.buf.length) {
  return this.buf[this.pos++] & 0xff;
  }return this.$in.readByteAsInt ();
  });
  Clazz_overrideMethod (c$, "read", 
  function (b, off, len) {
  this.ensureOpen ();
  if (b == null) {
  throw  new NullPointerException ();
  } else if (off < 0 || len < 0 || len > b.length - off) {
  throw  new IndexOutOfBoundsException ();
  } else if (len == 0) {
  return 0;
  }var avail = this.buf.length - this.pos;
  if (avail > 0) {
  if (len < avail) {
  avail = len;
  }System.arraycopy (this.buf, this.pos, b, off, avail);
  this.pos += avail;
  off += avail;
  len -= avail;
  }if (len > 0) {
  len = this.$in.read (b, off, len);
  if (len == -1) {
  return avail == 0 ? -1 : avail;
  }return avail + len;
  }return avail;
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "unreadByte", 
  function (b) {
  this.ensureOpen ();
  if (this.pos == 0) {
  throw  new java.io.IOException ("Push back buffer is full");
  }this.buf[--this.pos] = b;
  }, "~N");
  Clazz_defineMethod (c$, "unread", 
  function (b, off, len) {
  this.ensureOpen ();
  if (len > this.pos) {
  throw  new java.io.IOException ("Push back buffer is full");
  }this.pos -= len;
  System.arraycopy (b, off, this.buf, this.pos, len);
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "available", 
  function () {
  this.ensureOpen ();
  var n = this.buf.length - this.pos;
  var avail = this.$in.available ();
  return n > (2147483647 - avail) ? 2147483647 : n + avail;
  });
  Clazz_overrideMethod (c$, "skip", 
  function (n) {
  this.ensureOpen ();
  if (n <= 0) {
  return 0;
  }var pskip = this.buf.length - this.pos;
  if (pskip > 0) {
  if (n < pskip) {
  pskip = n;
  }this.pos += pskip;
  n -= pskip;
  }if (n > 0) {
  pskip += this.$in.skip (n);
  }return pskip;
  }, "~N");
  Clazz_overrideMethod (c$, "markSupported", 
  function () {
  return false;
  });
  Clazz_overrideMethod (c$, "mark", 
  function (readlimit) {
  }, "~N");
  Clazz_overrideMethod (c$, "reset", 
  function () {
  throw  new java.io.IOException ("mark/reset not supported");
  });
  Clazz_overrideMethod (c$, "close", 
  function () {
  if (this.$in == null) return;
  this.$in.close ();
  this.$in = null;
  this.buf = null;
  });
  });
  Clazz_load(["java.io.Closeable","$.InputStream"],"java.io.FileInputStream",["java.lang.IndexOutOfBoundsException","$.NullPointerException"],function(){
  c$=Clazz_decorateAsClass(function(){
  this.fd=null;
  this.innerFD=false;
  Clazz_instantialize(this,arguments);
  },java.io,"FileInputStream",java.io.InputStream,java.io.Closeable);
  Clazz_makeConstructor(c$,
  function(file){
  Clazz_superConstructor(this,java.io.FileInputStream);
  },"java.io.File");
  Clazz_makeConstructor(c$,
  function(fd){
  Clazz_superConstructor(this,java.io.FileInputStream);
  if(fd==null){
  throw new NullPointerException();
  }},"java.io.FileDescriptor");
  Clazz_makeConstructor(c$,
  function(fileName){
  this.construct(null==fileName?null:null);
  },"~S");
  Clazz_overrideMethod(c$,"available",
  function(){
  return 0;
  });
  Clazz_overrideMethod(c$,"close",
  function(){
  if(this.fd==null){
  return;
  }});
  Clazz_overrideMethod(c$,"finalize",
  function(){
  this.close();
  });
  Clazz_defineMethod(c$,"getFD",
  function(){
  return this.fd;
  });
  Clazz_defineMethod(c$,"read",
  function(){
  var readed=Clazz_newArray(1,0);
  var result=this.read(readed,0,1);
  return result==-1?-1:readed[0]&0xff;
  });
  Clazz_defineMethod(c$,"read",
  function(buffer){
  return this.read(buffer,0,buffer.length);
  },"~A");
  Clazz_defineMethod(c$,"read",
  function(buffer,offset,count){
  if(count>buffer.length-offset||count<0||offset<0){
  throw new IndexOutOfBoundsException();
  }if(0==count){
  return 0;
  }return 0;
  },"~A,~N,~N");
  Clazz_overrideMethod(c$,"skip",
  function(count){
  return 0;
  },"~N");
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["java.io.FilterInputStream"], "java.util.zip.CheckedInputStream", null, function () {
  c$ = Clazz_decorateAsClass (function () {
  this.cksum = null;
  Clazz_instantialize (this, arguments);
  }, java.util.zip, "CheckedInputStream", java.io.FilterInputStream);
  Clazz_defineMethod (c$, "set", 
  function (cksum) {
  this.$in = this.$in;
  this.cksum = cksum;
  return this;
  }, "JU.Checksum");
  Clazz_overrideMethod (c$, "readByteAsInt", 
  function () {
  var b = this.$in.readByteAsInt ();
  if (b != -1) {
  this.cksum.updateByteAsInt (b);
  }return b;
  });
  Clazz_overrideMethod (c$, "read", 
  function (buf, off, len) {
  len = this.$in.read (buf, off, len);
  if (len != -1) {
  this.cksum.update (buf, off, len);
  }return len;
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "skip", 
  function (n) {
  var buf =  Clazz_newByteArray (512, 0);
  var total = 0;
  while (total < n) {
  var len = n - total;
  len = this.read (buf, 0, len < buf.length ? len : buf.length);
  if (len == -1) {
  return total;
  }total += len;
  }
  return total;
  }, "~N");
  Clazz_defineMethod (c$, "getChecksum", 
  function () {
  return this.cksum;
  });
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["JU.Inflater"], "java.util.zip.Inflater", null, function () {
  c$ = Clazz_declareType (java.util.zip, "Inflater", JU.Inflater);
  Clazz_defineMethod (c$, "initialize", 
  function (nowrap) {
  return this.init (0, nowrap);
  }, "~B");
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["java.io.IOException"], "java.util.zip.ZipException", null, function () {
  c$ = Clazz_declareType (java.util.zip, "ZipException", java.io.IOException);
  });
  Clazz_declarePackage ("java.util.zip");
  c$ = Clazz_declareInterface (java.util.zip, "ZipConstants");
  Clazz_defineStatics (c$,
  "LOCSIG", 0x04034b50,
  "EXTSIG", 0x08074b50,
  "CENSIG", 0x02014b50,
  "ENDSIG", 0x06054b50,
  "LOCHDR", 30,
  "EXTHDR", 16,
  "CENHDR", 46,
  "ENDHDR", 22,
  "LOCVER", 4,
  "LOCFLG", 6,
  "LOCHOW", 8,
  "LOCTIM", 10,
  "LOCCRC", 14,
  "LOCSIZ", 18,
  "LOCLEN", 22,
  "LOCNAM", 26,
  "LOCEXT", 28,
  "EXTCRC", 4,
  "EXTSIZ", 8,
  "EXTLEN", 12,
  "CENVEM", 4,
  "CENVER", 6,
  "CENFLG", 8,
  "CENHOW", 10,
  "CENTIM", 12,
  "CENCRC", 16,
  "CENSIZ", 20,
  "CENLEN", 24,
  "CENNAM", 28,
  "CENEXT", 30,
  "CENCOM", 32,
  "CENDSK", 34,
  "CENATT", 36,
  "CENATX", 38,
  "CENOFF", 42,
  "ENDSUB", 8,
  "ENDTOT", 10,
  "ENDSIZ", 12,
  "ENDOFF", 16,
  "ENDCOM", 20);
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["java.util.zip.ZipConstants"], "java.util.zip.ZipEntry", ["java.lang.IllegalArgumentException", "$.InternalError", "$.NullPointerException", "java.util.Date"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.offset = 0;
  this.name = null;
  this.time = -1;
  this.crc = -1;
  this.size = -1;
  this.csize = -1;
  this.method = -1;
  this.flag = 0;
  this.extra = null;
  this.comment = null;
  Clazz_instantialize (this, arguments);
  }, java.util.zip, "ZipEntry", null, [java.util.zip.ZipConstants, Cloneable]);
  Clazz_makeConstructor (c$, 
  function (name) {
  if (name == null) {
  throw  new NullPointerException ();
  }if (name.length > 0xFFFF) {
  throw  new IllegalArgumentException ("entry name too long");
  }this.name = name;
  }, "~S");
  Clazz_defineMethod (c$, "getName", 
  function () {
  return this.name;
  });
  Clazz_defineMethod (c$, "setTime", 
  function (time) {
  this.time = java.util.zip.ZipEntry.javaToDosTime (time);
  }, "~N");
  Clazz_defineMethod (c$, "getTime", 
  function () {
  return this.time != -1 ? java.util.zip.ZipEntry.dosToJavaTime (this.time) : -1;
  });
  Clazz_defineMethod (c$, "setSize", 
  function (size) {
  if (size < 0) {
  throw  new IllegalArgumentException ("invalid entry size");
  }this.size = size;
  }, "~N");
  Clazz_defineMethod (c$, "getSize", 
  function () {
  return this.size;
  });
  Clazz_defineMethod (c$, "getCompressedSize", 
  function () {
  return this.csize;
  });
  Clazz_defineMethod (c$, "setCompressedSize", 
  function (csize) {
  this.csize = csize;
  }, "~N");
  Clazz_defineMethod (c$, "setCrc", 
  function (crc) {
  if (crc < 0 || crc > 0xFFFFFFFF) {
  throw  new IllegalArgumentException ("invalid entry crc-32");
  }this.crc = crc;
  }, "~N");
  Clazz_defineMethod (c$, "getCrc", 
  function () {
  return this.crc;
  });
  Clazz_defineMethod (c$, "setMethod", 
  function (method) {
  if (method != 0 && method != 8) {
  throw  new IllegalArgumentException ("invalid compression method");
  }this.method = method;
  }, "~N");
  Clazz_defineMethod (c$, "getMethod", 
  function () {
  return this.method;
  });
  Clazz_defineMethod (c$, "setExtra", 
  function (extra) {
  if (extra != null && extra.length > 0xFFFF) {
  throw  new IllegalArgumentException ("invalid extra field length");
  }this.extra = extra;
  }, "~A");
  Clazz_defineMethod (c$, "getExtra", 
  function () {
  return this.extra;
  });
  Clazz_defineMethod (c$, "setComment", 
  function (comment) {
  this.comment = comment;
  }, "~S");
  Clazz_defineMethod (c$, "getComment", 
  function () {
  return this.comment;
  });
  Clazz_defineMethod (c$, "isDirectory", 
  function () {
  return this.name.endsWith ("/");
  });
  Clazz_overrideMethod (c$, "toString", 
  function () {
  return this.getName ();
  });
  c$.dosToJavaTime = Clazz_defineMethod (c$, "dosToJavaTime", 
   function (dtime) {
  var d =  new java.util.Date ((((dtime >> 25) & 0x7f) + 80), (((dtime >> 21) & 0x0f) - 1), ((dtime >> 16) & 0x1f), ((dtime >> 11) & 0x1f), ((dtime >> 5) & 0x3f), ((dtime << 1) & 0x3e));
  return d.getTime ();
  }, "~N");
  c$.javaToDosTime = Clazz_defineMethod (c$, "javaToDosTime", 
   function (time) {
  var d =  new java.util.Date (time);
  var year = d.getYear () + 1900;
  if (year < 1980) {
  return 2162688;
  }return (year - 1980) << 25 | (d.getMonth () + 1) << 21 | d.getDate () << 16 | d.getHours () << 11 | d.getMinutes () << 5 | d.getSeconds () >> 1;
  }, "~N");
  Clazz_overrideMethod (c$, "hashCode", 
  function () {
  return this.name.hashCode ();
  });
  Clazz_defineMethod (c$, "clone", 
  function () {
  try {
  var e = Clazz_superCall (this, java.util.zip.ZipEntry, "clone", []);
  if (this.extra != null) {
  e.extra =  Clazz_newByteArray (this.extra.length, 0);
  System.arraycopy (this.extra, 0, e.extra, 0, this.extra.length);
  }return e;
  } catch (e) {
  if (Clazz_exceptionOf (e, CloneNotSupportedException)) {
  throw  new InternalError ();
  } else {
  throw e;
  }
  }
  });
  Clazz_defineStatics (c$,
  "STORED", 0,
  "DEFLATED", 8);
  });
  Clazz_declarePackage ("java.util.zip");
  c$ = Clazz_declareType (java.util.zip, "ZipConstants64");
  Clazz_defineStatics (c$,
  "ZIP64_ENDSIG", 0x06064b50,
  "ZIP64_LOCSIG", 0x07064b50,
  "ZIP64_ENDHDR", 56,
  "ZIP64_LOCHDR", 20,
  "ZIP64_EXTHDR", 24,
  "ZIP64_EXTID", 0x0001,
  "ZIP64_MAGICCOUNT", 0xFFFF,
  "ZIP64_MAGICVAL", 0xFFFFFFFF,
  "ZIP64_ENDLEN", 4,
  "ZIP64_ENDVEM", 12,
  "ZIP64_ENDVER", 14,
  "ZIP64_ENDNMD", 16,
  "ZIP64_ENDDSK", 20,
  "ZIP64_ENDTOD", 24,
  "ZIP64_ENDTOT", 32,
  "ZIP64_ENDSIZ", 40,
  "ZIP64_ENDOFF", 48,
  "ZIP64_ENDEXT", 56,
  "ZIP64_LOCDSK", 4,
  "ZIP64_LOCOFF", 8,
  "ZIP64_LOCTOT", 16,
  "ZIP64_EXTCRC", 4,
  "ZIP64_EXTSIZ", 8,
  "ZIP64_EXTLEN", 16,
  "EFS", 0x800);
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["java.util.zip.InflaterInputStream", "$.ZipConstants", "$.CRC32"], "java.util.zip.ZipInputStream", ["java.io.EOFException", "$.IOException", "$.PushbackInputStream", "java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.Long", "$.NullPointerException", "java.util.zip.Inflater", "$.ZipEntry", "$.ZipException"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.entry = null;
  this.flag = 0;
  this.crc = null;
  this.remaining = 0;
  this.tmpbuf = null;
  this.$closed = false;
  this.entryEOF = false;
  this.zc = null;
  this.byteTest = null;
  this.$b = null;
  Clazz_instantialize (this, arguments);
  }, java.util.zip, "ZipInputStream", java.util.zip.InflaterInputStream, java.util.zip.ZipConstants);
  Clazz_prepareFields (c$, function () {
  this.crc =  new java.util.zip.CRC32 ();
  this.tmpbuf =  Clazz_newByteArray (512, 0);
  this.byteTest =  Clazz_newByteArray (-1, [0x20]);
  this.$b =  Clazz_newByteArray (256, 0);
  });
  Clazz_defineMethod (c$, "ensureOpen", 
   function () {
  if (this.$closed) {
  throw  new java.io.IOException ("Stream closed");
  }});
  Clazz_makeConstructor (c$, 
  function ($in) {
  Clazz_superConstructor (this, java.util.zip.ZipInputStream, [ new java.io.PushbackInputStream ($in, 1024), java.util.zip.ZipInputStream.newInflater (), 512]);
  var charset = "UTF-8";
  try {
   String.instantialize (this.byteTest, charset);
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
  throw  new NullPointerException ("charset is invalid");
  } else {
  throw e;
  }
  }
  this.zc = charset;
  }, "java.io.InputStream");
  c$.newInflater = Clazz_defineMethod (c$, "newInflater", 
   function () {
  return  new java.util.zip.Inflater ().init (0, true);
  });
  Clazz_defineMethod (c$, "getNextEntry", 
  function () {
  this.ensureOpen ();
  if (this.entry != null) {
  this.closeEntry ();
  }this.crc.reset ();
  this.inflater = this.inf = java.util.zip.ZipInputStream.newInflater ();
  if ((this.entry = this.readLOC ()) == null) {
  return null;
  }if (this.entry.method == 0) {
  this.remaining = this.entry.size;
  }this.entryEOF = false;
  return this.entry;
  });
  Clazz_defineMethod (c$, "closeEntry", 
  function () {
  this.ensureOpen ();
  while (this.read (this.tmpbuf, 0, this.tmpbuf.length) != -1) {
  }
  this.entryEOF = true;
  });
  Clazz_overrideMethod (c$, "available", 
  function () {
  this.ensureOpen ();
  return (this.entryEOF ? 0 : 1);
  });
  Clazz_overrideMethod (c$, "read", 
  function (b, off, len) {
  this.ensureOpen ();
  if (off < 0 || len < 0 || off > b.length - len) {
  throw  new IndexOutOfBoundsException ();
  } else if (len == 0) {
  return 0;
  }if (this.entry == null) {
  return -1;
  }switch (this.entry.method) {
  case 8:
  len = this.readInf (b, off, len);
  if (len == -1) {
  this.readEnd (this.entry);
  this.entryEOF = true;
  this.entry = null;
  } else {
  this.crc.update (b, off, len);
  }return len;
  case 0:
  if (this.remaining <= 0) {
  this.entryEOF = true;
  this.entry = null;
  return -1;
  }if (len > this.remaining) {
  len = this.remaining;
  }len = this.$in.read (b, off, len);
  if (len == -1) {
  throw  new java.util.zip.ZipException ("unexpected EOF");
  }this.crc.update (b, off, len);
  this.remaining -= len;
  if (this.remaining == 0 && this.entry.crc != this.crc.getValue ()) {
  throw  new java.util.zip.ZipException ("invalid entry CRC (expected 0x" + Long.toHexString (this.entry.crc) + " but got 0x" + Long.toHexString (this.crc.getValue ()) + ")");
  }return len;
  default:
  throw  new java.util.zip.ZipException ("invalid compression method");
  }
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "skip", 
  function (n) {
  if (n < 0) {
  throw  new IllegalArgumentException ("negative skip length");
  }this.ensureOpen ();
  var max = Math.min (n, 2147483647);
  var total = 0;
  while (total < max) {
  var len = max - total;
  if (len > this.tmpbuf.length) {
  len = this.tmpbuf.length;
  }len = this.read (this.tmpbuf, 0, len);
  if (len == -1) {
  this.entryEOF = true;
  break;
  }total += len;
  }
  return total;
  }, "~N");
  Clazz_defineMethod (c$, "close", 
  function () {
  if (!this.$closed) {
  Clazz_superCall (this, java.util.zip.ZipInputStream, "close", []);
  this.$closed = true;
  }});
  Clazz_defineMethod (c$, "readLOC", 
   function () {
  try {
  this.readFully (this.tmpbuf, 0, 30);
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.EOFException)) {
  return null;
  } else {
  throw e;
  }
  }
  if (java.util.zip.ZipInputStream.get32 (this.tmpbuf, 0) != 67324752) {
  return null;
  }this.flag = java.util.zip.ZipInputStream.get16 (this.tmpbuf, 6);
  var len = java.util.zip.ZipInputStream.get16 (this.tmpbuf, 26);
  var blen = this.$b.length;
  if (len > blen) {
  do blen = blen * 2;
   while (len > blen);
  this.$b =  Clazz_newByteArray (blen, 0);
  }this.readFully (this.$b, 0, len);
  var e = this.createZipEntry (((this.flag & 2048) != 0) ? this.toStringUTF8 (this.$b, len) : this.toStringb2 (this.$b, len));
  if ((this.flag & 1) == 1) {
  throw  new java.util.zip.ZipException ("encrypted ZIP entry not supported");
  }e.method = java.util.zip.ZipInputStream.get16 (this.tmpbuf, 8);
  e.time = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 10);
  if ((this.flag & 8) == 8) {
  if (e.method != 8) {
  throw  new java.util.zip.ZipException ("only DEFLATED entries can have EXT descriptor");
  }} else {
  e.crc = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 14);
  e.csize = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 18);
  e.size = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 22);
  }len = java.util.zip.ZipInputStream.get16 (this.tmpbuf, 28);
  if (len > 0) {
  var bb =  Clazz_newByteArray (len, 0);
  this.readFully (bb, 0, len);
  e.setExtra (bb);
  if (e.csize == 4294967295 || e.size == 4294967295) {
  var off = 0;
  while (off + 4 < len) {
  var sz = java.util.zip.ZipInputStream.get16 (bb, off + 2);
  if (java.util.zip.ZipInputStream.get16 (bb, off) == 1) {
  off += 4;
  if (sz < 16 || (off + sz) > len) {
  return e;
  }e.size = java.util.zip.ZipInputStream.get64 (bb, off);
  e.csize = java.util.zip.ZipInputStream.get64 (bb, off + 8);
  break;
  }off += (sz + 4);
  }
  }}return e;
  });
  Clazz_defineMethod (c$, "toStringUTF8", 
   function (b2, len) {
  try {
  return  String.instantialize (b2, 0, len, this.zc);
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
  return this.toStringb2 (b2, len);
  } else {
  throw e;
  }
  }
  }, "~A,~N");
  Clazz_defineMethod (c$, "toStringb2", 
   function (b2, len) {
  return  String.instantialize (b2, 0, len);
  }, "~A,~N");
  Clazz_defineMethod (c$, "createZipEntry", 
  function (name) {
  return  new java.util.zip.ZipEntry (name);
  }, "~S");
  Clazz_defineMethod (c$, "readEnd", 
   function (e) {
  var n = this.inf.getAvailIn ();
  if (n > 0) {
  (this.$in).unread (this.buf, this.len - n, n);
  this.eof = false;
  }if ((this.flag & 8) == 8) {
  if (this.inf.getTotalOut () > 4294967295 || this.inf.getTotalIn () > 4294967295) {
  this.readFully (this.tmpbuf, 0, 24);
  var sig = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 0);
  if (sig != 134695760) {
  e.crc = sig;
  e.csize = java.util.zip.ZipInputStream.get64 (this.tmpbuf, 4);
  e.size = java.util.zip.ZipInputStream.get64 (this.tmpbuf, 12);
  (this.$in).unread (this.tmpbuf, 19, 4);
  } else {
  e.crc = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 4);
  e.csize = java.util.zip.ZipInputStream.get64 (this.tmpbuf, 8);
  e.size = java.util.zip.ZipInputStream.get64 (this.tmpbuf, 16);
  }} else {
  this.readFully (this.tmpbuf, 0, 16);
  var sig = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 0);
  if (sig != 134695760) {
  e.crc = sig;
  e.csize = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 4);
  e.size = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 8);
  (this.$in).unread (this.tmpbuf, 11, 4);
  } else {
  e.crc = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 4);
  e.csize = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 8);
  e.size = java.util.zip.ZipInputStream.get32 (this.tmpbuf, 12);
  }}}if (e.size != this.inf.getTotalOut ()) {
  throw  new java.util.zip.ZipException ("invalid entry size (expected " + e.size + " but got " + this.inf.getTotalOut () + " bytes)");
  }if (e.csize != this.inf.getTotalIn ()) {
  throw  new java.util.zip.ZipException ("invalid entry compressed size (expected " + e.csize + " but got " + this.inf.getTotalIn () + " bytes)");
  }if (e.crc != this.crc.getValue ()) {
  throw  new java.util.zip.ZipException ("invalid entry CRC (expected 0x" + Long.toHexString (e.crc) + " but got 0x" + Long.toHexString (this.crc.getValue ()) + ")");
  }}, "java.util.zip.ZipEntry");
  Clazz_defineMethod (c$, "readFully", 
   function (b, off, len) {
  while (len > 0) {
  var n = this.$in.read (b, off, len);
  if (n == -1) {
  throw  new java.io.EOFException ();
  }off += n;
  len -= n;
  }
  }, "~A,~N,~N");
  c$.get16 = Clazz_defineMethod (c$, "get16", 
   function (b, off) {
  return (b[off] & 0xff) | ((b[off + 1] & 0xff) << 8);
  }, "~A,~N");
  c$.get32 = Clazz_defineMethod (c$, "get32", 
   function (b, off) {
  return (java.util.zip.ZipInputStream.get16 (b, off) | (java.util.zip.ZipInputStream.get16 (b, off + 2) << 16)) & 0xffffffff;
  }, "~A,~N");
  c$.get64 = Clazz_defineMethod (c$, "get64", 
   function (b, off) {
  return java.util.zip.ZipInputStream.get32 (b, off) | (java.util.zip.ZipInputStream.get32 (b, off + 4) << 32);
  }, "~A,~N");
  Clazz_defineStatics (c$,
  "STORED", 0,
  "DEFLATED", 8);
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["JU.CRC32"], "java.util.zip.CRC32", null, function () {
  c$ = Clazz_declareType (java.util.zip, "CRC32", JU.CRC32);
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["JU.InflaterInputStream"], "java.util.zip.InflaterInputStream", null, function () {
  c$ = Clazz_decorateAsClass (function () {
  this.inf = null;
  Clazz_instantialize (this, arguments);
  }, java.util.zip, "InflaterInputStream", JU.InflaterInputStream);
  Clazz_makeConstructor (c$, 
  function ($in, inflater, size) {
  Clazz_superConstructor (this, java.util.zip.InflaterInputStream, [$in, inflater, size, true]);
  this.inf = inflater;
  }, "java.io.InputStream,java.util.zip.Inflater,~N");
  });
  Clazz_declarePackage ("java.util.zip");
  Clazz_load (["java.util.zip.InflaterInputStream", "$.CRC32"], "java.util.zip.GZIPInputStream", ["java.io.EOFException", "$.IOException", "java.util.zip.CheckedInputStream", "$.Inflater", "$.ZipException"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.crc = null;
  this.eos = false;
  this.$closed = false;
  this.tmpbuf = null;
  Clazz_instantialize (this, arguments);
  }, java.util.zip, "GZIPInputStream", java.util.zip.InflaterInputStream);
  Clazz_prepareFields (c$, function () {
  this.crc =  new java.util.zip.CRC32 ();
  this.tmpbuf =  Clazz_newByteArray (128, 0);
  });
  Clazz_defineMethod (c$, "ensureOpen", 
   function () {
  if (this.$closed) {
  throw  new java.io.IOException ("Stream closed");
  }});
  Clazz_makeConstructor (c$, 
  function ($in, size) {
  Clazz_superConstructor (this, java.util.zip.GZIPInputStream, [$in,  new java.util.zip.Inflater ().init (0, true), size]);
  this.readHeader ($in);
  }, "java.io.InputStream,~N");
  Clazz_overrideMethod (c$, "read", 
  function (buf, off, len) {
  this.ensureOpen ();
  if (this.eos) {
  return -1;
  }var n = this.readInf (buf, off, len);
  if (n == -1) {
  if (this.readTrailer ()) this.eos = true;
   else return this.read (buf, off, len);
  } else {
  this.crc.update (buf, off, n);
  }return n;
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "close", 
  function () {
  if (!this.$closed) {
  Clazz_superCall (this, java.util.zip.GZIPInputStream, "close", []);
  this.eos = true;
  this.$closed = true;
  }});
  Clazz_defineMethod (c$, "readHeader", 
   function (this_in) {
  var $in =  new java.util.zip.CheckedInputStream (this_in).set (this.crc);
  this.crc.reset ();
  if (this.readUShort ($in) != 35615) {
  throw  new java.util.zip.ZipException ("Not in GZIP format");
  }if (this.readUByte ($in) != 8) {
  throw  new java.util.zip.ZipException ("Unsupported compression method");
  }var flg = this.readUByte ($in);
  this.skipBytes ($in, 6);
  var n = 10;
  if ((flg & 4) == 4) {
  var m = this.readUShort ($in);
  this.skipBytes ($in, m);
  n += m + 2;
  }if ((flg & 8) == 8) {
  do {
  n++;
  } while (this.readUByte ($in) != 0);
  }if ((flg & 16) == 16) {
  do {
  n++;
  } while (this.readUByte ($in) != 0);
  }if ((flg & 2) == 2) {
  var v = this.crc.getValue () & 0xffff;
  if (this.readUShort ($in) != v) {
  throw  new java.util.zip.ZipException ("Corrupt GZIP header");
  }n += 2;
  }this.crc.reset ();
  return n;
  }, "java.io.InputStream");
  Clazz_defineMethod (c$, "readTrailer", 
   function () {
  return true;
  });
  Clazz_defineMethod (c$, "readUShort", 
   function ($in) {
  var b = this.readUByte ($in);
  return (this.readUByte ($in) << 8) | b;
  }, "java.io.InputStream");
  Clazz_defineMethod (c$, "readUByte", 
   function ($in) {
  var b = $in.readByteAsInt ();
  if (b == -1) {
  throw  new java.io.EOFException ();
  }if (b < -1 || b > 255) {
  throw  new java.io.IOException (this.$in.getClass ().getName () + ".read() returned value out of range -1..255: " + b);
  }return b;
  }, "java.io.InputStream");
  Clazz_defineMethod (c$, "skipBytes", 
   function ($in, n) {
  while (n > 0) {
  var len = $in.read (this.tmpbuf, 0, n < this.tmpbuf.length ? n : this.tmpbuf.length);
  if (len == -1) {
  throw  new java.io.EOFException ();
  }n -= len;
  }
  }, "java.io.InputStream,~N");
  Clazz_defineStatics (c$,
  "GZIP_MAGIC", 0x8b1f,
  "FHCRC", 2,
  "FEXTRA", 4,
  "FNAME", 8,
  "FCOMMENT", 16);
  });
  Clazz_declarePackage ("javajs.api");
  Clazz_load (["java.util.zip.ZipInputStream", "javajs.api.ZInputStream"], "javajs.api.GenericZipInputStream", null, function () {
  c$ = Clazz_declareType (javajs.api, "GenericZipInputStream", java.util.zip.ZipInputStream, javajs.api.ZInputStream);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (["javajs.api.GenericZipTools"], "JU.ZipTools", ["java.io.BufferedInputStream", "$.IOException", "java.lang.Boolean", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "$.ZipInputStream", "javajs.api.GenericZipInputStream", "$.ZInputStream", "JU.BArray", "$.Lst", "$.PT", "$.Rdr", "$.SB"], function () {
  c$ = Clazz_declareType (JU, "ZipTools", null, javajs.api.GenericZipTools);
  Clazz_makeConstructor (c$, 
  function () {
  });
  Clazz_overrideMethod (c$, "newZipInputStream", 
  function (is) {
  return JU.ZipTools.newZIS (is);
  }, "java.io.InputStream");
  c$.newZIS = Clazz_defineMethod (c$, "newZIS", 
   function (is) {
  return (Clazz_instanceOf (is, javajs.api.ZInputStream) ? is : Clazz_instanceOf (is, java.io.BufferedInputStream) ?  new javajs.api.GenericZipInputStream (is) :  new javajs.api.GenericZipInputStream ( new java.io.BufferedInputStream (is)));
  }, "java.io.InputStream");
  Clazz_overrideMethod (c$, "getAllZipData", 
  function (is, subfileList, name0, binaryFileList, exclude, fileData) {
  var zis = JU.ZipTools.newZIS (is);
  var ze;
  var listing =  new JU.SB ();
  binaryFileList = "|" + binaryFileList + "|";
  var prefix = JU.PT.join (subfileList, '/', 1);
  var prefixd = null;
  if (prefix != null) {
  prefixd = prefix.substring (0, prefix.indexOf ("/") + 1);
  if (prefixd.length == 0) prefixd = null;
  }try {
  while ((ze = zis.getNextEntry ()) != null) {
  var name = ze.getName ();
  if (prefix != null && prefixd != null && !(name.equals (prefix) || name.startsWith (prefixd)) || exclude != null && name.contains (exclude)) continue;
  listing.append (name).appendC ('\n');
  var sname = "|" + name.substring (name.lastIndexOf ("/") + 1) + "|";
  var asBinaryString = (binaryFileList.indexOf (sname) >= 0);
  var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
  var str;
  if (asBinaryString) {
  str = this.getBinaryStringForBytes (bytes);
  name += ":asBinaryString";
  } else {
  str = JU.Rdr.fixUTF (bytes);
  }str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n";
  var key = name0 + "|" + name;
  fileData.put (key, str);
  }
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  } else {
  throw e;
  }
  }
  fileData.put ("#Directory_Listing", listing.toString ());
  }, "java.io.InputStream,~A,~S,~S,~S,java.util.Map");
  Clazz_defineMethod (c$, "getBinaryStringForBytes", 
   function (bytes) {
  var ret =  new JU.SB ();
  for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
  
  return ret.toString ();
  }, "~A");
  Clazz_overrideMethod (c$, "getZipFileDirectory", 
  function (bis, list, listPtr, asBufferedInputStream) {
  var ret;
  if (list == null || listPtr >= list.length) return this.getZipDirectoryAsStringAndClose (bis);
  bis = JU.Rdr.getPngZipStream (bis, true);
  var fileName = list[listPtr];
  var zis =  new java.util.zip.ZipInputStream (bis);
  var ze;
  try {
  var isAll = (fileName.equals ("."));
  if (isAll || fileName.lastIndexOf ("/") == fileName.length - 1) {
  ret =  new JU.SB ();
  while ((ze = zis.getNextEntry ()) != null) {
  var name = ze.getName ();
  if (isAll || name.startsWith (fileName)) ret.append (name).appendC ('\n');
  }
  var str = ret.toString ();
  return (asBufferedInputStream ? JU.Rdr.getBIS (str.getBytes ()) : str);
  }var pt = fileName.indexOf (":asBinaryString");
  var asBinaryString = (pt > 0);
  if (asBinaryString) fileName = fileName.substring (0, pt);
  fileName = fileName.$replace ('\\', '/');
  while ((ze = zis.getNextEntry ()) != null && !fileName.equals (ze.getName ())) {
  }
  var bytes = (ze == null ? null : JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ()));
  ze = null;
  zis.close ();
  if (bytes == null) return "";
  if (JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) return this.getZipFileDirectory (JU.Rdr.getBIS (bytes), list, ++listPtr, asBufferedInputStream);
  if (asBufferedInputStream) return JU.Rdr.getBIS (bytes);
  if (asBinaryString) {
  ret =  new JU.SB ();
  for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
  
  return ret.toString ();
  }if (JU.Rdr.isGzipB (bytes)) bytes = JU.Rdr.getLimitedStreamBytes (this.getUnGzippedInputStream (bytes), -1);
  return JU.Rdr.fixUTF (bytes);
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  return "";
  } else {
  throw e;
  }
  }
  }, "java.io.BufferedInputStream,~A,~N,~B");
  Clazz_overrideMethod (c$, "getZipFileContentsAsBytes", 
  function (bis, list, listPtr) {
  var ret =  Clazz_newByteArray (0, 0);
  var fileName = list[listPtr];
  if (fileName.lastIndexOf ("/") == fileName.length - 1) return ret;
  try {
  bis = JU.Rdr.getPngZipStream (bis, true);
  var zis =  new java.util.zip.ZipInputStream (bis);
  var ze;
  while ((ze = zis.getNextEntry ()) != null) {
  if (!fileName.equals (ze.getName ())) continue;
  var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
  return ((JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes (JU.Rdr.getBIS (bytes), list, listPtr) : bytes);
  }
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  } else {
  throw e;
  }
  }
  return ret;
  }, "java.io.BufferedInputStream,~A,~N");
  Clazz_overrideMethod (c$, "getZipDirectoryAsStringAndClose", 
  function (bis) {
  var sb =  new JU.SB ();
  var s =  new Array (0);
  try {
  s = this.getZipDirectoryOrErrorAndClose (bis, null);
  bis.close ();
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  System.out.println (e.toString ());
  } else {
  throw e;
  }
  }
  for (var i = 0; i < s.length; i++) sb.append (s[i]).appendC ('\n');
  
  return sb.toString ();
  }, "java.io.BufferedInputStream");
  Clazz_overrideMethod (c$, "getZipDirectoryAndClose", 
  function (bis, manifestID) {
  var s =  new Array (0);
  try {
  s = this.getZipDirectoryOrErrorAndClose (bis, manifestID);
  bis.close ();
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  System.out.println (e.toString ());
  } else {
  throw e;
  }
  }
  return s;
  }, "java.io.BufferedInputStream,~S");
  Clazz_defineMethod (c$, "getZipDirectoryOrErrorAndClose", 
   function (bis, manifestID) {
  bis = JU.Rdr.getPngZipStream (bis, true);
  var v =  new JU.Lst ();
  var zis =  new java.util.zip.ZipInputStream (bis);
  var ze;
  var manifest = null;
  while ((ze = zis.getNextEntry ()) != null) {
  var fileName = ze.getName ();
  if (manifestID != null && fileName.startsWith (manifestID)) manifest = JU.ZipTools.getStreamAsString (zis);
   else if (!fileName.startsWith ("__MACOS")) v.addLast (fileName);
  }
  zis.close ();
  if (manifestID != null) v.add (0, manifest == null ? "" : manifest + "\n############\n");
  return v.toArray ( new Array (v.size ()));
  }, "java.io.BufferedInputStream,~S");
  c$.getStreamAsString = Clazz_defineMethod (c$, "getStreamAsString", 
  function (is) {
  return JU.Rdr.fixUTF (JU.Rdr.getLimitedStreamBytes (is, -1));
  }, "java.io.InputStream");
  Clazz_overrideMethod (c$, "newGZIPInputStream", 
  function (is) {
  return  new java.io.BufferedInputStream ( new java.util.zip.GZIPInputStream (is, 512));
  }, "java.io.InputStream");
  Clazz_overrideMethod (c$, "getUnGzippedInputStream", 
  function (bytes) {
  try {
  return JU.Rdr.getUnzippedInputStream (this, JU.Rdr.getBIS (bytes));
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  return null;
  } else {
  throw e;
  }
  }
  }, "~A");
  Clazz_overrideMethod (c$, "addZipEntry", 
  function (zos, fileName) {
  (zos).putNextEntry ( new java.util.zip.ZipEntry (fileName));
  }, "~O,~S");
  Clazz_overrideMethod (c$, "closeZipEntry", 
  function (zos) {
  (zos).closeEntry ();
  }, "~O");
  Clazz_overrideMethod (c$, "getZipOutputStream", 
  function (bos) {
  {
  return javajs.api.Interface.getInterface(
  "java.util.zip.ZipOutputStream").setZOS(bos);
  }}, "~O");
  Clazz_overrideMethod (c$, "getCrcValue", 
  function (bytes) {
  var crc =  new java.util.zip.CRC32 ();
  crc.update (bytes, 0, bytes.length);
  return crc.getValue ();
  }, "~A");
  Clazz_overrideMethod (c$, "readFileAsMap", 
  function (bis, bdata, name) {
  var pt = (name == null ? -1 : name.indexOf ("|"));
  name = (pt >= 0 ? name.substring (pt + 1) : null);
  var bytes = null;
  try {
  if (JU.Rdr.isPngZipStream (bis)) {
  var isImage = "_IMAGE_".equals (name);
  if (name == null || isImage) {
  bytes = JU.ZipTools.getPngImageBytes (bis);
  bdata.put ((isImage ? "_DATA_" : "_IMAGE_"),  new JU.BArray (bytes));
  }if (!isImage) this.cacheZipContents (bis, name, bdata, true);
  } else if (JU.Rdr.isZipS (bis)) {
  this.cacheZipContents (bis, name, bdata, true);
  } else if (name == null) {
  bytes = JU.Rdr.getLimitedStreamBytes (JU.Rdr.getUnzippedInputStream (this, bis), -1);
  bdata.put ("_DATA_",  new JU.BArray (bytes));
  } else {
  throw  new java.io.IOException ("ZIP file " + name + " not found");
  }if (bytes != null) bdata.put ("_LEN_", Integer.$valueOf (bytes.length));
  bdata.put ("$_BINARY_$", Boolean.TRUE);
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.IOException)) {
  bdata.clear ();
  bdata.put ("_ERROR_", e.getMessage ());
  } else {
  throw e;
  }
  }
  }, "java.io.BufferedInputStream,java.util.Map,~S");
  Clazz_overrideMethod (c$, "cacheZipContents", 
  function (bis, fileName, cache, asByteArray) {
  var zis = JU.ZipTools.newZIS (bis);
  var ze;
  var listing =  new JU.SB ();
  var n = 0;
  var oneFile = (asByteArray && fileName != null);
  var pt = (oneFile ? fileName.indexOf ("|") : -1);
  var file0 = (pt >= 0 ? fileName : null);
  if (pt >= 0) fileName = fileName.substring (0, pt);
  try {
  while ((ze = zis.getNextEntry ()) != null) {
  var name = ze.getName ();
  if (fileName != null) {
  if (oneFile) {
  if (!name.equalsIgnoreCase (fileName)) continue;
  } else {
  listing.append (name).appendC ('\n');
  }}var nBytes = ze.getSize ();
  var bytes = JU.Rdr.getLimitedStreamBytes (zis, nBytes);
  if (file0 != null) {
  this.readFileAsMap (JU.Rdr.getBIS (bytes), cache, file0);
  return null;
  }n += bytes.length;
  var o = (asByteArray ?  new JU.BArray (bytes) : bytes);
  cache.put ((oneFile ? "_DATA_" : (fileName == null ? "" : fileName + "|") + name), o);
  if (oneFile) break;
  }
  zis.close ();
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  try {
  zis.close ();
  } catch (e1) {
  if (Clazz_exceptionOf (e1, java.io.IOException)) {
  } else {
  throw e1;
  }
  }
  return null;
  } else {
  throw e;
  }
  }
  if (n == 0 || fileName == null) return null;
  System.out.println ("ZipTools cached " + n + " bytes from " + fileName);
  return listing.toString ();
  }, "java.io.BufferedInputStream,~S,java.util.Map,~B");
  c$.getPngImageBytes = Clazz_defineMethod (c$, "getPngImageBytes", 
   function (bis) {
  try {
  if (JU.Rdr.isPngZipStream (bis)) {
  var pt_count =  Clazz_newIntArray (2, 0);
  JU.Rdr.getPngZipPointAndCount (bis, pt_count);
  if (pt_count[1] != 0) return JU.ZipTools.deActivatePngZipB (JU.Rdr.getLimitedStreamBytes (bis, pt_count[0]));
  }return JU.Rdr.getLimitedStreamBytes (bis, -1);
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.IOException)) {
  return null;
  } else {
  throw e;
  }
  }
  }, "java.io.BufferedInputStream");
  c$.deActivatePngZipB = Clazz_defineMethod (c$, "deActivatePngZipB", 
   function (bytes) {
  if (JU.Rdr.isPngZipB (bytes)) bytes[51] = 32;
  return bytes;
  }, "~A");
  });
  Clazz_declarePackage ("JU");
  Clazz_declareInterface (JU, "Checksum");
  Clazz_declarePackage ("JU");
  Clazz_load (["JU.Checksum"], "JU.CRC32", null, function () {
  c$ = Clazz_decorateAsClass (function () {
  this.crc = 0;
  this.b1 = null;
  Clazz_instantialize (this, arguments);
  }, JU, "CRC32", null, JU.Checksum);
  Clazz_prepareFields (c$, function () {
  this.b1 =  Clazz_newByteArray (1, 0);
  });
  Clazz_overrideMethod (c$, "update", 
  function (buf, index, len) {
  var c = ~this.crc;
  while (--len >= 0) c = JU.CRC32.crc_table[(c ^ buf[index++]) & 0xff] ^ (c >>> 8);
  
  this.crc = ~c;
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "reset", 
  function () {
  this.crc = 0;
  });
  Clazz_overrideMethod (c$, "resetLong", 
  function (vv) {
  this.crc = (vv & 0xffffffff);
  }, "~N");
  Clazz_overrideMethod (c$, "getValue", 
  function () {
  return this.crc & 0xffffffff;
  });
  Clazz_overrideMethod (c$, "updateByteAsInt", 
  function (b) {
  this.b1[0] = b;
  this.update (this.b1, 0, 1);
  }, "~N");
  Clazz_defineStatics (c$,
  "crc_table",  Clazz_newIntArray (-1, [0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117]));
  });
  Clazz_declarePackage ("JU");
  Clazz_load (["java.io.FilterInputStream"], "JU.InflaterInputStream", ["java.io.EOFException", "$.IOException", "java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.NullPointerException"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.inflater = null;
  this.buf = null;
  this.len = 0;
  this.closed = false;
  this.eof = false;
  this.close_in = true;
  this.myinflater = false;
  this.byte1 = null;
  this.b = null;
  Clazz_instantialize (this, arguments);
  }, JU, "InflaterInputStream", java.io.FilterInputStream);
  Clazz_prepareFields (c$, function () {
  this.byte1 =  Clazz_newByteArray (1, 0);
  this.b =  Clazz_newByteArray (512, 0);
  });
  Clazz_makeConstructor (c$, 
  function ($in, inflater, size, close_in) {
  Clazz_superConstructor (this, JU.InflaterInputStream, [$in]);
  this.inflater = inflater;
  this.buf =  Clazz_newByteArray (size, 0);
  this.close_in = close_in;
  }, "java.io.InputStream,JU.Inflater,~N,~B");
  Clazz_overrideMethod (c$, "readByteAsInt", 
  function () {
  if (this.closed) {
  throw  new java.io.IOException ("Stream closed");
  }return this.read (this.byte1, 0, 1) == -1 ? -1 : this.byte1[0] & 0xff;
  });
  Clazz_overrideMethod (c$, "read", 
  function (b, off, len) {
  return this.readInf (b, off, len);
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "readInf", 
  function (b, off, len) {
  if (this.closed) {
  throw  new java.io.IOException ("Stream closed");
  }if (b == null) {
  throw  new NullPointerException ();
  } else if (off < 0 || len < 0 || len > b.length - off) {
  throw  new IndexOutOfBoundsException ();
  } else if (len == 0) {
  return 0;
  } else if (this.eof) {
  return -1;
  }var n = 0;
  this.inflater.setOutput (b, off, len);
  while (!this.eof) {
  if (this.inflater.avail_in == 0) this.fill ();
  var err = this.inflater.inflate (0);
  n += this.inflater.next_out_index - off;
  off = this.inflater.next_out_index;
  switch (err) {
  case -3:
  throw  new java.io.IOException (this.inflater.msg);
  case 1:
  case 2:
  this.eof = true;
  if (err == 2) return -1;
  break;
  default:
  }
  if (this.inflater.avail_out == 0) break;
  }
  return n;
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "available", 
  function () {
  if (this.closed) {
  throw  new java.io.IOException ("Stream closed");
  }return (this.eof ? 0 : 1);
  });
  Clazz_overrideMethod (c$, "skip", 
  function (n) {
  if (n < 0) {
  throw  new IllegalArgumentException ("negative skip length");
  }if (this.closed) {
  throw  new java.io.IOException ("Stream closed");
  }var max = Math.min (n, 2147483647);
  var total = 0;
  while (total < max) {
  var len = max - total;
  if (len > this.b.length) {
  len = this.b.length;
  }len = this.read (this.b, 0, len);
  if (len == -1) {
  this.eof = true;
  break;
  }total += len;
  }
  return total;
  }, "~N");
  Clazz_overrideMethod (c$, "close", 
  function () {
  if (!this.closed) {
  if (this.myinflater) this.inflater.end ();
  if (this.close_in) this.$in.close ();
  this.closed = true;
  }});
  Clazz_defineMethod (c$, "fill", 
  function () {
  if (this.closed) {
  throw  new java.io.IOException ("Stream closed");
  }this.len = this.$in.read (this.buf, 0, this.buf.length);
  if (this.len == -1) {
  if (this.inflater.istate.wrap == 0 && !this.inflater.finished ()) {
  this.buf[0] = 0;
  this.len = 1;
  } else if (this.inflater.istate.was != -1) {
  throw  new java.io.IOException ("footer is not found");
  } else {
  throw  new java.io.EOFException ("Unexpected end of ZLIB input stream");
  }}this.inflater.setInput (this.buf, 0, this.len, true);
  });
  Clazz_overrideMethod (c$, "markSupported", 
  function () {
  return false;
  });
  Clazz_overrideMethod (c$, "mark", 
  function (readlimit) {
  }, "~N");
  Clazz_overrideMethod (c$, "reset", 
  function () {
  throw  new java.io.IOException ("mark/reset not supported");
  });
  Clazz_defineMethod (c$, "getTotalIn", 
  function () {
  return this.inflater.getTotalIn ();
  });
  Clazz_defineMethod (c$, "getTotalOut", 
  function () {
  return this.inflater.getTotalOut ();
  });
  Clazz_defineMethod (c$, "getAvailIn", 
  function () {
  if (this.inflater.avail_in <= 0) return null;
  var tmp =  Clazz_newByteArray (this.inflater.avail_in, 0);
  System.arraycopy (this.inflater.next_in, this.inflater.next_in_index, tmp, 0, this.inflater.avail_in);
  return tmp;
  });
  Clazz_defineMethod (c$, "readHeader", 
  function () {
  var empty = "".getBytes ();
  this.inflater.setInput (empty, 0, 0, false);
  this.inflater.setOutput (empty, 0, 0);
  var err = this.inflater.inflate (0);
  if (!this.inflater.istate.inParsingHeader ()) {
  return;
  }var b1 =  Clazz_newByteArray (1, 0);
  do {
  var i = this.$in.read (b1, 0, 1);
  if (i <= 0) throw  new java.io.IOException ("no input");
  this.inflater.setInput (b1, 0, b1.length, false);
  err = this.inflater.inflate (0);
  if (err != 0) throw  new java.io.IOException (this.inflater.msg);
  } while (this.inflater.istate.inParsingHeader ());
  });
  Clazz_defineMethod (c$, "getInflater", 
  function () {
  return this.inflater;
  });
  Clazz_defineStatics (c$,
  "DEFAULT_BUFSIZE", 512);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (null, "JU.ZStream", ["JU.Adler32"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.next_in = null;
  this.next_in_index = 0;
  this.avail_in = 0;
  this.total_in = 0;
  this.next_out = null;
  this.next_out_index = 0;
  this.avail_out = 0;
  this.total_out = 0;
  this.msg = null;
  this.dstate = null;
  this.istate = null;
  this.data_type = 0;
  this.checksum = null;
  Clazz_instantialize (this, arguments);
  }, JU, "ZStream");
  Clazz_defineMethod (c$, "setAdler32", 
  function () {
  this.checksum =  new JU.Adler32 ();
  });
  Clazz_defineMethod (c$, "inflate", 
  function (f) {
  if (this.istate == null) return -2;
  return this.istate.inflate (f);
  }, "~N");
  Clazz_defineMethod (c$, "deflate", 
  function (flush) {
  if (this.dstate == null) {
  return -2;
  }return this.dstate.deflate (flush);
  }, "~N");
  Clazz_defineMethod (c$, "flush_pending", 
  function () {
  var len = this.dstate.pending;
  if (len > this.avail_out) len = this.avail_out;
  if (len == 0) return;
  System.arraycopy (this.dstate.pending_buf, this.dstate.pending_out, this.next_out, this.next_out_index, len);
  this.next_out_index += len;
  this.dstate.pending_out += len;
  this.total_out += len;
  this.avail_out -= len;
  this.dstate.pending -= len;
  if (this.dstate.pending == 0) {
  this.dstate.pending_out = 0;
  }});
  Clazz_defineMethod (c$, "read_buf", 
  function (buf, start, size) {
  var len = this.avail_in;
  if (len > size) len = size;
  if (len == 0) return 0;
  this.avail_in -= len;
  if (this.dstate.wrap != 0) {
  this.checksum.update (this.next_in, this.next_in_index, len);
  }System.arraycopy (this.next_in, this.next_in_index, buf, start, len);
  this.next_in_index += len;
  this.total_in += len;
  return len;
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "getAdler", 
  function () {
  return this.checksum.getValue ();
  });
  Clazz_defineMethod (c$, "free", 
  function () {
  this.next_in = null;
  this.next_out = null;
  this.msg = null;
  });
  Clazz_defineMethod (c$, "setOutput", 
  function (buf, off, len) {
  this.next_out = buf;
  this.next_out_index = off;
  this.avail_out = len;
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "setInput", 
  function (buf, off, len, append) {
  if (len <= 0 && append && this.next_in != null) return;
  if (this.avail_in > 0 && append) {
  var tmp =  Clazz_newByteArray (this.avail_in + len, 0);
  System.arraycopy (this.next_in, this.next_in_index, tmp, 0, this.avail_in);
  System.arraycopy (buf, off, tmp, this.avail_in, len);
  this.next_in = tmp;
  this.next_in_index = 0;
  this.avail_in += len;
  } else {
  this.next_in = buf;
  this.next_in_index = off;
  this.avail_in = len;
  }}, "~A,~N,~N,~B");
  Clazz_defineMethod (c$, "getAvailIn", 
  function () {
  return this.avail_in;
  });
  Clazz_defineMethod (c$, "getTotalOut", 
  function () {
  return this.total_out;
  });
  Clazz_defineMethod (c$, "getTotalIn", 
  function () {
  return this.total_in;
  });
  c$.getBytes = Clazz_defineMethod (c$, "getBytes", 
  function (s) {
  {
  var x = [];
  for (var i = 0; i < s.length;i++) {
  var pt = s.charCodeAt(i);
  if (pt <= 0x7F) {
  x.push(pt);
  } else if (pt <= 0x7FF) {
  x.push(0xC0|((pt>>6)&0x1F));
  x.push(0x80|(pt&0x3F));
  } else if (pt <= 0xFFFF) {
  x.push(0xE0|((pt>>12)&0xF));
  x.push(0x80|((pt>>6)&0x3F));
  x.push(0x80|(pt&0x3F));
  } else {
  x.push(0x3F); // '?'
  }
  }
  return (Int32Array != Array ? new Int32Array(x) : x);
  }}, "~S");
  Clazz_defineStatics (c$,
  "Z_STREAM_ERROR", -2);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (["JU.ZStream"], "JU.Inflater", ["JU.Inflate"], function () {
  c$ = Clazz_declareType (JU, "Inflater", JU.ZStream);
  Clazz_defineMethod (c$, "init", 
  function (w, nowrap) {
  this.setAdler32 ();
  if (w == 0) w = 15;
  this.istate =  new JU.Inflate (this);
  this.istate.inflateInit (nowrap ? -w : w);
  return this;
  }, "~N,~B");
  Clazz_overrideMethod (c$, "inflate", 
  function (f) {
  if (this.istate == null) return -2;
  var ret = this.istate.inflate (f);
  return ret;
  }, "~N");
  Clazz_overrideMethod (c$, "end", 
  function () {
  if (this.istate == null) return -2;
  var ret = this.istate.inflateEnd ();
  return ret;
  });
  Clazz_defineMethod (c$, "sync", 
  function () {
  if (this.istate == null) return -2;
  return this.istate.inflateSync ();
  });
  Clazz_defineMethod (c$, "syncPoint", 
  function () {
  if (this.istate == null) return -2;
  return this.istate.inflateSyncPoint ();
  });
  Clazz_defineMethod (c$, "setDictionary", 
  function (dictionary, dictLength) {
  if (this.istate == null) return -2;
  return this.istate.inflateSetDictionary (dictionary, dictLength);
  }, "~A,~N");
  Clazz_overrideMethod (c$, "finished", 
  function () {
  return this.istate.mode == 12;
  });
  Clazz_defineMethod (c$, "reset", 
  function () {
  this.avail_in = 0;
  if (this.istate != null) this.istate.reset ();
  });
  Clazz_defineStatics (c$,
  "MAX_WBITS", 15,
  "DEF_WBITS", 15,
  "$Z_STREAM_ERROR", -2);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (["JU.Checksum"], "JU.Adler32", null, function () {
  c$ = Clazz_decorateAsClass (function () {
  this.s1 = 1;
  this.s2 = 0;
  this.b1 = null;
  Clazz_instantialize (this, arguments);
  }, JU, "Adler32", null, JU.Checksum);
  Clazz_prepareFields (c$, function () {
  this.b1 =  Clazz_newByteArray (1, 0);
  });
  Clazz_overrideMethod (c$, "resetLong", 
  function (init) {
  this.s1 = init & 0xffff;
  this.s2 = (init >> 16) & 0xffff;
  }, "~N");
  Clazz_overrideMethod (c$, "reset", 
  function () {
  this.s1 = 1;
  this.s2 = 0;
  });
  Clazz_overrideMethod (c$, "getValue", 
  function () {
  return ((this.s2 << 16) | this.s1);
  });
  Clazz_overrideMethod (c$, "update", 
  function (buf, index, len) {
  if (len == 1) {
  this.s1 += buf[index++] & 0xff;
  this.s2 += this.s1;
  this.s1 %= 65521;
  this.s2 %= 65521;
  return;
  }var len1 = Clazz_doubleToInt (len / 5552);
  var len2 = len % 5552;
  while (len1-- > 0) {
  var k = 5552;
  len -= k;
  while (k-- > 0) {
  this.s1 += buf[index++] & 0xff;
  this.s2 += this.s1;
  }
  this.s1 %= 65521;
  this.s2 %= 65521;
  }
  var k = len2;
  len -= k;
  while (k-- > 0) {
  this.s1 += buf[index++] & 0xff;
  this.s2 += this.s1;
  }
  this.s1 %= 65521;
  this.s2 %= 65521;
  }, "~A,~N,~N");
  Clazz_overrideMethod (c$, "updateByteAsInt", 
  function (b) {
  this.b1[0] = b;
  this.update (this.b1, 0, 1);
  }, "~N");
  Clazz_defineStatics (c$,
  "BASE", 65521,
  "NMAX", 5552);
  });
  Clazz_declarePackage ("JU");
  c$ = Clazz_decorateAsClass (function () {
  this.dyn_tree = null;
  this.max_code = 0;
  this.stat_desc = null;
  Clazz_instantialize (this, arguments);
  }, JU, "Tree");
  c$.d_code = Clazz_defineMethod (c$, "d_code", 
  function (dist) {
  return ((dist) < 256 ? JU.Tree._dist_code[dist] : JU.Tree._dist_code[256 + ((dist) >>> 7)]);
  }, "~N");
  Clazz_defineMethod (c$, "gen_bitlen", 
  function (s) {
  var tree = this.dyn_tree;
  var stree = this.stat_desc.static_tree;
  var extra = this.stat_desc.extra_bits;
  var base = this.stat_desc.extra_base;
  var max_length = this.stat_desc.max_length;
  var h;
  var n;
  var m;
  var bits;
  var xbits;
  var f;
  var overflow = 0;
  for (bits = 0; bits <= 15; bits++) s.bl_count[bits] = 0;
  
  tree[s.heap[s.heap_max] * 2 + 1] = 0;
  for (h = s.heap_max + 1; h < 573; h++) {
  n = s.heap[h];
  bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
  if (bits > max_length) {
  bits = max_length;
  overflow++;
  }tree[n * 2 + 1] = bits;
  if (n > this.max_code) continue;
  s.bl_count[bits]++;
  xbits = 0;
  if (n >= base) xbits = extra[n - base];
  f = tree[n * 2];
  s.opt_len += f * (bits + xbits);
  if (stree != null) s.static_len += f * (stree[n * 2 + 1] + xbits);
  }
  if (overflow == 0) return;
  do {
  bits = max_length - 1;
  while (s.bl_count[bits] == 0) bits--;
  
  s.bl_count[bits]--;
  s.bl_count[bits + 1] += 2;
  s.bl_count[max_length]--;
  overflow -= 2;
  } while (overflow > 0);
  for (bits = max_length; bits != 0; bits--) {
  n = s.bl_count[bits];
  while (n != 0) {
  m = s.heap[--h];
  if (m > this.max_code) continue;
  if (tree[m * 2 + 1] != bits) {
  s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];
  tree[m * 2 + 1] = bits;
  }n--;
  }
  }
  }, "JU.Deflate");
  Clazz_defineMethod (c$, "build_tree", 
  function (s) {
  var tree = this.dyn_tree;
  var stree = this.stat_desc.static_tree;
  var elems = this.stat_desc.elems;
  var n;
  var m;
  var max_code = -1;
  var node;
  s.heap_len = 0;
  s.heap_max = 573;
  for (n = 0; n < elems; n++) {
  if (tree[n * 2] != 0) {
  s.heap[++s.heap_len] = max_code = n;
  s.depth[n] = 0;
  } else {
  tree[n * 2 + 1] = 0;
  }}
  while (s.heap_len < 2) {
  node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
  tree[node * 2] = 1;
  s.depth[node] = 0;
  s.opt_len--;
  if (stree != null) s.static_len -= stree[node * 2 + 1];
  }
  this.max_code = max_code;
  for (n = Clazz_doubleToInt (s.heap_len / 2); n >= 1; n--) s.pqdownheap (tree, n);
  
  node = elems;
  do {
  n = s.heap[1];
  s.heap[1] = s.heap[s.heap_len--];
  s.pqdownheap (tree, 1);
  m = s.heap[1];
  s.heap[--s.heap_max] = n;
  s.heap[--s.heap_max] = m;
  tree[node * 2] = (tree[n * 2] + tree[m * 2]);
  s.depth[node] = (Math.max (s.depth[n], s.depth[m]) + 1);
  tree[n * 2 + 1] = tree[m * 2 + 1] = node;
  s.heap[1] = node++;
  s.pqdownheap (tree, 1);
  } while (s.heap_len >= 2);
  s.heap[--s.heap_max] = s.heap[1];
  this.gen_bitlen (s);
  JU.Tree.gen_codes (tree, max_code, s.bl_count);
  }, "JU.Deflate");
  c$.gen_codes = Clazz_defineMethod (c$, "gen_codes", 
  function (tree, max_code, bl_count) {
  var code = 0;
  var bits;
  var n;
  JU.Tree.next_code[0] = 0;
  for (bits = 1; bits <= 15; bits++) {
  JU.Tree.next_code[bits] = code = ((code + bl_count[bits - 1]) << 1);
  }
  for (n = 0; n <= max_code; n++) {
  var len = tree[n * 2 + 1];
  if (len == 0) continue;
  tree[n * 2] = (JU.Tree.bi_reverse (JU.Tree.next_code[len]++, len));
  }
  }, "~A,~N,~A");
  c$.bi_reverse = Clazz_defineMethod (c$, "bi_reverse", 
  function (code, len) {
  var res = 0;
  do {
  res |= code & 1;
  code >>>= 1;
  res <<= 1;
  } while (--len > 0);
  return res >>> 1;
  }, "~N,~N");
  Clazz_defineStatics (c$,
  "MAX_BITS", 15,
  "LITERALS", 256,
  "LENGTH_CODES", 29,
  "L_CODES", (286),
  "HEAP_SIZE", (573),
  "MAX_BL_BITS", 7,
  "END_BLOCK", 256,
  "REP_3_6", 16,
  "REPZ_3_10", 17,
  "REPZ_11_138", 18,
  "extra_lbits",  Clazz_newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]),
  "extra_dbits",  Clazz_newIntArray (-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]),
  "extra_blbits",  Clazz_newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]),
  "bl_order",  Clazz_newByteArray (-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
  "Buf_size", 16,
  "DIST_CODE_LEN", 512,
  "_dist_code",  Clazz_newByteArray (-1, [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29]),
  "_length_code",  Clazz_newByteArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]),
  "base_length",  Clazz_newIntArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0]),
  "base_dist",  Clazz_newIntArray (-1, [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576]),
  "next_code",  Clazz_newShortArray (16, 0));
  Clazz_declarePackage ("JU");
  Clazz_load (["JU.Tree"], "JU.StaticTree", null, function () {
  c$ = Clazz_decorateAsClass (function () {
  this.static_tree = null;
  this.extra_bits = null;
  this.extra_base = 0;
  this.elems = 0;
  this.max_length = 0;
  Clazz_instantialize (this, arguments);
  }, JU, "StaticTree");
  Clazz_makeConstructor (c$, 
   function (static_tree, extra_bits, extra_base, elems, max_length) {
  this.static_tree = static_tree;
  this.extra_bits = extra_bits;
  this.extra_base = extra_base;
  this.elems = elems;
  this.max_length = max_length;
  }, "~A,~A,~N,~N,~N");
  Clazz_defineStatics (c$,
  "MAX_BITS", 15,
  "BL_CODES", 19,
  "D_CODES", 30,
  "LITERALS", 256,
  "LENGTH_CODES", 29,
  "L_CODES", (286),
  "MAX_BL_BITS", 7,
  "static_ltree",  Clazz_newShortArray (-1, [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8]),
  "static_dtree",  Clazz_newShortArray (-1, [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5]));
  c$.static_l_desc = c$.prototype.static_l_desc =  new JU.StaticTree (JU.StaticTree.static_ltree, JU.Tree.extra_lbits, 257, 286, 15);
  c$.static_d_desc = c$.prototype.static_d_desc =  new JU.StaticTree (JU.StaticTree.static_dtree, JU.Tree.extra_dbits, 0, 30, 15);
  c$.static_bl_desc = c$.prototype.static_bl_desc =  new JU.StaticTree (null, JU.Tree.extra_blbits, 0, 19, 7);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (null, "JU.GZIPHeader", ["JU.ZStream", "java.lang.IllegalArgumentException", "$.InternalError"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.text = false;
  this.fhcrc = false;
  this.time = 0;
  this.xflags = 0;
  this.os = 255;
  this.extra = null;
  this.name = null;
  this.comment = null;
  this.hcrc = 0;
  this.crc = 0;
  this.done = false;
  this.mtime = 0;
  Clazz_instantialize (this, arguments);
  }, JU, "GZIPHeader", null, Cloneable);
  Clazz_defineMethod (c$, "setModifiedTime", 
  function (mtime) {
  this.mtime = mtime;
  }, "~N");
  Clazz_defineMethod (c$, "getModifiedTime", 
  function () {
  return this.mtime;
  });
  Clazz_defineMethod (c$, "setOS", 
  function (os) {
  if ((0 <= os && os <= 13) || os == 255) this.os = os;
   else throw  new IllegalArgumentException ("os: " + os);
  }, "~N");
  Clazz_defineMethod (c$, "getOS", 
  function () {
  return this.os;
  });
  Clazz_defineMethod (c$, "setName", 
  function (name) {
  this.name = JU.ZStream.getBytes (name);
  }, "~S");
  Clazz_defineMethod (c$, "getName", 
  function () {
  if (this.name == null) return "";
  try {
  return  String.instantialize (this.name, "ISO-8859-1");
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
  throw  new InternalError (e.toString ());
  } else {
  throw e;
  }
  }
  });
  Clazz_defineMethod (c$, "setComment", 
  function (comment) {
  this.comment = JU.ZStream.getBytes (comment);
  }, "~S");
  Clazz_defineMethod (c$, "getComment", 
  function () {
  if (this.comment == null) return "";
  try {
  return  String.instantialize (this.comment, "ISO-8859-1");
  } catch (e) {
  if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
  throw  new InternalError (e.toString ());
  } else {
  throw e;
  }
  }
  });
  Clazz_defineMethod (c$, "setCRC", 
  function (crc) {
  this.crc = crc;
  }, "~N");
  Clazz_defineMethod (c$, "getCRC", 
  function () {
  return this.crc;
  });
  Clazz_defineMethod (c$, "put", 
  function (d) {
  var flag = 0;
  if (this.text) {
  flag |= 1;
  }if (this.fhcrc) {
  flag |= 2;
  }if (this.extra != null) {
  flag |= 4;
  }if (this.name != null) {
  flag |= 8;
  }if (this.comment != null) {
  flag |= 16;
  }var xfl = 0;
  if (d.level == 1) {
  xfl |= 4;
  } else if (d.level == 9) {
  xfl |= 2;
  }d.put_short (0x8b1f);
  d.put_byteB (8);
  d.put_byteB (flag);
  d.put_byteB (this.mtime);
  d.put_byteB ((this.mtime >> 8));
  d.put_byteB ((this.mtime >> 16));
  d.put_byteB ((this.mtime >> 24));
  d.put_byteB (xfl);
  d.put_byteB (this.os);
  if (this.extra != null) {
  d.put_byteB (this.extra.length);
  d.put_byteB ((this.extra.length >> 8));
  d.put_byte (this.extra, 0, this.extra.length);
  }if (this.name != null) {
  d.put_byte (this.name, 0, this.name.length);
  d.put_byteB (0);
  }if (this.comment != null) {
  d.put_byte (this.comment, 0, this.comment.length);
  d.put_byteB (0);
  }}, "JU.Deflate");
  Clazz_defineMethod (c$, "clone", 
  function () {
  var gheader = Clazz_superCall (this, JU.GZIPHeader, "clone", []);
  var tmp;
  if (gheader.extra != null) {
  tmp =  Clazz_newByteArray (gheader.extra.length, 0);
  System.arraycopy (gheader.extra, 0, tmp, 0, tmp.length);
  gheader.extra = tmp;
  }if (gheader.name != null) {
  tmp =  Clazz_newByteArray (gheader.name.length, 0);
  System.arraycopy (gheader.name, 0, tmp, 0, tmp.length);
  gheader.name = tmp;
  }if (gheader.comment != null) {
  tmp =  Clazz_newByteArray (gheader.comment.length, 0);
  System.arraycopy (gheader.comment, 0, tmp, 0, tmp.length);
  gheader.comment = tmp;
  }return gheader;
  });
  Clazz_defineStatics (c$,
  "OS_MSDOS", 0x00,
  "OS_AMIGA", 0x01,
  "OS_VMS", 0x02,
  "OS_UNIX", 0x03,
  "OS_ATARI", 0x05,
  "OS_OS2", 0x06,
  "OS_MACOS", 0x07,
  "OS_TOPS20", 0x0a,
  "OS_WIN32", 0x0b,
  "OS_VMCMS", 0x04,
  "OS_ZSYSTEM", 0x08,
  "OS_CPM", 0x09,
  "OS_QDOS", 0x0c,
  "OS_RISCOS", 0x0d,
  "OS_UNKNOWN", 0xff);
  });
  Clazz_declarePackage ("JU");
  Clazz_load (["java.lang.Exception"], "JU.Inflate", ["JU.Adler32", "$.CRC32", "$.GZIPHeader", "$.InfBlocks", "java.io.ByteArrayOutputStream"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.mode = 0;
  this.method = 0;
  this.was = -1;
  this.need = 0;
  this.marker = 0;
  this.wrap = 0;
  this.wbits = 0;
  this.blocks = null;
  this.z = null;
  this.flags = 0;
  this.need_bytes = -1;
  this.crcbuf = null;
  this.gheader = null;
  if (!Clazz_isClassDefined ("JU.Inflate.Return")) {
  JU.Inflate.$Inflate$Return$ ();
  }
  this.tmp_string = null;
  Clazz_instantialize (this, arguments);
  }, JU, "Inflate");
  Clazz_prepareFields (c$, function () {
  this.crcbuf =  Clazz_newByteArray (4, 0);
  });
  Clazz_defineMethod (c$, "reset", 
  function () {
  this.inflateReset ();
  });
  Clazz_defineMethod (c$, "inflateReset", 
  function () {
  if (this.z == null) return -2;
  this.z.total_in = this.z.total_out = 0;
  this.z.msg = null;
  this.mode = 14;
  this.need_bytes = -1;
  this.blocks.reset ();
  return 0;
  });
  Clazz_defineMethod (c$, "inflateEnd", 
  function () {
  if (this.blocks != null) {
  this.blocks.free ();
  }return 0;
  });
  Clazz_makeConstructor (c$, 
  function (z) {
  this.z = z;
  }, "JU.ZStream");
  Clazz_defineMethod (c$, "inflateInit", 
  function (w) {
  this.z.msg = null;
  this.blocks = null;
  this.wrap = 0;
  if (w < 0) {
  w = -w;
  } else {
  this.wrap = (w >> 4) + 1;
  if (w < 48) w &= 15;
  }if (w < 8 || w > 15) {
  this.inflateEnd ();
  return -2;
  }if (this.blocks != null && this.wbits != w) {
  this.blocks.free ();
  this.blocks = null;
  }this.wbits = w;
  this.blocks =  new JU.InfBlocks (this.z, 1 << w);
  this.inflateReset ();
  return 0;
  }, "~N");
  Clazz_defineMethod (c$, "inflate", 
  function (f) {
  var r;
  var b;
  if (this.z == null || this.z.next_in == null) {
  if (f == 4 && this.mode == 14) return 0;
  return -2;
  }f = f == 4 ? -5 : 0;
  r = -5;
  while (true) {
  switch (this.mode) {
  case 14:
  if (this.wrap == 0) {
  this.mode = 7;
  break;
  }try {
  r = this.readBytes (2, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if ((this.wrap & 2) != 0 && this.need == 0x8b1f) {
  this.z.checksum =  new JU.CRC32 ();
  this.checksum (2, this.need);
  if (this.gheader == null) this.gheader =  new JU.GZIPHeader ();
  this.mode = 23;
  break;
  }this.flags = 0;
  this.method = (this.need) & 0xff;
  b = ((this.need >> 8)) & 0xff;
  if ((this.wrap & 1) == 0 || (((this.method << 8) + b) % 31) != 0) {
  this.mode = 13;
  this.z.msg = "incorrect header check";
  break;
  }if ((this.method & 0xf) != 8) {
  this.mode = 13;
  this.z.msg = "unknown compression method";
  break;
  }if ((this.method >> 4) + 8 > this.wbits) {
  this.mode = 13;
  this.z.msg = "invalid window size";
  break;
  }this.z.checksum =  new JU.Adler32 ();
  if ((b & 32) == 0) {
  this.mode = 7;
  break;
  }this.mode = 2;
  case 2:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000;
  this.mode = 3;
  case 3:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000;
  this.mode = 4;
  case 4:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00;
  this.mode = 5;
  case 5:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += (this.z.next_in[this.z.next_in_index++] & 0xff);
  this.z.checksum.resetLong (this.need);
  this.mode = 6;
  return 2;
  case 6:
  this.mode = 13;
  this.z.msg = "need dictionary";
  this.marker = 0;
  return -2;
  case 7:
  r = this.blocks.proc (r);
  if (r == -3) {
  this.mode = 13;
  this.marker = 0;
  break;
  }if (r == 0) {
  r = f;
  }if (r != 1) {
  return r;
  }r = f;
  this.was = this.z.checksum.getValue ();
  this.blocks.reset ();
  if (this.wrap == 0) {
  this.mode = 12;
  break;
  }this.mode = 8;
  case 8:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000;
  this.mode = 9;
  case 9:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000;
  this.mode = 10;
  case 10:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00;
  this.mode = 11;
  case 11:
  if (this.z.avail_in == 0) return r;
  r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need += (this.z.next_in[this.z.next_in_index++] & 0xff);
  if (this.flags != 0) {
  this.need = ((this.need & 0xff000000) >> 24 | (this.need & 0x00ff0000) >> 8 | (this.need & 0x0000ff00) << 8 | (this.need & 0x0000ffff) << 24) & 0xffffffff;
  }if (((this.was)) != ((this.need))) {
  this.z.msg = "incorrect data check";
  } else if (this.flags != 0 && this.gheader != null) {
  this.gheader.crc = this.need;
  }this.mode = 15;
  case 15:
  if (this.wrap != 0 && this.flags != 0) {
  try {
  r = this.readBytes (4, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if (this.z.msg != null && this.z.msg.equals ("incorrect data check")) {
  this.mode = 13;
  this.marker = 5;
  break;
  }if (this.need != (this.z.total_out & 0xffffffff)) {
  this.z.msg = "incorrect length check";
  this.mode = 13;
  break;
  }this.z.msg = null;
  } else {
  if (this.z.msg != null && this.z.msg.equals ("incorrect data check")) {
  this.mode = 13;
  this.marker = 5;
  break;
  }}this.mode = 12;
  case 12:
  return 1;
  case 13:
  return -3;
  case 23:
  try {
  r = this.readBytes (2, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  this.flags = (this.need) & 0xffff;
  if ((this.flags & 0xff) != 8) {
  this.z.msg = "unknown compression method";
  this.mode = 13;
  break;
  }if ((this.flags & 0xe000) != 0) {
  this.z.msg = "unknown header flags set";
  this.mode = 13;
  break;
  }if ((this.flags & 0x0200) != 0) {
  this.checksum (2, this.need);
  }this.mode = 16;
  case 16:
  try {
  r = this.readBytes (4, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if (this.gheader != null) this.gheader.time = this.need;
  if ((this.flags & 0x0200) != 0) {
  this.checksum (4, this.need);
  }this.mode = 17;
  case 17:
  try {
  r = this.readBytes (2, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if (this.gheader != null) {
  this.gheader.xflags = (this.need) & 0xff;
  this.gheader.os = ((this.need) >> 8) & 0xff;
  }if ((this.flags & 0x0200) != 0) {
  this.checksum (2, this.need);
  }this.mode = 18;
  case 18:
  if ((this.flags & 0x0400) != 0) {
  try {
  r = this.readBytes (2, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if (this.gheader != null) {
  this.gheader.extra =  Clazz_newByteArray ((this.need) & 0xffff, 0);
  }if ((this.flags & 0x0200) != 0) {
  this.checksum (2, this.need);
  }} else if (this.gheader != null) {
  this.gheader.extra = null;
  }this.mode = 19;
  case 19:
  if ((this.flags & 0x0400) != 0) {
  try {
  r = this.readBytes (r, f);
  if (this.gheader != null) {
  var foo = this.tmp_string.toByteArray ();
  this.tmp_string = null;
  if (foo.length == this.gheader.extra.length) {
  System.arraycopy (foo, 0, this.gheader.extra, 0, foo.length);
  } else {
  this.z.msg = "bad extra field length";
  this.mode = 13;
  break;
  }}} catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  } else if (this.gheader != null) {
  this.gheader.extra = null;
  }this.mode = 20;
  case 20:
  if ((this.flags & 0x0800) != 0) {
  try {
  r = this.readString (r, f);
  if (this.gheader != null) {
  this.gheader.name = this.tmp_string.toByteArray ();
  }this.tmp_string = null;
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  } else if (this.gheader != null) {
  this.gheader.name = null;
  }this.mode = 21;
  case 21:
  if ((this.flags & 0x1000) != 0) {
  try {
  r = this.readString (r, f);
  if (this.gheader != null) {
  this.gheader.comment = this.tmp_string.toByteArray ();
  }this.tmp_string = null;
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  } else if (this.gheader != null) {
  this.gheader.comment = null;
  }this.mode = 22;
  case 22:
  if ((this.flags & 0x0200) != 0) {
  try {
  r = this.readBytes (2, r, f);
  } catch (e) {
  if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
  return e.r;
  } else {
  throw e;
  }
  }
  if (this.gheader != null) {
  this.gheader.hcrc = (this.need & 0xffff);
  }if (this.need != (this.z.checksum.getValue () & 0xffff)) {
  this.mode = 13;
  this.z.msg = "header crc mismatch";
  this.marker = 5;
  break;
  }}this.z.checksum =  new JU.CRC32 ();
  this.mode = 7;
  break;
  default:
  return -2;
  }
  }
  }, "~N");
  Clazz_defineMethod (c$, "inflateSetDictionary", 
  function (dictionary, dictLength) {
  if (this.z == null || (this.mode != 6 && this.wrap != 0)) {
  return -2;
  }var index = 0;
  var length = dictLength;
  if (this.mode == 6) {
  var adler_need = this.z.checksum.getValue ();
  this.z.checksum.reset ();
  this.z.checksum.update (dictionary, 0, dictLength);
  if (this.z.checksum.getValue () != adler_need) {
  return -3;
  }}this.z.checksum.reset ();
  if (length >= (1 << this.wbits)) {
  length = (1 << this.wbits) - 1;
  index = dictLength - length;
  }this.blocks.set_dictionary (dictionary, index, length);
  this.mode = 7;
  return 0;
  }, "~A,~N");
  Clazz_defineMethod (c$, "inflateSync", 
  function () {
  var n;
  var p;
  var m;
  var r;
  var w;
  if (this.z == null) return -2;
  if (this.mode != 13) {
  this.mode = 13;
  this.marker = 0;
  }if ((n = this.z.avail_in) == 0) return -5;
  p = this.z.next_in_index;
  m = this.marker;
  while (n != 0 && m < 4) {
  if (this.z.next_in[p] == JU.Inflate.mark[m]) {
  m++;
  } else if (this.z.next_in[p] != 0) {
  m = 0;
  } else {
  m = 4 - m;
  }p++;
  n--;
  }
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.z.avail_in = n;
  this.marker = m;
  if (m != 4) {
  return -3;
  }r = this.z.total_in;
  w = this.z.total_out;
  this.inflateReset ();
  this.z.total_in = r;
  this.z.total_out = w;
  this.mode = 7;
  return 0;
  });
  Clazz_defineMethod (c$, "inflateSyncPoint", 
  function () {
  if (this.z == null || this.blocks == null) return -2;
  return this.blocks.sync_point ();
  });
  Clazz_defineMethod (c$, "readBytes", 
   function (n, r, f) {
  if (this.need_bytes == -1) {
  this.need_bytes = n;
  this.need = 0;
  }while (this.need_bytes > 0) {
  if (this.z.avail_in == 0) {
  throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
  }r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.need = this.need | ((this.z.next_in[this.z.next_in_index++] & 0xff) << ((n - this.need_bytes) * 8));
  this.need_bytes--;
  }
  if (n == 2) {
  this.need &= 0xffff;
  } else if (n == 4) {
  this.need &= 0xffffffff;
  }this.need_bytes = -1;
  return r;
  }, "~N,~N,~N");
  Clazz_defineMethod (c$, "readString", 
   function (r, f) {
  if (this.tmp_string == null) {
  this.tmp_string =  new java.io.ByteArrayOutputStream ();
  }var b = 0;
  do {
  if (this.z.avail_in == 0) {
  throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
  }r = f;
  this.z.avail_in--;
  this.z.total_in++;
  b = this.z.next_in[this.z.next_in_index];
  if (b != 0) this.tmp_string.write (this.z.next_in, this.z.next_in_index, 1);
  this.z.checksum.update (this.z.next_in, this.z.next_in_index, 1);
  this.z.next_in_index++;
  } while (b != 0);
  return r;
  }, "~N,~N");
  Clazz_defineMethod (c$, "readBytes", 
   function (r, f) {
  if (this.tmp_string == null) {
  this.tmp_string =  new java.io.ByteArrayOutputStream ();
  }while (this.need > 0) {
  if (this.z.avail_in == 0) {
  throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
  }r = f;
  this.z.avail_in--;
  this.z.total_in++;
  this.tmp_string.write (this.z.next_in, this.z.next_in_index, 1);
  this.z.checksum.update (this.z.next_in, this.z.next_in_index, 1);
  this.z.next_in_index++;
  this.need--;
  }
  return r;
  }, "~N,~N");
  Clazz_defineMethod (c$, "checksum", 
   function (n, v) {
  for (var i = 0; i < n; i++) {
  this.crcbuf[i] = (v & 0xff);
  v >>= 8;
  }
  this.z.checksum.update (this.crcbuf, 0, n);
  }, "~N,~N");
  Clazz_defineMethod (c$, "getGZIPHeader", 
  function () {
  return this.gheader;
  });
  Clazz_defineMethod (c$, "inParsingHeader", 
  function () {
  switch (this.mode) {
  case 14:
  case 2:
  case 3:
  case 4:
  case 5:
  case 23:
  case 16:
  case 17:
  case 18:
  case 19:
  case 20:
  case 21:
  case 22:
  return true;
  default:
  return false;
  }
  });
  c$.$Inflate$Return$ = function () {
  Clazz_pu$h(self.c$);
  c$ = Clazz_decorateAsClass (function () {
  Clazz_prepareCallback (this, arguments);
  this.r = 0;
  Clazz_instantialize (this, arguments);
  }, JU.Inflate, "Return", Exception);
  Clazz_makeConstructor (c$, 
  function (a) {
  Clazz_superConstructor (this, JU.Inflate.Return, []);
  this.r = a;
  }, "~N");
  c$ = Clazz_p0p ();
  };
  Clazz_defineStatics (c$,
  "PRESET_DICT", 0x20,
  "Z_NO_FLUSH", 0,
  "Z_PARTIAL_FLUSH", 1,
  "Z_SYNC_FLUSH", 2,
  "Z_FULL_FLUSH", 3,
  "Z_FINISH", 4,
  "Z_DEFLATED", 8,
  "Z_OK", 0,
  "Z_STREAM_END", 1,
  "Z_NEED_DICT", 2,
  "Z_STREAM_ERROR", -2,
  "Z_DATA_ERROR", -3,
  "Z_BUF_ERROR", -5,
  "DICT4", 2,
  "DICT3", 3,
  "DICT2", 4,
  "DICT1", 5,
  "DICT0", 6,
  "BLOCKS", 7,
  "CHECK4", 8,
  "CHECK3", 9,
  "CHECK2", 10,
  "CHECK1", 11,
  "DONE", 12,
  "BAD", 13,
  "HEAD", 14,
  "LENGTH", 15,
  "TIME", 16,
  "OS", 17,
  "EXLEN", 18,
  "EXTRA", 19,
  "NAME", 20,
  "COMMENT", 21,
  "HCRC", 22,
  "FLAGS", 23,
  "mark",  Clazz_newByteArray (-1, [0, 0, 0xff, 0xff]));
  });
  Clazz_declarePackage ("JU");
  c$ = Clazz_decorateAsClass (function () {
  this.hn = null;
  this.v = null;
  this.c = null;
  this.r = null;
  this.u = null;
  this.x = null;
  Clazz_instantialize (this, arguments);
  }, JU, "InfTree");
  Clazz_defineMethod (c$, "huft_build", 
   function (b, bindex, n, s, d, e, t, m, hp, hn, v) {
  var a;
  var f;
  var g;
  var h;
  var i;
  var j;
  var k;
  var l;
  var mask;
  var p;
  var q;
  var w;
  var xp;
  var y;
  var z;
  p = 0;
  i = n;
  do {
  this.c[b[bindex + p]]++;
  p++;
  i--;
  } while (i != 0);
  if (this.c[0] == n) {
  t[0] = -1;
  m[0] = 0;
  return 0;
  }l = m[0];
  for (j = 1; j <= 15; j++) if (this.c[j] != 0) break;
  
  k = j;
  if (l < j) {
  l = j;
  }for (i = 15; i != 0; i--) {
  if (this.c[i] != 0) break;
  }
  g = i;
  if (l > i) {
  l = i;
  }m[0] = l;
  for (y = 1 << j; j < i; j++, y <<= 1) {
  if ((y -= this.c[j]) < 0) {
  return -3;
  }}
  if ((y -= this.c[i]) < 0) {
  return -3;
  }this.c[i] += y;
  this.x[1] = j = 0;
  p = 1;
  xp = 2;
  while (--i != 0) {
  this.x[xp] = (j += this.c[p]);
  xp++;
  p++;
  }
  i = 0;
  p = 0;
  do {
  if ((j = b[bindex + p]) != 0) {
  v[this.x[j]++] = i;
  }p++;
  } while (++i < n);
  n = this.x[g];
  this.x[0] = i = 0;
  p = 0;
  h = -1;
  w = -l;
  this.u[0] = 0;
  q = 0;
  z = 0;
  for (; k <= g; k++) {
  a = this.c[k];
  while (a-- != 0) {
  while (k > w + l) {
  h++;
  w += l;
  z = g - w;
  z = (z > l) ? l : z;
  if ((f = 1 << (j = k - w)) > a + 1) {
  f -= a + 1;
  xp = k;
  if (j < z) {
  while (++j < z) {
  if ((f <<= 1) <= this.c[++xp]) break;
  f -= this.c[xp];
  }
  }}z = 1 << j;
  if (hn[0] + z > 1440) {
  return -3;
  }this.u[h] = q = hn[0];
  hn[0] += z;
  if (h != 0) {
  this.x[h] = i;
  this.r[0] = j;
  this.r[1] = l;
  j = i >>> (w - l);
  this.r[2] = (q - this.u[h - 1] - j);
  System.arraycopy (this.r, 0, hp, (this.u[h - 1] + j) * 3, 3);
  } else {
  t[0] = q;
  }}
  this.r[1] = (k - w);
  if (p >= n) {
  this.r[0] = 192;
  } else if (v[p] < s) {
  this.r[0] = (v[p] < 256 ? 0 : 96);
  this.r[2] = v[p++];
  } else {
  this.r[0] = (e[v[p] - s] + 16 + 64);
  this.r[2] = d[v[p++] - s];
  }f = 1 << (k - w);
  for (j = i >>> w; j < z; j += f) {
  System.arraycopy (this.r, 0, hp, (q + j) * 3, 3);
  }
  for (j = 1 << (k - 1); (i & j) != 0; j >>>= 1) {
  i ^= j;
  }
  i ^= j;
  mask = (1 << w) - 1;
  while ((i & mask) != this.x[h]) {
  h--;
  w -= l;
  mask = (1 << w) - 1;
  }
  }
  }
  return y != 0 && g != 1 ? -5 : 0;
  }, "~A,~N,~N,~N,~A,~A,~A,~A,~A,~A,~A");
  Clazz_defineMethod (c$, "inflate_trees_bits", 
  function (c, bb, tb, hp, z) {
  var result;
  this.initWorkArea (19);
  this.hn[0] = 0;
  result = this.huft_build (c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v);
  if (result == -3) {
  z.msg = "oversubscribed dynamic bit lengths tree";
  } else if (result == -5 || bb[0] == 0) {
  z.msg = "incomplete dynamic bit lengths tree";
  result = -3;
  }return result;
  }, "~A,~A,~A,~A,JU.ZStream");
  Clazz_defineMethod (c$, "inflate_trees_dynamic", 
  function (nl, nd, c, bl, bd, tl, td, hp, z) {
  var result;
  this.initWorkArea (288);
  this.hn[0] = 0;
  result = this.huft_build (c, 0, nl, 257, JU.InfTree.cplens, JU.InfTree.cplext, tl, bl, hp, this.hn, this.v);
  if (result != 0 || bl[0] == 0) {
  if (result == -3) {
  z.msg = "oversubscribed literal/length tree";
  } else if (result != -4) {
  z.msg = "incomplete literal/length tree";
  result = -3;
  }return result;
  }this.initWorkArea (288);
  result = this.huft_build (c, nl, nd, 0, JU.InfTree.cpdist, JU.InfTree.cpdext, td, bd, hp, this.hn, this.v);
  if (result != 0 || (bd[0] == 0 && nl > 257)) {
  if (result == -3) {
  z.msg = "oversubscribed distance tree";
  } else if (result == -5) {
  z.msg = "incomplete distance tree";
  result = -3;
  } else if (result != -4) {
  z.msg = "empty distance tree with lengths";
  result = -3;
  }return result;
  }return 0;
  }, "~N,~N,~A,~A,~A,~A,~A,~A,JU.ZStream");
  c$.inflate_trees_fixed = Clazz_defineMethod (c$, "inflate_trees_fixed", 
  function (bl, bd, tl, td, z) {
  bl[0] = 9;
  bd[0] = 5;
  tl[0] = JU.InfTree.fixed_tl;
  td[0] = JU.InfTree.fixed_td;
  return 0;
  }, "~A,~A,~A,~A,JU.ZStream");
  Clazz_defineMethod (c$, "initWorkArea", 
   function (vsize) {
  if (this.hn == null) {
  this.hn =  Clazz_newIntArray (1, 0);
  this.v =  Clazz_newIntArray (vsize, 0);
  this.c =  Clazz_newIntArray (16, 0);
  this.r =  Clazz_newIntArray (3, 0);
  this.u =  Clazz_newIntArray (15, 0);
  this.x =  Clazz_newIntArray (16, 0);
  }if (this.v.length < vsize) {
  this.v =  Clazz_newIntArray (vsize, 0);
  }for (var i = 0; i < vsize; i++) {
  this.v[i] = 0;
  }
  for (var i = 0; i < 16; i++) {
  this.c[i] = 0;
  }
  for (var i = 0; i < 3; i++) {
  this.r[i] = 0;
  }
  System.arraycopy (this.c, 0, this.u, 0, 15);
  System.arraycopy (this.c, 0, this.x, 0, 16);
  }, "~N");
  Clazz_defineStatics (c$,
  "MANY", 1440,
  "Z_OK", 0,
  "Z_DATA_ERROR", -3,
  "Z_MEM_ERROR", -4,
  "Z_BUF_ERROR", -5,
  "fixed_bl", 9,
  "fixed_bd", 5,
  "fixed_tl",  Clazz_newIntArray (-1, [96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255]),
  "fixed_td",  Clazz_newIntArray (-1, [80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577]),
  "cplens",  Clazz_newIntArray (-1, [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]),
  "cplext",  Clazz_newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112]),
  "cpdist",  Clazz_newIntArray (-1, [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]),
  "cpdext",  Clazz_newIntArray (-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]),
  "BMAX", 15);
  Clazz_declarePackage ("JU");
  Clazz_load (["JU.InfTree"], "JU.InfBlocks", ["JU.InfCodes"], function () {
  c$ = Clazz_decorateAsClass (function () {
  this.mode = 0;
  this.left = 0;
  this.table = 0;
  this.index = 0;
  this.blens = null;
  this.bb = null;
  this.tb = null;
  this.bl = null;
  this.bd = null;
  this.tl = null;
  this.td = null;
  this.tli = null;
  this.tdi = null;
  this.codes = null;
  this.last = 0;
  this.bitk = 0;
  this.bitb = 0;
  this.hufts = null;
  this.window = null;
  this.end = 0;
  this.read = 0;
  this.write = 0;
  this.check = false;
  this.inftree = null;
  this.z = null;
  Clazz_instantialize (this, arguments);
  }, JU, "InfBlocks");
  Clazz_prepareFields (c$, function () {
  this.bb =  Clazz_newIntArray (1, 0);
  this.tb =  Clazz_newIntArray (1, 0);
  this.bl =  Clazz_newIntArray (1, 0);
  this.bd =  Clazz_newIntArray (1, 0);
  this.tli =  Clazz_newIntArray (1, 0);
  this.tdi =  Clazz_newIntArray (1, 0);
  this.inftree =  new JU.InfTree ();
  });
  Clazz_makeConstructor (c$, 
  function (z, w) {
  this.z = z;
  this.codes =  new JU.InfCodes (this.z, this);
  this.hufts =  Clazz_newIntArray (4320, 0);
  this.window =  Clazz_newByteArray (w, 0);
  this.end = w;
  this.check = (z.istate.wrap == 0) ? false : true;
  this.mode = 0;
  {
  this.tl = Clazz_newArray(1, null);
  this.td = Clazz_newArray(1, null);
  }this.reset ();
  }, "JU.ZStream,~N");
  Clazz_defineMethod (c$, "reset", 
  function () {
  if (this.mode == 6) {
  this.codes.free (this.z);
  }this.mode = 0;
  this.bitk = 0;
  this.bitb = 0;
  this.read = this.write = 0;
  if (this.check) {
  this.z.checksum.reset ();
  }});
  Clazz_defineMethod (c$, "proc", 
  function (r) {
  var t;
  var b;
  var k;
  var p;
  var n;
  var q;
  var m;
  {
  p = this.z.next_in_index;
  n = this.z.avail_in;
  b = this.bitb;
  k = this.bitk;
  }{
  q = this.write;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  }while (true) {
  switch (this.mode) {
  case 0:
  while (k < (3)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  t = (b & 7);
  this.last = t & 1;
  switch (t >>> 1) {
  case 0:
  {
  b >>>= (3);
  k -= (3);
  }t = k & 7;
  {
  b >>>= (t);
  k -= (t);
  }this.mode = 1;
  break;
  case 1:
  JU.InfTree.inflate_trees_fixed (this.bl, this.bd, this.tl, this.td, this.z);
  this.codes.init (this.bl[0], this.bd[0], this.tl[0], 0, this.td[0], 0);
  {
  b >>>= (3);
  k -= (3);
  }this.mode = 6;
  break;
  case 2:
  {
  b >>>= (3);
  k -= (3);
  }this.mode = 3;
  break;
  case 3:
  {
  b >>>= (3);
  k -= (3);
  }this.mode = 9;
  this.z.msg = "invalid block type";
  r = -3;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }
  break;
  case 1:
  while (k < (32)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) {
  this.mode = 9;
  this.z.msg = "invalid stored block lengths";
  r = -3;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }this.left = (b & 0xffff);
  b = k = 0;
  this.mode = this.left != 0 ? 2 : (this.last != 0 ? 7 : 0);
  break;
  case 2:
  if (n == 0) {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }if (m == 0) {
  if (q == this.end && this.read != 0) {
  q = 0;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  }if (m == 0) {
  this.write = q;
  r = this.inflate_flush (r);
  q = this.write;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  if (q == this.end && this.read != 0) {
  q = 0;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  }if (m == 0) {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }}}r = 0;
  t = this.left;
  if (t > n) t = n;
  if (t > m) t = m;
  System.arraycopy (this.z.next_in, p, this.window, q, t);
  p += t;
  n -= t;
  q += t;
  m -= t;
  if ((this.left -= t) != 0) break;
  this.mode = this.last != 0 ? 7 : 0;
  break;
  case 3:
  while (k < (14)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  this.table = t = (b & 0x3fff);
  if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) {
  this.mode = 9;
  this.z.msg = "too many length or distance symbols";
  r = -3;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
  if (this.blens == null || this.blens.length < t) {
  this.blens =  Clazz_newIntArray (t, 0);
  } else {
  for (var i = 0; i < t; i++) {
  this.blens[i] = 0;
  }
  }{
  b >>>= (14);
  k -= (14);
  }this.index = 0;
  this.mode = 4;
  case 4:
  while (this.index < 4 + (this.table >>> 10)) {
  while (k < (3)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  this.blens[JU.InfBlocks.border[this.index++]] = b & 7;
  {
  b >>>= (3);
  k -= (3);
  }}
  while (this.index < 19) {
  this.blens[JU.InfBlocks.border[this.index++]] = 0;
  }
  this.bb[0] = 7;
  t = this.inftree.inflate_trees_bits (this.blens, this.bb, this.tb, this.hufts, this.z);
  if (t != 0) {
  r = t;
  if (r == -3) {
  this.blens = null;
  this.mode = 9;
  }this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }this.index = 0;
  this.mode = 5;
  case 5:
  while (true) {
  t = this.table;
  if (!(this.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) {
  break;
  }var i;
  var j;
  var c;
  t = this.bb[0];
  while (k < (t)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  t = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 1];
  c = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 2];
  if (c < 16) {
  b >>>= (t);
  k -= (t);
  this.blens[this.index++] = c;
  } else {
  i = c == 18 ? 7 : c - 14;
  j = c == 18 ? 11 : 3;
  while (k < (t + i)) {
  if (n != 0) {
  r = 0;
  } else {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  b >>>= (t);
  k -= (t);
  j += (b & JU.InfBlocks.inflate_mask[i]);
  b >>>= (i);
  k -= (i);
  i = this.index;
  t = this.table;
  if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) {
  this.blens = null;
  this.mode = 9;
  this.z.msg = "invalid bit length repeat";
  r = -3;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }c = c == 16 ? this.blens[i - 1] : 0;
  do {
  this.blens[i++] = c;
  } while (--j != 0);
  this.index = i;
  }}
  this.tb[0] = -1;
  {
  this.bl[0] = 9;
  this.bd[0] = 6;
  t = this.table;
  t = this.inftree.inflate_trees_dynamic (257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), this.blens, this.bl, this.bd, this.tli, this.tdi, this.hufts, this.z);
  if (t != 0) {
  if (t == -3) {
  this.blens = null;
  this.mode = 9;
  }r = t;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }this.codes.init (this.bl[0], this.bd[0], this.hufts, this.tli[0], this.hufts, this.tdi[0]);
  }this.mode = 6;
  case 6:
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  if ((r = this.codes.proc (r)) != 1) {
  return this.inflate_flush (r);
  }r = 0;
  this.codes.free (this.z);
  p = this.z.next_in_index;
  n = this.z.avail_in;
  b = this.bitb;
  k = this.bitk;
  q = this.write;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  if (this.last == 0) {
  this.mode = 0;
  break;
  }this.mode = 7;
  case 7:
  this.write = q;
  r = this.inflate_flush (r);
  q = this.write;
  m = (q < this.read ? this.read - q - 1 : this.end - q);
  if (this.read != this.write) {
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }this.mode = 8;
  case 8:
  r = 1;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  case 9:
  r = -3;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  default:
  r = -2;
  this.bitb = b;
  this.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.write = q;
  return this.inflate_flush (r);
  }
  }
  }, "~N");
  Clazz_defineMethod (c$, "free", 
  function () {
  this.reset ();
  this.window = null;
  this.hufts = null;
  });
  Clazz_defineMethod (c$, "set_dictionary", 
  function (d, start, n) {
  System.arraycopy (d, start, this.window, 0, n);
  this.read = this.write = n;
  }, "~A,~N,~N");
  Clazz_defineMethod (c$, "sync_point", 
  function () {
  return this.mode == 1 ? 1 : 0;
  });
  Clazz_defineMethod (c$, "inflate_flush", 
  function (r) {
  var n;
  var p;
  var q;
  p = this.z.next_out_index;
  q = this.read;
  n = ((q <= this.write ? this.write : this.end) - q);
  if (n > this.z.avail_out) n = this.z.avail_out;
  if (n != 0 && r == -5) r = 0;
  this.z.avail_out -= n;
  this.z.total_out += n;
  if (this.check && n > 0) {
  this.z.checksum.update (this.window, q, n);
  }System.arraycopy (this.window, q, this.z.next_out, p, n);
  p += n;
  q += n;
  if (q == this.end) {
  q = 0;
  if (this.write == this.end) this.write = 0;
  n = this.write - q;
  if (n > this.z.avail_out) n = this.z.avail_out;
  if (n != 0 && r == -5) r = 0;
  this.z.avail_out -= n;
  this.z.total_out += n;
  if (this.check && n > 0) {
  this.z.checksum.update (this.window, q, n);
  }System.arraycopy (this.window, q, this.z.next_out, p, n);
  p += n;
  q += n;
  }this.z.next_out_index = p;
  this.read = q;
  return r;
  }, "~N");
  Clazz_defineStatics (c$,
  "MANY", 1440,
  "inflate_mask",  Clazz_newIntArray (-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]),
  "border",  Clazz_newIntArray (-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
  "Z_OK", 0,
  "Z_STREAM_END", 1,
  "Z_STREAM_ERROR", -2,
  "Z_DATA_ERROR", -3,
  "Z_BUF_ERROR", -5,
  "TYPE", 0,
  "LENS", 1,
  "STORED", 2,
  "TABLE", 3,
  "BTREE", 4,
  "DTREE", 5,
  "CODES", 6,
  "DRY", 7,
  "DONE", 8,
  "BAD", 9);
  });
  Clazz_declarePackage ("JU");
  c$ = Clazz_decorateAsClass (function () {
  this.mode = 0;
  this.len = 0;
  this.tree = null;
  this.tree_index = 0;
  this.need = 0;
  this.lit = 0;
  this.get = 0;
  this.dist = 0;
  this.lbits = 0;
  this.dbits = 0;
  this.ltree = null;
  this.ltree_index = 0;
  this.dtree = null;
  this.dtree_index = 0;
  this.z = null;
  this.s = null;
  Clazz_instantialize (this, arguments);
  }, JU, "InfCodes");
  Clazz_makeConstructor (c$, 
  function (z, s) {
  this.z = z;
  this.s = s;
  }, "JU.ZStream,JU.InfBlocks");
  Clazz_defineMethod (c$, "init", 
  function (bl, bd, tl, tl_index, td, td_index) {
  this.mode = 0;
  this.lbits = bl;
  this.dbits = bd;
  this.ltree = tl;
  this.ltree_index = tl_index;
  this.dtree = td;
  this.dtree_index = td_index;
  this.tree = null;
  }, "~N,~N,~A,~N,~A,~N");
  Clazz_defineMethod (c$, "proc", 
  function (r) {
  var j;
  var tindex;
  var e;
  var b = 0;
  var k = 0;
  var p = 0;
  var n;
  var q;
  var m;
  var f;
  p = this.z.next_in_index;
  n = this.z.avail_in;
  b = this.s.bitb;
  k = this.s.bitk;
  q = this.s.write;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  while (true) {
  switch (this.mode) {
  case 0:
  if (m >= 258 && n >= 10) {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  r = this.inflate_fast (this.lbits, this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, this.s, this.z);
  p = this.z.next_in_index;
  n = this.z.avail_in;
  b = this.s.bitb;
  k = this.s.bitk;
  q = this.s.write;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  if (r != 0) {
  this.mode = r == 1 ? 7 : 9;
  break;
  }}this.need = this.lbits;
  this.tree = this.ltree;
  this.tree_index = this.ltree_index;
  this.mode = 1;
  case 1:
  j = this.need;
  while (k < (j)) {
  if (n != 0) r = 0;
   else {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3;
  b >>>= (this.tree[tindex + 1]);
  k -= (this.tree[tindex + 1]);
  e = this.tree[tindex];
  if (e == 0) {
  this.lit = this.tree[tindex + 2];
  this.mode = 6;
  break;
  }if ((e & 16) != 0) {
  this.get = e & 15;
  this.len = this.tree[tindex + 2];
  this.mode = 2;
  break;
  }if ((e & 64) == 0) {
  this.need = e;
  this.tree_index = Clazz_doubleToInt (tindex / 3) + this.tree[tindex + 2];
  break;
  }if ((e & 32) != 0) {
  this.mode = 7;
  break;
  }this.mode = 9;
  this.z.msg = "invalid literal/length code";
  r = -3;
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  case 2:
  j = this.get;
  while (k < (j)) {
  if (n != 0) r = 0;
   else {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  this.len += (b & JU.InfCodes.inflate_mask[j]);
  b >>= j;
  k -= j;
  this.need = this.dbits;
  this.tree = this.dtree;
  this.tree_index = this.dtree_index;
  this.mode = 3;
  case 3:
  j = this.need;
  while (k < (j)) {
  if (n != 0) r = 0;
   else {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3;
  b >>= this.tree[tindex + 1];
  k -= this.tree[tindex + 1];
  e = (this.tree[tindex]);
  if ((e & 16) != 0) {
  this.get = e & 15;
  this.dist = this.tree[tindex + 2];
  this.mode = 4;
  break;
  }if ((e & 64) == 0) {
  this.need = e;
  this.tree_index = Clazz_doubleToInt (tindex / 3) + this.tree[tindex + 2];
  break;
  }this.mode = 9;
  this.z.msg = "invalid distance code";
  r = -3;
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  case 4:
  j = this.get;
  while (k < (j)) {
  if (n != 0) r = 0;
   else {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }n--;
  b |= (this.z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  this.dist += (b & JU.InfCodes.inflate_mask[j]);
  b >>= j;
  k -= j;
  this.mode = 5;
  case 5:
  f = q - this.dist;
  while (f < 0) {
  f += this.s.end;
  }
  while (this.len != 0) {
  if (m == 0) {
  if (q == this.s.end && this.s.read != 0) {
  q = 0;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  }if (m == 0) {
  this.s.write = q;
  r = this.s.inflate_flush (r);
  q = this.s.write;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  if (q == this.s.end && this.s.read != 0) {
  q = 0;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  }if (m == 0) {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }}}this.s.window[q++] = this.s.window[f++];
  m--;
  if (f == this.s.end) f = 0;
  this.len--;
  }
  this.mode = 0;
  break;
  case 6:
  if (m == 0) {
  if (q == this.s.end && this.s.read != 0) {
  q = 0;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  }if (m == 0) {
  this.s.write = q;
  r = this.s.inflate_flush (r);
  q = this.s.write;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  if (q == this.s.end && this.s.read != 0) {
  q = 0;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  }if (m == 0) {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }}}r = 0;
  this.s.window[q++] = this.lit;
  m--;
  this.mode = 0;
  break;
  case 7:
  if (k > 7) {
  k -= 8;
  n++;
  p--;
  }this.s.write = q;
  r = this.s.inflate_flush (r);
  q = this.s.write;
  m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
  if (this.s.read != this.s.write) {
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }this.mode = 8;
  case 8:
  r = 1;
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  case 9:
  r = -3;
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  default:
  r = -2;
  this.s.bitb = b;
  this.s.bitk = k;
  this.z.avail_in = n;
  this.z.total_in += p - this.z.next_in_index;
  this.z.next_in_index = p;
  this.s.write = q;
  return this.s.inflate_flush (r);
  }
  }
  }, "~N");
  Clazz_defineMethod (c$, "free", 
  function (z) {
  }, "JU.ZStream");
  Clazz_defineMethod (c$, "inflate_fast", 
  function (bl, bd, tl, tl_index, td, td_index, s, z) {
  var t;
  var tp;
  var tp_index;
  var e;
  var b;
  var k;
  var p;
  var n;
  var q;
  var m;
  var ml;
  var md;
  var c;
  var d;
  var r;
  var tp_index_t_3;
  p = z.next_in_index;
  n = z.avail_in;
  b = s.bitb;
  k = s.bitk;
  q = s.write;
  m = q < s.read ? s.read - q - 1 : s.end - q;
  ml = JU.InfCodes.inflate_mask[bl];
  md = JU.InfCodes.inflate_mask[bd];
  do {
  while (k < (20)) {
  n--;
  b |= (z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  t = b & ml;
  tp = tl;
  tp_index = tl_index;
  tp_index_t_3 = (tp_index + t) * 3;
  if ((e = tp[tp_index_t_3]) == 0) {
  b >>= (tp[tp_index_t_3 + 1]);
  k -= (tp[tp_index_t_3 + 1]);
  s.window[q++] = tp[tp_index_t_3 + 2];
  m--;
  continue;
  }do {
  b >>= (tp[tp_index_t_3 + 1]);
  k -= (tp[tp_index_t_3 + 1]);
  if ((e & 16) != 0) {
  e &= 15;
  c = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]);
  b >>= e;
  k -= e;
  while (k < (15)) {
  n--;
  b |= (z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  t = b & md;
  tp = td;
  tp_index = td_index;
  tp_index_t_3 = (tp_index + t) * 3;
  e = tp[tp_index_t_3];
  do {
  b >>= (tp[tp_index_t_3 + 1]);
  k -= (tp[tp_index_t_3 + 1]);
  if ((e & 16) != 0) {
  e &= 15;
  while (k < (e)) {
  n--;
  b |= (z.next_in[p++] & 0xff) << k;
  k += 8;
  }
  d = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]);
  b >>= (e);
  k -= (e);
  m -= c;
  if (q >= d) {
  r = q - d;
  if (q - r > 0 && 2 > (q - r)) {
  s.window[q++] = s.window[r++];
  s.window[q++] = s.window[r++];
  c -= 2;
  } else {
  System.arraycopy (s.window, r, s.window, q, 2);
  q += 2;
  r += 2;
  c -= 2;
  }} else {
  r = q - d;
  do {
  r += s.end;
  } while (r < 0);
  e = s.end - r;
  if (c > e) {
  c -= e;
  if (q - r > 0 && e > (q - r)) {
  do {
  s.window[q++] = s.window[r++];
  } while (--e != 0);
  } else {
  System.arraycopy (s.window, r, s.window, q, e);
  q += e;
  r += e;
  e = 0;
  }r = 0;
  }}if (q - r > 0 && c > (q - r)) {
  do {
  s.window[q++] = s.window[r++];
  } while (--c != 0);
  } else {
  System.arraycopy (s.window, r, s.window, q, c);
  q += c;
  r += c;
  c = 0;
  }break;
  } else if ((e & 64) == 0) {
  t += tp[tp_index_t_3 + 2];
  t += (b & JU.InfCodes.inflate_mask[e]);
  tp_index_t_3 = (tp_index + t) * 3;
  e = tp[tp_index_t_3];
  } else {
  z.msg = "invalid distance code";
  c = z.avail_in - n;
  c = (k >> 3) < c ? k >> 3 : c;
  n += c;
  p -= c;
  k -= c << 3;
  s.bitb = b;
  s.bitk = k;
  z.avail_in = n;
  z.total_in += p - z.next_in_index;
  z.next_in_index = p;
  s.write = q;
  return -3;
  }} while (true);
  break;
  }if ((e & 64) == 0) {
  t += tp[tp_index_t_3 + 2];
  t += (b & JU.InfCodes.inflate_mask[e]);
  tp_index_t_3 = (tp_index + t) * 3;
  if ((e = tp[tp_index_t_3]) == 0) {
  b >>= (tp[tp_index_t_3 + 1]);
  k -= (tp[tp_index_t_3 + 1]);
  s.window[q++] = tp[tp_index_t_3 + 2];
  m--;
  break;
  }} else if ((e & 32) != 0) {
  c = z.avail_in - n;
  c = (k >> 3) < c ? k >> 3 : c;
  n += c;
  p -= c;
  k -= c << 3;
  s.bitb = b;
  s.bitk = k;
  z.avail_in = n;
  z.total_in += p - z.next_in_index;
  z.next_in_index = p;
  s.write = q;
  return 1;
  } else {
  z.msg = "invalid literal/length code";
  c = z.avail_in - n;
  c = (k >> 3) < c ? k >> 3 : c;
  n += c;
  p -= c;
  k -= c << 3;
  s.bitb = b;
  s.bitk = k;
  z.avail_in = n;
  z.total_in += p - z.next_in_index;
  z.next_in_index = p;
  s.write = q;
  return -3;
  }} while (true);
  } while (m >= 258 && n >= 10);
  c = z.avail_in - n;
  c = (k >> 3) < c ? k >> 3 : c;
  n += c;
  p -= c;
  k -= c << 3;
  s.bitb = b;
  s.bitk = k;
  z.avail_in = n;
  z.total_in += p - z.next_in_index;
  z.next_in_index = p;
  s.write = q;
  return 0;
  }, "~N,~N,~A,~N,~A,~N,JU.InfBlocks,JU.ZStream");
  Clazz_defineStatics (c$,
  "inflate_mask",  Clazz_newIntArray (-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]),
  "Z_OK", 0,
  "Z_STREAM_END", 1,
  "Z_STREAM_ERROR", -2,
  "Z_DATA_ERROR", -3,
  "START", 0,
  "LEN", 1,
  "LENEXT", 2,
  "DIST", 3,
  "DISTEXT", 4,
  "COPY", 5,
  "LIT", 6,
  "WASH", 7,
  "END", 8,
  "BADCODE", 9);
  Clazz_declarePackage ("J.io");
  Clazz_load (null, "J.io.JmolUtil", ["java.io.BufferedInputStream", "$.BufferedReader", "java.net.URL", "java.util.Hashtable", "JU.AU", "$.Lst", "$.OC", "$.PT", "$.Rdr", "J.adapter.smarter.AtomSetCollection", "J.api.Interface", "JU.Logger", "JV.FileManager"], function () {
  c$ = Clazz_declareType (J.io, "JmolUtil");
  Clazz_makeConstructor (c$, 
  function () {
  });
  Clazz_defineMethod (c$, "getImage", 
  function (vwr, fullPathNameOrBytes, echoName, forceSync) {
  var image = null;
  var info = null;
  var apiPlatform = vwr.apiPlatform;
  var createImage = false;
  var fullPathName = "" + fullPathNameOrBytes;
  if (Clazz_instanceOf (fullPathNameOrBytes, String)) {
  var isBMP = fullPathName.toUpperCase ().endsWith ("BMP");
  if (forceSync || fullPathName.indexOf ("|") > 0 || isBMP) {
  var ret = vwr.fm.getFileAsBytes (fullPathName, null);
  if (!JU.AU.isAB (ret)) return "" + ret;
  if (vwr.isJS) info =  Clazz_newArray (-1, [echoName, fullPathNameOrBytes, ret]);
   else image = apiPlatform.createImage (ret);
  } else if (JU.OC.urlTypeIndex (fullPathName) >= 0) {
  if (vwr.isJS) info =  Clazz_newArray (-1, [echoName, fullPathNameOrBytes, null]);
   else try {
  image = apiPlatform.createImage ( new java.net.URL (Clazz_castNullAs ("java.net.URL"), fullPathName, null));
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  return "bad URL: " + fullPathName;
  } else {
  throw e;
  }
  }
  } else {
  createImage = true;
  }} else if (vwr.isJS) {
  info =  Clazz_newArray (-1, [echoName, JU.Rdr.guessMimeTypeForBytes (fullPathNameOrBytes), fullPathNameOrBytes]);
  } else {
  createImage = true;
  }if (createImage) image = apiPlatform.createImage ("\1close".equals (fullPathNameOrBytes) ? "\1close" + echoName : fullPathNameOrBytes);
   else if (info != null) image = apiPlatform.createImage (info);
  {
  return image;
  }}, "JV.Viewer,~O,~S,~B");
  Clazz_defineMethod (c$, "getAtomSetCollectionOrBufferedReaderFromZip", 
  function (vwr, is, fileName, zipDirectory, htParams, subFilePtr, asBufferedReader) {
  var adapter = vwr.getModelAdapter ();
  var doCombine = (subFilePtr == 1);
  htParams.put ("zipSet", fileName);
  var subFileList = htParams.get ("subFileList");
  if (subFileList == null) subFileList = this.getSpartanSubfiles (zipDirectory);
  var subFileName = (subFileList == null || subFilePtr >= subFileList.length ? null : subFileList[subFilePtr]);
  if (subFileName != null && (subFileName.startsWith ("/") || subFileName.startsWith ("\\"))) subFileName = subFileName.substring (1);
  var selectedFile = 0;
  if (subFileName == null && htParams.containsKey ("modelNumber")) {
  selectedFile = (htParams.get ("modelNumber")).intValue ();
  if (selectedFile > 0 && doCombine) htParams.remove ("modelNumber");
  }var manifest = htParams.get ("manifest");
  var useFileManifest = (manifest == null);
  if (useFileManifest) manifest = (zipDirectory.length > 0 ? zipDirectory[0] : "");
  var haveManifest = (manifest.length > 0);
  if (haveManifest) {
  if (JU.Logger.debugging) JU.Logger.debug ("manifest for  " + fileName + ":\n" + manifest);
  }var ignoreErrors = (manifest.indexOf ("IGNORE_ERRORS") >= 0);
  var selectAll = (manifest.indexOf ("IGNORE_MANIFEST") >= 0);
  var exceptFiles = (manifest.indexOf ("EXCEPT_FILES") >= 0);
  if (selectAll || subFileName != null) haveManifest = false;
  if (useFileManifest && haveManifest) {
  var path = JV.FileManager.getManifestScriptPath (manifest);
  if (path != null) return "NOTE: file recognized as a script file: " + fileName + path + "\n";
  }var vCollections =  new JU.Lst ();
  var htCollections = (haveManifest ?  new java.util.Hashtable () : null);
  var nFiles = 0;
  try {
  var spartanData = (this.isSpartanZip (zipDirectory) ? vwr.fm.spartanUtil ().getData (is, zipDirectory) : null);
  var zpt = vwr.getJzt ();
  var ret;
  if (spartanData != null) {
  var reader = JU.Rdr.getBR (spartanData.toString ());
  if (asBufferedReader) return reader;
  ret = adapter.getAtomSetCollectionFromReader (fileName, reader, htParams);
  if (Clazz_instanceOf (ret, String)) return ret;
  if (Clazz_instanceOf (ret, J.adapter.smarter.AtomSetCollection)) {
  var atomSetCollection = ret;
  if (atomSetCollection.errorMessage != null) {
  if (ignoreErrors) return null;
  return atomSetCollection.errorMessage;
  }return atomSetCollection;
  }if (ignoreErrors) return null;
  return "unknown reader error";
  }if (Clazz_instanceOf (is, java.io.BufferedInputStream)) is = JU.Rdr.getPngZipStream (is, true);
  var zis = zpt.newZipInputStream (is);
  var ze;
  if (haveManifest) manifest = '|' + manifest.$replace ('\r', '|').$replace ('\n', '|') + '|';
  while ((ze = zis.getNextEntry ()) != null && (selectedFile <= 0 || vCollections.size () < selectedFile)) {
  if (ze.isDirectory ()) continue;
  var thisEntry = ze.getName ();
  if (subFileName != null && !thisEntry.equals (subFileName)) continue;
  if (subFileName != null) htParams.put ("subFileName", subFileName);
  if (thisEntry.startsWith ("JmolManifest") || haveManifest && exceptFiles == manifest.indexOf ("|" + thisEntry + "|") >= 0) continue;
  var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
  if (JU.Rdr.isGzipB (bytes)) bytes = JU.Rdr.getLimitedStreamBytes (zpt.getUnGzippedInputStream (bytes), -1);
  if (JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) {
  var bis = JU.Rdr.getBIS (bytes);
  var zipDir2 = zpt.getZipDirectoryAndClose (bis, "JmolManifest");
  bis = JU.Rdr.getBIS (bytes);
  var atomSetCollections = this.getAtomSetCollectionOrBufferedReaderFromZip (vwr, bis, fileName + "|" + thisEntry, zipDir2, htParams, ++subFilePtr, asBufferedReader);
  if (Clazz_instanceOf (atomSetCollections, String)) {
  if (ignoreErrors) continue;
  return atomSetCollections;
  } else if (Clazz_instanceOf (atomSetCollections, J.adapter.smarter.AtomSetCollection) || Clazz_instanceOf (atomSetCollections, JU.Lst)) {
  if (haveManifest && !exceptFiles) htCollections.put (thisEntry, atomSetCollections);
   else vCollections.addLast (atomSetCollections);
  } else if (Clazz_instanceOf (atomSetCollections, java.io.BufferedReader)) {
  if (doCombine) zis.close ();
  return atomSetCollections;
  } else {
  if (ignoreErrors) continue;
  zis.close ();
  return "unknown zip reader error";
  }} else if (JU.Rdr.isPickleB (bytes)) {
  var bis = JU.Rdr.getBIS (bytes);
  if (doCombine) zis.close ();
  return bis;
  } else {
  var sData;
  if (JU.Rdr.isCompoundDocumentB (bytes)) {
  var jd = J.api.Interface.getInterface ("JU.CompoundDocument", vwr, "file");
  jd.setDocStream (zpt, JU.Rdr.getBIS (bytes));
  sData = jd.getAllDataFiles ("Molecule", "Input").toString ();
  } else {
  sData = JU.Rdr.fixUTF (bytes);
  }var reader = JU.Rdr.getBR (sData);
  if (asBufferedReader) {
  if (doCombine) zis.close ();
  return reader;
  }var fname = fileName + "|" + ze.getName ();
  ret = adapter.getAtomSetCollectionFromReader (fname, reader, htParams);
  if (!(Clazz_instanceOf (ret, J.adapter.smarter.AtomSetCollection))) {
  if (ignoreErrors) continue;
  zis.close ();
  return "" + ret;
  }if (haveManifest && !exceptFiles) htCollections.put (thisEntry, ret);
   else vCollections.addLast (ret);
  var a = ret;
  if (a.errorMessage != null) {
  if (ignoreErrors) continue;
  zis.close ();
  return a.errorMessage;
  }}}
  if (doCombine) zis.close ();
  if (haveManifest && !exceptFiles) {
  var list = JU.PT.split (manifest, "|");
  for (var i = 0; i < list.length; i++) {
  var file = list[i];
  if (file.length == 0 || file.indexOf ("#") == 0) continue;
  if (htCollections.containsKey (file)) vCollections.addLast (htCollections.get (file));
   else if (JU.Logger.debugging) JU.Logger.debug ("manifested file " + file + " was not found in " + fileName);
  }
  }if (!doCombine) return vCollections;
  var result = (vCollections.size () == 1 && Clazz_instanceOf (vCollections.get (0), J.adapter.smarter.AtomSetCollection) ? vCollections.get (0) :  new J.adapter.smarter.AtomSetCollection ("Array", null, null, vCollections));
  if (result.errorMessage != null) {
  if (ignoreErrors) return null;
  return result.errorMessage;
  }if (nFiles == 1) selectedFile = 1;
  if (selectedFile > 0 && selectedFile <= vCollections.size ()) return vCollections.get (selectedFile - 1);
  return result;
  } catch (e$$) {
  if (Clazz_exceptionOf (e$$, Exception)) {
  var e = e$$;
  {
  if (ignoreErrors) return null;
  JU.Logger.error ("" + e);
  return "" + e;
  }
  } else if (Clazz_exceptionOf (e$$, Error)) {
  var er = e$$;
  {
  JU.Logger.errorEx (null, er);
  return "" + er;
  }
  } else {
  throw e$$;
  }
  }
  }, "JV.Viewer,java.io.InputStream,~S,~A,java.util.Map,~N,~B");
  Clazz_defineMethod (c$, "getCachedPngjBytes", 
  function (fm, pathName) {
  if (pathName.startsWith ("file:///")) pathName = "file:" + pathName.substring (7);
  JU.Logger.info ("JmolUtil checking PNGJ cache for " + pathName);
  var shortName = this.shortSceneFilename (pathName);
  if (fm.pngjCache == null && !this.clearAndCachePngjFile (fm,  Clazz_newArray (-1, [pathName, null]))) return null;
  var cache = fm.pngjCache;
  var isMin = (pathName.indexOf (".min.") >= 0);
  if (!isMin) {
  var cName = fm.getCanonicalName (JU.Rdr.getZipRoot (pathName));
  if (!cache.containsKey (cName) && !this.clearAndCachePngjFile (fm,  Clazz_newArray (-1, [pathName, null]))) return null;
  if (pathName.indexOf ("|") < 0) shortName = cName;
  }if (cache.containsKey (shortName)) {
  JU.Logger.info ("FileManager using memory cache " + shortName);
  return fm.pngjCache.get (shortName);
  }if (!isMin || !this.clearAndCachePngjFile (fm,  Clazz_newArray (-1, [pathName, null]))) return null;
  JU.Logger.info ("FileManager using memory cache " + shortName);
  return cache.get (shortName);
  }, "JV.FileManager,~S");
  Clazz_defineMethod (c$, "clearAndCachePngjFile", 
   function (fm, data) {
  fm.pngjCache =  new java.util.Hashtable ();
  if (data == null || data[0] == null) return false;
  data[0] = JU.Rdr.getZipRoot (data[0]);
  var shortName = this.shortSceneFilename (data[0]);
  var cache = fm.pngjCache;
  try {
  data[1] = fm.vwr.getJzt ().cacheZipContents (JU.Rdr.getPngZipStream (fm.getBufferedInputStreamOrErrorMessageFromName (data[0], null, false, false, null, false, true), true), shortName, cache, false);
  } catch (e) {
  if (Clazz_exceptionOf (e, Exception)) {
  return false;
  } else {
  throw e;
  }
  }
  if (data[1] == null) return false;
  var bytes = data[1].getBytes ();
  cache.put (fm.getCanonicalName (data[0]), bytes);
  if (shortName.indexOf ("_scene_") >= 0) {
  cache.put (this.shortSceneFilename (data[0]), bytes);
  bytes = cache.remove (shortName + "|state.spt");
  if (bytes != null) cache.put (this.shortSceneFilename (data[0] + "|state.spt"), bytes);
  }return true;
  }, "JV.FileManager,~A");
  Clazz_defineMethod (c$, "shortSceneFilename", 
   function (pathName) {
  var pt = pathName.indexOf ("_scene_") + 7;
  if (pt < 7) return pathName;
  var s = "";
  if (pathName.endsWith ("|state.spt")) {
  var pt1 = pathName.indexOf ('.', pt);
  if (pt1 < 0) return pathName;
  s = pathName.substring (pt, pt1);
  }var pt2 = pathName.lastIndexOf ("|");
  return pathName.substring (0, pt) + s + (pt2 > 0 ? pathName.substring (pt2) : "");
  }, "~S");
  Clazz_defineMethod (c$, "getSpartanSubfiles", 
   function (zipDirectory) {
  var name = (zipDirectory.length < 2 ? null : zipDirectory[1]);
  return (name == null || zipDirectory.length != 2 || !name.endsWith (".spardir/") ? null :  Clazz_newArray (-1, ["", JU.PT.trim (name, "/")]));
  }, "~A");
  Clazz_defineMethod (c$, "isSpartanZip", 
   function (zipDirectory) {
  for (var i = 1; i < zipDirectory.length; i++) if (zipDirectory[i].endsWith (".spardir/") || zipDirectory[i].indexOf ("_spartandir") >= 0) return true;
  
  return false;
  }, "~A");
  });
  })(Clazz
  ,Clazz.getClassName
  ,Clazz.newLongArray
  ,Clazz.doubleToByte
  ,Clazz.doubleToInt
  ,Clazz.doubleToLong
  ,Clazz.declarePackage
  ,Clazz.instanceOf
  ,Clazz.load
  ,Clazz.instantialize
  ,Clazz.decorateAsClass
  ,Clazz.floatToInt
  ,Clazz.floatToLong
  ,Clazz.makeConstructor
  ,Clazz.defineEnumConstant
  ,Clazz.exceptionOf
  ,Clazz.newIntArray
  ,Clazz.defineStatics
  ,Clazz.newFloatArray
  ,Clazz.declareType
  ,Clazz.prepareFields
  ,Clazz.superConstructor
  ,Clazz.newByteArray
  ,Clazz.declareInterface
  ,Clazz.p0p
  ,Clazz.pu$h
  ,Clazz.newShortArray
  ,Clazz.innerTypeInstance
  ,Clazz.isClassDefined
  ,Clazz.prepareCallback
  ,Clazz.newArray
  ,Clazz.castNullAs
  ,Clazz.floatToShort
  ,Clazz.superCall
  ,Clazz.decorateAsType
  ,Clazz.newBooleanArray
  ,Clazz.newCharArray
  ,Clazz.implementOf
  ,Clazz.newDoubleArray
  ,Clazz.overrideConstructor
  ,Clazz.clone
  ,Clazz.doubleToShort
  ,Clazz.getInheritedLevel
  ,Clazz.getParamsType
  ,Clazz.isAF
  ,Clazz.isAB
  ,Clazz.isAI
  ,Clazz.isAS
  ,Clazz.isASS
  ,Clazz.isAP
  ,Clazz.isAFloat
  ,Clazz.isAII
  ,Clazz.isAFF
  ,Clazz.isAFFF
  ,Clazz.tryToSearchAndExecute
  ,Clazz.getStackTrace
  ,Clazz.inheritArgs
  ,Clazz.alert
  ,Clazz.defineMethod
  ,Clazz.overrideMethod
  ,Clazz.declareAnonymous
  //,Clazz.checkPrivateMethod
  ,Clazz.cloneFinals
  );
  