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.defineMethod (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); });