var UZIP = {}; UZIP.parse = function(data) // Uint8Array { var bin = UZIP.bin, offset = 0, out = {}; var eocd = data.length-4; while(bin.readUint(data, eocd)!=0x06054b50) eocd--; var offset = eocd; offset+=4; // sign = 0x06054b50 offset+=4; // disks = 0; var cnu = bin.readUshort(data, offset); offset+=2; var cnt = bin.readUshort(data, offset); offset+=2; var csize = bin.readUint (data, offset); offset+=4; var coffs = bin.readUint (data, offset); offset+=4; offset = coffs; for(var i=0; i>> 1); else c = c >>> 1; } tab[n] = c; } return tab; })(), update : function(c, buf, off, len) { for (var i=0; i>> 8); return c; }, crc : function(b,o,l) { return UPNG.crc.update(0xffffffff,b,o,l) ^ 0xffffffff; } } UZIP.bin = { readUshort : function(buff,p) { return (buff[p]) | (buff[p+1]<<8); }, writeUshort: function(buff,p,n){ buff[p] = (n)&255; buff[p+1] = (n>>8)&255; }, readUint : function(buff,p) { return (buff[p+3]*(256*256*256)) + ((buff[p+2]<<16) | (buff[p+1]<< 8) | buff[p]); }, writeUint : function(buff,p,n){ buff[p+3]=(n>>24)&255; buff[p+2]=(n>>16)&255; buff[p+1]=(n>>8)&255; buff[p]=n&255; }, readASCII : function(buff,p,l){ var s = ""; for(var i=0; i